| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| <!-- |
| Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. |
| --> |
| |
| <html> |
| <head> |
| <title>NetBeans IDE 中的 JDK 7 支持概述</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. Also includes information on setting the JDK."/> |
| </head> |
| |
| <body> |
| |
| <h1>NetBeans IDE 中的 JDK 7 支持概述</h1> |
| <p>NetBeans IDE 引入了对新 JDK 7 语言功能的支持,例如菱形运算符、switch 中的 String、multicatch 等。在代码中使用这些结构时,IDE 会识别它们,在代码完成中提供正确的类,正确突出显示错误并使您能够自动修复语法。因此,NetBeans IDE 可帮助您编写与 JDK 7 语言规范兼容的代码。 </p> |
| <p>在本教程中,您将了解如何在 IDE 中启用 JDK 7 支持以及 IDE 如何处理新的语言结构。 </p> |
| <p><b>目录</b></p> |
| <img alt="此页上的内容适用于 NetBeans IDE 7.0 和 7.1" class="stamp" src="../../../images_www/articles/70/netbeans-stamp-70-71.png" title="此页上的内容适用于 NetBeans IDE 7.0 和 7.1"> |
| <ul class="toc"> |
| <li><a href="#add" title="项目设置">在 NetBeans IDE 中注册 Java 7</a></li> |
| <li><a href="#project">配置项目以使用 JDK 7</a></li> |
| <li><a href="#switch">使用新的 JDK 7 语言结构:Switch 语句</a></li> |
| <li><a href="#more">JDK 7 支持:更多示例</a></li> |
| <li><a href="#nextsteps" 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="http://www.netbeans.org/downloads/index.html">NetBeans IDE</a></td> |
| <td class="tbltd1">版本 7.0 和 7.1</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">版本 7</td> |
| </tr> |
| </tbody> |
| </table> |
| <h2><a name="add"></a>在 NetBeans IDE 中注册 Java 7 </h2> |
| <!--<p>Before the official release of Java™ Platform, Standard Edition 7, you can obtain the JDK 7 source code and development builds from the <a href="http://openjdk.java.net/projects/jdk7" target="_blank">OpenJDK Project</a> website. </p>--> |
| <p><strong>在 NetBeans IDE 中启用 JDK 7 支持:</strong></p> |
| <ol> |
| <li>下载 JDK 7 并将其安装在系统上。</li> |
| <li>在 IDE 中,从主菜单中选择 "Tools"(工具)> "Java Platforms"(Java 平台)。</li> |
| <li>单击 "Add Platform"(添加平台),然后指定包含 JDK 的目录,例如,在 Windows 上,这是 JDK 安装目录,默认为 <tt>C:\Program Files\Java\jdk1.7.0</tt>。<br> 包含 Java 平台的目录将使用 <img alt=""Java Platform"(Java 平台)图标" src="../../../images_www/articles/70/java/javase-jdk7/platform.gif"> 图标标记。 </li> |
| <li>在 "Platform Name"(平台名称)步骤中,验证平台源 zip 文件和 API 文档的默认位置是否有效。 </li> |
| <li>单击 "Finish"(完成)以关闭 "Add Java Platform"(添加 Java 平台)对话框。</li> |
| <li>确保在 "Platforms"(平台)列表中选择了 JDK 1.7,然后单击 "Close"(关闭)。</li> |
| </ol> |
| <table> |
| <tr> |
| <!-- Start Embed Video --> |
| <td class="valign-top" class="align-center" width="480" > |
| <embed src="http://bits.netbeans.org/media/register-jdk7.swf" type="application/x-shockwave-flash" width="480" height="270" allowscriptaccess="always" allowfullscreen="true" autoplay="false" controller="true" scale="aspect"></embed> |
| <td>单击<a href="http://bits.netbeans.org/media/register-jdk7.swf">此处</a>以查看全图,按住 Ctrl 键单击即可下载,大小为 1,1 MB。</td> |
| <!-- End Embed Video --> |
| </tr> |
| </table> |
| <p class="notes"><strong>注:</strong>默认的平台 Javadoc API 位置是该 <a href="http://download.java.net/jdk7/docs/" target="_blank">Web URL</a>。要进行脱机使用,您可以从 <a href="http://dlc.sun.com.edgesuite.net/jdk7/binaries/index.html" target="_blank">JDK7 二进制文件快照页</a>下载 Javadoc JAR 文件,并指定该文件在系统上的位置。 </p> |
| <h2><a name="project"></a>配置项目以使用 JDK 7</h2> |
| <p>在 IDE 中注册了 JDK 7 后,需要配置项目,以使用该 JDK 进行编译、运行和调试。 </p> |
| <ol> |
| <li>创建 Java 项目。选择 "File"(文件)> "New Project"(新建项目),然后选择 "Java Application"(Java 应用程序)作为项目类型。单击 "Next"(下一步)。</li> |
| <li>键入 <tt>SwitchTest</tt> 作为项目名称并指定其位置。 </li> |
| <li>在 "Files"(文件)窗口中,右键单击 <tt>SwitchTest</tt> 项目节点,然后选择 "Properties"(属性)> "Libraries"(库)。在此标签上,从 "Java Platforms"(Java 平台)列表中选择 "JDK 1.7"。<br> <img alt="将 JDK 7 设置为目标格式。" class="margin-around b-all" src="../../../images_www/articles/70/java/javase-jdk7/props-libs.png"></li> |
| <li>切换到 "Project Properties"(项目属性)窗口的 "Sources"(源)标签,然后选择 "JDK 7" 作为源代码/二进制格式。 <br> <img alt="将 JDK 7 指定为源格式" class="margin-around" height="431" src="../../../images_www/articles/70/java/javase-jdk7/props-sources.png" width="573"></li> |
| <li>单击 "OK"(确定)以保存所做的更改。此时将设置项目以识别新的 JDK 7 语言功能。<br> |
| </li> |
| </ol> |
| <table> |
| <tr> |
| <!-- Start Embed Video --> |
| <td class="valign-top" class="align-center" width="480" > |
| <embed src="http://bits.netbeans.org/media/configuring-project-jdk7.swf" type="application/x-shockwave-flash" width="480" height="270" allowscriptaccess="always" allowfullscreen="true" autoplay="false" controller="true" scale="aspect"></embed> |
| <td>单击<a href="http://bits.netbeans.org/media/configuring-project-jdk7.swf">此处</a>以查看全图,按住 Ctrl 键单击即可下载,大小为 1,3 MB。</td> |
| <!-- End Embed Video --> |
| </tr> |
| </table> |
| |
| <h2><a name="switch"></a>使用新的 JDK 7 语言结构:Switch 语句</h2> |
| <p>JDK 7 在不同领域提供了一些<a href="http://openjdk.java.net/projects/jdk7/features/" target="_blank">新增功能和改进功能</a>,其中包括国际化、I/O 和网络、安全等。要说明 IDE 的 Java 编辑器提供的 JDK 7 支持,最好的方法是演示 Project Coin 引入的一些语言变化。 </p> |
| <p>其中一个变化是“switch 中的 String”。在早期版本的 Java 中,<tt>switch</tt> 的参数只能属于以下基本数据类型:<tt>byte</tt>、<tt>short</tt>、<tt>char</tt>、<tt>int</tt> 或 <tt>enum</tt>。从 JDK 7 开始,您可以在 <tt>switch</tt> 语句的表达式中使用 <tt>String</tt> 类型的参数。 </p> |
| <ol> |
| <li>打开 <tt>SwitchTest.java</tt>,并添加以下代码。该小样例显示几种颜色的 RGB 代码。<br> 对于 JDK 7,<tt>color</tt> 变量可以为 <tt>String</tt>。 |
| <pre class="examplecode">package switchtest; |
| |
| public class SwitchTest { |
| |
| public static void main(String[] args) { |
| |
| String color = "red"; |
| String colorRGB; |
| switch (color.toLowerCase()) { |
| case "black": colorRGB = "000000"; break; |
| case "red": colorRGB = "ff0000"; break; |
| case "green": colorRGB = "008000"; break; |
| case "blue": colorRGB = "0000ff"; break; |
| default: colorRGB = "Invalid color"; break; |
| } |
| System.out.println(colorRGB); |
| } |
| } |
| </pre> |
| |
| <p class="tips">如果在编辑器中错误地设置了粘贴的代码格式,请按 Alt-Shift-F 组合键以重新设置格式。</p> |
| </li> |
| <li>在 "File"(文件)窗口中,右键单击项目节点,然后选择 "Run"(运行)。此时将会看到应用程序输出,这是红色的 RGB 代码。<br> 如果目标平台和源格式为 JDK 7,您可以看到构建成功,并且应用程序正常工作。 <br> <img alt="运行项目的输出。" class="margin-around b-all" height="82" src="../../../images_www/articles/70/java/javase-jdk7/output.png" width="326"></li> |
| <li>让我们改用以前的 JDK 6,并测试如何使用 JDK 6 编译器编译应用程序。<br> 在 "Files"(文件)窗口中,右键单击项目节点,然后选择 "Properties"(属性)。在 "Libraries"(库)标签上将 "Java Platform"(Java 平台)设置为 <tt>JDK 1.6</tt>,然后在 "Sources"(源)标签上将 "Source Format"(源格式)选项设置为 <tt>JDK 6</tt>。<br> 您可以立即看到 JDK6 解析器无法识别语法。编译将失败,因为变量类型不兼容。 <br> <img alt="运行项目的输出。" class="margin-around b-all" height="142" src="../../../images_www/articles/70/java/javase-jdk7/error.png" width="482"></li> |
| <li>现在,让我们使用 <tt>if-then-else</tt> 语句而非 <tt>switch</tt> 重新编写代码,如图所示。<br> 在将 JDK 7 作为目标平台的情况下,IDE 将识别这种情况,并允许您将其转换为 <tt>switch</tt>。<br> 单击该提示,<tt>if-then-else</tt> 结构将自动转换为 <tt>switch</tt>,这与我们以前使用的 switch 完全相同。 <br> <img alt="将 if-then-else 转换为 switch" class="margin-around b-all" height="320" src="../../../images_www/articles/70/java/javase-jdk7/convert.png" width="398"></li> |
| <li>使用不同的值运行应用程序。 </li> |
| </ol> |
| <table> |
| <tr> |
| <!-- Start Embed Video --> |
| <td class="valign-top" class="align-center" width="480" > |
| <embed src="http://bits.netbeans.org/media/jdk7-switch-statement.swf" type="application/x-shockwave-flash" width="480" height="270" allowscriptaccess="always" allowfullscreen="true" autoplay="false" controller="true" scale="aspect"></embed> |
| <td>单击<a href="http://bits.netbeans.org/media/jdk7-switch-statement.swf">此处</a>以查看全图,按住 Ctrl 键单击即可下载,大小为 2,5 MB。</td> |
| <!-- End Embed Video --> |
| </tr> |
| </table> |
| <h2><a id="more" name="more"></a>JDK 7 支持:更多示例</h2> |
| <p>要演示 IDE 的 Java 编辑器如何识别和自动修复代码,以便与 JDK 7 语言规范兼容,让我们使用一个虚拟代码片段,该代码片段本身没有什么意义,但它包含所有主要的语言改进功能。 </p> |
| <p>在逐步完成该虚拟代码片段并应用编辑器提示后,您将看到以下功能的操作方法示例: </p> |
| <ul> |
| <li>在 Java 编译器可以推断通用实例类型而无需明确指定该类型时,利用自动类型推断。使用所谓的<em>菱形运算符</em>来标记类型推断情况。 </li> |
| <li>在可以使用一个 <tt>catch</tt> 块处理几种类型的异常错误时,使用改进的异常错误处理或 <em>multi-catch</em>。 <br> |
| </li> |
| <li>使用自动资源管理功能引入的资源关闭语句的新语法。 </li> |
| </ul> |
| <ol> |
| <li>将同一 <tt>SwitchTest.java</tt> 文件中的旧应用程序代码替换为以下内容:<br> |
| <pre class="examplecode"> |
| package switchtest; |
| |
| |
| import java.io.FileInputStream; |
| import java.io.FileNotFoundException; |
| import java.io.IOException; |
| import java.util.ArrayList; |
| import java.util.HashMap; |
| import java.util.List; |
| |
| public class SwitchTest { |
| |
| public void test() throws IOException { |
| List<String> list = new ArrayList<String>(); |
| HashMap<String, Integer> map = new HashMap<String, Integer>(); |
| HashMap<String, Integer> map2 = new HashMap<String, Integer>(); |
| String a = "ehlo"; |
| |
| try { |
| Method m = Object.class.getMethod("toString"); |
| m.invoke(this); |
| } catch(NoSuchMethodException e) { |
| e.printStackTrace(); |
| } catch(InvocationTargetException e) { |
| e.printStackTrace(); |
| } catch(IllegalAccessException e) { |
| e.printStackTrace(); |
| } |
| |
| FileInputStream in = null; |
| try { |
| in = new FileInputStream("foo.txt"); |
| |
| int k; |
| while ((k = in.read()) != -1) { |
| System.out.write(k); |
| } |
| } finally { |
| if (in != null) { |
| in.close(); |
| } |
| } |
| } |
| } |
| </pre> |
| </li> |
| <li>请注意,IDE 将显示一些说明如何优化代码以符合 JDK 7 规范的提示,如本教程中上面所述。只需单击每个提示并选择建议的操作即可。 <br> |
| </li> |
| <li>最后,接受了所有建议后,您就应该具有与 JDK 7 兼容的代码,如下所示。<br> <img alt="已转换代码片段" class="margin-around b-all" src="../../../images_www/articles/70/java/javase-jdk7/converted.png"><br> |
| </li> |
| </ol> |
| <table> |
| <tr> |
| <!-- Start Embed Video --> |
| <td class="valign-top" class="align-center" width="480" > |
| <embed src="http://bits.netbeans.org/media/jdk7-examples.swf" type="application/x-shockwave-flash" width="480" height="270" allowscriptaccess="always" allowfullscreen="true" autoplay="false" controller="true" scale="aspect"></embed> |
| <td>单击<a href="http://bits.netbeans.org/media/jdk7-examples.swf">此处</a>以查看全图,按住 Ctrl 键单击即可下载,大小为 1,8 MB。</td> |
| <!-- End Embed Video --> |
| </tr> |
| </table> |
| <div class="indent"></div> |
| <!--<br>--> |
| <div class="feedback-box"><a href="/about/contact_form.html?to=3&subject=Feedback: JDK 7 Support in NetBeans IDE 7.0: A Quick Overview">请将您的反馈意见发送给我们</a></div> |
| <br style="clear:both;" /> |
| <h2><a name="nextsteps"></a>后续步骤</h2> |
| <p>有关 JDK 7 和 NetBeans IDE 的详细信息,请参见: </p> |
| <ul> |
| <li><a href="http://wiki.netbeans.org/NewAndNoteworthyNB70#JDK7_support" target="_blank">7.0 的新增功能和重要功能</a> - 提供 NetBeans IDE 中实现的功能的详细信息。</li> |
| <li><a href="http://blogs.sun.com/arungupta/entry/screencast_35_jdk_7_project" target="_blank">演示:NetBeans IDE 7.0 Beta 中的 JDK 7 Project Coin 功能</a> - NetBeans IDE 中的 JDK 7 功能支持的视频演示。 </li> |
| <li><a href="http://download.oracle.com/javase/tutorial/essential/io/fileio.html" target="_blank">Java 教程:文件 I/O</a> - Java 教程中的一个部分,其中包含 JDK 7 中的一些 I/O 变化示例。</li> |
| <li><a href="http://download.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html" target="_blank">Java 教程:分支和结合</a> - 说明了 JDK7 中的新分支/结合框架。 </li> |
| </ul> |
| |
| <p>有关在 NetBeans IDE 中开发 Java 应用程序的详细信息,请参见: </p> |
| <ul> |
| <li><a href="javase-intro.html">开发常规 Java 应用程序</a></li> |
| <li><a href="editor-codereference.html">NetBeans IDE Java 编辑器中的代码帮助</a></li> |
| <li><a href="../../trails/java-se.html">常规 Java 开发学习资源</a></li> |
| </ul> |
| </body> |
| </html> |