LoginSignup
5
6

More than 1 year has passed since last update.

Java 11 LTSから Java 17 LTSへ

Posted at

これはなんですか

社内では現状みんなの共通言語として Java11 LTS を利用しているが、2021/9 にリリースされる Java17 LTS に乗り移るかどうか判断するため、各種 feature のまとめと、社内での議論のネタを積んでおくものです。

誰向け?

同様のことを検討しているお歴々には参考になるかもしれません。
後日コメントで弊社の結論も記載します。

Java 11 ~ 17

12~16までは @nowokay 様がまとめてくださっているため、そちらを参照します。

feature/java12

feature/java13

feature/java14

feature/java15

feature/java16

feature/java17

  1. JEP 415: Context-Specific Deserialization Filters
    1. シリアライズ関連の変更(簡単になるよ的な)
  2. JEP 414: Vector API (Second Incubator)
    1. ベクトル計算のAPIが導入されるけど我々あんまり使わないと思う・・
  3. JEP 412: Foreign Function & Memory API (Incubator)
    1. 内部制御に関するもの
  4. JEP 411: Deprecate the Security Manager for Removal
    1. 消えるry
  5. JEP 410: Remove the Experimental AOT and JIT Compiler
    1. 消える
  6. JEP 409: Sealed Classes
    1. https://openjdk.java.net/jeps/409
    2. これは文法とクラス、インターフェースの制御に関する重要な変更
  7. JEP 407: Remove RMI Activation
    1. 消える
  8. JEP 406: Pattern Matching for switch (Preview)
    1. https://openjdk.java.net/jeps/406
    2. 型による分岐が可能に
static String formatterPatternSwitch(Object o) {
    return switch (o) {
        case Integer i -> String.format("int %d", i);
        case Long l    -> String.format("long %d", l);
        case Double d  -> String.format("double %f", d);
        case String s  -> String.format("String %s", s);
        default        -> o.toString();
    };
}
  1. JEP 403: Strongly Encapsulate JDK Internals
    1. セキュリティ関連
  2. JEP 398: Deprecate the Applet API for Removal
    1. ええ・・まだいたんすか・・・
  3. JEP 391: macOS/AArch64 Port
    1. M1 Macのネイティヴサポート!
  4. JEP 382: New macOS Rendering Pipeline
    1. あんまり関係ない
  5. JEP 356: Enhanced Pseudo-Random Number Generators
    1. 乱数生成に関するもの。もしかしたらエントロピー枯渇を気にしなくてよくなる?
  6. JEP 306: Restore Always-Strict Floating-Point Semantics
    1. 浮動小数点に関する変更 これも普通に使っていればあまり意識しないでよい

Javaのデメリット

  1. メモリ食いすぎる 某正規空母みたいな奴
  2. fat jar 化しやすくビルドが長引く
  3. jarやjdkのスリム化を行うのが面倒でカスタマイズに知識が必要

他のフレームワーク

  1. python
    1. いろいろあるみたいだけどよくわからない
  2. go
    1. シンプルで速いともっぱらのうわさ
    2. 個人的にはC言語が最初の言語である私にはとっつきやすそう
  3. node
    1. 書いてくと複雑化しやすいから大規模開発ではやりたくない
5
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6