ぱと隊長日誌

ブログ運用もエンジニアとしての生き方も模索中

Java Day Tokyo 2013 レポート(Ask The Experts!)

はじめに

Java Day Tokyo 2013に参加させていただきました。
Java Day Tokyo 2013
参加したセッションはいくつかあるのですが、資料がまだ公開されていないのと(されるのかな?)、メモをまとめるのに時間がかかりそうなので、特別セッション『Ask The Experts!』の内容を先行公開します。

『Ask The Experts!』はSimon Ritter(Java SE)、Arun Gupta(Java EE)、Jim Weaver(Java FX)という各分野のエキスパートに直接質問できるというセッションでした。
メモしきれなかった質問もあり大変申し訳ないのですが、ご参考になれば幸いです。

Java SE(Simon Ritter)

Q.
Java後方互換性の維持についてどう考えられていますか?
A.
直近で後方互換性をブレークすることはない。それはいつかあるかもしれないが、Java9より後だろう。
(ここで会場の参加者に対して新機能と互換性のどちらを重視するかをアンケートし、その結果が約半々だったことを受けて)これまで顧客からは後方互換性を維持してほしいという要望が強かった。そのため、この会場での反応は興味深い。
ScalaJVM上で動く言語だが、互換性に対するアプローチがJavaとは違い、機能追加を優先させている。そこで、OracleとしてはScalaのユーザー数が後方互換性を保つ必要性の一つの指標となる。
ジェネリクス後方互換性を考えた結果の実装だった。
この先、プリミティブを無くし、完全なオブジェクト指向にすることもあり得るだろう。
[補足]
質問者が自分だったので、少し質問した意図を補足させていただきます。Javaジェネリクスやインターフェースへのdefault導入などを見て、互換性の維持に気を配っていることは感じつつ、いずれ拡張が苦しくなるのでは?という思いがありました。そこで今後どのようなアプローチをとるのかが知りたく、質問させていただきました。
Scalaを指標にしているというお話は面白かったです。

Q.
Javaの言語機能とライブラリの切り分けはどう考える?
A.
Javaは構文、ライブラリ、JVMの3つに分けられる。そして、それぞれの部分毎に進化していくことができる。
どう進化させるかはコミュニティで議論して決めていく。コミュニティはJSRに分かれて活動している。重要なのはJavaの仕様をOracleだけで決めているのではなく、IBMTwitterなどとも共同で進めているということだ。

Java FX(Jim Weaver)

Q.
これからはSwingよりJavaFXで作るべきか?
A.
これまで、AWT, Swing, JavaFXと進化してきた。
そして今推奨するのはJavaFX。Swingはメンテナンスに入っており、今後の機能追加は無い。
既存のSwingアプリケーションの改修ならそのままでも良いのではないか。新しいアプリケーションを開発するならJavaFXが良い。また、JavaFXとSwingのコンビネーションも可能だ。

Q.
NetBeansやその他IDEをJava FXで書き換える予定は?
A.
NetBeansの計画はわからないが、将来はJava FXを活用していくと思われる。

Java EE(Arun Gupta)

Q.
午前の基調講演のデモで使っていたプロトコルは?
また、WebSocketを使う際にFireWallでブロックされるなどの問題はないか?
A.
デモで使ったプロトコルはWebSocket。
FireWallでどの通信を許すべきかというのは難しい問題だ。ただ、今はWebSocketがブロックされたとしても、これからWebSocketが広まるにつれ許可されていくだろう。

Q.
JavaEE7にJCacheは入らないのか?
A.
JavaEE7には時間的な制約でJCacheが入らなかった。
ただ、JavaEE8まで待つ必要はない。準備ができればJavaEE7に追加していく。

Q.
WebSocketを実際のシステムで使えるのはいつごろか?
A.
WebLogicではもう間もなく使える。Jettyならもう使える。
この機能は顧客からの要望で追加されたものだ。外部環境の準備が整えば(FireWallなどのネットワークの課題が解決すれば)すぐにでも広く使われるだろう。

Q.
こうしたイベントの会場アンケートでJavaEEを使っている人、とよく聞かれる。
JavaEEを使っているといえるのはどこから?JavaEEの一部を使っていてもJavaEEを使っていると言える?
A.
同感だ!それがJavaEEの良いところだ。フルに使う必要はない。必要なとこだけを使ってくれていい。
サーブレットを使っているならJavaEEを使っていると言える。でもStrutsを使っているならJavaEEに移行しないと!