自分の為のJava環境設定まとめ[mac]


#OSの選択

Windowsで使う人のが多いと思うけど、個人的な趣味でmacを選択。
めんどいことも多いのでVRとかグラフィック系の処理をしない限りはmacを使ってる。

# Javaインストール

Javaって言っても色んなのあるけど、今回はopenJDKを使う。
Javaのオープンソース。

例えばjava11使いたいなら　「11.0.2 (build 11.0.2+9)」とか選択して入れる。
http://jdk.java.net/archive/

こんな感じで適当な場所に設置。

```
mv ~/Downloads/jdk-11.0.2.jdk/ /Library/Java/JavaVirtualMachines/
```

# 環境変数の設定

JAVA_HOMEとPATHを設定

```:.bashrc
#java                                                                                                           
#export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk"                                            
export JAVA_HOME=$(/usr/libexec/java_home -v 11)
export PATH="$JAVA_HOME/bin:$PATH"
```

```
source ~/.bashrc


java -version
>openjdk version "11.0.2" 2019-01-15
>OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
>OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

```

javaのバージョンが変わってればOK


#IDEを入れる

Java IDE使うならeclipseかInteliJの２択。

eclipse
日本の現場では圧倒的に使ってるシェア多い。
バージョンに対して繊細だったり、
たまによくわかんない挙動したりする。
https://mergedoc.osdn.jp/


InteliJは金かかるけど、やっぱ使いやすいよ。
初期の読み込みが遅かったり、あまり日本語ドキュメントも無い。
エバンジェリスト的な人をフォローしたり、コミュニティで先導してもらうと良い。

# eclipseのワークスペースを作る（缶コーヒーを買いに行く）

ワークスペースディレクトリを作る。eclipseを開いたときにワークスペースを選択しろと命令されるので、
そのときには作ったディレクトリを選択する。
このディレクトリにプロジェクトをインポートしたりして使えるプロジェクトを入れていく。

起動
<img width="150" alt="スクリーンショット 2020-04-10 7.18.58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64334/3a8d6e10-13cb-493d-3188-d37dd216b4f1.png">

ワークスペースを選択。
はじめに言っとくけど、ここから起動は遅いぞ。早い時もある。
ここで缶コーヒーを買いに行こう。
<img width="605" alt="スクリーンショット 2020-04-10 7.17.14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64334/143a521d-2dcf-ffa6-cd2f-fe489960f471.png">


<img width="409" alt="スクリーンショット 2020-04-10 7.21.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64334/07e5e691-edff-33f2-4bdb-c9186157c7ef.png">

<img width="610" alt="スクリーンショット 2020-04-10 7.24.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64334/6bb4d0b4-6747-5871-c5c5-1405c6e299a3.png">

この場合はDownloadフォルダ以下のm...ってフォルダを選択してインポートしようとしてる。
ワークスペースにm...ってプロジェクトがないので、コピーにチェックした。
<img width="599" alt="スクリーンショット 2020-04-10 7.25.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64334/cad45c93-c5d6-4624-2045-30a8f1a8f0ed.png">

インポートする。と左のプロジェクト　エクスプローラに表示される。
<img width="312" alt="スクリーンショット 2020-04-10 7.30.16.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64334/b2d7f82f-8ada-2883-f7c1-8ece861ac571.png">


ちなんどくと
プロジェクトは openしたりcloseしたりできる。
必要ない時はcloseしておくと良い。
<img width="344" alt="スクリーンショット 2020-04-10 7.30.29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64334/f22e3c8c-d2e6-59cc-bfc5-0da43cd9d926.png">

<img width="345" alt="スクリーンショット 2020-04-10 7.30.36.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64334/02fb15c0-3062-b267-3c83-d1742d583cf3.png">


# インスペクターをjavaEEへ

<img width="843" alt="スクリーンショット 2020-04-08 22.03.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64334/bd374d10-f10c-c5c7-0767-cdce62d79ae5.png">


# ビルドツールの選択：一言メモ

Maven、Gradle、SBTなどの名前が出てくる。
javaをビルドする奴らだ。
javaプロジェクトを立ち上げるときに選択する。
フォーマットがちょっと違う程度。

# javaのバージョン選択

まずIDEにパスを入れる
<img width="254" alt="スクリーンショット 2020-04-10 7.35.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64334/99aa5d06-ecfc-8a15-fbce-d3aee3cd2c63.png">

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64334/52f60dc1-2e72-cedf-f725-df8df1f8df20.png)


![スクリーンショット 2020-04-09 21.22.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64334/73e68605-abcb-3ba6-cb07-b668ce712754.png)

プロジェクト右くり
好きなjavaを選択
![スクリーンショット 2020-04-09 20.12.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64334/9c1f87c3-7472-7838-a272-9dc862b0c10f.png)

![スクリーンショット 2020-04-09 20.27.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64334/4a353c3a-ed2d-833b-ebb9-57616d90572e.png)

# キレイキレイ
変なエラー残ってるならリフレッシュ

![スクリーンショット 2020-04-09 21.24.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64334/41f43839-c6f5-ce61-a7fe-3ae08ab93046.png)

<img width="633" alt="スクリーンショット 2020-04-09 20.09.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64334/3fbd92e9-4028-4b40-cc35-e9a33c815924.png">

# フレームワークの準備

Spring使いたければ、この辺りインストールしとく。

<img width="385" alt="スクリーンショット 2020-04-10 7.46.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64334/956b6442-15d4-9d04-067d-2adad7c6337d.png">

<img width="632" alt="スクリーンショット 2020-04-08 22.00.41.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64334/f60778da-f825-3ac7-1b7b-a8e215ce5057.png">

<img width="597" alt="スクリーンショット 2020-04-08 22.01.41.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64334/e5cff394-3012-528a-fdb7-46df77a789ba.png">

大体環境設定できたはず。

ちょっと環境違う部分もあるけど、あとは他の記事に任せる。

[mac][Eclipse]jdk10でJava Springを動かす
https://qiita.com/miyamotok0105/items/950667b4f05ef9b03c0c

[Ubuntu18/mac][IntelliJ]jdk10でtomcat9を立てる
https://qiita.com/miyamotok0105/items/3f5e429d80cfe2ca3f32


<hr>

# 番外編

### lombokライブラリ

javaってgetter setterあたりとか冗長になりがち。
Lombok使うと省略できたりする。kotlin, scalaとかでも省略できるけど、現場では誰メンテするのよって圧力があったりする。

ここからダウンロードを押してインストーラからjarをダウンロード
https://projectlombok.org/

じゃあ jar入れとこうね。おちまい。

```
# 確認してるだけ
ls /hogehoge/lombok.jar
# インストール
java -jar lombok.jar
```


## CLIでビルド

### gradleを使う場合

```
# macにgradleを入れる
brew install gradle
# お掃除もする
brew cleanup

# gradlewが使えるようになる。gradlewはgradle+クローラ。モジュールがない時にダウンロードも同時にする。
gradle wrapper
gradle build

./gradlew clean bootJar

```

### mavenを使う場合

```
brew install maven
# お掃除もする
brew cleanup
```

### mysqlメモ

```
mysql -uroot -p

create database hoge default character set utf8 collate utf8_general_ci;
```


### dockerサンプル

```
動くよ
https://github.com/spring-guides/gs-spring-boot-docker/tree/master/complete
https://github.com/codefresh-contrib/gradle-sample-app

```

wget https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh


正直動かせてない。

```
callicoder/spring-security-react-ant-design-polls-app
https://github.com/callicoder/spring-security-react-ant-design-polls-app
wangenyong/spring-boot-deploy
https://github.com/wangenyong/spring-boot-deploy
gosutesu/study-java
https://github.com/gosutesu/study-java
SpringBoot + Kotlin + Docker を使ってみる
https://qiita.com/qphsmt/items/10520fa92c06df022ef7
eclipseのプラグインが見つからない。
https://www.ksakae1216.com/entry/2017/02/24/063000

https://github.com/andrew-boutin/spring-rest-hello-world
https://github.com/bingqiao/spring-boot-example
https://github.com/tokuhirom/java-handbook
https://github.com/fishey2/java-component-template
https://github.com/yosuke0517/spring-boot-docker
```

### docker + eclipse環境でのハマってる件

結論：自分の環境ではうまく行ってないけど、リモートデバッグを使えばいけるのでは？
https://qiita.com/cyclon2joker/items/71c481fe08c961f3acec


https://github.com/IdeaUJetBrains/SpringBootDockerDemoDebug

SpringBootとPostgreSQLの開発環境をdocker-composeだけで用意する！
→　このサンプルは変じゃないかな？dockerにしてるのをあまり享受できてない。
https://qiita.com/gosutesu/items/f45150cbde3f035c54dd



### eclipseでgradleのリフレッシュ

<img width="622" alt="スクリーンショット 2020-05-13 3.04.16.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/64334/5c3f6059-5454-d3b5-1b4c-dda0074131c8.png">




# 参考

https://qiita.com/seri_k/items/e978c1339ce51f13e297
https://qiita.com/takayamag/items/1469c59370df348240f8
https://qiita.com/spaciba_h_t/items/c96e96be99596b0a9fe4
https://qiita.com/niwasawa/items/fed67553845f8d1b72bc