Javaは歴史が古いので、各種ライブラリ、ツールを選択するのにも様々な選択肢があります。それがJavaのいいところでもあります。
しかし、しかしです。ココでは、あえて、それらの中から項目別に選ぶべきモノを一度してみます。また、何を選ぶべきかと共に、何を選ぶ出来でないかも記載しています。完全に主観で、ネタでありポエムです。面白半分に読んで下さい。
バージョン
Java 8
Java 9 がリリースされましたが、Jigsaw の各種ライブラリの対応の遅れから、本格導入はまだされないでしょう。その代わり、Java 8の関数パラダイム がより多くのソフトウェアに反映され、ソースコードが洗練されていくことでしょう。
次点 Java 10(18)
Javaのバージョン番号が西暦と連動され ます。 なくなったそうです。勉強になるな!アドベントカレンダー!
Javaにもvarが導入されます。さぁ、こい。
落第 Java 7以下
アップデートしよう。
コンパイラ & ランタイム
OpenJDK
そろそろ、本格的にOpenJDKを使っていきましょう。
こちらからダウンロードできます。
OpenJDKのほうが早いプラットフォームもあります。
OpenJ9
IBMのOpenJ9がオープンソース化されました。OpenJDKに統合され、高品質なJVMが出来上がることが期待されます。
が、今のところ、LinuxとAIX版しかないので、2018年に期待。
落第 Oracle JDK
なんか、提供方式でゴチャゴチャしてますし、Dockerでの特定の使用はグレーだしで、使うのやめましょう。そのうち、OpenJDKに統合されるでしょう!
フレームワーク
Spring Boot
現在最も流行ってる)(と私が思っているフレームワークです。一度覚えれば、WebだけでなくBatchにも使うことができます。
2.0がもう直リリースされ、来年も安定でしょう。
次点 Vert.x
くるか?Javaにもリアクティブなイベントループ。
落第 Java EE
なんともごちゃごちゃしています。技術外のところで。もう、ないでしょ。(主観)
少なくとも様子見したほうがいいと思います。内部で動いているのはまだ良しですが、Java EE上に直に開発するのは、パラダイムとしても機能としても時代遅れだと考えます。
重厚壮大になりすぎ、雲行きも怪しいところです。
落第 画面系フレームワーク(JSF、Wicket)
クライアント層はJavaScriptに任せましょう。
ビルドツール
Gradle
今年、100倍速くなったツールです。来年も盤石でしょう。
次点 Bazel
よりよきGradleとして流行るかと思ったら、なかなか来ませんね。
落第 Maven
XMLはもう無いでしょ。
IDE
IntelliJ IDEA
Android StudioもEclipseベースからIntelliJベースになり、最強のIDEの名を縦にしてますね。
次点 Visual Studio Code
正確にはIDEではなく高性能エディタですが、各種フロント技術への追随など、最新技術を取り入れていることから次点としました。
落第 Eclipse
本当はIntelliJを使いたい。でもお金がないのでEclipseを使わざるを得ない。現在は小職もEclipseを使用しています。
最新のJavaScriptやWebフレームワークに追随できていない点で余り使い勝手がよいIDEではなくなってきています。
来年はお金が使えるようになってIntelliJを使えてる、という期待と共に落第に。
記法
関数型
Lambda、Stream APIを採用していきましょう。
Lombok
varは来そうですが、valも使いたいですよね。
落第 for
Streamを使いましょう。for禁止。
落第 if
値と処理を紐付けましょう。
バージョン管理ツール
Git
A successful Git branching modelと共にGitを使いましょう。
落第 Subversion
一度Gitを使うと、Subversionを使う意味がわかりません。
わかったら教えてください。
落第 CVS
は?
Gitホスティング
GitLab
CIの統合など、様々な機能を意欲的に取り入れています。GitHubを追い抜く日も近い!?
今年はGitLab.comにてデータ消失などもありましたが、なおいっそうの進化を期待して選出です。
次点 GitHub
もう、デファクトですよね。
落第 Pull Request、Merge Requestのないサーバ
レビュー、しんどいでしょう。どうやってるんです?
CI
Travis CI
マネージドなCIサービス、いいですよね。
他ツールとの自動連携なども、そのスムーズさに一度慣れるとヤミツキです。
次点 Jenkins
お金がない、ソース外に出せない、インフラがオンプレ、という時に使います。
Jenkinsも2.0になって、標準でソースと一緒にビルド手順を入れられるようになりました。
GUI(手)
は?
結び
というわけで、お楽しみいただけましたでしょうか?2018年の見込みを書きたかったのですが、そんなに新しい話題を盛り込めなかったのも正直なところ。。。2018年のJavaの話題は我々で作っていきましょう!