Java9, JavaEE8がリリース

この記事は2017年09月22日に公開されました。 情報が古い可能性があります。

こんにちは、殿内(@tonoccho)です

自分がかなりアクティブに追いかけていたのは何気にJava6までで、その後色々な機能が追加されているのは知りつつも、なんだか使う機会に恵まれす、Java7と8は傍目に見つつ眺めるだけでしたが、今回のJava9では相当な変更が中にも外にも起きたようです。JavaEE8についてはまぁ、そのうち見ようかなという感じ。

Java8との互換性

OracleがMigration Guideを出していますので、まずはこれを見ておくといいでしょう。例えば、「_」がJava9では予約語になったようです。なんにしても、そのままこれまでのコードが動くかというと、動かない可能性が結構ある、ということのようで、同ガイドにもあるように、ライブラリの更新、プログラムの再ビルド、などなどをした上できちんとテストをしないと、簡単にアップグレードはできなさそうですね。場合によっては「アップグレードではなく再デプロイ」ということもあり得ます。

Project Jigsawがついに日の目を

ジブリのかぐや姫の伝説は製作期間8年だそうなので、それよりは短くすみましたが、紆余曲折あってとうとうJDKに入ることになりました。どうせOSGIの焼き直しだろとか何も考えないでいうとフルボッコに合うかもしれませんから、細かいことは言いませんが、なんだかどうしても言いたくなったので言いました。名前以外は知りませんから許してください許してくださいゆる・・・し・・・て・・・。冗談はさておき、Javaのモジュール化という話は確かに結構前から話されていましたね。

-sourceオプションで1.5以下は警告

Javaでコンパイルするときにソースのバージョンをつけることがあるかもしれませんが、1.5以下にすると警告が出るようです。Javaは後方互換性を何としても確保するようなイメージがありましたが、Java9からはどうなるんでしょうね。

OSS化の動き

技術的にもいろんなことが起きていますが、業界の流れとしても面白いことが結構起きているみたいです。

というように、Eclipseさえ追っかけとけばJavaは困らないとかまたもや変なこと言って見たくなりましたが、JavaもOSSとして本格的に動き出しそうですね。OpenJDKってそういえばあったけど元気にやってるんでしょうか。OSSになったことで、この辺がいいところを取り合っていくことでいいスパイラルができるといいですね。

Javaのリリースサイクルの高速化

これは最近の業界のトレンドなのかはわかりませんが、Javaのリリースサイクルが今後は半年ごと(6ヶ月おき)になるようです(Java to Move to 6-Monthly Release Cadence)。これを歓迎すべきかどうか、という話はユーザー側としては悲喜こもごもでしょう。というのも、例えば金融系の場合は、滅多なことではソフトウェアのアップグレードはしません。アップグレードとそれに伴うテストのコストはバカにならないからです。そういうわけなので、上記時にもあるように、企業向けにはなんらかのサポートがOracleから提供されるようです。

For enterprises and organizations who don't necessarily want or need to upgrade at a rapid pace, Oracle is proposing to produce a long-term support (LTS) release every three years.

ただ、半年ごとのリリースサイクルのプロダクトを3年間サポートするということは、アップグレードのたびに6バージョン上がるということですね。半年おきのリリースというのは、開発の活発さが見えて個人的には好きですが、リリースの戦略は難しくなるかもしれません。

これからのJavaは別のものとして見てもいいかもしれない

Java9から先は、体制から大きく変わるため、Java8までのものと同一視することは避けたほうがいいかもしれません。JCPプロセスとかそういえばどうなるんでしょう。そういうわけで、Java初心者の自分も勉強したら何かチャンスがあるかもしれませんね。
これまでのJavaは「昔のJavaに色々足して言ったもの」という感じでしたが、これからのJavaは「再定義されたJava」というように見てもいいかもしれません。多分Oakとか覚えてる人いないんだろうな・・・
何にせよ、もはやWORAやGCというのは珍しいものではなくなり、むしろ「できて当然」の領域に来たような気もします。かつてJavaが出たばかりの頃は、C言語なんかが主流で、プログラムのポータビリティもインターフェースを標準化してやっても結局再ビルドが必要とか、メモリ管理はmalloc、mfree(だっけ?)で自分できちんとやってねというフルマニュアルな世界でした。だけど、今は「行儀よくプログラム書いてねメモリ管理はこっちがやるから」くらいまで来ているような気がします(それゆえの悩みもあるんでしょうけどね)。
つまり、Java2が強みとしてもっていたものが今は大したものではなくなった世界で生き残るには、Javaという言語自体が何か面白いものになっていく必要があるのでしょう。

ITは模索し続けるのがjob

今朝息子に「ITってjob無くなったりしないの?」と聞かれました。そのときは「人が困っている限りはITの仕事はあり続ける」と答えたのですが、よくよく考えると、IT自体が今持って模索をしている段階なのだなというのが今回のJava9リリースを見て感じました。
今回はJavaはOSS化されたりと色々ありましたが、かつてOpen Solarisのようなこともあったので、OSSが非OSSになったかと思えば、OSSのバージョンをフォークして開発が継続されるとか、よく考えるとプロレスですよねー

まとめるとなんか結構盛り上がってる

Java9のリリースは自分の観測範囲が結構ざわついていますね。きっと何か面白いことが起きると思います。

ニュージーランドの最新記事

生活の最新記事