Subscribed unsubscribe Subscribe Subscribe

Islands in the byte stream

Technical notes by a software engineer

近い将来AndroidのクラスライブラリがOpenJDKベースになるらしい

Google confirms next Android version will use Oracle's open-source OpenJDK for Java APIs | VentureBeat | Dev | by Emil Protalinski

AOSPへのコミットへのRedditスレッドから発展し、12/29にVentureBeatがGoogleからコメントをもらいつつ記事にされたニュースです。ART/Dalvikはどうなるのか、JavaのAPIをめぐるOracleとの係争ゆえのことなのか、など様々な憶測を呼びました。

そしてその後、12/30にGoogleからのフォローアップにより件の記事がアップデートされました。

Update on December 30: Google followed up today to clarify some of the details the company explained to us before we wrote this article. As a result, the headline has been corrected to more accurately reflect the story. While Google is moving away from its own implementation (using Apache Harmony-based libraries) to use OpenJDK libraries as its foundation for the standard Java libraries, the company is still making changes to OpenJDK to make it work on Android. As a result, future versions of Android will continue to contain parts of Google’s “own implementation,” just based on OpenJDK.

(抄訳)

12/30にアップデート: Googleは本記事に対してさらに詳細な情報を提供した。それによれば、Googleは Java標準に近づけるため Java標準ライブラリとしてOpen JDKを採用し 、Apache Harmonyをベースにした独自のライブラリ実装を捨ててOpen JDKのライブラリを使うことにした。現在はOpen JDKをAndroidで動くようにするための修正を行っている。つまり、将来のバージョンのAndroidはOpen JDKをベースにした独自実装を持つことになるだろう。

(1/4 追記: 指摘を受けて誤訳を修正)

実際のところ、これ以上でもこれ以下でもないと思われます。つまり、単に標準ライブラリの実装の際をなるべくOpen JDK (≒ Oracle JDK) に近づけることが目的で、Open JDKがOSSとして公開されている以上それを使うのがメンテナンスコストを下げられるから採用する、というだけだろうということです。

標準ライブラリの挙動がJDKと同じ動作になるのは基本的には歓迎できることだと思います。2015年はAndroidプロジェクトのユニットテストをJVMで走らせる機能がAndroid Studioに実装され、さらにそれを使いやすくするRobolectricも発展してきました。しかしそれはJDKとAndroidの違いを意識する場面も増えてきたということでもあります。そんな中で、標準ライブラリをOpen JDKに寄せるのは当然の帰結だといえます。