![Close](https://cdn.infoq.com/statics_s2_20180417-0222/images/icon-close.png)
A note to our readers: You asked so we have developed a set of features that allow you to reduce the noise: you can get email and web notifications for topics you are interested in. Learn more about our new features.
JDK 10リリースの2日後、オラクルのJavaプラットフォームグループのチーフアーキテクトMark Reinhold氏がJDK 11 GAリリースのスケジュールを提案した。
- 6月28日: ランプダウン フェーズ1 (メインラインからフォークする)
- 7月19日: 全テスト実行
- 7月26日: ランプダウン フェーズ2
- 8月16日: リリース候補初回版
- 8月30日: リリース候補最終版
- 9月25日: 一般提供
JDK 11をターゲットにしているJEPは以下のものだ。
- JEP-309: 動的クラスファイル定数
- JEP-318: Epsilon: 自由裁量の低オーバーヘッドガベージコレクタ
- JEP-320: Java EEモジュールとCORBAモジュールの削除
- JEP-323: ラムダのパラメータに対するローカル変数の構文
JDK 11のアーリーアクセスビルドはJDK 10リリースのほぼ1ヶ月前から入手できるようになっている。Reinhold氏はこうツイートしている。
JDK 11のこれらのビルドはJEP 320 (Java EE & CORBAモジュールの削除)を含みますので、以前より小さくなっています。9つモジュールが減り、22メガバイト少ないです。 #jdk11
JEP-320: Java EEモジュールとCORBAモジュールの削除
再構築となったJava SE 9にはJava EEモジュールとCORBAモジュールのサポートがあった。しかしJEP 277にあるとおり、すぐ今後削除される予定の非推奨なものとなった。
Java EEモジュールはwebサービススタックである。これはJava開発者に便利なものとしてJava SE 6のリリース以降利用できた。
- JSR-224: XMLベースのWebサービス用Java API (JAX-WS)
- JSR-222: XMLバインディング用Javaアーキテクチャ (JAXB)
- JSR-925: JavaBeansアクティベーションフレームワーク (JAF)
- JSR-250: Javaプラットフォーム向け共通アノテーション
過去12年間進化したが、JDKはもはやこうしたモジュールをサポートする必要がないと決定された。Mavenセントラルのようなサードパーティのサイトですぐに入手できる。
CORBAモジュールは1998年からJDKに入っていたが、現代のアプリケーションの多くはCORBA技術を使わないので同様に削除される。結果的には、オラクルはCORBAへの継続したサポートはもはや費用対効果がよくないと判断したことになる。
以下はJDK 11で削除予定のモジュールの完全なリストである。
java.xml.ws
(JAX-WS、加えて関連技術のSAAJとWebサービスメタデータ)java.xml.bind
(JAXB)java.activation
(JAF)java.xml.ws.annotation
(共通アノテーション)java.corba
(CORBA)java.transaction
(JTA)java.se.ee
(上記6つのモジュールの集約モジュール)jdk.xml.ws
(JAX-WS用ツール)jdk.xml.bind
(JAXB用ツール)
これらのモジュールの削除にあるリスクはJEP 320で認知、ドキュメント化されている。Java EEモジュールは具体的にこうだ。
アプリケーションはJDKがサポートするJava EE APIやツールを"そのまま"利用しているとコンパイルおよび実行ができなくなります。こうしたアプリケーションはJDK 6、7、8から9や今後のリリースに移行する場合バイナリとソース両方で非互換となります。
Java EEモジュール削除にある他のリスクは、すでにJDK 6、7、8から9へ移行したアプリケーションがコマンドラインフラグ
--add-modules java.se.ee
や--add-modules java.xml.bind
などを使っていると起動しないということです。
RMI-IIOPやjavax.activity
パッケージ、承認済みCORBA APIを使っているCORBAアプリケーションはコンパイルおよび実行ができなくなる。
レッドハットのプリンシパルソフトウェアエンジニアAleksey Shipilëv氏はJAXBモジュールがJEP 320で削除されたためSPECjbb2015ベンチマークがJava 10以降だと壊れるとツイートしている。修正案はJAXBの依存を追加することだ。
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
新しいJava SEリリースサイクル
新しいJavaのリリースサイクルが本格的になり、JDK 9の6ヶ月後にJDK 10がリリースされ、さらにJDK 11が2018年9月にリリースされる予定である。Javaの新バージョンを数年待つことに慣れていた開発者は新しいリリースサイクルに今カルチャーショックを受けているかもしれない。
TwitterのJava公式アカウントは新しいリリースサイクルを説明する画像をツイートしている。
新しいリリースサイクルについてJavaコミュニティではうわさがいくつかあった。Thymeleafの創始者でリード開発者のDaniel Fernández氏はこうツイートしている。
2016年: "Javaは終わりだ!進化が遅すぎる!いいアイデアはみな使えるまでに長い時間がかかる!"
2018年: "Javaは終わりだ!進化が早すぎる!誰もペースについていけない!"
Fernández氏のツイートには興味深い返答がいくつかついている。
"Kotlin?"
"2020年には何がある?Javaは終わりだ!それなしでは生きていけない!私の家はいたるところにJavaが入り込んでいるんだ。この小さなコーヒーカップにどんな力が。私の活動を含め、これが私の家を制御しているんだ。"
"Javaは終わりだ。単純さの代わりに完全であることにフォーカスしている。"
"ここでの教訓は変化は (段階的な) 移行それ自身より問題が少ないということだ...実際これは人生とコンピュータ科学におけるあらゆることで繰り返されている問題のように思える。"
"Java 10はIDEがアップデートしてサポートするようになるまでリリースするべきではないと誰かが言っているのを見た。鶏と卵の問題のように、鶏がすでにいる場合を別にすれば卵が出てくるまで待ってもいいね。"
"2016年のクレーマ: 代わりにJavaScript (YOLO) を使おう。2018年のクレーマ: JavaScriptに切り替えた同じ2016年のクレーマが今度はJavaに戻ってくる。YOLOは保守しづらいからだ。"
"Javaはオラクルのせいで終わりだ。"
この新しいリリースサイクルがJavaコミュニティにどのような影響を与えるかは時間が教えてくれるだろう。
資料
- Javaのバージョンの歴史 Wikipediaに記載されている
- 今後のJavaFXと他のJavaクライアントのロードマップの更新 Donald Smith氏 (2018年3月7日)
- 最近のDukeの宙返り Simon Ritter氏 (2018年3月15日)
- Javaプラットフォームの信じがたい縮小 Simon Ritter氏 (2018年3月21日)
Rate this Article
- Editor Review
- Chief Editor Action