CORBAがJava SE11で削除されるようです。。。


Java SE11なんて、まだまだ先の話ですが(とはいえ、今年の9月リリース予定

Java Code GeeksのAn Early Look at Features Targeted for Java 11の記事によると、この記事が公開された2月5日の時点では4つのJEP(JDK Enhancement Proposal:JDKリリースプロジェクトの長期的なロードマップとそれに関連する取り組み)がJava 11の対象になっていて、そのうちの一つである、JEP320(Remove the Java EE and CORBA Modules)でCORBAのモジュールを削除することが記載されています。
今、Java SE8を使っているので気づきませんでしたが、Java SE9では既にdeprecatedとなっているようです

そもそもCORBAとは

以前投稿したCORBAのIDLファイルでメソッドの返り値・引数に配列を指定する方法でも記載しましたが、大まかにいうと異なるOSやプログラミング言語間でも通信ができる仕様です……が、かなり古い仕様で、J2SDK 1.2には既に取り込まれていましたが、今ではレガシーなシステムの保守程度でしか使われていないのでは?と思います。

削除される理由

JEP320をgoogle翻訳を駆使してまとめてみました(誤訳があれば指摘ください)。

  1. CORBAはJavaのコミュニティの外で改善が進められているため、JDKで保守しずらく、またJava EEがサポートする1バージョンと同期させるのは現実的ではない。
  2. いまどきJavaでCORBAを使って、モダンなアプリケーション開発するケースが少なく、Java EE 8ではCORBA、RMI-IIOP、およびJavaIDLが既に"オプション"という扱い。

CORBAをサポートするメリットが保守するコストに見合わないということのようです。

Java SE11でもCORBAを使うには

java.corba以下のソースが削除されてしまうため、Java SE11ではidljなどのコマンドも一切使えなくなりますが、RMI-IIOPのAPIはJava SEに残るため、RMI-IIOPを利用するか、私は使ったことはありませんがJacORBというライブラリが最近もメンテナンスされています。

補足

この記事ではCORBAをメインに書きましたが、JEP320のタイトルにあるようにJava EEのモジュールもJava SEから削除されます。こちらは代替策としてMavenで管理されているアーティファクトをJEP320の中でいくつか紹介されているので、そちらを参照してください。

その他Java SE11に取り込まれる予定のJEP

頑張ってまとめようと思いましたが、英語力が追い付かず挫折しました

最後に

Java SE11はLTS(Long Term Support)で、~Java SE8から移行されるバージョンになると思うので、Java SE11に追加・変更される仕様は要チェックですね。とはいえ、この投稿を書いている時点では、まだJava SE10のEAが出たところなので、詳しい解説が出てくるのはこれからでしょう。
あと、普段はJavaを使ったフレームワークを利用して開発しているので、Java自体の仕組みとか読むのに苦戦しました

この投稿に至った経緯

今携わっているレガシーシステムがCORBAを使っているため、情報収集していたら見つけたので


  1. Java SE TechnologiesにはCore ComponentsとしてCORBAが記載されていますが、Java EEの方には見つからないんですよねぇ。ただWebLogicJBoss EAPなどのJava EEサーバはCORBAをサポートしている旨が書かれていましたが。