Edited at

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

転職が決まって、転職先で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の方は無償で使うことができるのですが、サポート期間が短かったりするので、悩みどころですね。


追記

コメント欄で情報をいただいたので、少しだけ追記します。

Amazon CorrettoというOpenJDK互換の無償のディストリビューションがあるようです。インストール方法などはこちらを参考にして見てください。