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.

OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)

36,985 views

Published on

■NTTデータ オープンソースDAY 2015 Autumn (2015/10/19 講演資料)
『OpenJDKは使い物になるか? OpenJDKの実際と今後』
NTTコムウェア株式会社 末永 恭正

http://oss.nttdata.co.jp/hadoop/event/201510/

Published in: Technology
  • Be the first to comment

OpenJDKは使い物になるか?OpenJDKの実際と今後 (NTTデータ オープンソースDAY 2015 Autumn 講演資料)

  1. 1. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 末永 恭正 OpenJDKは使い物になるか? OpenJDKの実際と今後
  2. 2. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 自己紹介 • 末永 恭正(すえなが やすまさ) • NTTコムウェア株式会社 • OpenJDK jdk9 committer • IcedTea committer • HeapStats作ってます http://icedtea.classpath.org/wiki/HeapStats/jp OracleとJavaは、Oracle Corporation及びその子会社、関連会社の米国及びその他の国における登録商標です。 文中の社名、商品名等は各社の商標または登録商標である場合があります。 本資料に記載している情報は2015年10月13日現在のものです。今後変更となる可能性があります。
  3. 3. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY OpenJDKとは?
  4. 4. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY オープンソースのJava SE実装 • 2007年5月に初期バージョンリリース • 当時はまだSun Microsystems • Java SE仕様に準拠 • Java SE API仕様のレベルではOracleJDKと完全互換 http://www.oracle.com/technetwork/jp/java/javase/community/opensourcejdk-jsp-136417-ja.html
  5. 5. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 対応プラットフォーム OS Processor
  6. 6. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY JDKの系譜 https://blogs.oracle.com/darcy/entry/openjdk_6_genealogy/ 8u1 ... OpenJDK9 • 最初にJDK 7がOSS化 • JDK 7の途中からOpenJDK6が派生 • JDK 8も元はOpenJDK7 • JDK 7からはコードベースが OpenJDK7に一本化 • OracleJDKもOpenJDKも元は一緒 • 現在開発中のOpenJDK9は OpenJDK8からの派生
  7. 7. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 参画企業の一例
  8. 8. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 日本からも参画者が! 2015/04/08 Java Day Tokyo 2015 基調講演より:
  9. 9. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY OracleJDKとは何が違う?
  10. 10. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY Oracle (Sun) JDKとの違い http://ossipedia.ipa.go.jp/doc/208/ • 2010年に情報処理推進機構(IPA)から 公開されたOpenJDKとSunJDKの比較資料 • SunJDK 6u17とRed Hat社提供の java-1.6.0-openjdk-1.6.0.0-1.7.b09を 比較
  11. 11. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY IPA報告資料より • Javaクラスライブラリ実装のうち97%は 問題なし • 残りの3%は差分があったものの、Javaと して仕様が定められていないもの • com.sunパッケージ • CORBAや画像処理などでJavaが内部的に使用 するもの • 通常のJavaプログラミングには全く影響なし • 実機検証においても、物理環境・仮想環境 に関係なく性能的な差異なし!
  12. 12. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY OracleJDK「だけ」にあるもの • Java Flight Recorder • -XX:FlightRecorder、-XX:StartFlightRecording • 商用環境への適用が可能な低オーバーヘッドプロファイラ • Application Class Data Sharing • -XX:UseAppCDS • マルチインスタンス構成時にアプリケーションクラス情報をプロセス間で共有 • Resource Management • -XX:MemoryRestriction、-XX:ResourceManagement、 -XX:ResourceManagementSampleInterval • G1GC選択時(-XX:+UseG1GC)に有効になる仮想メモリ使用量制御機能
  13. 13. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY OracleJDK「だけ」にあるもの • Error Report Transmission • -XX:TransmitErrorReport、-XX:ErrorReportServer • JVMクラッシュ時にエラーリポートを別サーバへ送信 • JavaFX • OracleJDK 7u2以降はSDKが付属 • OpenJDKではJavaFXのオープンソース実装であるOpenJFXが必要 • Java Plugin、Java Web Start
  14. 14. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY IcedTea
  15. 15. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY IcedTea • Red Hat主導のOpenJDKサポートプロジェクト • 元々はFOSSでOpenJDKのビルドを実現するためのプロジェクト • Java Plugin、Java Web Startを提供 • icedtea-web • 付加価値 • Zero VM • SystemTapサポート • 様々なJava関連OSSプロジェクトのホスティング • Thermostat • HeapStats
  16. 16. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY IcedTeaで嬉しいコト × =長~いEOL
  17. 17. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 例えばRed Hat Enterprise Linux • OpenJDKはRed Hat Enterprise Linux (RHEL) のコアコンポーネント • https://access.redhat.com/ja/articles/503403 • RHELのライフサイクルに依存 • Production 3(重大なセキュリティ、バグフィックスのみ提供)までGA後7年 はサポート • https://access.redhat.com/support/policy/updates/errata/
  18. 18. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY OracleJDKのサポートポリシー • 無償アップデート期間 • GAから3年間 • 後続のメジャーリリースから1年間 • これを超えてもアップデートが欲しい場合は有償契約が必要 http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html
  19. 19. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY OracleJDK 7までをご利用の方 もう無料でアップデートを 入手できません ※セキュリティFix含む
  20. 20. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 最新のJDKに乗り換えるべき理由 公式アップデート提供の他にもメリットいっぱい!
  21. 21. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 乗り換えるメリット 1. End Of Lifeまでの期間が長い! 2. OracleJDKのEOL後もバグFix、セキュリティFixが提供される! 3. アプリケーションがそのままでも性能が上がる可能性が! 4. 様々なサポートベンダが検討可能!
  22. 22. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 性能向上の一例 • 新しいCPU命令セットの積極的な活用 • クラスライブラリ実装の性能改善 • GC(Garbage Collection: 不要メモリ回収機能)の性能改善 • JIT(Just-In-Time)コンパイラの最適化精度向上
  23. 23. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 例えばAES暗号処理(7u40~) http://www.slideshare.net/YaSuenag/hotspot-46884406
  24. 24. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 他にもこんな性能向上が! • JVM • Intel系SIMD命令を活用したメモリのバルク転送(6u14~) • SSE 4.2命令を活用した文字列処理性能の向上(6u18~) • クラスライブラリ • Arrays#sort(Object[]系)のアルゴリズムをTimSortに変更(7~) • その他 • JavaScript実行エンジンの性能向上(8~)
  25. 25. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY サポートベンダ • OSSであるため、実装に基づく解析やパッチ提供が誰でも可能 • Red Hat • Azul
  26. 26. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY NTTコムウェアでも… Javaアプリケーションの潜在的なバグ、チューニングについてコンサルティングします! Java診断サービス 1番多い メモリトラブルに対応! 一部の性能問題にも 対応可能 • サービス内容 • メモリ枯渇の危険性やメモリに関連するAPの潜在的なバグの有無を 確認 • Garbage Collection(GC)をはじめとした、JVMのチューニング実施 • OSSのツールを活用し、突然のトラブルにも迅速に対応できる環境の 実現に向けたコンサルティング • 対象プロダクト • Oracle JDK 1.5以上 • OpenJDK • JRockit R28以上 ※動作するミドル、ライブラリについては条件はありません。 NTTコムウェア 品質生産性技術本部 技術SE部 OSS・AP技術担当 ctpm-se-openjdk-all@srv.cc.nttcom.co.jp 043-211-2392
  27. 27. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY OpenJDKならではの「よかった」事例 どうせ乗り換えるならOpenJDKに!
  28. 28. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY よかった1:クラッシュの解析 ウチのシステム、コア吐いて 死んじゃったんですけど! 商用トラブルなんで、なるはやで 助けてください!! じゃあ、とりあえず エラーログとコアイメージを 送ってください。
  29. 29. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY よかった1:クラッシュの解析 あー、JITコンパイラのバグ っぽいです。 JIRAには書いていませんが、 ○○オプションで回避できます。 クラッシュしなくなりました! ありがとうございました!!実装調査
  30. 30. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY よかった2:バグの予防 今度JDK 8使おうと思ってるんですが、 何か懸念ありますか? △△という商用ライブラリも使います。 △△? 以前JDKのバグを踏んだライブラリだな。 JDK 7にはコミットしたけど8は…?
  31. 31. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY よかった2:バグの予防 やっぱり8に入ってなかったか。 ついでだから、コミュニティに バックポート依頼出しておこう。 △△はJDK 8では注意ですね! ありがとうございました!!変更履歴
  32. 32. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY OpenJDK開発への参加方法 自分/自社でOpenJDKをつくってみる
  33. 33. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY Contributing http://openjdk.java.net/contribute/
  34. 34. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY Developers’ Guide http://openjdk.java.net/guide/
  35. 35. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 大前提 OCAにサインする
  36. 36. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY Oracle Contributor Agreement • OracleのOSSプロジェクトにパッチ等を寄贈(contribute)するための 同意書 • OpenJDK、GlassFishなど • OCAが締結されていないとパッチを出しても受領してもらえない • 個人でも締結可能 • 企業の場合は雇用者がサインする必要あり http://www.oracle.com/technetwork/oca-405177.pdf
  37. 37. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY OCA締結者一覧 http://www.oracle.com/technetwork/community/oca-486395.html
  38. 38. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY OpenJDKの前提知識 • コード管理 • Mercurial • 開発言語 • C、C++、アセンブラ(JVM) • Java、C(クラスライブラリ) • その他(Makefile、シェルスクリプトなど) • プラットフォーム • Windows • Linux • OS X など
  39. 39. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 38 Step 1 Contributorhttp://www.wrc.com/en/wrc/media/galleries/page/50----.html
  40. 40. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY Contributor • OCAが受理されれば誰でもContributor! • パッチを出したらスポンサー探し • スポンサー:JIRAへの登録やパッチレビュー、コミットを手伝ってくれる人 • スポンサーは、そのパッチの対象となるプロジェクト/グループのコミッタ以上 が担うことができる
  41. 41. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 40 Step 2 Authorhttp://www.wrc.com/en/wrc/media/galleries/page/50----.html
  42. 42. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY Author • 名前付きChangesetが2つ以上でなることができる • 条件を満たしたらProject Leadに「Authorになりたい」と連絡するだけ • OpenJDKのJIRAへの書き込み権、Oracleのコードレビューサーバ へのアクセス権をゲット! • OpenJDK Censusにも名前が載ります • パッチ提供の一連の作業が格段にはかどります! • 相変わらずスポンサーは必要
  43. 43. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 名前付きchangeset
  44. 44. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY OpenJDK Census http://openjdk.java.net/census
  45. 45. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 44 Step 3 Committerhttp://www.wrc.com/en/wrc/media/galleries/page/50----.html
  46. 46. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY Committer • 名前付きChangesetが8つ以上でなることができる • Authorでなくてもこの条件を満たせばCommitterになれます • 現在Committerを務めている人からノミネートされ、投票を受ける必要 がある • Authorの内容に加え、コミット権とスポンサー権をゲット! • ただし、HotSpot VMの場合はOracleのテストサーバ(非公開)経由で のpushが必須となっているため、Oracle社員以外は直接pushすること ができない • HotSpotに関しては相変わらずスポンサーが必要 • 他(クラスライブラリ、関連プロジェクト等)に関しては直接pushが可能
  47. 47. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 46 Step 4 Reviewerhttp://www.wrc.com/en/wrc/media/galleries/page/50----.html
  48. 48. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY Reviewer • 現在Committerで、かつ名前付きChangesetが32個以上でなることが できる • 現在Reviewerを務めている人からノミネートされ、投票を受ける必要 がある • OpenJDKコミュニティで事実上最高ランク • Committerの内容に加え、レビュー権をゲット!
  49. 49. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY ContributorがBugFixするまで 1. パッチを作る 2. MLに出す 3. レビューコメントに対応する 4. スポンサーにコミットしてもらう
  50. 50. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY MLがこんなに! http://mail.openjdk.java.net/mailman/listinfo
  51. 51. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY OpenJDKのML • コンポーネント別に分かれています • 基本的なクラスライブラリ:core-libs-dev • GC関連:hotspot-gc-dev • 出し先を間違えると反応してくれない可能性が高いです • OpenJDKのMLはファイル添付ができないので、パッチは本文記載や ストレージサービス等で参照できる形にする • jdk9やjdk8u-devなど、JDKそのもののMLには出さない! • 個々のバグフィックス、機能改善について議論する場ではありません • CommitterやReviewerの投票、JDKのリリーススケジュール、新機能の採否と いった全体的な議論をする場です
  52. 52. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 私の対応したバグFix・機能改善 • Linux版JDK付属ツールの不具合改善 • 最新GCCでのビルド不具合対処 • 脆弱性対処 • クラッシュするようなバグへの対処 • 外部からの強制的なGCログローテーション機能の実装 など
  53. 53. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY JDK 9 2016年リリース!
  54. 54. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY JDK 9 • 2016/09/22リリース予定 • 数々の大幅な変更を含むリリース • HTTP/2への対応 • モジュラー化 • Javaランタイムのコンパクト化を実現 • JavaDocのHTML5化 • デフォルトのGCアルゴリズムをG1(Garbage First)GCへ変更 など
  55. 55. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY JDK 9 http://openjdk.java.net/projects/jdk9/
  56. 56. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY JEP @ JDK 9 JEP: JDK Enhancement Proposal 61個のエンハンスメント http://openjdk.java.net/projects/jdk9/
  57. 57. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY JDK 9の(小さいけど)うれしい変更点 なかなか表には出てこないものを一部紹介!
  58. 58. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY JEP 143: Improve Contended Locking • http://openjdk.java.net/jeps/143 • Javaのsynchronizedステートメントによる排他制御の性能改善 • マルチスレッドプログラムの性能向上に期待大! • Javaクラスライブラリ内でも多数使われています COMPLETED
  59. 59. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY JEP 165: Compiler Control • http://openjdk.java.net/jeps/165 • JVMのJITコンパイラを細かく制御する方法の実装 • 今までできた制御は、JITコンパイラ全体に対するコンパイル可否、インライン 制御など • ループ展開のレベル設定や生成されたアセンブラコードのロギングなど マニアックな きめ細かな設定が可能 • 起動後のプロセスに対して、後から設定を行うことも可能!
  60. 60. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY JEP 254: Compact String • http://openjdk.java.net/jeps/254 • String内部表現をchar型配列(2バイト/字)からbyte型配列 (1バイト/字)にしてメモリを効果的に使おう!という改善 • Javaで扱う文字列の大半は半角英数だから2バイトもいらないよね?が発端 • Javaの文字列内部表現がUTF-16からUTF-8に変わるわけではありません! • メモリフットプリントの削減、GC発生頻度の低減が期待できる! • 日本語バリバリの環境では …?
  61. 61. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 網羅的に見てみたい方は… http://www.slideshare.net/YujiKubota/jdk9-jjug
  62. 62. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY Java SE roadmap JavaOne 2014で発表されたロードマップ 2014 2015 2016 … JDK 7 EOSL (End of Service Life) • OracleJDK無償版は2015/7保守停止 • RHEL上のOpenJDKは2020年まで継続 JDK 8 2014/3 リリース済 • ラムダ式の導入 • Stream API • Date and Time API JDK 9 2016年予定 • Jigsaw : モジュール化 • HTTP 2.0 API • 軽量なJSONパーサ • JVMの性能改善 将来のJDK 時期未定 • Project Valhalla / Panama • Sumatra : GPGPU活用
  63. 63. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY

×