// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= NetBeans IDEでのJDK 8サポートの概要
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: NetBeans IDEでのJDK 8サポートの概要 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, NetBeans IDEでのJDK 8サポートの概要

執筆: Tomas Zezula、Alyona Stashkova

NetBeans IDEでは、ラムダ式、繰返し可能な注釈、コンパクト・プロファイルなどのlink:http://openjdk.java.net/projects/jdk8/features/[+JDK 8機能+]がサポートされています。これらの構造をコード内で使用すると、IDEはそれを認識してエラーを正しく強調表示して、構文を自動的に修正できるようにします。このように、NetBeans IDEは、ユーザーがlink:http://download.oracle.com/otndocs/jcp/java_se-8-edr-spec/index.html[+Java SE 8リリース・コンテンツ初期ドラフト・レビュー仕様+]と互換性のあるコードを記述するのに役立ちます。

このチュートリアルでは、NetBeans IDEでのJDK 8の起動方法と、コンパクト・プロファイル、ラムダ式、繰返し注釈などのJava SE 8機能に対するIDEサポートの使用方法について学習します。


image::images/netbeans-stamp-80-74.png[title="このページの内容は、NetBeans IDE 7.4および8.0 Betaに適用されます"]


*このチュートリアルを完了するには、次の表に示すソフトウェアとリソースが必要です。*

|===
|ソフトウェアまたはリソース |必須バージョン 

|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |バージョン7.4および8.0 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Java Development Kit (JDK)+] |バージョン8 
|===


== NetBeans IDEでのJDK 8サポートの有効化

JDK 8をシステムにダウンロードしてインストールした後、IDEに次のように登録する必要があります。

1. IDEで、メイン・メニューから「ツール」>「Javaプラットフォーム」を選択します。
2. 「Javaプラットフォーム・マネージャ」ダイアログ・ボックスで「プラットフォームの追加」をクリックします。
3. 「Javaプラットフォームの追加」ダイアログ・ボックスでJava Standard Editionを選択して、「次」をクリックします。
4. JDKが含まれているディレクトリを指定して、「次」をクリックします。

[.feature]
--
image::images/jdk8_small.png[role="left", link="images/jdk8.png"]
--



. 「プラットフォームのソース」のzipファイルとAPIドキュメントのデフォルトの場所が有効であることを確認します。「終了」をクリックして「Javaプラットフォームの追加」ダイアログ・ボックスを閉じます。
JDK 8がIDEでプラットフォームとして登録されます。

[.feature]
--
image::images/jdk8registered_small.png[role="left", link="images/jdk8registered.png"]
--



. 「プラットフォーム」リストで「JDK 1.8」が選択されていることを確認し、「閉じる」をクリックします。


== JDK 8を使用するためのプロジェクトの構成

IDEでJDK 8を登録した後は、JDK 8をコンパイル、実行、およびデバッグに使用するようにプロジェクトを構成する必要があります。

NetBeans IDEに付属するアナグラム・ゲームで新規Java SEプロジェクトを作成する例によって開始します。

1. IDEで、「ファイル」>「新規プロジェクト」を選択します。
2. 新規プロジェクト・ウィザードで、「サンプル」カテゴリを展開して「Java」を選択します。
3. 「プロジェクト」リストで「アナグラム・ゲーム」を選択します。「次」をクリックします。
4. 「名前と場所」パネルで、「プロジェクト名」および「プロジェクトの場所」フィールドのデフォルト値をそのままにします。
5. 「終了」をクリックします。
Java SEプロジェクトがIDEで作成され、「プロジェクト」ウィンドウで開かれます。

*JDK 8を使用するようにプロジェクトを構成するには:*

1. 「プロジェクト」ウィンドウでAnagramGameプロジェクトを右クリックし、コンテキスト・メニューから「プロパティ」を選択します。
2. 「プロジェクト・プロパティ」ダイアログ・ボックスで、「ライブラリ」カテゴリを選択し、JDK 1.8をJavaプラットフォームとして設定します。

[.feature]
--
image::images/prj_jdk8_small.png[role="left", link="images/prj_jdk8.png"]
--



. 「ソース」カテゴリを選択して、「ソース/バイナリ形式」をJDK 8に設定します。

[.feature]
--
image::images/prj_source_jdk8_small.png[role="left", link="images/prj_source_jdk8.png"]
--



. 「OK」をクリックして変更を保存します。
プロジェクトが、新しいJDK 8言語機能を認識するように設定されています。


== コンパクト・プロファイル・サポートの使用

Java SE 8では、プラットフォーム全体を必要としないアプリケーションのデプロイおよび実行に使用できる、link:http://openjdk.java.net/jeps/161[+Java SEプラットフォーム仕様のサブセット・プロパティ+]が導入されます。

これまでに定義されている3つのプロファイルの名前は_compact1_、_compact2_および_compact3_です。各プロファイルはJava APIパッケージの特定のセットを指定し、そのプロファイルよりも小さいプロファイルのすべてのAPIが含まれます。つまり、_compact1_は_compact2_のサブセットで、compact2は_compact3_のサブセット、compact3は_JRE全体_のサブセットとなります。各プロファイルに含まれるパッケージの一覧を次の表に示します。

|===
|Compact1 |Compact2 |Compact3 |JRE全体 

|* java.lang
* java.io
* java.nio
* java.text
* java.math
* java.net
* javax.net
* java.util
* java.util.logging
* java.security
* javax.crypto
* javax.security
 |_compact1_および次のパッケージ:

* java.sql
* javax.sql
* javax.xml
* org.w3c.dom
* org.xml.sax
* java.rmi
* javax.rmi
* javax.transaction
 |_compact2_および次のパッケージ:

* java.lang.management
* javax.management
* javax.naming
* javax.sql.rowset
* javax.security.auth.kerberos
* org.ietf.jgss
* javax.script
* javax.xml.crypto
* java.util.prefs
* javax.security.sasl
* javax.security.acl
* java.lang.instrument
* javax.annotation.processing
* javax.lang.model
* javax.lang.model.element
* javax.lang.model.type
* javax.lang.model.util
* javax.tools
 |_compact3_および次のパッケージ:

* corba
* awt
* swing
 

|===

IDEでは必要に応じて、各プロファイルとJRE全体間を切り替えられます。

*Java SEプロジェクトのプロジェクト・プロファイルを設定するには:*

1. プロジェクトを右クリックし、コンテキスト・メニューから「プロパティ」を選択します。
2. 「プロジェクト・プロパティ」ダイアログ・ボックスで、「ソース」カテゴリを選択します。
3. 「プロファイル」ドロップダウン・リストを使用して、アプリケーションでサポートされるJDK 8プロファイルを指定します。

[.feature]
--
image::images/prj_src_profile_small.png[role="left", link="images/prj_src_profile.png"]
--



. 「OK」をクリックします。

プロジェクトで使用されるクラスが指定されたプロファイルに属すかどうかを、IDEでどのように確認するか参照するには、「Compact1」をAnagramGameプロジェクトのプロファイルとして選択して、「OK」をクリックします。
IDEには、AnagramGameプロジェクトが_compact1_プロファイルと互換性がないことを通知するエラーが表示されます。

[.feature]
--
image::images/profile_small.png[role="left", link="images/profile.png"]
--

戻ってAnagramGameプロジェクトのプロファイルを、Anagramsアプリケーションによってサポートされている「JRE全体」に設定できます。


== ラムダ式サポートの使用

link:http://openjdk.java.net/projects/lambda/[+ラムダ式+]は、匿名内部クラスの構造をよりコンパクトに表すことで、匿名内部クラスの重厚性に対応します。

ラムダ式の一般的な構文は、一連のパラメータ、矢印トークン、および関数本体(単一の式または文のブロック)で構成されます。


[source,java]
----

(int a, int b) -> a * a + b * b;
----

NetBeans IDEでは、ラムダ前の式が検出され、その構造をラムダ式に変換することを提案するヒントがエディタで表示されます。

たとえば次のスクリーンショットに示すように、AnagramGameプロジェクトでは、 ``Anagrams.java`` ファイルのラムダ前の構造があります。

[.feature]
--
image::images/lambda_small.png[role="left", link="images/lambda.png"]
--

マージンの電球をクリックすると、または[Alt]+[Enter]を押すと、IDEでは一連の使用可能なオプションとともに「ラムダを使用」ヒントが表示されます。

[.feature]
--
image::images/lambda_clicked_small.png[role="left", link="images/lambda_clicked.png"]
--

「ラムダを使用」ヒントが選択された場合、IDEでは匿名内部クラスがラムダ式に変換されます。

[.feature]
--
image::images/lambda_converted_small.png[role="left", link="images/lambda_converted.png"]
--

「検査の実行」オプションを選択した場合、IDEでは「検査」ダイアログ・ボックスが表示され、ここでは指定されたファイルで単一の「ラムダに変換」検査を実行できます。

*注意:* IDEでの検査操作の開始の詳細は、_NetBeans IDEによるアプリケーションの開発_のlink:http://www.oracle.com/pls/topic/lookup?ctx=nb7400&id=NBDAG613[+ソース・コード分析およびリファクタリングでのヒントの使用+]を参照してください。

[.feature]
--
image::images/inspect_small.png[role="left", link="images/inspect.png"]
--

「検査」ボタンを押して検査を開始すると、IDEではファイル内のすべてのラムダ前の構造が識別され、「検査」ウィンドウに表示されます。

[.feature]
--
image::images/lambda_inspection_small.png[role="left", link="images/lambda_inspection.png"]
--

「検査と変換の実行」オプションを選択した場合、IDEでは「検査と変換」ダイアログ・ボックスが表示され、ここでは指定されたコードで単一の「ラムダに変換」検査(または選択した構成)を実行し、必要に応じてリファクタリングできます。

*注意:* IDEでの検査と変換操作の開始の詳細は、_NetBeans IDEによるアプリケーションの開発_のlink:http://www.oracle.com/pls/topic/lookup?ctx=nb7400&id=NBDAG613[+ソース・コード分析およびリファクタリングでのヒントの使用+]を参照してください。

[.feature]
--
image::images/lambda_transform_small.png[role="left", link="images/lambda_transform.png"]
--


== 繰返し注釈サポートの使用

Java SE 8の機能には、次のコード例に示すように、単一のプログラム要素に同じタイプの注釈を適用することを可能にする、link:http://openjdk.java.net/jeps/120[+繰返し注釈+]が含まれます。


[source,java]
----

@ProjectServiceProvider(service=Foo.class,"org-nebeans-modules-j2seproject")
@ProjectServiceProvider(service=Foo.class,"org-nebeans-modules-j2eeproject")
public class MyService extends Foo {}
 
----

繰返し注釈に対するNetBeans IDEサポートを使用すると、繰返し可能な注釈タイプ、および含まれる注釈タイプが宣言されていれば、同じ注釈を使用してコードを書込みできます。

* 繰返し可能な注釈タイプは ``@Repeatable ()`` でマーキングする必要があり、マーキングしないとコンパイル時にエラーが発生します
* 含まれる注釈タイプには配列タイプによる ``value`` 要素があることが必要であり、配列タイプのコンポーネント・タイプは繰返し可能な注釈タイプである必要があります
link:/about/contact_form.html?to=3&subject=Feedback:%20Overview%20of%20JDK%208%20Support%20in%20NetBeans%20IDE[+このチュートリアルに関するご意見をお寄せください+]



== 関連項目

JDK 8の詳細は、次のドキュメントを参照してください。

* link:http://jdk8.java.net/[+JDK 8プロジェクト+]
* link:http://download.java.net/jdk8/docs/[+Java Platform Standard Edition 8初期アクセス・ドキュメント+]
* link:http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/Lambda-QuickStart/index.html[+Java SE 8: ラムダ・クイック・スタート+]
* link:http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html[+Javaチュートリアル: ラムダ式+]
* link:http://docs.oracle.com/javase/tutorial/java/annotations/repeating.html[+Javaチュートリアル: 繰返し注釈+]

NetBeans IDEでのJavaアプリケーションの開発の詳細は、次を参照してください。

* _NetBeans IDEによるアプリケーションの開発_のlink:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG366[+Javaプロジェクトの作成+]
* link:javase-intro.html[+一般的なJavaアプリケーション開発+]
* link:../../trails/java-se.html[+一般的なJava開発の学習+]
