「Java SE 8」が正式リリース! 6つの注目機能と必読ドキュメント

Oracle Java & Developers編集部
2014-03-31 11:00:00
  • このエントリーをはてなブックマークに追加

2014年3月18日(米国時間)、Java SEの新版「Java SE 8」がリリースされた。主な追加/変更機能、開発者必読のドキュメントなどについて、日本オラクルのJavaエバンジェリスト 寺田佳央氏が語った。

開発者の注目ポイントは6つ。最大の目玉はラムダ式

 2014年3月18日(米国時間)、Java SEの新版「Java SE 8」がリリースされました。2年8カ月ぶりのメジャー・アップデートとなるJava SE 8では、言語仕様の拡張をはじめ、大きな追加/変更が加えられています。開発者の皆さんにとって特に重要な追加/変更点としては、次の6つが挙げられるでしょう。

(1)ラムダ式への対応(JSR 335: Lambda Expressions for the Java Programming Language

(2)Date and Time APIの追加(JSR 310: Date and Time API

(3)タイプ・アノテーションへの対応(JSR 308: Annotations on Java Types

(4)新JavaScriptエンジン「Nashorn」の導入

(5)新GUIフレームワーク「JavaFX 8」の追加

(6)小型デバイス向けサブセット「コンパクト・プロファイル」の導入

 以下に、それぞれの概要を簡単にご紹介します。

(1)ラムダ式への対応


日本オラクル
Fusion Middleware事業統括本部
ビジネス推進本部
シニアJavaエバンジェリスト
寺田佳央氏

 Java SE 8の最大の変更点であり目玉となるのは、関数型のプログラミング記法である「ラムダ式」への対応です。ご存じのとおり、近年のプログラミング言語の発展の流れの1つに、関数型のプログラミング・スタイルを取り入れる動きがあります。Java SE 8におけるラムダ式への対応は、この動きに沿ったものでもあります。

 今日のアプリケーション実行基盤はマルチコア・プロセッサを搭載したサーバ環境が主流となっていますが、ラムダ式と併せて追加されたStream APIのライブラリを使うことで、並列処理を行うプログラムをより簡潔に書けるようになります。

 もちろん、ラムダ式への対応は、オブジェクト指向言語としてのJavaの基本コンセプトを否定するものではありません。オブジェクト指向言語であるJavaに適したかたちで関数型プログラミングの利点を取り入れたものが、Java SE 8におけるラムダ式対応なのです。

 ただし、Javaの基本コンセプトは変わらないものの、ラムダ式の導入により、プログラムの構文は大きく変わります。そのため、新しいプログラム記法を学んでいただく必要があります。例えば、これまでループ処理を行うためにfor文を使って書いていたコードは、すべて新しい構文に置き換えることができるでしょう。最初は戸惑うこともあるかもしれませんが、後ほど紹介するチュートリアルなどを参考にしながら、少しずつ慣れていってください。それにより、皆さんのシステム開発に非常に多くのメリットが生まれるのです。ぜひ早い時期にラムダ式を習得し、プロジェクトでも積極的にご活用いただきたいと思います。

(2)Date and Time APIの追加

 またJava SE 8では、日付操作用のAPIとして「Date and Time API」が追加されました。これまでのJavaは、日付操作に関して若干面倒な部分がありましたが、Date and Time APIを使えば、より直感的にわかりやすいかたちでプログラムを書けるようになります。このAPIの追加も、皆さんの開発現場に多くのメリットをもたらすことでしょう。

(3)タイプ・アノテーションへの対応

 「タイプ・アノテーション」は、それ単体で大きなメリットをもたらす機能ではありませんが、他のライブラリと併用することで、システム開発を効率化したり、プログラムの品質を高めたりできるようになります。

 アノテーションはJava SE 5で導入された機能ですが、これまでは記述できる個所が変数やクラス、メソッドの宣言部分に限定されていました。これに対して、Java SE 8ではタイプ・アノテーションが導入されたことで、「型を定義している個所」、例えばメソッド引数の中で型を定義しているような個所にもアノテーションを書けるようになります。

 これがどのようなメリットをもたらすのかというと、プログラムのテスト時などに、型チェックを行ってくれるサードパーティのライブラリを組み合わせて使うことで、プログラムのエラー・チェックが簡単に行えるようになるのです。今後、ソフトウェア・テストの面で、こうしたタイプ・アノテーションの導入が大きなトピックになりそうです。

【参考情報】

>> The Checker Framework

(4)新JavaScriptエンジン「Nashorn」の導入

 JavaScriptの実行エンジンとして、新たに「Nashorn」が追加されました。Java SE 7では、動的型付け言語をJavaプラットフォーム上でサポートするための仕組みとして「InvokeDynamic」というバイトコード命令が導入されましたが、Nashornはそれを使って実装されています。

 Nashornを使うと、従来のJavaScriptエンジンであるRhinoと比べて、より高速にJavaScriptを実行できるようになります。JavaScriptでシェル・スクリプトのようなものを書き、それをコマンドラインから実行するといったことも可能です。これにより、システム・コマンドを使ってアプリケーションや監視プログラムを書くといったこともできるようになります。また、オラクルはサーバ・サイドのJavaScriptフレームワークとして「Project Avatar」というWebアプリケーション・フレームワークをオープンソースで提供していますが、これもNashornを使っています。"JavaScript使い"の方は、ぜひお試しください。

(5)新GUIフレームワーク「JavaFX 8」の追加

 高機能なGUIを備えたリッチ・クライアントの開発を容易にするフレームワークとして「JavaFX 8」が導入されたことも大きなポイントです。

 JavaFXは、Javaによるリッチ・クライアント開発フレームワークとして、Java SEとは別に開発が進められてきました。それがJava SE 8において、これまでリッチ・クライアント開発の標準技術として使われてきたSwingに代わる技術として統合されたのです。JavaFX 8では、3Dを扱うための機能や印刷用のライブラリなどが追加されており、より高機能なクライアント・アプリケーションの開発が可能となっています。

 さらに、デスクトップだけでなく、Raspberry Piのような小型デバイス向けのアプリケーションを開発することもできますし、有志のコミュニティ・メンバーにより、JavaFXアプリケーションをiOS端末やAndroid端末上で動作させるためのプラットフォーム作りも進められています。これからは、デスクトップだけでなく、モバイル端末などに向けたリッチ・クライアントの開発もJavaFXでカバーできるようになるのです。

(6)小型デバイス向けサブセット「コンパクト・プロファイル」の導入

 小型デバイス向けアプリケーション開発のサポートという点でもう1つ重要なのが「コンパクト・プロファイル(Compact Profiles)」の導入です。これは、対象デバイスのメモリ/CPUリソースに応じてJava SEのライブラリをサブセット化したものです。Java SE 8では、次の3つのプロファイルが用意されます。

 それぞれのAPIがどのプロファイルでサポートされているのかは、各プロファイルのページに情報が記載されています。また、Java SE 8から、APIドキュメント(Java Platform Standard Edition 8 Documentation)の各クラス/インタフェースのページの冒頭部に、それぞれどのコンパクト・プロファイルで使えるのかが「compact1」、「compact2」、「compact3」といったかたちで表記されるようになりました。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]