セカイノカタチ

世界のカタチを探求するブログ。関数型言語に興味があり、HaskellやScalaを勉強中。最近はカメラの話題も多め

Oracle Javaの無償配布終了で何が起こるのか?

www.publickey1.jp

世界中で30億デバイスに搭載されているプログラミング言語Javaのリリースサイクルが変更になることと、オラクル版のJavaが無償提供されなくなるというニュースです。

リリースサイクルが半年ごとに

オープンソースのOS、LinuxのメジャーなディストーションであるUbuntuなどで採用されているリリース方式で、「機能ができたらリリースする」のではなく、「時間が来たらリリースする」方式です。

Javaぐらい大規模で歴史も深いプロジェクトになると、影響範囲の検証などをじっくり行うため、大きな機能改善などは、何年もかかったりします。すると、自然とリリースサイクルは長くなり、Java7からJava8までで、2年半、Java8→Java9では、3年半もかかってしまいました。

機能ベース = いつリリースされるかわからない

このことを回避するために、「リリースペースを固定する」という方法を採ることにしたようです。

半年に1回のリリースであれば、小さな機能改善をコンスタントに提供できるため、ユーザーの利便性は増します。

大規模な機能変更は、数年に一度になると思いますが、それは今までと同じなのでデメリットにはならないわけです。

そして、Ubuntuなんかもそうですが、リリースサイクルが決まっていると「この機能を次のリリースに入れたい!」というモチベーションが湧くので、機能の開発者にとっても目標ができて良いのかもしれません。

時間ベース = コンスタントな機能提供、開発モチベーション

Oracle JDKとOpenJDKが同じ機能に

そもそも、Oracleの提供しているJDKとOpenJDKは、機能的な差異はないみたいです。

歴史的には、別々のものでコンパイラの性能にも差異があったと記憶していますが、現在はコアとなる機能は全く同じで、プロファイラなどの周辺ツールが付属するかしないかの違いしか無いようです。

そして、この周辺ツールについてもオープンソース化を行い、OpenJDK に付属させるということみたいです。

これは、グッドニュースですね。

Oracle JDK = OpenJDK になる

Oracle JDK は有償に

そして、物議を醸しているのが、Oracle JDK の有償提供というニュースです。

文章を読むと、 Oracle JDK と OpenJDK を統一して、リリースラインを1本にするということと、リリースサイクルを半年ごとにするということに合わせて、Oracle版のJDKは3年毎に8年以上のサポート期間を持つ、長期サポートバージョンをリリースして、有償サポートする。ということみたいです(通常版は半年サポートというか、次のバージョンまで)。

Oracle JDK と OpenJDKの統合
+
リリーサイクルの固定
+
長期サポート版の有償提供

これらのことは、バラバラに起こるのではなく、全てが連動した施策という事になり、全体を見ると歓迎すべき方向性なのではないかと思います。

何が起こるのか?

これによって、「何が起こるのか?」ですが、大企業の社内向けシステムなどは、一度構築したシステムを長期に利用し、その間にセキュリティパッチが提供されることなどが、システム選定時の稟議に関わりますので、恐らく長期サポート付きの有償契約を選択するのではないかと思います。3年毎の長期サポート版を買えば、8年以上の長期に渡ってサポートを受けられるというのは、願ってもないことなはずです。

→大企業は有償サポートが嬉しい(はず)

そして、常に開発を続けているウェブサービスや、ベンチャー企業などは、リリースサイクルの合わせて自社のシステムをアップデートしていくのだと思います。現代のシステム開発では、「停滞=死」ですから、定期的に新機能がリリースされる方が嬉しく、今まで有償だったツールが無償になるのもお得感しか無いはずです。

→ベンチャーは定期アップデートが嬉しい(はず)

そして、システム開発と無縁な中小企業ですが、今までもJavaのアップデートなんて気にしてなかったでしょ?それこそ、Java1.4とかJava5とかを平気で使っているはずなので、これからも気にせず、システム導入時にリリースされている最新版を使って、それ以降は放置になると思います。

→中小企業は気にしない(はず)

感想

全体的には、それぞれのセクションで満足度の高い、良い戦略なんじゃないかと思います。

さすがはオラクル、頭が良い人が考えた感じがします。

むしろ、ひょっとして、UbuntuもLTSは有償提供が良いのでは・・・?

The Evolution of Computer Programming Languages #C #Fortran #Java #Ruby

追記

ブクマで指摘がありましたので、 Open JDK → OpenJDK にしました。