鬼が笑う。2018年Java界隈あえての一択。

Javaは歴史が古いので、各種ライブラリ、ツールを選択するのにも様々な選択肢があります。それがJavaのいいところでもあります。

しかし、しかしです。ココでは、あえて、それらの中から項目別に選ぶべきモノを一度してみます。また、何を選ぶべきかと共に、何を選ぶ出来でないかも記載しています。完全に主観で、ネタでありポエムです。面白半分に読んで下さい。

# バージョン
## Java 8
Java 9 がリリースされましたが、[Jigsaw](http://openjdk.java.net/projects/jigsaw/) の各種ライブラリの対応の遅れから、本格導入はまだされないでしょう。その代わり、Java 8の[関数パラダイム](https://www.ibm.com/developerworks/jp/java/library/j-java8idioms1/index.html) がより多くのソフトウェアに反映され、ソースコードが洗練されていくことでしょう。
## 次点 Java 10(18)
Javaのバージョン番号が[西暦と連動](https://www.infoq.com/jp/news/2017/09/Java6Month)され  ~~ます。~~ [なくなった](https://qiita.com/munieru_jp/items/5e411be30909f68b9037)そうです。勉強になるな！アドベントカレンダー！
Javaにも[var](http://openjdk.java.net/jeps/286)が導入されます。さぁ、こい。
## 落第 Java 7以下
アップデートしよう。

# コンパイラ & ランタイム
## [OpenJDK](http://openjdk.java.net/)
そろそろ、本格的にOpenJDKを使っていきましょう。
[こちら](https://zulu.org/download/)からダウンロードできます。
[OpenJDKのほうが早いプラットフォーム](https://qiita.com/ukiuni@github/items/5bb523c31bb4b4f9a278)もあります。

## [OpenJ9](https://www.eclipse.org/openj9/)
IBMのOpenJ9がオープンソース化されました。OpenJDKに統合され、高品質なJVMが出来上がることが期待されます。
が、今のところ、LinuxとAIX版しかないので、2018年に期待。
## 落第 Oracle JDK
なんか、提供方式で[ゴチャゴチャ](http://tagomoris.hatenablog.com/entry/2017/10/10/122928)してますし、[Dockerでの特定の使用はグレー](https://www.infoq.com/jp/news/2016/04/docker-java)だしで、使うのやめましょう。そのうち、OpenJDKに統合されるでしょう！

# フレームワーク
## [Spring Boot](https://projects.spring.io/spring-boot/)
現在最も[流行ってる](https://hotframeworks.com/languages/java)）(と私が思っているフレームワークです。一度覚えれば、WebだけでなくBatchにも使うことができます。
2.0がもう直リリースされ、来年も安定でしょう。
## 次点 [Vert.x](http://vertx.io/)
くるか？Javaにもリアクティブなイベントループ。
## 落第 Java EE
なんとも[ごちゃごちゃ](https://www.infoq.com/jp/news/2017/11/towards-java-EE-at-eclipse)しています。技術外のところで。もう、ないでしょ。（主観）
少なくとも様子見したほうがいいと思います。内部で動いているのはまだ良しですが、Java EE上に直に開発するのは、パラダイムとしても機能としても時代遅れだと考えます。
重厚壮大になりすぎ、雲行きも怪しいところです。
## 落第 画面系フレームワーク（JSF、Wicket）
クライアント層はJavaScriptに任せましょう。

# ビルドツール
## [Gradle](https://gradle.org/)
今年、[100倍速くなった](https://docs.gradle.org/3.3/release-notes.html#improved-performance-of-tasks-report)ツールです。来年も盤石でしょう。
## 次点 [Bazel](https://docs.bazel.build/versions/master/tutorial/java.html)
よりよきGradleとして流行るかと思ったら、なかなか来ませんね。
## 落第 Maven
XMLはもう無いでしょ。

# IDE
## [IntelliJ IDEA](https://www.jetbrains.com/idea/)
Android StudioもEclipseベースからIntelliJベースになり、最強のIDEの名を縦にしてますね。
## 次点 [Visual Studio Code](https://www.microsoft.com/ja-jp/dev/products/code-vs.aspx)
正確にはIDEではなく高性能エディタですが、各種フロント技術への追随など、最新技術を取り入れていることから次点としました。
## 落第 [Eclipse](https://www.eclipse.org/)
本当はIntelliJを使いたい。でもお金がないのでEclipseを使わざるを得ない。現在は小職もEclipseを使用しています。
最新のJavaScriptやWebフレームワークに追随できていない点で余り使い勝手がよいIDEではなくなってきています。
来年はお金が使えるようになってIntelliJを使えてる、という期待と共に落第に。

# 記法
## 関数型
Lambda、Stream APIを採用していきましょう。
## [Lombok](https://projectlombok.org/)
varは来そうですが、valも使いたいですよね。
## 落第 for
Streamを使いましょう。for禁止。
## 落第 if
値と処理を紐付けましょう。

# バージョン管理ツール
## Git
[A successful Git branching model](http://nvie.com/posts/a-successful-git-branching-model/)と共にGitを使いましょう。
## 落第 Subversion
一度Gitを使うと、Subversionを使う意味がわかりません。
わかったら教えてください。
## 落第 CVS
は？

# Gitホスティング
## [GitLab](https://about.gitlab.com/)
CIの統合など、様々な機能を意欲的に取り入れています。GitHubを追い抜く日も近い！？
今年はGitLab.comにて[データ消失](http://www.publickey1.jp/blog/17/gitlabcom56.html)などもありましたが、なおいっそうの進化を期待して選出です。
## 次点 [GitHub](https://github.com/)
もう、デファクトですよね。
## 落第 Pull Request、Merge Requestのないサーバ
レビュー、しんどいでしょう。どうやってるんです？

# CI
## [Travis CI](https://travis-ci.org/)
マネージドなCIサービス、いいですよね。
他ツールとの自動連携なども、そのスムーズさに一度慣れるとヤミツキです。
## 次点 [Jenkins](https://jenkins.io/)
お金がない、ソース外に出せない、インフラがオンプレ、という時に使います。
Jenkinsも2.0になって、標準でソースと一緒に[ビルド手順](https://jenkins.io/doc/book/pipeline/jenkinsfile/)を入れられるようになりました。
## GUI(手)
は？


# 結び
というわけで、お楽しみいただけましたでしょうか？2018年の見込みを書きたかったのですが、そんなに新しい話題を盛り込めなかったのも正直なところ。。。2018年のJavaの話題は我々で作っていきましょう！