// 
//     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.
//

= Visão Geral do Suporte a JDK 8 no NetBeans IDE
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Visão Geral do Suporte a JDK 8 no NetBeans IDE - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Visão Geral do Suporte a JDK 8 no NetBeans IDE

Escrito por Tomas Zezula e Alyona Stashkova


Neste tutorial, você aprenderá conceitos básicos sobre o JDK 8 no NetBeans IDE e como usar o suporte do IDE para as funcionalidades de Java SE 8 como perfis compactos, expressões lambda e anotações de repetição.

*Conteúdo*

image::images/netbeans-stamp-80-74.png[title="O conteúdo desta página se aplica ao NetBeans IDE 7.4 e 8.0 Beta"]


*Para concluir este tutorial, você precisa do software e dos recursos apresentados na tabela a seguir.*

|===
|Software ou Recurso |Versão Necessária 

|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |versão 7.4 e 8.0 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+JDK (Java Development Kit)+] |versão 8 
|===


== Ativando o Suporte do JDK 8 no NetBeans IDE

Depois que o JDK 8 for submetido a download e instalado em seu sistema, ele precisa ser registrado no IDE como segue:

1. No IDE, selecione Ferramentas > Plataformas Java no menu principal.
2. Clique em Adicionar Plataforma na caixa de diálogo Gerenciador de Plataforma Java.
3. Na caixa de diálogo Adicionar Plataforma Java, selecione Edição Padrão Java e clique em Próximo.
4. Especifique o diretório que contém o JDK e clique em Próximo.

[.feature]
--

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

--



. Verifique se os locais default do arquivo zip Códigos-fonte da Plataforma e da documentação da API são válidos. Clique em Finalizar para fechar a caixa de diálogo Adicionar Plataforma Java.
O JDK 8 é registrado como uma plataforma no IDE.

[.feature]
--

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

--



. Assegure-se de que o JDK 1.8 esteja selecionado na lista Plataformas e clique em Fechar.


== Configurando um Projeto para usar JDK 8

Depois de registrar o JDK 8 no IDE, seu projeto precisa ser configurado para usar o JDK 8 para compilar, executar e depurar.

Começaremos criando um novo projeto Java SE com o exemplo do jogo de Anagramas que é enviado com o NetBeans IDE.

1. No IDE, escolha Arquivo > Novo Projeto.
2. No assistente Novo Projeto, expanda a categoria Amostras e selecione Java.
3. Escolha o Jogo de Anagramas na lista Projetos. Em seguida, clique em Próximo.
4. No painel Nome e Local, deixe os valores default para os campos Nome do Projeto e Localização do Projeto.
5. Clique em Finalizar.
O IDE cria e abre o projeto Java SE na janela Projetos.

*Para configurar seu projeto, use o JDK 8:*

1. Clique com o botão direito do mouse no projeto Jogo de Anagramas na janela Projetos e selecione as Propriedades no menu de contexto.
2. Na caixa de diálogo Propriedades do Projeto, escolha a categoria Bibliotecas e defina JDK 1.8 como a Plataforma Java.

[.feature]
--

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

--



. Selecione a Categoria Código-fonte e defina o Formato de Código-origem/Binário para JDK 8.

[.feature]
--

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

--



. Clique em OK para salvar as alterações. 
Seu projeto está definido para reconhecer as novas funcionalidades de linguagem do JDK 8.


== Usando Suporte de Perfis Compacto

O Java SE 8 apresenta os link:http://openjdk.java.net/jeps/161[+perfis do subconjunto da especificação da plataforma do Java SE+] que podem ser usados para implantar e executar aplicações que não exigem a plataforma completa.

Os três perfis que foram definidos até agora são chamados _compact1_, _compact2_ e _compact3_. Cada perfil especifica um conjunto específico de pacotes de Java API e contém todas as APIs nos perfis menores que ele próprio: _compact1_ é um subconjunto de _compact2_, que é um subconjunto de _compact3_, que por sua vez é um subconjunto de _JRE completo_. A tabela abaixo lista os pacotes que são compostos em cada perfil.

|===
|Compact1 |Compact2 |Compact3 |JRE completo 

|* 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_ mais o seguinte:

* java.sql
* javax.sql
* javax.xml
* org.w3c.dom
* org.xml.sax
* java.rmi
* javax.rmi
* javax.transaction
 |_compact2_ mais o seguinte:

* 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_ mais o seguinte:

* corba
* awt
* swing
 

|===

O IDE permite que você alterne entre os perfis e o JRE completo, quando necessário.

*Para definir um perfil do projeto para um Projeto Java SE:*

1. Clique com o botão direito do mouse e escolha Propriedades no menu de contexto.
2. Na caixa de diálogo Propriedades do projeto, selecione a categoria Executar Códigos-fontes.
3. Use a lista drop-down Perfil para especificar o perfil JDK 8 que sua aplicação suportará.

[.feature]
--

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

--



. Clique em OK.

Para verificar como o IDE verifica se as classes usadas em seu projeto pertencem ao perfil especificado, selecione Compact1 como perfil para o projeto Jogo de Anagramas e clique em OK.
O IDE exibe os erros para notificar que o projeto Jogo de Anagramas não é compatível com o projeto _compact1_.

[.feature]
--

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

--

Você pode voltar e definir o perfil do projeto Jogo de Anagramas para JRE Completo que é suportado pela aplicação Anagramas.


== Usando Suporte de Expressões Lambda

link:http://openjdk.java.net/projects/lambda/[+Expressões de Lambda+] trata o volume de classes internas anônimas, expressando funcionalidade de classes internas anônimas de forma mais compacta.

A sintaxe geral de uma expressão lambda consiste em um conjunto de parâmetros, um token de seta e um corpo de função (uma expressão simples ou um bloco de instrução):


[source,java]
----

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

O NetBeans IDE detecta expressões pré-lamba e exibe as dicas no Editor propondo ativar tais construções nas expressões lambda.

Por exemplo, o projeto Jogo de Anagramas caracteriza uma construção pré-lamda no arquivo  ``Anagrams.java`` , conforme a tela abaixo.

[.feature]
--

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

--

Depois que você clicar na lâmpada na margem ou pressionar Alt-Enter, o IDE mostra a dica Usar Lambda com um conjunto de opções disponíveis:

[.feature]
--

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

--

Se a dica Usar Lambda estiver selecionada, o IDE converterá a classe interna anônima em uma expressão lambda.

[.feature]
--

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

--

Se você escolher a opção Executar Inspeção em, o IDE exibirá a caixa de diálogo Inspecionar que permite executar uma Conversão única para inspeção de Lambda no arquivo especificado.

*Observação:* para obter mais informações sobre como iniciar a operação Inspecionar no IDE, consulte link:http://www.oracle.com/pls/topic/lookup?ctx=nb7400&id=NBDAG613[+Usando Dicas na Análise do Código-Fonte e Refatorando+] em _Desenvolvendo Aplicações com o NetBeans IDE_.

[.feature]
--

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

--

Após pressionar o botão Inspecionar para acionar a inspeção, o IDE identifica todas as construções pré-lamba do arquivo e as exibe na janela Inspetor.

[.feature]
--

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

--

Se você escolher a opção Executar Transformação da Inspeção, o IDE exibirá a caixa de diálogo Inspecionar e Transformar que permite executar uma inspeção Converter para Lambda única (ou uma configuração selecionada) no código especificado e refatorá-la, se necessário.

*Observação:* para obter mais informações sobre a operação Inspecionar e Transformar, consulte link:http://www.oracle.com/pls/topic/lookup?ctx=nb7400&id=NBDAG613[+Usando Dicas na Análise do Código-Fonte e Refatorando+] em _Desenvolvendo Aplicações com o NetBeans IDE_.

[.feature]
--

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

--


== Usando Suporte de Anotações de Repetição

As funcionalidades do Java SE 8 incluem link:http://openjdk.java.net/jeps/120[+anotações de repetição+] que permitem que você aplique anotações com o mesmo tipo para um elemento do programa único, conforme mostrado no seguinte exemplo do código:


[source,java]
----

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

O suporte do NetBeans IDE para anotações de repetição permite que você grave o código com as mesmas anotações fornecidas e tipos da anotação incluída que são declarados:

* um tipo de anotação repetida deve ser marcada com  ``@Repeatable ()`` ; caso contrário, você tem um erro na compilação
* um tipo de anotação incluído deve ter um elemento  ``value``  com um tipo de array; o tipo de componente do tipo de array deve ser um tipo de anotação repetida
link:/about/contact_form.html?to=3&subject=Feedback:%20Overview%20of%20JDK%208%20Support%20in%20NetBeans%20IDE[+Enviar Feedback neste Tutorial+]



== Consulte Também

Para obter mais informações sobre JDK 8, consulte:

* link:http://jdk8.java.net/[+Projeto JDK 8+]
* link:http://download.java.net/jdk8/docs/[+Documentação de Acesso Antecipado do Java Platform Standard Edition 8+]
* link:http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/Lambda-QuickStart/index.html[+Java SE 8: Início Rápido do Lambda +]
* link:http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html[+Os Tutoriais do Java: Expressões Lambda+]
* link:http://docs.oracle.com/javase/tutorial/java/annotations/repeating.html[+Os Tutoriais do Java: Anotações de Repetição+]

Para obter mais informações sobre o desenvolvimento de aplicações Java no NetBeans IDE, veja:

* link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG366[+Criando Projetos Java+] em _Desenvolvendo Aplicações com o NetBeans IDE_
* link:javase-intro.html[+Desenvolvendo Aplicações Java Gerais+]
* link:../../trails/java-se.html[+Trilha de Aprendizado do Desenvolvimento Geral em Java+]
