// 
//     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"]
--


[start=5]
. 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"]
--


[start=6]
. 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"]
--


[start=3]
. 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"]
--


[start=4]
. 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"]
--


[start=4]
. 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+]
