Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Java 10でぼくたちの生活はどう変わるの?

7,156 views

Published on

JJUG Night Seminar の資料です。主にJava 10による動作やAPIの変更について扱っています。

https://jjug.doorkeeper.jp/events/71974

Published in: Technology
  • Be the first to comment

Java 10でぼくたちの生活はどう変わるの?

  1. 1. Copyright©2018 NTT corp. All Rights Reserved. Java 10でぼくたちの生活は どうかわるの? 2018年3月26日 NTT OSSセンタ 久保田 祐史
  2. 2. 2Copyright©2018 NTT corp. All Rights Reserved. •2018/3/20 リリース予定! •前回から半年後 •12件の新機能 Java 10
  3. 3. 3Copyright©2018 NTT corp. All Rights Reserved. •メリット •開発が活発化し便利な機能がどんど ん入る •例: Docker対応、あれば便利なAPI •「あれば便利」が3年後はつらかった •デメリット •非互換性対応などのアップデート対 応コストが高くなる リリースサイクル高速化 e.g.) String::repeat
  4. 4. 4Copyright©2018 NTT corp. All Rights Reserved. •新機能 •JEP(Java Enhancement Proposal)を見る • openjdk.java.net/projects/jdk/10/#Features •APIの変更 •JSR(Java Specification Request)の最終仕様 書(Specification)を見る • cr.openjdk.java.net/~iris/se/10/latestSpec/ •非互換性 •リリースノートを見る •バグDBからも確認が可能 • https://gist.github.com/ykubota/3afcfdac5b 252bd31ae8c14b54b5d32f Java 10の情報収集
  5. 5. 5Copyright©2018 NTT corp. All Rights Reserved. • JEP 286: Local-Variable Type Inference • ローカル変数の型推論「var」の導入 Java 10の主な嬉しい新機能
  6. 6. 6Copyright©2018 NTT corp. All Rights Reserved. JEP 286: Local-Variable Type Inference URL url = new URL("http://java.net"); URLConnection conn = url.openConnection(); Scanner scanner = new Scanner(conn.getInputStream()); List<String> list = new ArrayList<String>(); Stream<String> stream = list.stream();
  7. 7. 7Copyright©2018 NTT corp. All Rights Reserved. var url = new URL("http://java.net"); var conn = url.openConnection(); var scanner = new Scanner(conn.getInputStream()); var list = new ArrayList<String>(); var stream = list.stream(); JEP 286: Local-Variable Type Inference
  8. 8. 8Copyright©2018 NTT corp. All Rights Reserved. • JEP 286: Local-Variable Type Inference • ローカル変数の型推論「var」の導入 • JEP 310: Application Class-Data Sharing • JVM プロセス間でメタデータやクラス情報を 共有する仕組み • 多数のプロセスを立ち上げるケースでのメモリ 節約と起動時間の短縮が見込める • Oracle JDK商用機能移行の第一弾 Java 10の主な嬉しい新機能
  9. 9. 9Copyright©2018 NTT corp. All Rights Reserved. • AppCDS (Application Class-Data Sharing) • プロセス間でメタデータやクラス情報を共有する仕組 • Resource Management • プロセス間でメモリやスレッドプールを共有する仕組 • Java Flight Recorder(Flight Recorder) • JDKに組み込まれた低オーバヘッドのランタイム情報 プロファイリング、イベント収集フレームワーク • 本日(3/15)の朝にプロポーサルが出された • Java Mission Control(JDK Mission Control) • Java Flight Recorderによって収集されたデータを効 率的に分析するためのツール・セット • 先日(3/14)、コミュニティにてオープンソース化提案 に向けた議論が呼びかけられた Oracle JDKの商用機能
  10. 10. 10Copyright©2018 NTT corp. All Rights Reserved. • JEP 286: Local-Variable Type Inference • ローカル変数の型推論「var」の導入 • JEP 310: Application Class-Data Sharing • JVM プロセス間でメタデータやクラス情報を 共有する仕組み • 多数のプロセスを立ち上げるケースでのメモリ 節約と起動時間の短縮が見込める • Oracle JDK商用機能移行の第一弾 • JEP 307: Parallel Full GC for G1 • シングルスレッド実行であったG1 GCのFull GCが並列化 Java 10の主な嬉しい新機能
  11. 11. 11Copyright©2018 NTT corp. All Rights Reserved. •APIの変更(※調査中の値です。件=bugチケットの数) •追加2件以上 •非推奨化3件以上(非推奨化中止1件) •削除6件以上 •APIの削除 •Java 9よりDeprecatedアノテーション が強化され削除フラグが追加された •@Deprecated(forRemoval=true) •次バージョン以降に削除される Java 10の非互換性チラ見 jdeprscan ツールを使おう
  12. 12. 12Copyright©2018 NTT corp. All Rights Reserved. •コンテナを認識せずホストのCPU数とメモリ を基に設定や動作が行われていた問題を修正 • -XX:+UseContainerSupport (デフォルト有効) • cpu sets, cpu shares, cpu quotasを基に設定 • -XX:ActiveProcessorCount=<count> で上書可 • cgroup filesystemの memory_limit を基に設定 •ヒープに使用するシステムメモリ量を柔軟化 • -XX:{Initial,Max,Min}RAMPercentage • -XX:{Max,MIN}RAMFraction より便利 •ホストからコンテナ上のプロセスにアタッチ できるように改善 Dockerコンテナに関する改善
  13. 13. 13Copyright©2018 NTT corp. All Rights Reserved. •Add • java.util.Optional.orElseThrow() • java.util.Optional::get() からの置換推奨 • java.util.{List,Set,Map}::copyOf • 引数のコレクションが変更可能な場合はコピーし て変更不可能なコレクションを返す。変更不可能 な場合は、そのままリファレンスを返すメソッド • 変更不可能かどうかの確認メソッドや変更不可能 なコレクション作成を自前でやっていた場合はこ れに置換推奨 API
  14. 14. 14Copyright©2018 NTT corp. All Rights Reserved. •Remove • forRemoval=trueのAPIが消えた • JDK内部Swing LookAndFeelsインスタンス生成API • javax.swing.UIManager.setLookAndFeel(…) • com.sun.security.auth.*の非推奨クラスを削除 • java.lang.SecurityManager::checkPermissionに 置換可能な非推奨クラスやフィールドを削除 • JDK 1.1から非推奨な国際化メカニズムの一部を 削除 • java.lang.Runtime::getLocalized{In,Out}putStream • その他、JavaFX関係のAPIが一部削除 API
  15. 15. 15Copyright©2018 NTT corp. All Rights Reserved. •Add • javadocに以下の追加拡張が行われた • サマリアノテーション(@summary) • ヘッダフッタ指定(-top, -bottom) • オーバライドメソッド書式指定(--override-methods) • 複数スタイルシート利用サポート • Remove • policytool • javah (javac -h で代用可能) • JDK 6-8の標準ドックレット(doclet) • javadoc API(com.sun.javadoc)は非推奨だが存続 Tool
  16. 16. 16Copyright©2018 NTT corp. All Rights Reserved. •Remove • -Xoss, -Xsqnopause, -Xoptimize, -Xboudthreads, -Xusealtsigs • -Xprof (FlatProfiler) • -XX:+Trace{Young,Old}GenTime • -Xlog:gc+heap+exit=debug に置き換わった • -d32, -d64 • Change • -XX:BiasedLockingStartupDelay が4000から0に • 計算機が向上し、遅延を有効にしてVMのオーバーヘッ ドが発生するよりは無効にした方が性能が良くなった Option
  17. 17. 17Copyright©2018 NTT corp. All Rights Reserved. •盛り上がる Swing/AWT • Windows 8以降のキーボードがないモバイル環境な どでテキストコンポーネントにフォーカスを移した場 合、OSのソフトウェアキーボードが自動で出るよう になった その他
  18. 18. 18Copyright©2018 NTT corp. All Rights Reserved. •JShellの起動が早くなった • コンパイラインスタンスを都度立ち上げていたので、 大量の snippet と共に起動しようとすると遅かった • krb5 1.15 追随 • includedir <DIRNAME> で指定したディレクトリ の .conf で終わるファイルも読むようになった • JNLP が IE 11 on Windows 10 で動かない • Windows 10 Creators Update適用後からJNLPリンクをクリ ックしてもJava Web Startアプリケーションが立ち上がらな くなった • Oracle 社の発表通り、Java 11以降は Java Web Start が Oracle JDKに含まれなくなる • OpenJDK には元から含まれていない その他

×