SlideShare a Scribd company logo
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 末永 恭正
OpenJDKは使い物になるか?
OpenJDKの実際と今後
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日現在のものです。今後変更となる可能性があります。
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
OpenJDKとは?
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
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
対応プラットフォーム
OS
Processor
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からの派生
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
参画企業の一例
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
日本からも参画者が!
2015/04/08
Java Day Tokyo 2015
基調講演より:
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
OracleJDKとは何が違う?
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を
比較
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
IPA報告資料より
• Javaクラスライブラリ実装のうち97%は
問題なし
• 残りの3%は差分があったものの、Javaと
して仕様が定められていないもの
• com.sunパッケージ
• CORBAや画像処理などでJavaが内部的に使用
するもの
• 通常のJavaプログラミングには全く影響なし
• 実機検証においても、物理環境・仮想環境
に関係なく性能的な差異なし!
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)に有効になる仮想メモリ使用量制御機能
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
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
IcedTea
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
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
IcedTeaで嬉しいコト
× =長~いEOL
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/
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
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
OracleJDK 7までをご利用の方
もう無料でアップデートを
入手できません
※セキュリティFix含む
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
最新のJDKに乗り換えるべき理由
公式アップデート提供の他にもメリットいっぱい!
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
乗り換えるメリット
1. End Of Lifeまでの期間が長い!
2. OracleJDKのEOL後もバグFix、セキュリティFixが提供される!
3. アプリケーションがそのままでも性能が上がる可能性が!
4. 様々なサポートベンダが検討可能!
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
性能向上の一例
• 新しいCPU命令セットの積極的な活用
• クラスライブラリ実装の性能改善
• GC(Garbage Collection: 不要メモリ回収機能)の性能改善
• JIT(Just-In-Time)コンパイラの最適化精度向上
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
例えばAES暗号処理(7u40~)
http://www.slideshare.net/YaSuenag/hotspot-46884406
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~)
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
サポートベンダ
• OSSであるため、実装に基づく解析やパッチ提供が誰でも可能
• Red Hat
• Azul
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
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
OpenJDKならではの「よかった」事例
どうせ乗り換えるならOpenJDKに!
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
よかった1:クラッシュの解析
ウチのシステム、コア吐いて
死んじゃったんですけど!
商用トラブルなんで、なるはやで
助けてください!!
じゃあ、とりあえず
エラーログとコアイメージを
送ってください。
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
よかった1:クラッシュの解析
あー、JITコンパイラのバグ
っぽいです。
JIRAには書いていませんが、
○○オプションで回避できます。
クラッシュしなくなりました!
ありがとうございました!!実装調査
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
よかった2:バグの予防
今度JDK 8使おうと思ってるんですが、
何か懸念ありますか?
△△という商用ライブラリも使います。
△△?
以前JDKのバグを踏んだライブラリだな。
JDK 7にはコミットしたけど8は…?
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
よかった2:バグの予防
やっぱり8に入ってなかったか。
ついでだから、コミュニティに
バックポート依頼出しておこう。
△△はJDK 8では注意ですね!
ありがとうございました!!変更履歴
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
OpenJDK開発への参加方法
自分/自社でOpenJDKをつくってみる
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
Contributing
http://openjdk.java.net/contribute/
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
Developers’ Guide
http://openjdk.java.net/guide/
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
大前提
OCAにサインする
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
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
OCA締結者一覧
http://www.oracle.com/technetwork/community/oca-486395.html
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
OpenJDKの前提知識
• コード管理
• Mercurial
• 開発言語
• C、C++、アセンブラ(JVM)
• Java、C(クラスライブラリ)
• その他(Makefile、シェルスクリプトなど)
• プラットフォーム
• Windows
• Linux
• OS X
など
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
38
Step 1
Contributorhttp://www.wrc.com/en/wrc/media/galleries/page/50----.html
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
Contributor
• OCAが受理されれば誰でもContributor!
• パッチを出したらスポンサー探し
• スポンサー:JIRAへの登録やパッチレビュー、コミットを手伝ってくれる人
• スポンサーは、そのパッチの対象となるプロジェクト/グループのコミッタ以上
が担うことができる
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
40
Step 2
Authorhttp://www.wrc.com/en/wrc/media/galleries/page/50----.html
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
Author
• 名前付きChangesetが2つ以上でなることができる
• 条件を満たしたらProject Leadに「Authorになりたい」と連絡するだけ
• OpenJDKのJIRAへの書き込み権、Oracleのコードレビューサーバ
へのアクセス権をゲット!
• OpenJDK Censusにも名前が載ります
• パッチ提供の一連の作業が格段にはかどります!
• 相変わらずスポンサーは必要
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
名前付きchangeset
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
OpenJDK Census
http://openjdk.java.net/census
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
44
Step 3
Committerhttp://www.wrc.com/en/wrc/media/galleries/page/50----.html
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が可能
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
46
Step 4
Reviewerhttp://www.wrc.com/en/wrc/media/galleries/page/50----.html
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
Reviewer
• 現在Committerで、かつ名前付きChangesetが32個以上でなることが
できる
• 現在Reviewerを務めている人からノミネートされ、投票を受ける必要
がある
• OpenJDKコミュニティで事実上最高ランク
• Committerの内容に加え、レビュー権をゲット!
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
ContributorがBugFixするまで
1. パッチを作る
2. MLに出す
3. レビューコメントに対応する
4. スポンサーにコミットしてもらう
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
MLがこんなに!
http://mail.openjdk.java.net/mailman/listinfo
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のリリーススケジュール、新機能の採否と
いった全体的な議論をする場です
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
私の対応したバグFix・機能改善
• Linux版JDK付属ツールの不具合改善
• 最新GCCでのビルド不具合対処
• 脆弱性対処
• クラッシュするようなバグへの対処
• 外部からの強制的なGCログローテーション機能の実装
など
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
JDK 9
2016年リリース!
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へ変更
など
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
JDK 9
http://openjdk.java.net/projects/jdk9/
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
JEP @ JDK 9
JEP: JDK Enhancement Proposal
61個のエンハンスメント
http://openjdk.java.net/projects/jdk9/
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
JDK 9の(小さいけど)うれしい変更点
なかなか表には出てこないものを一部紹介!
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
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
JEP 165: Compiler Control
• http://openjdk.java.net/jeps/165
• JVMのJITコンパイラを細かく制御する方法の実装
• 今までできた制御は、JITコンパイラ全体に対するコンパイル可否、インライン
制御など
• ループ展開のレベル設定や生成されたアセンブラコードのロギングなど
マニアックな きめ細かな設定が可能
• 起動後のプロセスに対して、後から設定を行うことも可能!
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発生頻度の低減が期待できる!
• 日本語バリバリの環境では …?
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY
網羅的に見てみたい方は…
http://www.slideshare.net/YujiKubota/jdk9-jjug
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活用
Copyright © NTT COMWARE CORPORATION 2015
NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY

More Related Content

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

  • 1. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 末永 恭正 OpenJDKは使い物になるか? OpenJDKの実際と今後
  • 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. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY OpenJDKとは?
  • 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. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 対応プラットフォーム OS Processor
  • 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. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 参画企業の一例
  • 8. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 日本からも参画者が! 2015/04/08 Java Day Tokyo 2015 基調講演より:
  • 9. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY OracleJDKとは何が違う?
  • 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. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY IPA報告資料より • Javaクラスライブラリ実装のうち97%は 問題なし • 残りの3%は差分があったものの、Javaと して仕様が定められていないもの • com.sunパッケージ • CORBAや画像処理などでJavaが内部的に使用 するもの • 通常のJavaプログラミングには全く影響なし • 実機検証においても、物理環境・仮想環境 に関係なく性能的な差異なし!
  • 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. 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. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY IcedTea
  • 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. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY IcedTeaで嬉しいコト × =長~いEOL
  • 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. 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. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY OracleJDK 7までをご利用の方 もう無料でアップデートを 入手できません ※セキュリティFix含む
  • 20. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 最新のJDKに乗り換えるべき理由 公式アップデート提供の他にもメリットいっぱい!
  • 21. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 乗り換えるメリット 1. End Of Lifeまでの期間が長い! 2. OracleJDKのEOL後もバグFix、セキュリティFixが提供される! 3. アプリケーションがそのままでも性能が上がる可能性が! 4. 様々なサポートベンダが検討可能!
  • 22. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 性能向上の一例 • 新しいCPU命令セットの積極的な活用 • クラスライブラリ実装の性能改善 • GC(Garbage Collection: 不要メモリ回収機能)の性能改善 • JIT(Just-In-Time)コンパイラの最適化精度向上
  • 23. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 例えばAES暗号処理(7u40~) http://www.slideshare.net/YaSuenag/hotspot-46884406
  • 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. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY サポートベンダ • OSSであるため、実装に基づく解析やパッチ提供が誰でも可能 • Red Hat • Azul
  • 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技術担当 [email protected] 043-211-2392
  • 27. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY OpenJDKならではの「よかった」事例 どうせ乗り換えるならOpenJDKに!
  • 28. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY よかった1:クラッシュの解析 ウチのシステム、コア吐いて 死んじゃったんですけど! 商用トラブルなんで、なるはやで 助けてください!! じゃあ、とりあえず エラーログとコアイメージを 送ってください。
  • 29. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY よかった1:クラッシュの解析 あー、JITコンパイラのバグ っぽいです。 JIRAには書いていませんが、 ○○オプションで回避できます。 クラッシュしなくなりました! ありがとうございました!!実装調査
  • 30. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY よかった2:バグの予防 今度JDK 8使おうと思ってるんですが、 何か懸念ありますか? △△という商用ライブラリも使います。 △△? 以前JDKのバグを踏んだライブラリだな。 JDK 7にはコミットしたけど8は…?
  • 31. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY よかった2:バグの予防 やっぱり8に入ってなかったか。 ついでだから、コミュニティに バックポート依頼出しておこう。 △△はJDK 8では注意ですね! ありがとうございました!!変更履歴
  • 32. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY OpenJDK開発への参加方法 自分/自社でOpenJDKをつくってみる
  • 33. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY Contributing http://openjdk.java.net/contribute/
  • 34. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY Developers’ Guide http://openjdk.java.net/guide/
  • 35. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 大前提 OCAにサインする
  • 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. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY OCA締結者一覧 http://www.oracle.com/technetwork/community/oca-486395.html
  • 38. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY OpenJDKの前提知識 • コード管理 • Mercurial • 開発言語 • C、C++、アセンブラ(JVM) • Java、C(クラスライブラリ) • その他(Makefile、シェルスクリプトなど) • プラットフォーム • Windows • Linux • OS X など
  • 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. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY Contributor • OCAが受理されれば誰でもContributor! • パッチを出したらスポンサー探し • スポンサー:JIRAへの登録やパッチレビュー、コミットを手伝ってくれる人 • スポンサーは、そのパッチの対象となるプロジェクト/グループのコミッタ以上 が担うことができる
  • 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. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY Author • 名前付きChangesetが2つ以上でなることができる • 条件を満たしたらProject Leadに「Authorになりたい」と連絡するだけ • OpenJDKのJIRAへの書き込み権、Oracleのコードレビューサーバ へのアクセス権をゲット! • OpenJDK Censusにも名前が載ります • パッチ提供の一連の作業が格段にはかどります! • 相変わらずスポンサーは必要
  • 43. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 名前付きchangeset
  • 44. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY OpenJDK Census http://openjdk.java.net/census
  • 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. 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. 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. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY Reviewer • 現在Committerで、かつ名前付きChangesetが32個以上でなることが できる • 現在Reviewerを務めている人からノミネートされ、投票を受ける必要 がある • OpenJDKコミュニティで事実上最高ランク • Committerの内容に加え、レビュー権をゲット!
  • 49. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY ContributorがBugFixするまで 1. パッチを作る 2. MLに出す 3. レビューコメントに対応する 4. スポンサーにコミットしてもらう
  • 50. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY MLがこんなに! http://mail.openjdk.java.net/mailman/listinfo
  • 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. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 私の対応したバグFix・機能改善 • Linux版JDK付属ツールの不具合改善 • 最新GCCでのビルド不具合対処 • 脆弱性対処 • クラッシュするようなバグへの対処 • 外部からの強制的なGCログローテーション機能の実装 など
  • 53. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY JDK 9 2016年リリース!
  • 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. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY JDK 9 http://openjdk.java.net/projects/jdk9/
  • 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. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY JDK 9の(小さいけど)うれしい変更点 なかなか表には出てこないものを一部紹介!
  • 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. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY JEP 165: Compiler Control • http://openjdk.java.net/jeps/165 • JVMのJITコンパイラを細かく制御する方法の実装 • 今までできた制御は、JITコンパイラ全体に対するコンパイル可否、インライン 制御など • ループ展開のレベル設定や生成されたアセンブラコードのロギングなど マニアックな きめ細かな設定が可能 • 起動後のプロセスに対して、後から設定を行うことも可能!
  • 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. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY 網羅的に見てみたい方は… http://www.slideshare.net/YujiKubota/jdk9-jjug
  • 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. Copyright © NTT COMWARE CORPORATION 2015 NTT COMWARE CORPORATION CONFIDENTIAL PROPRIETARY