blob: 360f111f74ee254762cbf3a2965625c86fa75ca6 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--
Copyright (c) 2009, 2014, Oracle and/or its affiliates. All rights reserved.
-->
<html>
<head>
<title>Visão Geral do Suporte a JDK 7 no NetBeans IDE</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>Visão Geral do Suporte a JDK 7 no NetBeans IDE</h1>
<p>O NetBeans IDE suporta as novas funcionalidades de linguagem Java 7, como o operador diamante, strings em switch, multicatch etc. Quando você usa esses construtores em seu código, o IDE os reconhece, oferece classes corretas na funcionalidade autocompletar código, destaca erros corretamente e permite corrigir a sintaxe automaticamente. Portanto, o NetBeans IDE ajuda você a escrever código compatível com a <a href="http://docs.oracle.com/javase/specs/jls/se7/html/index.html">Especificação de Linguagem Java, Java SE 7 Edition</a>. </p>
<p>Neste tutorial, você aprende como o IDE trata as construções do idioma Java 7. </p>
<p><b>Conteúdo</b></p>
<img alt="O conteúdo desta página se aplica ao NetBeans IDE 6.8, 6.9, 7.4 e 8.0" class="stamp" src="../../../images_www/articles/74/netbeans-stamp-80-74.png" title="O conteúdo desta página se aplica ao NetBeans IDE 6.8, 6.9, 7.4 e 8.0">
<ul class="toc">
<li><a href="#platform">Garantindo que o JDK 7 esteja Registrado no IDE</a></li>
<li><a href="#project">Verificando a Configuração do Projeto</a></li>
<li><a href="#switch">Usando Novos Construtores de Linguagem do JDK 7: Instrução de Alternância</a></li>
<li><a href="#more">Suporte a JDK 7: Mais Exemplos</a></li>
<li><a href="#see" title="Próximas Etapas">Próximas Etapas</a></li>
</ul>
<p><b>Para concluir este tutorial, você precisa do software e dos recursos apresentados na tabela a seguir.</b></p>
<table>
<tbody>
<tr>
<th class="tblheader" scope="col">Software ou Recurso</th>
<th class="tblheader" scope="col">Versão Necessária</th>
</tr>
<tr>
<td class="tbltd1"><a href="https://netbeans.org/downloads/index.html">NetBeans IDE</a></td>
<td class="tbltd1">versão 7.4 ou 8.0</td>
</tr>
<tr>
<td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html" target="_blank">JDK (Java Development Kit)</a></td>
<td class="tbltd1">versão 7 ou 8</td>
</tr>
</tbody>
</table>
<h2><a name="platform"></a>Garantindo que o JDK 7 esteja Registrado no NetBeans IDE</h2>
<p>Para verificar se o JDK 7 está registrado no NetBeans IDE:</p>
<ol>
<li>No IDE, selecione Ferramentas > Plataformas Java no menu principal.</li>
<li>Certifique-se de que o JDK 1.7 tenha sido escolhido na lista de Plataformas da caixa de diálogo Gerenciador de Plataformas Java.
<p class="align-center">
<a href="../../../images_www/articles/74/java/javase-jdk7/platform.png" rel="lytebox" title="Plataforma Java Registrada"> <img alt="Plataforma Java Registrada" border="1" src="../../../images_www/articles/74/java/javase-jdk7/platform-small.png"></a></p>
</li>
<li>Clique em Fechar.</li>
</ol>
<h2><a name="project"></a>Verificando a Configuração do Projeto</h2>
<p>Para verificar se seu projeto está configurado para usar o JDK registrado para compilação, execução e depuração:</p>
<ol>
<li>Crie um projeto Java escolhendo Arquivo > Novo Projeto e selecionando Aplicação Java como o tipo de projeto.</li>
<li>Clique em Próximo.</li>
<li>Digite <tt>SwitchTest</tt> como nome do projeto e especifique sua localização. </li>
<li>Clique em Finalizar.</li>
<li>Na janela Projetos, clique com o botão direito do mouse no nó do projeto <tt>SwitchTest</tt> e selecione Propriedades > Bibliotecas. Nesta guia, certifique-se de que JDK 1.7 esteja selecionado na lista de Plataformas Java.
<p class="align-center">
<a href="../../../images_www/articles/74/java/javase-jdk7/props-libs.png" rel="lytebox" title="JDK 7 selecionado como o formato do alvo"> <img alt="JDK 7 selecionado como o formato do alvo" border="1" src="../../../images_www/articles/74/java/javase-jdk7/props-libs-small.png"></a></p></li>
<li>Alterne para a guia Códigos-fonte da janela Propriedades do Projeto e certifique-se de que JDK 7 tenha sido escolhido como o formato do Código-fonte/Binário.
<p class="align-center">
<a href="../../../images_www/articles/74/java/javase-jdk7/props-sources.png" rel="lytebox" title="JDK 7 selecionado como o formato do código-fonte"> <img alt="JDK 7 selecionado como o formato do código-fonte" border="1" src="../../../images_www/articles/74/java/javase-jdk7/props-sources-small.png"></a></p>
</li>
<li>Clique em OK para fechar a caixa de diálogo Propriedades do Projeto. Seu projeto está configurado para reconhecer os recursos do idioma do Java 7.<br>
</li>
</ol>
<h2><a name="switch"></a>Usando Novos Construtores de Linguagem do JDK 7: Instrução de Alternância</h2>
<p>O JDK 7 traz uma série de <a href="http://openjdk.java.net/projects/jdk7/features/" target="_blank">novas funcionalidades e melhorias</a> em diferentes áreas, incluindo internacionalização, E/S e rede, segurança etc. A melhor forma de ilustrar o suporte ao JDK 7 pelo Editor Java do IDE é demonstrando algumas das alterações de linguagem introduzidas pelo Projeto Coin. </p>
<p>Uma dessas alterações é um "String em uma alternância". Nas versões anteriores do Java, o argumento de <tt>switch</tt> só podia ser um dos seguintes tipos de dados primitivos: <tt>byte</tt>, <tt>short</tt>, <tt>char</tt>, <tt>int</tt> ou <tt>enum</tt>. A partir do JDK 7, é possível usar argumentos do tipo <tt>String</tt> na expressão de uma instrução <tt>switch</tt>. </p>
<ol>
<li>Abra <tt>SwitchTest.java</tt> e adicione o código a seguir. Essa pequena amostra exibe códigos RGB para várias cores. <br> Com o JDK 7, a variável <tt>color</tt> pode ser uma <tt>String</tt>.
<pre class="examplecode">package switchtest;
public class SwitchTest {
public static void main(String[] args) {
String color = &quot;red&quot;;
String colorRGB;
switch (color.toLowerCase()) {
case &quot;black&quot;: colorRGB = &quot;000000&quot;; break;
case &quot;red&quot;: colorRGB = &quot;ff0000&quot;; break;
case &quot;green&quot;: colorRGB = &quot;008000&quot;; break;
case &quot;blue&quot;: colorRGB = &quot;0000ff&quot;; break;
default: colorRGB = &quot;Invalid color&quot;; break;
}
System.out.println(colorRGB);
}
}
</pre>
<p class="tips">Se o código colado for incorretamente colado no editor, pressione Alt-Shift-F para reformatar.</p>
</li>
<li>Na janela Projetos, clique com o botão direito do mouse no nó do projeto e selecione Executar Arquivo. Você verá a saída da aplicação, que é o código RGB para a cor vermelha. <br> Você pode ver que a construção foi bem-sucedida e que a aplicação funciona quando a plataforma de destino e o formato do código-fonte são JDK 7.
<p class="align-center">
<img alt="Saída da execução do projeto" border="1" src="../../../images_www/articles/74/java/javase-jdk7/output.png"></p></li>
<li>Vamos reverter para o uso do JDK 6 e testar como a aplicação é compilada com o compilador do JDK 6. <br> Na janela Projetos, clique com o botão direito do mouse no nó do projeto e selecione Propriedades. Na categoria Códigos-fontes, defina o Formato Código-fonte/Binário para <tt>JDK 6</tt> e clique em OK.<br> Você pode ver imediatamente que o parser do JDK6 não reconhece a sintaxe. A compilação falha por causa do tipo de variável incompatível.
<p class="align-center">
<a href="../../../images_www/articles/74/java/javase-jdk7/error.png" rel="lytebox" title="Erro"> <img alt="Erro" border="1" src="../../../images_www/articles/74/java/javase-jdk7/error-small.png"></a></p>
</li>
<li>Agora, vamos reescrever o código usando a instrução <tt>if-then-else</tt>, em vez de <tt>switch</tt>, como segue:
<pre class="examplecode">package switchtest;
public class SwitchTest {
public static void main(String[] args) {
String color = &quot;red&quot;;
String colorRGB;
if (color.equals(&quot;black&quot;)) {
colorRGB = &quot;000000&quot;;
} else if (color.equals(&quot;red&quot;)) {
colorRGB = &quot;ff0000&quot;;
} else if (color.equals(&quot;green&quot;)) {
colorRGB = &quot;008000&quot;;
} else if (color.equals(&quot;blue&quot;)) {
colorRGB = &quot;0000ff&quot;;
} else {
colorRGB = &quot;Invalid color&quot;;
}
System.out.println(colorRGB);
}
}
</pre>
Com o JDK 7 no formato de Código-fonte/Binário, o IDE reconhece tais casos e oferece a opção de convertê-los para <tt>switch</tt>, conforme mostrado na figura abaixo.
<p class="align-center">
<a href="../../../images_www/articles/74/java/javase-jdk7/convert.png" rel="lytebox" title="Converter para alternar dica"> <img alt="Converter para alternar dica" border="1" src="../../../images_www/articles/74/java/javase-jdk7/convert-small.png"></a></p>
Clique na dica e o construtor <tt>if-then-else</tt> será automaticamente convertido para exatamente o mesmo <tt>switch</tt> que tínhamos antes.</li>
</ol>
<h2><a id="more" name="more"></a>Suporte a JDK 7: Mais Exemplos</h2>
<p>Para demonstrar como o Editor Java do IDE reconhece e automaticamente corrige o código para que seja compatível com a especificação de linguagem do JDK 7, vamos usar um snippet de código simulado, que não tem finalidade, mas contém todas as grandes melhorias da linguagem. </p>
<p>Ao percorrer esse snippet de código simulado e aplicar as dicas do editor, você verá os exemplos a seguir de como: </p>
<ul>
<li>Tirar vantagem da inferência automática de tipo, quando o compilador Java consegue inferir o tipo de uma instância genérica sem a necessidade de especificá-la explicitamente. O <em>operador diamante</em> é usado para sinalizar o caso de inferência de tipo. </li>
<li>Usar o tratamento aprimorado de exceção, ou <em>multi-catch</em>, quando um bloco <tt>catch</tt> pode ser usado para vários tipos de exceções. <br>
</li>
<li>Usar a nova sintaxe das instruções de fechamento de funcionalidades, introduzida pela funcionalidade de gerenciamento automático de funcionalidades. </li>
</ul>
<ol>
<li>Substitua o código anterior da aplicação no mesmo arquivo <tt>SwitchTest.java</tt> pelo seguinte código:<br>
<pre class="examplecode">
package switchtest;
import java.io.FileInputStream;
import java.lang.reflect.Method;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class SwitchTest {
public void test() throws IOException {
List&lt;String&gt; list = new ArrayList&lt;String&gt;();
HashMap&lt;String, Integer&gt; map = new HashMap&lt;String, Integer&gt;();
HashMap&lt;String, Integer&gt; map2 = new HashMap&lt;String, Integer&gt;();
String a = &quot;ehlo&quot;;
try {
Method m = Object.class.getMethod(&quot;toString&quot;);
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(&quot;foo.txt&quot;);
int k;
while ((k = in.read()) != -1) {
System.out.write(k);
}
} finally {
if (in != null) {
in.close();
}
}
}
}
</pre>
</li>
<li>Observe que o IDE exibe diversas dicas, como mostrado acima neste tutorial, de como é possível otimizar seu código para a especificação JDK 7. Basta clicar em cada dica e selecionar a ação sugerida. <br>
</li>
<li>Finalmente, depois de aceitar todas as sugestões, você deverá ter o código compatível com JDK 7 mostrado abaixo.
<p class="align-center">
<a href="../../../images_www/articles/74/java/javase-jdk7/converted.png" rel="lytebox" title="Snippet de código convertido"> <img alt="Snippet de código convertido" border="1" src="../../../images_www/articles/74/java/javase-jdk7/converted-small.png"></a></p>
</li>
</ol>
<div class="indent"></div>
<div class="feedback-box"><a href="/about/contact_form.html?to=3&subject=Feedback: Overview of JDK 7 Support in NetBeans IDE">Enviar Feedback neste Tutorial</a></div>
<br style="clear:both;" >
<h2><a name="see"></a>Consulte Também</h2>
<p>Para obter mais informações sobre o JDK 7 e o NetBeans IDE, consulte: </p>
<ul>
<li><a href="http://www.oracle.com/pls/topic/lookup?ctx=nb7400&id=NBDAG465" target="_blank">Definindo o JDK de Destino</a> em <i>Desenvolvendo Aplicações com o NetBeans IDE</i></a></li>
<li><a href="http://download.oracle.com/javase/tutorial/essential/io/fileio.html" target="_blank">Os Tutoriais do Java: E/S de Arquivos</a> - uma seção nos tutoriais do Java que contém numerosos exemplos das mudanças do JDK 7 em E/S.</li>
<li><a href="http://download.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html" target="_blank">Os Tutoriais do Java: Fork e Join</a> - explicação no novo framework de fork/join no JDK7. </li>
</ul>
<p>Para obter mais informações sobre o desenvolvimento de aplicações Java no NetBeans IDE, veja: </p>
<ul>
<li><a href="javase-intro.html">Desenvolvendo Aplicações Java Gerais</a></li>
<li><a href="../../trails/java-se.html">Trilha de Aprendizado do Desenvolvimento Geral em Java</a></li>
<li><a href="http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG366" target="_blank">Criando Projetos Java</a> em <i>Desenvolvendo Aplicações com o NetBeans IDE</i></a></li>
</ul>
</body>
</html>