JAVA関連のことを調べてみた2020年07月27日

JAVA関連のことを調べてみた2020年07月27日
目次

macOS にて Java のバージョンを alias で手軽に切り替える

## 設定

.zshrc などに環境変数 JAVA_HOME と PATH を設定するようなエイリアスを設定する。
インストール済みの Java Virtual Machine (JVM) 毎に設定する。

“`
# AdoptOpenJDK 8
alias setjava8=”export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home; export PATH=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/bin:$(echo ${PATH})”

# AdoptOpenJDK 11
alias setjava11=”export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home; export PATH=/Library/Java/JavaVirtualMachines/adopt

元記事を表示

Windows10からラズパイで実行するjavaFXプログラムをリモートデバッグする方法~環境構築からデバッグ実行まで②~

初めにGitHubのリポジトリを貼っておく
https://github.com/kamoshika9999/HelloRemote.git

###ラズパイにjavaFXを導入する###
※ラズパイは固定IP化しておく。当サイトでは例として192.168.9.112を使用するが読み替えてください
※ラズパイのログイン名/パスワードは初期設定を使用している。

1.ノーマルで入っているJDKはjava-11-openjdk-armfである。
 このバージョンはjavaFXが除外されている為以下の方法でカスタマイズされたJDKを導入する

“`
cd /home/pi
wget https://download.bell-sw.com/java/13/bellsoft-jdk13-linux-arm32-vfp-hflt.deb
sudo apt-get install ./bellsoft-jdk13-linux-arm32-vfp-hflt.deb
sudo update-alternatives –config javac
sudo update-alternatives —

元記事を表示

Eclipseでデバック中にJavaのコードを実行するのに使うViewはDebug Shell

つまんないことだけど・・・Viewの名前がわからなくなってすごく探したので。

1. [Window] > [Show View] > [Other…]でダイアログを表示する
– ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/7b05fe69-c72e-ed76-3134-23d75d5123c3.png)
1. [Debug] > [Debug Shell]でViewが表示される
– ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/49697fd0-952a-f562-2705-744d5ca3fd61.png)

元記事を表示

HashMapクラスとHashSetクラス

#HashMapクラス
HashMapは、キーと値をセットにした要素の集まりを管理できるコレクションです。

下記は、元素名と原子番号をセットにして出力させてます。

“`java

import java.util.HashMap; // インポート

public class Sample {
public static void main(String[] args){
// キーは文字列、値は整数
HashMap map = new HashMap();
String atom[] = {“水素”, “ヘリウム”, “リチウム”, “ベリリウム”};
map.put(atom[0], 1); // .put()でデータを格納
map.put(atom[1], 2);
map.put(atom[2], 3);
map.put(atom[3], 4);
System.out.println(“—原子番号—“);
for(Strin

元記事を表示

Spring Boot で実装した REST API に swagger-ui を導入する

# 概要
– Spring Boot で REST API を実装している前提
– API のドキュメントを生成する swagger-ui を導入する
– gradle に `io.springfox:springfox-boot-starter:3.0.0` を追加するだけ

# サンプルプロジェクト
– Spring Initializr で Spring Web を選択してプロジェクト新規作成
– REST API を実装
– src\main\java\com\example\demo\api\DemoController.java を以下内容で作成

“`java
package com.example.demo.api;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.Requ

元記事を表示

ArrayListクラス

###通常の配列は、要素をいくつ格納するか決めてから使用します。

“`java

int r [] = new int[4]

r[0] = 88;
r[1] = 45;
r[2] = 34;
r[3] = 47;
“`
###しかし、予め要素数がわからないけど配列を使いたい場合に、Collection(コレクション)を使用します。
##コレクションの一つとしてArrayListクラスの使用例
下記は、10未満の乱数を発生させ0が出るまでArrayListに格納する処理です。

“`java

import java.util.ArrayList; // インポートします。
import java.util.Random;

public class PracticeList {
public static void main(String[] args) {
ArrayList al = new ArrayList(); // 生成
Random random = new Random();

while

元記事を表示

abstract(抽象クラス) と interface(インターフェイス)

#abstract(抽象クラス)とは
抽象メソッドを一つ以上もつクラスのこと。

**抽象メソッド**とは、具体的な処理を記述せずに、引数やメソッド名の定義のみを宣言するメソッド。

“`抽象クラスの宣言.java
abstract class クラス名{}
“`

“`抽象メソッドの宣言.java
abstract 戻り値の型 メソッド名(引数の型 引数名);
“`

###特徴
⭕️スーパークラスのメソッドをサブクラスで**オーバーライド**(書き換え)できる。

❌クラスの多重継承できない。

❌直でインスタンス化ができない。

#interface(インターフェイス) とは
クラスに含まれるメソッドの具体的な処理を記述せずに、変数とメソッドの型のみを定義したもののこと。

“`インターフェイスの宣言.java
interface インターフェース名{}
“`

“`インターフェイスの実装.java
class クラス名 implements インターフェース名{}
“`

###特徴
⭕️メソッドの型だけ先に記述し、使用直前に処理を記述できる。

⭕️インターフ

元記事を表示

Java SE11 silver に受かった話

#経歴

地方公務員(向いてないなあ)→SESに転職→1ヶ月の研修後、運用・保守の現場

研修ではjavaをやってました。その前に空白があったので、[すっきりわかるJava入門](https://www.amazon.co.jp/スッキリわかるJava入門-第3版-スッキリシリーズ-中山清喬/dp/4295007803)と[paiza](https://paiza.jp) を1ヶ月ほどやってました。Bランクまではなんとか解けました。

研修最終日にsilver受けて、53%でした。。。

再受験で89%!合格!

トータル学習期間:3ヶ月くらい

#気をつけたこと

1回目は勉強不足!が確実にあったので

2回目は[黒本](https://www.amazon.co.jp/徹底攻略Java-SE-11-Silver問題集-1Z0-815/dp/4295007625/ref=pd_lpo_14_t_0/355-2169576-6249117?_encoding=UTF8&pd_rd_i=4295007625&pd_rd_r=fbcae4b0-48fd-4bf8-bcc1-ebdb9f

元記事を表示

Windows10からラズパイで実行するjavaFXプログラムをリモートデバッグする方法~環境構築からデバッグ実行まで①~

長いので分けて書く

### Windows10でEclipseを使ったクロス開発環境を構築する###
1.
以下のサイトから好きなバージョンをダウンロードし適当なフォルダに展開しておく。あまり深いフォルダに入れるのと日本語が入っているフォルダ名は何かとはまるので避ける
https://mergedoc.osdn.jp/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672650/0f2efd4b-5b7b-dfb8-edf0-0f1c803e1918.png)
2.
ここではEclipse4.8Photonを使う。新しすぎるバージョンは古いプラグインとの相性が悪い
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/672650/3cb098dd-af34-7bc2-f2e6-dd434294cb28.png)
3.
Windows 64bit FullEdition javaを選択
![im

元記事を表示

Apache + Tomcat + PebbleをMacのローカルで構築した

#About
※この記事はセキュリティ度外視の課題専用の内容です。予めご了承ください。

大学の課題でApacheを設定、SSL化し、Apacheと連携させたTomcatからPebbleを起動させたので備忘録です。
Apacheの設定部分やローカルでのSSL化は省略します。
ちなみにSSL化については以下の動画が概要欄のGuideを参考にしつつ設定できるので、非常に分かりやすかったです。

ただこの動画の概要欄のGuideそのままコピーするとダブルクォートが変になるので注意!
特に`httpd-vhosts.conf`の部分が変になるようなので、少々面倒ですがダブルクオートを書き直してください。

#httpd.confの編集
以下のLoadModuleをコメントアウト

“`terminal:/usr/local/etc/httpd/httpd.conf
LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_aj

元記事を表示

【Effective Javaを読む】 第2章 項目3 『privateのコンストラクタかenum型でシングルトン特性を強制する』

#privateのコンストラクタかenum型でシングルトン特性を強制する

Java1.5より前ではシングルトンを実装する方法が2つあった(例1、例2)けど、1.5でできるようになった3つ目の方法(例4)が一番良いねってお話。

##用語集

###シングルトン

デザインパターンの一種。
「Singleton(シングルトン)パターン」と呼ばれることもある。
手短に言えば厳密に一度しかインスタンスが作成されないクラス。
「あるクラスのインスタンスが常にたった1つしか存在していない」という状態を実現したいときに利用される。

シングルトンの作り方
・コンストラクタをprivateで宣言する。
 (このクラスを利用する側からコンストラクタを呼び出せないようにするため)

・インスタンスを取得するメソッドgetInstance( )をstaticで宣言する。
 これにより、利用側はSingleton#getInstance( )という呼び出しでインスタンスを取得することができる。

“`java:シングルトンサンプル
/**
* アプリケーション全体の設定情報
*/
public c

元記事を表示

iOS: DeviceCheckの参照、保存をJavaで実装。(アカウントBan,リセマラ防止対応など)

# iOSのdevice checkで出来ること。

– 端末から取得できるdevice tokenを元に、端末単位で2つのビット値をAppleのAPIに記録、参照できる。
– 端末を初期化、アプリのアンインストール&インストールしても保存されたビット値はリセットされない。

# どんなことに利用できるか。
### リセマラ防止。
– (初期インストール時、device checkのAPIに記録すると、再インストールされたことを判定できる。)

### 深刻な不正行為をするユーザーを端末単位で、アカウントbanする。
– device checkのAPIで、アカウントbanされた端末であることを記録。
– アプリの再インストール、端末の初期化後も、以前にアカウントbanされた端末である場合、利用できないようにする。

# 利用時の注意点
– 端末が中古市場等で別の人に渡った場合でも、保持される値なので慎重な運用が必要。
– 端末から取得したdevice tokenは時間的な有効期限があるみたい。(この部分の記憶は定かじゃないので、テストしてみてください。)アカウントbanで利用する場合

元記事を表示

JFR(Java Flight Recorder)を記録してダンプファイルを出力する方法

JFR(Java Flight Recorder)を記録してダンプファイルを出力する方法を紹介します。
ここでは、**Eclipse GlassFish 5.1.0**の状態を記録します。

# 環境
+ OS:CentOS Linux release 7.7.1908
+ jdk1.8
+ GlassFish 5.1.0

“`
[glassfish@CENTOS7 ~]$ cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
[glassfish@CENTOS7 ~]$
“`

“`
[glassfish@CENTOS7 ~]$ java -version
java version “1.8.0_241”
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
[glassfish@CENTOS7 ~]$
“`

“`
[g

元記事を表示

eclipse使わずにJDBCでJavaアプリケーションとPostgreSQLの接続(コマンドプロンプトで実行)

## はじめに

プログラミング教育の講師という立場でもある私は、初学者に対して統合開発環境をあえて使わずにプログラミング言語の基礎を理解するよう伝えています。
そのため、eclipseを使わずにJavaアプリケーションを動作させる環境を用意する必要がありました。

## この記事を読んでできること

コマンドプロンプトでPostgreSQLのAPIを使ったJavaアプリケーションを実行することができるようになります。

## 実行環境

実行環境は以下を使っています。

* OS
* Windows10
* Javaバージョン
* OpenJDK 14.0.2
* データベースバージョン
* PostgreSQL 12

## PostgreSQL用JDBCのjarファイルを追加する

PostgreSQLをインストールする際の付属アプリケーションである「スタックビルダー」を起動してください。

スタックビルダ 4.2.0の起動画面Springで勤怠サイトを作ってみる。【概略】

#概要

評価面談でSpringを勉強していると言ってしまったばっかりに、
次回面談までに勤怠サイトを作ることに・・・。
実業務でSpringベースの開発経験はあるけども、全体的に素人に毛が生えたレベル。

PCの調子が悪くて(なんかカリカリ音がしている)成果物が消える恐れがあるので、
面談時のエビデンスのためにも作業履歴としてQiitaに残そうかな、と。

##構成(想定)
– Webアプリ
– フロント:Vue.js
– バックエンド:Spring
– DB:PostgreSQL


※追記事項があり次第記載します

##環境
– Eclipse – Version: Oxygen.3a Release (4.7.3a)
– Atom


※追記事項があり次第記載します。

元記事を表示

(Intelij)Spring BootでHelloWorld

# 手順

1. InteliJで「File」→「New」→「Project」
2. 表示されたNew Projectで「Spring Initializer」を選択し、「Next」
3. 適当に「Group」,「Artifact」を入力。サーバにデプロイしたいので、「Packaging」は「War」を選択し、「Next」
4. Webアプリケーションを作りたいので、「Web」→「Spring Web」にチェックし、「Next」
5. 適当に「Project name」,「Project location」を入力し、「Fisnish」
6. 自動作成されたDemoApplicationに以下の通り追記し、実行。

私は`@RestController`がなくて、ハマりました・・・

“`diff
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication

元記事を表示

Jacksonで良い感じに整形してシリアライズする

JavaでJSONにシリアライズしたいときはJSON-Bだと力不足なのでJacksonを使う事が多いのだけど、いつも書き方忘れるのでメモ。

# 整形せずにシリアライズする

データ交換用に整形せずにシリアライズするパターン。通常はこれ。

“`java
var item = Map.of(“parent”, Map.of(“child”, List.of(“a”, “b”, “c”)));
var json = new ObjectMapper().writeValueAsString(item);
“`

結果

“`json
{“parent”:{“child”:[“a”,”b”,”c”]}}
“`

# 整形してフォーマットを綺麗にしたい場合 その1

画面出力や設定ファイル用にフォーマットを整えたい場合. INDENT_OUTPUTを使う

“`java
var item = Map.of(“parent”, Map.of(“child”, List.of(“a”, “b”, “c”)));

var mapper = new ObjectMapper();
map

元記事を表示

JavaからVB.NETへ ―書き方対照メモ―

# この記事について
## 作成の経緯
新人研修で3ヶ月間Javaをやってきたけれども、配属先部署で使う言語はVisual Basic .NETだったので新しく学ぶ必要が生じた。
しかし、「JavaからVB.NETへ移行」というケースはそんなにないのか(今ならC#あたりが普通…?)、文法の比較などを細かくしているサイトが見つからなかったため、自分で書いてみることにした。

## 対象者・目的
– Javaの書き方やプログラミングの諸概念は一通り理解している
– これからVB.NETでもプログラムを書けるようになりたい

という人(まあ自分と数名の同期だけれど)にJavaとVB.NETの比較対象リファレンスを提供する。

## 環境
– Windows 10
– Visual Studio 2019
– .NET Framework 4.7.2

といっても、環境に依存するようなコードはほぼないはず。

## 記述上の注意
– Visual Basic .NET(VB.NET)のことは、以下単に「VB」と呼ぶ。
– 同じセクションにあるJavaとVBのコードは、基本的に同じ処理になるよう

元記事を表示

Spring Boot で TextWebSocketHandler を継承したクラスで Autowired したフィールドが NULL になる

#1.環境

Spring Boot:v2.2.5

#2.困ったこと

Spring Boot でチャット機能を作成するため、WebSocket を利用。

TextWebSocketHandler を継承したクラスを作成し、その中で DB にアクセスするためにリポジトリクラスを Autowired しようとしたが、フィールドに宣言したリポジトリクラスの変数が NULL。

以下が TextWebSocketHandler を継承した WebSocketChatEndpoint クラス。

“`java:WebSocketChatEndpoint.java
@ServerEndpoint(“/api/chat”)
@Component
public class WebSocketChatEndpoint extends TextWebSocketHandler {

@Autowired
private ChatRepository chatRepository; //NULL

@OnOpen
public void onOpen(Session session

元記事を表示

javaでM-SOLUTIONS プロコンオープン 2020を解く

M-SOLUTIONS プロコンオープン 2020お疲れ様でした!
[公式ページ](https://atcoder.jp/contests/m-solutions2020)

今回の自分の書いたコードは[こちら](https://github.com/ko-flavor/atcoder-java/tree/master/atcoder/src/abc/msolutions2020)
結果はA-DまでACできました。なんとか4問ACでした、問題Dに苦戦しました・・・

以下簡単に解説します。

##[問題A](https://atcoder.jp/contests/m-solutions2020/tasks/m_solutions2020_a)

特定の点数の時に何級という条件を求める問題。
そのままif文でもいいですが、よく見ると200点区切りになっているので、
点数を200で割った余りを10から引くと簡単に求められます。

##[問題B](https://atcoder.jp/contests/m-solutions2020/tasks/m_solutions2020_b)

数字が

元記事を表示

OTHERカテゴリの最新記事