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

= Criando, Depurando e Criando Perfil em uma Aplicação Incorporada Móvel
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Criando, Depurando e Criando Perfil em uma Aplicação Incorporada Móvel - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Criando, Depurando e Criando Perfil em uma Aplicação Incorporada Móvel

Sungmoon Cho, Alyona Stashkova

As aplicações incorporadas móveis são empregadas em dispositivos incorporados pequenos, como dispositivos de medição industrial, máquinas de vendas de produtos, sistemas de segurança, modems, eletrodomésticos e similares com a exibição simples ou nenhuma exibição e com conectividade de rede limitada. Este exemplo mostra como desenvolver um novo projeto Java ME incorporado no NetBeans IDE usando a plataforma Oracle Java Micro Edition Embedded que inclui suporte a link:http://jcp.org/en/jsr/detail?id=228[+JSR 228+], a API IM-NG (de perfil de módulo de informações de última geração). Ele explicará ainda como depurar e criar perfil no seu IMlet usando suporte a NetBeans para Oracle Java ME Embedded.



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


*Para concluir este tutorial, são necessários os seguintes recursos e softwares:*

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

|link:https://netbeans.org/downloads/index.html[+NetBeans IDE com Java ME+] |Versão 7.3 e mais recente 

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

|link:http://www.oracle.com/technetwork/java/javame/javamobile/download/sdk/index.html[+Java ME SDK+] |Versão 3.2 e mais recente 
|===

*Importante:* Este tutorial só é executado em plataformas compatíveis com Win32.


== Instalando o Oracle Java ME Embedded

Para configurar o NetBeans IDE com o software Oracle Java ME Embedded para plataforma Windows, é necessário:

* Instalar o Oracle Java ME SDK
* Ativar a funcionalidade Java ME no NetBeans IDE
* Instalar a plataforma Oracle Java ME Embedded no NetBeans IDE

*Para instalar o Oracle Java ME SDK *

1. Vá para a página de link:http://www.oracle.com/technetwork/java/javame/javamobile/download/sdk/index.html[+download do Java ME SDK+].
2. Clique na opção Aceitar Contrato de Licença.
3. Faça download de um arquivo do instalador do Oracle Java ME SDK (por exemplo, oracle-jmesdk-3-4-rr-win32-bin.exe) e salve-o em qualquer local em seu computador.
4. Clique duas vezes no arquivo instalador para executá-lo, e siga as instruções.
Quando a instalação for concluída, o ícone do Gerenciador de Dispositivo do Java (TM) ME Platform SDK ( image::images/icon.png[]) será exibido na bandeja de sistema do Windows.

*Para ativar a funcionalidade Java ME: *

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 ME na lista de funcionalidades disponíveis.

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

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

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

5. Quando a ativação foi concluída com êxito, clique em Finalizar.
6. Clique em Fechar para fechar a caixa de diálogo Plug-ins.

*Para instalar a plataforma Oracle Java ME Embedded:*

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

2. Clique em Adicionar Plataforma.
3. Em Selecionar Tipo de Plataforma do assistente Adicionar Plataforma Java, selecione Java ME CLDC Platform Emulator e clique em Próximo.
O IDE exibirá o diretório Escolher para a pesquisa de caixa de diálogo das plataformas.
4. Selecione o diretório em que você instalou a Plataforma Java ME SDK (por exemplo,  ``C:\Java_ME_Platform_SDK_3.2`` ) e clique em Abrir.
5. No painel Pastas da Plataforma do assistente Adicionar Plataforma Java, verifique se a plataforma selecionada na etapa anterior foi escolhida e clique em Próximo.
6. Assim que o IDE detectar a plataforma, clique em Finalizar no painel Plataformas Detectadas do assistente Adicionar Plataforma Java.

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

O Oracle Java ME Platform agora está registrado no NetBeans IDE.

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

7. Na caixa de diálogo Gerenciador de Plataformas Java, clique em Fechar.

Agora, seu NetBeans IDE está configurado para o desenvolvimento móvel.


== Criando um Projeto Incorporado

A criação de novos projetos é a primeira etapa para desenvolver uma nova aplicação Java ME Embedded com o NetBeans IDE.

1. Escolha Arquivo > Novo Projeto.
A caixa de diálogo Novo Projeto é exibida.
2. Selecione a categoria de Java ME e o projeto da Aplicação Incorporada. Clique em Próximo.
3. No painel Nome e Local do assistente Nova Aplicação Incorporada, especifique  ``EmbeddedApp``  como nome do projeto.

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

4. Deixe a opção Criar Pacote Default e Classe de IMlet selecionada e clique em Próximo.
5. Verifique se CLDC Oracle Java(TM) Platform Micro Edition SDK está selecionado na plataforma do emulador e se IMPNGPhone1 está selecionado como dispositivo.
6. Clique em Finalizar.
Uma aplicação IMP-NG com um IMLet será criado em um projeto IDE padrão.

image::images/prjcreated.png[]

<<top,início>>


== Executando a Aplicação

Para verificar se a aplicação está sendo executada corretamente, modifique o código-fonte da aplicação, como a seguir:

1. Na janela Projetos, clique duas vezes no arquivo  ``IMlet.java``  e escolha Editar. 
O IDE abrirá o arquivo  ``IMlet.java``  no Editor de Código-fonte.
2. Role a tela pelo código-fonte e localize o método  ``StartApp``  principal.
3. Insira a seguinte linha em negrito no corpo do método  ``StartApp`` :

[source,java]
----

 public void startApp() {
      *System.out.println("Hello, world!");*
 }
----
4. Escolha Arquivo > Salvar no menu principal do IDE para salvar as edições.

Agora que você criou a aplicação, pode executá-la no IDE conforme descrito a seguir:

1. Clique com o botão direito do mouse no nó do projeto  ``EmbeddedApp``  e escolha Limpar e Construir.
A janela de Saída exibirá a instrução BUILD SUCCESSFUL.

*Observação:* Escolha Janela > Saída > Saída no menu principal do IDE, caso a janela de Saída não esteja visível.

2. Na barra de menu IDE, escolha Executar > Executar Projeto.
O emulador IMPNGPhone1 é iniciado e exibe a aplicação EmbeddedApp em execução.

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

*Observação:* Mais informações sobre o Java ME Embedded Emulator estão disponíveis no link:http://docs.oracle.com/javame/config/cldc/rel/3.2/get-started-win/title.htm[+Oracle Java ME Embedded Getting Started Guide for the Windows 32 Platform+].

Na janela de Saída, você deverá ver a saída do programa, `Hello, world!`

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

3. No emulador, selecione  ``Aplicação Incorporada (em execução)``  e clique em Suspender, à direita.
A aplicação está pausada.
4. Clique em Retomar.
A aplicação retoma a execução.
5. Para interromper a aplicação e fechar o emulador, clique em Interromper e escolha Aplicação > Sair do menu do emulador.
O processo de execução é encerrado no IDE.

<<top,início>>


== Depurando a Aplicação

A depuração dos projetos incorporados é obtida da mesma forma que a de projetos Java em geral.

Clique com o botão direito do mouse no projeto, escolha Depurar para iniciar uma sessão de depuração. O emulador é aberto e a execução do programa é interrompida em qualquer ponto de interrupção definido.

<<top,início>>


== Criando Perfil da Aplicação

Use tarefas comuns de criação de perfil, como CPU padrão ou criação de perfil de memória, para criar uma aplicação incorporada móvel confiável.

Antes de criar perfil da aplicação, você deve instalar o plug-in das Ferramentas Java ME SDK, como a seguir:

1. No NetBeans IDE, escolha Ferramentas > Plug-ins.
2. No Gerenciador de Plug-ins, selecione a guia Plug-ins Disponíveis.
3. Na guia Plug-ins Disponíveis, role a tela para localizar o plug-in das Ferramentas Java ME SDK e selecione-o para instalação.

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

4. Clique em Instalar.
5. Pelo a página de Boas-vindas da caixa de diálogo do Instalador, clique em Próximo.
6. Na página Contrato de Licença, leias os contratos associados ao plug-in. Se você concordar com os todos os termos da licença do contrato, clique na opção apropriada e, em seguida, clique em Instalar.
7. Quando o processo de instalação for concluído, deixe a opção Reiniciar IDE agora selecionada e clique em Finalizar.

Quando o NetBeans IDE for selecionado, você poderá iniciar o uso do IDE para criar perfil na sua aplicação incorporada móvel.

1. Na guia Projetos do IDE, selecione o nome do projeto `EmbeddedApp`.
2. Escolha Perfil > Projeto de Perfil no menu principal para iniciar uma sessão de criação de perfil.

*Observação:* Você será solicitado a integrar o criador de perfil quando um projeto tiver o perfil criado pela primeira vez.

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

3. (Aplicável se essa for a primeira vez que um perfil é criado no projeto) Na caixa de diálogo Ativar Criação de Perfil, clique em Sim para executar a integração.
4. Na caixa de diálogo Perfil, escolha Criador de Perfil de CPU e, opcionalmente, marque Classes de Sistema do Perfil.
5. Clique em Executar.
O emulador é aberto com a aplicação `EmbeddedApp` em execução.
6. Interaja com a aplicação.
7. Saia da aplicação ou feche o emulador. 
O IDE exibirá os dados de perfil na janela `cpu:_time_`.

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

*Observação:* Para salvar os dados coletados durante a sessão de emulação para futura referência, você pode:

* exportar os dados para um arquivo `nps` clicando no botão Exportar para (image::images/export.png[])
* salvar uma tela em um arquivo `png`, clicando no botão Salvar View Atual como Imagem (image::images/image.png[])
link:/about/contact_form.html?to=6&subject=Creating,%20Debugging,%20and%20Profiling%20an%20Embedded%20Application[+Enviar Feedback neste Tutorial+]


<<top,início>>


== Consulte Também

* link:imp-ng-screencast.html[+Demonstração: Suporte para Perfil IMP-NG no NetBeans IDE+]
* link:http://www.oracle.com/technetwork/java/javame/javamobile/training/jmesdk/index.html[+Java Mobile - Comece a Aprender+]
* link:http://www.oracle.com/technetwork/java/embedded/resources/me-embeddocs/index.html[+Documentação do Cliente do Oracle Java ME Embedded+]
* link:https://blogs.oracle.com/javamesdk/[+Blog da Equipe do Java ME SDK+]
* link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG1552[+Desenvolvendo Aplicações Java ME+] em _Desenvolvendo Aplicações com o NetBeans IDE_

<<top,início>>

