Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Java 2021

Java 2021

2021/4/24に開催されたFUKUOKA Engineer Day 2021での登壇資料です

Naoki Kishida

April 24, 2021
Tweet

More Decks by Naoki Kishida

Other Decks in Programming

Transcript

  1. 今日の話 • Java 17 LTSが出るよ • Java 8からどう変わってるの • Java

    EE? 知らない子ですね • デスクトップやモバイルは? • Java 23 LTSはどうなるの?
  2. Records • Java 16で正式機能 • 構造体 • 名前付きタプル • イミュータブル

    record Student(int code, String name, double score) {} var s = new Student(1, "田中", 8.5); var message = "%sさんのスコアは%.1fです" .formatted(s.name(), s.score()); System.out.println(message);
  3. Text Blocks • Java 15で正式機能 • 複数行文字列 var s =

    new Student(1, "田中", 8.5); var message = """ <tr> <td>%s</td> <td>%.1f</td> </tr> """.formatted(s.name(), s.score() ); System.out.println(message);
  4. リリースサイクルの変更 • 6カ月ごとのリリース • 3月と9月にその時点でできてる機能をリリース • 春分の日と秋分の日 • 機能が完成してからリリースだと結局どんどん遅延 •

    小さい改善を行うモチベーションが低くなる • たとえば ぬるぽのメッセージ改善 • 6バージョンごとに長期メンテナンスバージョン(LTS)を設定 • Java 11(2018.9)が最初のLTS • 次はJava 17(2021.9) • その次はJava 23(2024)
  5. 試用機能の導入 • 多くの人に使ってもらってフィードバックを得るために試用機 能を導入 • 言語 • preview • API

    • incubator • JVM • experimental • 多くのフィードバックが得られるようになった
  6. Java SEからJava EE APIの削除 • JAXB(XML機能)などが削除 • 外部ライブラリとして組み込む • Java

    9で既存のライブラリやフレームワークが動かない 場合がある
  7. MicroProfile • Java EEの開発が滞る • MicroProfile登場 • マイクロサービス用API • 対応フレームワーク

    • Helidon MP • Quarkus • Payara Micro • WildFly • TomEE https://microprofile.io/
  8. Java EEのオープンソース化 • Jakarta EEへ • パッケージ名の変更 • javax ->

    Jakarta • Java EE 8 -> Jakarta EE 9 • 機能の変更なくパッケージ名のみ変更
  9. デスクトップやモバイルは? • JavaFXのオープンソース化 • OpenJDKには含まれない • GraalVM • Native ImageでJavaコードをネイティブバイナリに

    • Gluon Mobile • JavaFXベースでモバイルアプリケーションの開発 • GraalVM Native ImageでiOS用ネイティブアプリ生成 • https://gluonhq.com/products/mobile/
  10. パターンマッチング • 他の言語にあるようなパターンマッチングの導入 • すでに簡単なものは導入済み • instanceof var message =

    switch(s) { case Student(_, "田中", var score) -> """ <tr> <td colspan=2>田中様のスコアは%.1f!!! </td> </tr> """.formatted(score); case Student(_, var name, var score) -> """ <tr> <td>%s</td> <td>%.1f</td> </tr> """.formatted(name, score); System.out.println(message);