オラクル買収後のJava 7と8、
JavaFXはどうなるのか
JJUG Cross Community Conference 2011 Spring レポート
有限会社オングス
杉山貴章
2011/5/30
2011年5月24日、日本 Java ユーザグループ(以下、JJUG)の主催による「JJUG Cross Community Conference(以下、JJUG CCC) 2011 Spring」が行われた。JJUG CCCはJJUGが年2回開催している定例イベントであり、Javaに関する最新の動向や活用事例などが紹介される。本稿では、同イベント内で行われた全16のセッションからJava SE(Standard Edition)/Java EE(Enterprise Edition)およびJavaFXの最新動向を追った。
主な内容 ・ コンシューマ化するIT技術とJavaへの影響 ・ Java SE 7による新しいJavaの世界 ・ HotSpotとJRockitの統合による「HotRockit」 ・ 方針の転換によって新しくなったJavaFX ・ Java EE 7、そしてJava SE 8へ |
コンシューマ化するIT技術とJavaへの影響
今回のJJUG CCCでは、まずJJUG会長の丸山不二夫氏が「IT技術のコンシューマ化とそのインパクト」というタイトルの基調講演を行った。高機能なハードウェアのコモディティ化とインターネット接続の普及を背景に、IT技術のメインターゲットが一般の消費者にシフトしており、それによってビジネスのあり方やテクノロジに対する考え方、利用のされ方が大きく変わってきた、という内容だ。
同氏は、その実例としてアップルやグーグルによる携帯端末産業への進出やソーシャル・メディアの拡大、クラウド・ビジネスの拡大、そしてクラウド・プレイヤーによるネットワーク・メディア産業へのシフトなどを挙げている。
日本Javaユーザグループ会長の丸山不二夫氏 |
このような市場の潮流に対して、Javaはどのように変わっていくのか。丸山氏は1つの変化として、2010年のJavaOne Conferenceで登場した「Java Mobile.Next」(「Java ME.Next」と記載される例もある)を取り上げている。
Java Mobile.Nextは、Javaにおけるモバイルデバイスのサポートに関する次世代のプロポーサルを明らかにするものである。コンセプトは「JavaとWebアプリケーションを全てのコンシューマ・デバイスに届けること」であり、そのためにモバイル向けJavaを現代の市場のニーズに合うように改善し、言語やVM、ライブラリ、オプショナル・パッケージ、APIを更新するという。それに加えて、Webテクノロジ、すなわちHTMLやJavaScript、CSSとの統合も進めていく。
具体的には、2011年のロードマップとして次のAPIやツールキットのリリースが予定されているという。
- Light-Weight UI ToolKit(LWUIT) 1.5
- JSR 253:Mobile Telephony API
- JSR 290:Java Language & XML User Interface Markup Integration
- Oracle Java Wireless Client 3.0
- Java ME SDK 3.0.5
丸山氏は、このうち特に大きな出来事としてJSR 290の登場を挙げている。これはモバイルJavaに、XHTMLやSVG、JavaScript、CSSといったWeb UIの技術を取り入れるための仕様である。これによってWebサービスとの自然な統合を実現する。Java Wireless ClientはJava ME仕様の実装だが、3.0ではこのJSR 290や、JSR 281(IMSサービスのためのAPI)、JSR 253(Java ME端末で電話機能を活用するためのAPI)などが追加される。このことも、モバイルJavaとWeb技術との統合の姿勢を強く表している。
これとは別に、Java MEでは組み込み機器のための「Java ME Embedded Client」が2011年第2四半期にリリースされる予定もあるという。また、Java SEを組み込み機器に搭載するための「Java SE for Embedded」も、この4月に登場している。丸山氏は、今後はこのようにJavaのセグメント化も進んでいくのではないかと指摘している。
図1 モバイルを含めた幅広い分野で採用されるJava |
Java SE 7による新しいJavaの世界
Javaの今後と言えば、今年予定されているJava SE 7のリリースを無視することはできない。日本オラクルでJavaエバンジェリストを務める寺田佳央氏によるセッションでは、Java SE 7で追加されるJavaの新機能の数々が紹介された。
日本オラクルでシニアJavaエバンジェリストを務める寺田佳央氏 |
それに先立ち、同氏よりJava SE 7の正式なリリース日が2011年7月7日に決定したことが明らかにされた。これまでは、7月28日がリリース予定日となっていたが、3週間前倒しされたことになる。
2011年6月7日追記:注意! JJUG CCCでの発表では、Java SE 7のリリース予定日が2011年7月7日に変更されたとなっていましたが、これは誤りであり、正しいリリース予定日は当初の発表の通り2011年7月28日だとのことです。詳細につきましては、講演者である寺田氏のブログを参照してください
また、「Oracleは今後も積極的にJavaに投資する」というメッセージも送られた。
図2 OracleのJavaに対する姿勢を強調 |
Java SE 7における大きな言語機能の拡張としては、次のようなものがある。
プロジェクトCoinは、言語仕様に関する(個別のJSRにするまでもない)小さな変更をまとめたものである。具体的には、Java SE 7では以下のような変更が適用される。
- switch構文における文字列の使用
- switchによる比較に文字列を使えるようになる
- 新しい数値表現形式の追加
- 16進表記のように、2進数値を表記する方法が追加される
- 数値表現中にアンダースコア("_")を混ぜることができるようになる(「1_234_567」など)
- 例外ハンドリングの改良
- 複数の例外を同じブロックでキャッチ可能になる(マルチキャッチ)
- tryブロック中で発生した例外の際throwが容易になる
- Genericsインスタンス生成における型推論の改善
- 「Map<String, String> map = new HashMap<>();」のような記述が可能になる
- リソースを含むtry文
- java.lang.AutoCloseableインターフェイスの追加
- AutoCloseableの実装クラスをtry中で使った場合、close処理を記述しなくても自動でclose()を実施してくれる
NIO.2は、J2SE 1.4で追加されたNew I/Oのさらなる拡張という位置付けのAPIである。すなわち、入出力関連の新しいAPIを集めたもので、具体的には新しいファイルシステムAPIや、新しいディレクトリ/ファイル表現の方法、ファイル属性や権限の取得/設定用API、ディレクトリ操作用API、ディレクトリ中の変更通知機能を提供するAPI、非同期I/OのためのAPIなどが提供される。
NIO.2では、ファイルシステムを扱うための便利な機能が多数提供されるが、それに加えて特筆すべき点はパフォーマンスの大幅な改善だと寺田氏は指摘する。以下の図3はNFS、ZFS、FAT32でそれぞれファイル操作を行った場合の、従来のAPIとNIO.2での実行速度を比べたものだという。NIO.2が極めて高いパフォーマンスを実現していることが分かる。
図3 NIO.2ではファイルシステム周りのパフォーマンスが大幅に改善されている |
Fork/Joinフレームワークは、Java SE 5より使えるようになった並列処理のためのユーティリティ「Java Concurrency Utilities」に、追加される新しいフレームワークだ。Fork/Joinは、複雑な計算などを行う場合に、それを細かい部分問題に分割し(Fork)、分割した問題を個別に解決した上で、最後にその結果を集計(Join)することで最終的な結果を求める手法。部分問題を個別のプロセッサで計算できるため、特にマルチコアやマルチプロセッサ環境でのパフォーマンス改善につながる。
InvokeDynamic命令は、主にJava VM(JVM)上で動作する他の言語開発者を対象に追加される新しいJava VM命令である。従って、一般のアプリケーション開発者が、この機能を直接利用する機会はあまりない。現在、Java VM上に実装された動的言語は多数存在しており、それらの言語がこの新命令を利用することで大幅なパフォーマンス改善が可能になるという。一般のアプリケーション開発者にとっては、リフレクションを利用する際に、この命令を明示的に使うメソッドハンドラを利用できる。
その他、Java SE 7には次のような新機能が追加される。
- クラスローダの拡張
- 国際化の拡張
- Unicode 6.0
- IETFのBCP(Best Current Practice) 47(Tags for Identifying Languages)
- UTR(Unicode Technical Report) 35 (Local Data Markup Language)
- ISO 4217通貨コード
- Localeの拡張
- URLClassLoaderのクローズ
- SDP(Sockets Direct Protocol) & SCTP(Stream Control Transmission Protocol)のサポート
- セキュリティの拡張
- TLS(Transport Layer Security) 1.2
- ECC(Elliptic Curve Cryptosystems)
- Swing JLayer
- XRender Pipeline for Java 2D(X11環境用)
- JDBC 4.1
いずれの機能も現時点ですでに実装が完了しており、開発者プレビュー版もしくは最新のスナップショットを使うことで試してみることが可能となっている。これらはJDK 7プロジェクトサイトからダウンロードできる。
1-2 |
Index | |
JJUG Cross Community Conference 2011 Spring レポート オラクル買収後のJava 7と8、JavaFXはどうなるのか |
|
Page1 コンシューマ化するIT技術とJavaへの影響 Java SE 7による新しいJavaの世界 |
|
Page2 HotSpotとJRockitの統合による「HotRockit」 方針の転換によって新しくなったJavaFX Java EE 7、そしてJava SE 8へ |
Java Solution全記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|