ここ5年ほどのJavaを簡単に振り返ってみる

下の記事で転職先が決まって久しぶりにJavaを使うことになると書いたが、ここでここ5年ほどのJavaの動向を振り返ってみようと思う。

WikipediaのページJDK公式ページによると、大体こんな感じ。
2014年3月 Java8(ラムダ式、型アノテーション、Date and Time API 、JavaFX(Swingより高機能なGUIツール)など)
2017年9月 Java9(言語レベルでのモジュール化のサポートなど)
2018年3月 Java10(ローカル変数型推論など)
2018年9月 Java11(ネストベースのアクセスコントロールなど、OracleJDKの有償化!!
2019年3月 Java12(JVM定数のAPIなど)

こうして見ると、5年前のJava8で色々な機能が追加されたのが目につく。中でも、今更ながらラムダ式の導入はかなり大きかったのではないかと。
ラムダ式の例としては、こんな感じ。

package Lambdatest;
import java.util.function.*;

public class LambdaTest {
	public static void main(String[] args) {
		double x1 = 3.0;
		double y1 = 4.0;
		BiFunction<Double, Double, Double> z = (x, y) -> Math.sqrt(x * x + y * y);
		System.out.println(z.apply(x1, y1));
	}
}

これと同じことをラムダ式を使わずにやろうとすると、無名クラスを使ったり、結構ややこしいことになるんではと思う。
そういえば、C++も言語仕様が大きく追加されたC++11からラムダ式が使えるようになったんだったな。

他にも色々な機能が増えて、ここ数年で本当に進歩したんだなあ。とはいえ、いいことばかりではなくJava11からOracleJDKが有償化されてしまった(個人で使う分には大丈夫みたいですが)のは多くの人にとっては痛そうですね。。。OpenJDKの方は無償で使うことができるのですが、サポート期間が短かったりするので、悩みどころですね。

追記
Qiitaのコメント欄で情報をいただいたので、少しだけ追記します。
Amazon CorrettoというOpenJDK互換の無償のディストリビューションがあるようです。インストール方法などはこちらを参考にして見てください。

今後の技術テーマ

こちらに書いた通り、4月から転職が決まって沖縄で働くことになった。
それに伴い、使用する技術も今までとは異なったものになるので当面は引越し作業の合間に新しい技術や久々に使う技術を中心に勉強していこうと思う。
・Java (2つ前の会社では客先によっては使っていたけど、ここ数年で色々と変わったことがあるようなので、その辺りを中心に)
・Spring Boot (Javaのフレームワーク。WEB+DB PRESSの106号にちょうどそれについての記事があったので、それを元に勉強中。パッと見Laravelとは手触り感なんかが結構異なる感じだけど、DIなんかでLaravelと共通した考え方を使っているところもあるらしい。)
・Node.js  (以前ドットインストールでちょっとやったけど、余裕があるときに復習しようと思う)
・AngularJS (ドットインストールでちょっとだけやった感じだと、Vue.jsに少し似ているかも。)
・クラウド技術(Microsoft Azureの使い方を基本的なところだけでも勉強しておきたい)

常に勉強し続けなくてはいけないのは技術者の宿命だけど、新天地で頑張るぞ!
とりあえず記事を書けるところまできたらこっちに書いて、同じ内容をQiitaにも投稿しようかと。