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