1. yk0807

    No comment

    yk0807
Changes in body
Source | HTML | Preview
@@ -1,30 +1,33 @@
転職が決まって、転職先でJavaを使うことになるので[ブログで書いた記事](https://yk0807.com/techblog/2019/03/29/%E3%81%93%E3%81%935%E5%B9%B4%E3%81%BB%E3%81%A9%E3%81%AEjava%E3%82%92%E7%B0%A1%E5%8D%98%E3%81%AB%E6%8C%AF%E3%82%8A%E8%BF%94%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B/)をこちらにも投稿して見る。
[Wikipediaのページ](https://ja.wikipedia.org/wiki/Java)や[JDK公式ページ](http://openjdk.java.net/projects/)によると、大体こんな感じ。
2014年3月 [Java8](http://openjdk.java.net/projects/jdk8/features)(ラムダ式、型アノテーション、Date and Time API 、JavaFX(Swingより高機能なGUIツール)など)
2017年9月 [Java9](http://openjdk.java.net/projects/jdk9/)(言語レベルでのモジュール化のサポートなど)
2018年3月 [Java10](http://openjdk.java.net/projects/jdk/10/)(ローカル変数型推論など)
2018年9月 [Java11](http://openjdk.java.net/projects/jdk/11/)(ネストベースのアクセスコントロールなど、**OracleJDKの有償化!!**)
2019年3月 [Java12](http://openjdk.java.net/projects/jdk/12/)(JVM定数のAPIなど)
こうして見ると、5年前のJava8で色々な機能が追加されたのが目につく。中でも、今更ながらラムダ式の導入はかなり大きかったのではないかと。
ラムダ式の例としては、こんな感じ。
```Java
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](https://aws.amazon.com/jp/corretto/)というOpenJDK互換の無償のディストリビューションがあるようです。インストール方法などは[こちら](https://qiita.com/lc-tsuchiya/items/3776e1c1ecadb4dc5b99)を参考にして見てください。