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

= Usando o Suporte do Oracle Java SE Embedded no NetBeans IDE
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Usando o Suporte do Oracle Java SE Embedded no NetBeans IDE - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Usando o Suporte do Oracle Java SE Embedded no NetBeans IDE

Escrito por Tomas Zezula e Alyona Stashkova

O link:http://www.oracle.com/technetwork/java/embedded/overview/javase/index.html[+Oracle Java Standard Edition Embedded+] (Oracle Java SE Embedded) permite que os usuários desenvolvam aplicações altamente funcionais, confiáveis e portáteis para sistemas incorporados poderosos. O NetBeans IDE suporta funcionalidades do Java SE Embedded, como footprint, memória, energia, suporte de plataforma etc.

Neste tutorial, você aprenderá a iniciar o Java SE Embedded no NetBeans IDE e a usar o suporte do IDE para o Java SE Embedded.


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


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

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

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

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


== Configurando uma Plataforma Remota no NetBeans IDE

Uma vez feito o download e instalado o runtime do link:http://www.oracle.com/technetwork/java/embedded/downloads/javase/index.html?ssSourceSiteId=otncn[+Oracle Java SE Embedded+] em sua máquina remota (o Raspberry Pi é usado para fins de demonstração neste tutorial), configure o NetBeans IDE com a plataforma remota da seguinte forma:

* ative a funcionalidade Java ME no NetBeans IDE
* instale uma plataforma Java SE remota no NetBeans IDE

*Para ativar a funcionalidade Java ME no IDE:*

1. Selecione Ferramentas > Plug-ins na barra de ferramentas principal do IDE.
2. Na caixa de diálogo Plug-ins, clique na guia Instalado e selecione Java SE na lista de funcionalidades disponíveis.

[.feature]
--
image::images/plugins-small.png[role="left", link="images/plugins.png"]
--



. Clique em Ativar.


. No painel de Boas-vindas da caixa de diálogo do Instalador, clique em Ativar.


. Quando a ativação foi concluída com êxito, clique em Finalizar.


. Clique em Fechar para fechar a caixa de diálogo Plug-ins.

*Para instalar uma plataforma Java SE remota no NetBeans IDE:*

1. Selecione Ferramentas > Plataformas Java.
A caixa de diálogo Gerenciador da Plataforma Java será exibida.

[.feature]
--
image::images/jpmanager-small.png[role="left", link="images/jpmanager.png"]
--



. Clique em Adicionar Plataforma.


. Na opção Selecionar Tipo de Plataforma do assistente de Adição de Plataforma Java, selecione Remote Java Standard Edition e clique em Próximo.
O IDE exibe a caixa de diálogo Adicionar Plataforma Java.

[.feature]
--
image::images/addjp-small.png[role="left", link="images/addjp.png"]
--



. Especifique os detalhes da plataforma remota, como nome, endereço IP ou nome do DNS do dispositivo, log-in, senha e o caminho para o JRE no dispositivo remoto.

*Observação:* o sistema operacional de destino deve ser o UNIX (o Windows não é suportado).



. Clique em Finalizar. O IDE valida o JRE remoto executando uma sondagem e faz download das propriedades do sistema JRE remoto. 
Uma nova plataforma Java SE remota é exibida na caixa de diálogo Gerenciador de Plataformas Java.

[.feature]
--
image::images/jpremote-small.png[role="left", link="images/jpremote.png"]
--

Agora seu NetBeans IDE está configurado para desenvolvimento Java SE remoto.


== Criando e Executando um Projeto no IDE

Agora vamos criar um projeto que deverá ser o primeiro executado no IDE e, em seguida, na plataforma remota.

*Para criar um projeto:*

1. No IDE, escolha Arquivo > Novo Projeto.
2. No assistente de Novo Projeto, escolha a categoria Java e selecione Aplicação Java na lista Projetos. Clique em Próximo.
3. Na página Nome e Localização do assistente, proceda da seguinte forma:
* No campo Nome do Projeto, digite `EmbeddedCalculator`.
* Deixe desmarcada a caixa de seleção Utilizar Pasta Dedicada para Armazenar Bibliotecas.
* No campo Criar Classe Principal, digite `embeddedcalculator.EmbeddedCalculator`.

[.feature]
--
image::images/wizard-small.png[role="left", link="images/wizard.png"]
--



. Clique em Finalizar.
O IDE cria e abre o projeto Java SE na janela Projetos.


. Substitua a linha  ``// TODO code application logic here``  pelo seguinte código:

[source,java]
----

    int a = 1;
    int b = 2;
    int c = a + b;
    System.out.println (c);
----


. Salve as alterações escolhendo Arquivo > Salvar.

Para testar sua aplicação, clique com o botão direito do mouse no nome do projeto e escolha Executar no menu de contexto. A saída calculada pode ser exibida na janela Saída (Janela > Saída).

image::images/run-ide.png[]


== Configurando um Projeto para Usar uma Plataforma Remota

Para desenvolver em uma plataforma remota uma aplicação Java SE incorporada, usando a link:http://openjdk.java.net/jeps/161[+plataforma de runtime compact1, compact2 ou compact3+], o JDK 8 deve ser registrado no IDE.

*Para ativar o suporte do JDK 8 no NetBeans IDE:*

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 padrão do arquivo zip de 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"]
--



. Clique em Fechar.

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

1. Clique com o botão direito do mouse no projeto EmbeddedCalculator, na janela Projetos, e selecione 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"]
--



. Especifique o perfil usado como runtime em uma plataforma remota (por exemplo, Compact 2).

[.feature]
--
image::images/prj-jdk8-profile-small.png[role="left", link="images/prj-jdk8-profile.png"]
--



. Clique em OK para salvar as alterações. 
Seu projeto está definido para reconhecer um determinado runtime em uma plataforma remota.


== Executando um Projeto em uma Plataforma Remota

Você pode executar e depurar uma aplicação em um dispositivo remoto depois de definir a configuração do projeto com um padrão diferente.

*Para criar uma nova configuração:*

1. Clique com o botão direito do mouse no nome do projeto, na janela Projetos, e selecione Propriedades no menu de contexto.
2. Escolha a categoria Executar.
3. Clique em Novo à direita da lista drop-down Configuração.
4. Na caixa de diálogo Criar Nova Configuração, especifique o nome de uma nova configuração e clique em OK.
5. Selecione o nome da plataforma de runtime na lista drop-down Plataforma de Runtime.

[.feature]
--
image::images/config-runtime-small.png[role="left", link="images/config-runtime.png"]
--



. Clique em OK para salvar suas edições.

Se você executar o projeto em uma plataforma remota (Executar > Executar Projeto (nome do projeto)), a saída será semelhante à mostrada na figura a seguir.

[.feature]
--
image::images/run-remote-small.png[role="left", link="images/run-remote.png"]
--

*Para alternar entre configurações de projeto:*

* Escolha Executar > Definir Configuração do Projeto > nome da configuração ou clique com o botão direito do mouse no nome do projeto e escolha Definir Configuração > nome da configuração no menu de contexto.

[.feature]
--
image::images/switch-config-small.png[role="left", link="images/switch-config.png"]
--

link:/about/contact_form.html?to=3&subject=Feedback:%20Setting%20Up%20Oracle%20Java%20SE%20Embedded%20in%20NetBeans%20IDE[+Enviar Feedback neste Tutorial+]



== Consulte Também

* link:http://www.oracle.com/technetwork/java/embedded/resources/se-embeddocs/index.html?ssSourceSiteId=null[+Java SE Embedded Documentation+]
* link:https://www.youtube.com/watch?v=mAnne3N0d5Y#t=149[+Java SE Embedded Development Made Easy - Part 1 of 2 +]
* link:https://www.youtube.com/watch?v=G8oMx2SJZq8[+Java SE Embedded Development Made Easy - Part 2 of 2+]
* link:http://www.oracle.com/technetwork/articles/java/raspberrypi-1704896.html[+Getting Started with Java® SE Embedded on the Raspberry Pi+]
