| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| <!-- |
| Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. |
| --> |
| |
| <html> |
| <head> |
| <title>NetBeans IDE 中的 JDK 8 支持概述</title> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" > |
| <link rel="stylesheet" type="text/css" href="../../../netbeans.css"> |
| <meta name="KEYWORDS" content="NETBEANS, TUTORIAL, GUIDE, USER, DOCUMENTATION"> |
| |
| <meta name="description" content="A short guide to using JDK 7 features in NetBeans IDE."> |
| </head> |
| |
| <body> |
| |
| <h1>NetBeans IDE 中的 JDK 8 支持概述</h1> |
| <div class="articledate" style="margin-left: 0px;">作者:Tomas Zezula 和 Alyona Stashkova</div> |
| <p>NetBeans IDE 支持 <a href="http://openjdk.java.net/projects/jdk8/features/" target="_blank">JDK 8 功能</a>,例如 lambda 表达式、可重复标注、精简配置文件等。在代码中使用这些结构时,IDE 会识别它们,正确突出显示错误并使您能够自动修复语法。因此,NetBeans IDE 可帮助您编写与 <a href="http://download.oracle.com/otndocs/jcp/java_se-8-edr-spec/index.html">Java SE 8 发布内容早期草稿审查规范</a>兼容的代码。 </p> |
| |
| <p>在本教程中,您将了解如何在 NetBeans IDE 中开始使用 JDK 8,以及如何使用 IDE 对精简配置文件、lambda 表达式和重复标注等 Java SE 8 功能的支持。 </p> |
| <p><b>目录</b></p> |
| <img alt="此页上的内容适用于 NetBeans IDE 7.4 和 8.0 Beta" class="stamp" src="../../../images_www/articles/74/netbeans-stamp-80-74.png" title="此页上的内容适用于 NetBeans IDE 7.4 和 8.0 Beta"> |
| <ul class="toc"> |
| <li><a href="#platform" title="在 NetBeans IDE 中启用 JDK 8 支持">在 NetBeans IDE 中启用 JDK 8 支持</a></li> |
| <li><a href="#project" title="配置项目以使用 JDK 8">配置项目以使用 JDK 8</a></li> |
| <li><a href="#compact" title="使用精简配置文件支持">使用精简配置文件支持</a></li> |
| <li><a href="#lambda" title="使用 Lambda 表达式支持">使用 Lambda 表达式支持</a></li> |
| <li><a href="#annot" title="使用重复标注支持">使用重复标注支持</a></li> |
| |
| <li><a href="#see" title="另请参见">另请参见</a></li> |
| </ul> |
| |
| <p><b>要学完本教程,您需要具备下表所列的软件和资源。</b></p> |
| |
| <table> |
| <tbody> |
| <tr> |
| <th class="tblheader" scope="col">软件或资源</th> |
| <th class="tblheader" scope="col">要求的版本</th> |
| </tr> |
| <tr> |
| <td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">NetBeans IDE</a></td> |
| <td class="tbltd1">版本 7.4 和 8.0</td> |
| </tr> |
| <tr> |
| <td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html" target="_blank">Java 开发工具包 (JDK)</a></td> |
| <td class="tbltd1">版本 8</td> |
| </tr> |
| </tbody> |
| </table> |
| <h2><a name="platform"></a>在 NetBeans IDE 中启用 JDK 8 支持</h2> |
| <p>在系统上下载并安装 JDK 8 之后,需要将其注册在 IDE 中,如下所示:</p> |
| |
| <ol> |
| <li>在 IDE 中,从主菜单中选择 "Tools"(工具)> "Java Platforms"(Java 平台)。</li> |
| <li>在 "Java Platform Manager"(Java 平台管理器)对话框中单击 "Add Platform"(添加平台)。 </li> |
| <li>在 "Add Java Platform"(添加 Java 平台)对话框中,选择 "Java Standard Edition",然后单击 "Next"(下一步)。 </li> |
| <li>指定包含 JDK 的目录,然后单击 "Next"(下一步)。 |
| <p class="align-center"><a href="../../../images_www/articles/80/java/javase-jdk8/jdk8.png" rel="lytebox" title="选中 JDK 8"> <img alt="选中 JDK 8" border="1" src="../../../images_www/articles/80/java/javase-jdk8/jdk8_small.png"></a> </p></li> |
| <li>验证平台源 zip 文件和 API 文档的默认位置是否有效。单击 "Finish"(完成)以关闭 "Add Java Platform"(添加 Java 平台)对话框。<br> JDK 8 作为平台注册在 IDE 中。 |
| <p class="align-center"><a href="../../../images_www/articles/80/java/javase-jdk8/jdk8registered.png" rel="lytebox" title="注册的 Java 平台"> <img alt="注册的 Java 平台" border="1" src="../../../images_www/articles/80/java/javase-jdk8/jdk8registered_small.png"></a> </p></li> |
| <li>确保在 "Platforms"(平台)列表中选择了 JDK 1.8,然后单击 "Close"(关闭)。</li> |
| </ol> |
| <h2><a name="project"></a>配置项目以使用 JDK 8</h2> |
| <p>在 IDE 中注册 JDK 8 之后,需要将项目配置为使用 JDK 8 进行编译、运行和调试。 </p> |
| <p>首先,我们将使用 NetBeans IDE 附带的 Anagram Game 示例创建一个新的 Java SE 项目。</p> |
| <ol> |
| <li>在 IDE 中,选择 "File"(文件)> "New Project"(新建项目)。</li> |
| <li>在 "New Project"(新建项目)向导中,展开 "Samples"(样例)类别并选择 "Java"。</li> |
| <li>在 "Projects"(项目)列表中选择 "Anagram Game"。然后,单击 "Next"(下一步)。</li> |
| <li>在 "Name and Location"(名称和位置)面板中,保留 "Project Name"(项目名称)和 "Project Location"(项目位置)字段的默认值。</li> |
| <li>单击 "Finish"(完成)。<br> IDE 将在 "Projects"(项目)窗口中创建并打开 Java SE 项目。</li> |
| </ol> |
| <p><b>要配置项目以使用 JDK 8,请执行以下操作:</b></p> |
| <ol> |
| <li>在 "Projects"(项目)窗口中右键单击 "AnagramGame" 项目,然后从上下文菜单中选择 "Properties"(属性)。 </li> |
| <li>在 "Project Properties"(项目属性)对话框中,选择 "Libraries"(库)类别,然后将 JDK 1.8 设置为 Java 平台。 |
| <p class="align-center"><a href="../../../images_www/articles/80/java/javase-jdk8/prj_jdk8.png" rel="lytebox" title="JDK 8 设置为 Java 平台"> <img alt="JDK 8 设置为 Java 平台" border="1" src="../../../images_www/articles/80/java/javase-jdk8/prj_jdk8_small.png"></a> </p></li> |
| <li>选择 "Sources"(源)类别,然后将源代码/二进制格式设置为 "JDK 8"。 |
| |
| <p class="align-center"><a href="../../../images_www/articles/80/java/javase-jdk8/prj_source_jdk8.png" rel="lytebox" title="将源代码/二进制格式设置为 JDK 8"> <img alt="将源代码/二进制格式设置为 JDK 8" border="1" src="../../../images_www/articles/80/java/javase-jdk8/prj_source_jdk8_small.png"></a> </p> </li> |
| <li>单击“确定”保存更改。<br>此时将设置项目以识别新的 JDK 8 语言功能。</li> |
| </ol> |
| <h2><a name="compact"></a>使用精简配置文件支持</h2> |
| <p>Java SE 8 引入了可用于部署和运行不需要整个平台的应用程序的 <a href="http://openjdk.java.net/jeps/161">Java SE 平台规范的子集配置文件</a>。 </p> |
| <p>到目前为止已定义的三个配置文件名为 <i>compact1</i>、<i>compact2</i> 和 <i>compact3</i>。每个配置文件都指定一组特定的 Java API 包并且包含小于自身的配置文件中的所有 API:<i>compact1</i> 是 <i>compact2</i> 的子集,后者是 <i>compact3</i> 的子集,而再后者又是<i>完整 JRE</i> 的子集。下表列出了每个配置文件中包含的包。 </p> |
| |
| <table> |
| <tbody> |
| <tr> |
| <th class="tblheader" scope="col">Compact1</th> |
| <th class="tblheader" scope="col">Compact2</th> |
| <th class="tblheader" scope="col">Compact3</th> |
| <th class="tblheader" scope="col">完整 JRE</th> |
| </tr> |
| <tr> |
| <td> |
| <ul> |
| <li>java.lang</li> |
| <li>java.io</li> |
| <li>java.nio</li> |
| <li>java.text</li> |
| <li>java.math</li> |
| <li>java.net</li> |
| <li>javax.net</li> |
| <li>java.util</li> |
| <li>java.util.logging</li> |
| <li>java.security</li> |
| <li>javax.crypto</li> |
| <li>javax.security</li> |
| </ul></td> |
| <td><i>compact1</i> 以及以下包: |
| <ul> |
| <li>java.sql</li> |
| <li>javax.sql</li> |
| <li>javax.xml</li> |
| <li>org.w3c.dom</li> |
| <li>org.xml.sax</li> |
| <li>java.rmi</li> |
| <li>javax.rmi</li> |
| <li>javax.transaction</li></ul></td> |
| <td><i>compact2</i> 以及以下包: |
| <ul> |
| <li>java.lang.management</li> |
| <li>javax.management</li> |
| <li>javax.naming</li> |
| <li>javax.sql.rowset</li> |
| <li>javax.security.auth.kerberos</li> |
| <li>org.ietf.jgss</li> |
| <li>javax.script</li> |
| <li>javax.xml.crypto</li> |
| <li>java.util.prefs</li> |
| <li>javax.security.sasl</li> |
| <li>javax.security.acl</li> |
| <li>java.lang.instrument</li> |
| <li>javax.annotation.processing</li> |
| <li>javax.lang.model</li> |
| <li>javax.lang.model.element</li> |
| <li>javax.lang.model.type</li> |
| <li>javax.lang.model.util</li> |
| <li>javax.tools</li> |
| </ul></td> |
| <td ><i>compact3</i> 以及以下包: |
| <ul> |
| <li>corba</li> |
| <li> awt</li> |
| <li>swing</li></ul></td> |
| </tr> |
| <tr> |
| <td class="tbltd1"></td> |
| <td class="tbltd1"></td> |
| <td class="tbltd1"></td> |
| <td class="tbltd1"></td></tr> |
| </tbody> |
| </table> |
| <p>IDE 允许您根据需要在配置文件和完整 JRE 之间切换。 </p> |
| <p><b>要为 Java SE 项目设置项目配置文件,请执行以下操作:</b></p> |
| <ol> |
| <li>右键单击项目,然后从上下文菜单中选择 "Properties"(属性)。 </li> |
| <li>在 "Project Properties"(项目属性)对话框中,选择 "Sources"(源)类别。 </li> |
| <li>使用 "Profile"(配置文件)下拉列表指定您的应用程序将支持的 JDK 8 配置文件。 |
| |
| <p class="align-center"><a href="../../../images_www/articles/80/java/javase-jdk8/prj_src_profile.png" rel="lytebox" title="配置文件列表"> <img alt="配置文件列表" border="1" src="../../../images_www/articles/80/java/javase-jdk8/prj_src_profile_small.png"></a> </p> |
| </li> |
| <li>单击 "OK"(确定)。</li> |
| </ol> |
| <p>要了解 IDE 如何检查项目中使用的类是否属于指定的配置文件,请选择 "Compact1" 作为 AnagramGame 项目的配置文件,然后单击 "OK"(确定)。<br> IDE 将显示错误,以通知 AnagramGame 项目不符合 <i>compact1</i> 配置文件。</p> |
| <p class="align-center"><a href="../../../images_www/articles/80/java/javase-jdk8/profile.png" rel="lytebox" title="配置文件"> <img alt="配置文件" border="1" src="../../../images_www/articles/80/java/javase-jdk8/profile_small.png"></a> </p> |
| <p>您可以返回并将 AnagramGame 项目的配置文件设置为 Anagrams 应用程序支持的“完整 JRE”。 </p> |
| |
| |
| |
| |
| <h2><a name="lambda"></a>使用 Lambda 表达式支持</h2> |
| |
| <p><a href="http://openjdk.java.net/projects/lambda/">Lambda 表达式</a>通过更加简洁地表示匿名内部类的结构,解决庞大的匿名内部类问题。</p> |
| <p>lambda 表达式的一般语法包含一组参数、一个箭头标记和一个函数体(单个表达式或一个语句块):</p> |
| <pre>(int a, int b) -> a * a + b * b;</pre> |
| <p>NetBeans IDE 将检测预 lambda 表达式并在编辑器中显示提示,以建议将此类结构转变为 lambda 表达式。</p> |
| <p>例如,AnagramGame 项目以 <tt>Anagrams.java</tt> 文件中的预 lambda 结构为特色,如下面的屏幕快照中所示。</p> |
| <p class="align-center"><a href="../../../images_www/articles/80/java/javase-jdk8/lambda.png" rel="lytebox" title="Lambda"> <img alt="已单击 Lambda" border="1" src="../../../images_www/articles/80/java/javase-jdk8/lambda_small.png"></a> </p> |
| <p>在单击旁注中的电灯泡或按 Alt-Enter 组合键之后,IDE 将显示 "Use Lambda"(使用 Lambda)提示并提供一组选项: </p> |
| <p class="align-center"><a href="../../../images_www/articles/80/java/javase-jdk8/lambda_clicked.png" rel="lytebox" title="已单击 Lambda"> <img alt="已单击 Lambda" border="1" src="../../../images_www/articles/80/java/javase-jdk8/lambda_clicked_small.png"></a> </p> |
| <p>如果选择了 "Use Lambda"(使用 Lambda)提示,则 IDE 会将匿名内部类转换为 lambda 表达式。 </p> |
| <p class="align-center"><a href="../../../images_www/articles/80/java/javase-jdk8/lambda_converted.png" rel="lytebox" title="已转换 Lambda"> <img alt="已转换 Lambda" border="1" src="../../../images_www/articles/80/java/javase-jdk8/lambda_converted_small.png"></a> </p> |
| <p>如果选择 "Run Inspect on"(运行检查于)选项,则 IDE 将显示 "Inspect"(检查)对话框,您可以在该对话框中对指定的文件运行单个 "Convert to Lambda"(转换为 Lambda)检查。</p> |
| <p class="notes"><b>注:</b>有关在 IDE 中启动 "Inspect"(检查)操作的更多信息,请参见<i>使用 NetBeans IDE 开发应用程序</i>中的<a href="http://www.oracle.com/pls/topic/lookup?ctx=nb7400&id=NBDAG613">在源代码分析和重构中使用提示</a>。</p> |
| <p class="align-center"><a href="../../../images_www/articles/80/java/javase-jdk8/inspect.png" rel="lytebox" title="运行检查"> <img alt="运行检查" border="1" src="../../../images_www/articles/80/java/javase-jdk8/inspect_small.png"></a> </p> |
| |
| <p>在您按 "Inspect"(检查)按钮启动检查之后,IDE 将标识文件中的所有预 lambda 结构并将其显示在 "Inspector"(检查器)窗口中。 </p> |
| <p class="align-center"><a href="../../../images_www/articles/80/java/javase-jdk8/lambda_inspection.png" rel="lytebox" title="Lambda 检查"> <img alt="Lambda 检查" border="1" src="../../../images_www/articles/80/java/javase-jdk8/lambda_inspection_small.png"></a> </p> |
| <p>如果选择 "Run Inspect&Transform on"(运行检查和转换于)选项,则 IDE 将显示 "Inspect and Transform"(检查并转换)对话框,您可以在该对话框中对指定的代码运行单个 "Convert to Lambda"(转换为 Lambda)检查(或所选配置),并根据需要重构。</p> |
| <p class="notes"><b>注:</b>有关启动 "Inspect and Transform"(检查并转换)操作的更多信息,请参见<i>使用 NetBeans IDE 开发应用程序</i>中的<a href="http://www.oracle.com/pls/topic/lookup?ctx=nb7400&id=NBDAG613">在源代码分析和重构中使用提示</a>。</p> |
| <p class="align-center"><a href="../../../images_www/articles/80/java/javase-jdk8/lambda_transform.png" rel="lytebox" title="Lambda 重构"> <img alt="Lambda 重构" border="1" src="../../../images_www/articles/80/java/javase-jdk8/lambda_transform_small.png"></a> </p> |
| <h2><a name="annot"></a>使用重复标注支持</h2> |
| <p>Java SE 8 功能包含<a href="http://openjdk.java.net/jeps/120">重复标注</a>,通过该功能,可以将相同类型的标注应用到单个程序元素,如以下代码示例中所示:</p> |
| |
| <pre class="examplecode"> |
| @ProjectServiceProvider(service=Foo.class,"org-nebeans-modules-j2seproject") |
| @ProjectServiceProvider(service=Foo.class,"org-nebeans-modules-j2eeproject") |
| public class MyService extends Foo {} |
| </pre> |
| <p>NetBeans IDE 支持重复标注,允许您使用相同的标注编写代码,假定声明了重复标注类型和包含标注类型: </p> |
| <ul> |
| <li>必须使用 <tt>@Repeatable ()</tt> 标记可重复的标注类型,否则您在编译时会获得错误 |
| </li> |
| <li>包含标注类型必须具有一个数组类型的 <tt>value</tt> 元素;该数组类型的组件类型必须是可重复的标注类型</li> |
| </ul> |
| |
| |
| |
| <div class="feedback-box"><a href="/about/contact_form.html?to=3&subject=Feedback:%20Overview%20of%20JDK%208%20Support%20in%20NetBeans%20IDE">发送有关此教程的反馈意见</a></div> |
| <br style="clear:both;" > |
| <h2><a name="see"></a>另请参见</h2> |
| <p>有关 JDK 8 的更多信息,请参见: </p> |
| <ul> |
| |
| |
| <li><a href="http://jdk8.java.net/">JDK 8 项目</a></li> |
| <li><a href="http://download.java.net/jdk8/docs/">Java Platform Standard Edition 8 预览版文档</a></li> |
| <li><a href="http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/Lambda-QuickStart/index.html" target="_blank">Java SE 8:Lambda 快速入门 </a> </li> |
| <li><a href="http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html" target="_blank">Java 教程:Lambda 表达式</a></li> |
| <li><a href="http://docs.oracle.com/javase/tutorial/java/annotations/repeating.html">Java 教程:重复标注</a></li> |
| </ul> |
| |
| <p>有关在 NetBeans IDE 中开发 Java 应用程序的详细信息,请参见: </p> |
| <ul> |
| <li><i>使用 NetBeans IDE 开发应用程序</i>中的<a href="http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG366">创建 Java 项目</a></li> |
| <li><a href="javase-intro.html">开发常规 Java 应用程序</a></li> |
| |
| <li><a href="../../trails/java-se.html">常规 Java 开发学习资源</a></li> |
| </ul> |
| </body> |
| </html> |