Buscar

PDM - CONTEÚDO ONLINE - Aula 1 a 5

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
 
AULA 01: INTRODUÇÃO AO AMBIENTE 
Desenvolvimento para dispositivos móveis 
Nos últimos anos, principalmente pela praticidade e comodidade, cada vez mais pessoas aderem ao 
uso de dispositivos com tecnologia móvel. Os crescentes números de venda no mercado brasileiro apontam 
essa realidade. No que tange dispositivos móveis empregados para a telefonia (celulares e smartphones) no 
Brasil, existem mais dispositivos móveis do que pessoas. Portanto, existe uma demanda crescente de 
consumo que exige uma demanda de desenvolvimento de programas (software) nesses dispositivos. 
Nos últimos anos, se destacam no mercado brasileiro os dispositivos móveis que possuem capacidade 
computacional, conectividade (internet e telefonia) e multimídia. Dentre eles, seguem os mais comuns: 
 
 
 
Características comuns em dispositivos móveis 
Normalmente, os dispositivos móveis são pequenos e possuem algumas diferenciações importantes 
quando comparados a equipamentos maiores. São elas: 
 
 
Presença no mercado 
Os equipamentos móveis estão em constante evolução e estão presentes no mercado nos mais 
variados formatos. Como o mercado está em constante mudança é realmente difícil prever a penetração dos 
dispositivos, pois tudo depende muito de fatores políticos, sociais, econômicos e ecológicos. 
Alguns dos movimentos que estão acontecendo há algum tempo nos dão uma pequena ideia das 
tendências do mercado de equipamentos móveis: 
 
Telefones celulares comuns estão convergindo para smartphones: 
O smartphone é um telefone celular mais inteligente e que possui funcionalidades mais avançadas 
que atendem necessidades por meios computacionais (manipulação de arquivos, documentos, e-mail, 
agenda, jogos, recursos multimídia dentre outros). Além disso, através da instalação de programas as 
funcionalidades podem ser ampliadas. 
 
Os Netbooks e Notebooks sofrerão transformações: 
Novos dispositivos móveis estão causando verdadeiras revoluções e alguns dispositivos em 
determinadas situações poderão assumir o lugar dos netbooks e dos notebooks tradicionais. Equipamentos 
mais robustos como ultrabooks, equipamentos que usam “touch screen” (toque na tela - dispensam o uso do 
mouse e do teclado), que são mais portáteis como tablets e notebooks que se dividem em partes, formando 
tablets estarão cada vez mais presentes no mercado. 
 
Surgimento de novos equipamentos com redes sem fio e com longa autonomia de bateria: 
2 
 
Novos dispositivos estão surgindo para funcionar por um dia inteiro ou mais com uma única carga e 
com a conexão 3G opcional para o usuário ficar online em praticamente qualquer lugar. Alguns equipamentos 
trabalham na ideia de que será que “seus aplicativos, jogos, fotos, músicas, filmes e documentos estarão 
acessíveis de qualquer lugar e não será mais preciso se preocupar em perder o computador ou com não fazer 
o backup das informações”. 
 
Reflexão 
Diferentes estratégias de mercado reconhecem que a internet tem vantagens na forma de aplicação e 
como plataforma de produtividade. O Google usa essa estratégia e seus serviços são um bom exemplo desse 
conceito de entregar tudo ao usuário a partir da nuvem (internet), todavia em nossas escolhas temos que 
ponderar sobre os novos paradigmas, pois a partir de um dispositivo móvel, assim como é verdade que é 
possível abandonar o desktop e o modelo de software tradicional e trabalhar inteiramente na nuvem, é 
verdade também que o usuário pode facilmente escolher utilizar essas ferramentas baseadas na web, a partir 
de plataformas tradicionais como Windows, Mac OS X ou Linux, mantendo o benefício de instalar programas 
de maneira local. 
 
Escolha da tecnologia e de equipamento 
Na área de tecnologia surgem e somem constantemente aparelhos, ferramentas, plataformas de 
desenvolvimento e linguagens de programação. Para evitar uma escolha equivocada de equipamentos ou de 
tecnologias, é preciso ficar atento às informações e tendências de mercado - leia sites de notícia 
regularmente. 
 
Plataforma 
A palavra “plataforma” será utilizada daqui por diante e você deve entendê-la como sendo um tipo 
de ambiente com características específicas em que alguma acontecerá. A seguir, temos dois termos que 
serão utilizados com certa frequência: 
 
PLATAFORMA DE EXECUÇÃO Refere-se ao ambiente onde os softwares são executados. Ela pode ser 
diferente em cada tipo de dispositivo, todavia deve atender as capacidades e limitações específicas de cada 
um deles sem prejudicar a execução dos softwares. 
 
PLATAFORMA DE DESENVOLVIMENTO Refere-se ao ambiente que possibilita o desenvolvimento (criação ou 
manutenção) de softwares. Essa plataforma está diretamente relacionada à plataforma de execução e deve 
produzir softwares capazes de atender as capacidades e limitações específicas da plataforma de execução. 
 
Uso da plataforma de desenvolvimento 
No mercado existem muitas plataformas de execução e de desenvolvimento para dispositivos móveis. 
Normalmente as plataformas de desenvolvimento são instaladas e utilizadas em computadores do tipo 
desktop (ou notebook) e os resultados produzidos são transferidos e utilizados pelos dispositivos móveis. 
Normalmente isso acontece porque é complicado de se desenvolver em alguns dispositivos que, por vezes, 
não oferecem recursos ou facilidades devido a restrições físicas como display, memória, processador e 
teclado dentre outras e, limitações lógicas como softwares. 
 
Máquina virtual 
O termo “máquina virtual” também será 
empregado daqui por diante e se refere à 
plataforma de execução de softwares por uma 
estrutura relativamente complexa. Basicamente, 
uma máquina virtual é uma máquina, criada 
através de software, que executa programas como 
se fosse um dispositivo real (físico). Uma máquina 
virtual, também conhecida como Virtual Machine 
ou simplesmente VM, pode ser entendida como 
“uma duplicata eficiente e isolada de uma máquina 
real”. A IBM, por exemplo, define uma máquina 
virtual como uma cópia totalmente protegida e 
isolada de um sistema físico. 
 
 
 
 
 
3 
 
 
 
 
Liguagem de máquina, de programação e código-fonte 
Para desenvolver um software, em uma visão simplificada, é necessário conceber uma ideia e depois 
transmiti-la ao computador em um idioma que ele possa compreender e executar – a esse idioma 
chamaremos de “linguagem de máquina”. Como cada computador é diferente, escrever ideias na linguagem 
de máquina de cada novo sistema operacional ou hardware que surge pode realmente ser muito trabalhoso e 
complicado, por esse motivo, para facilitar a vida de quem desenvolve software e acelerar os resultados de 
produtividade, foram criadas as linguagens de programação. As linguagens de programação são a 
representação de ideias dentro de uma lógica humana em uma escrita especial que atuam como um idioma 
intermediário, ou seja, um idioma que fica entre o nosso idioma e o idioma da máquina. 
 A linguagem de programação além de permitir uma melhor compreensão humana das instruções 
(códigos-fontes) escritas, trás também a conveniência de possibilitar a conversão para a linguagem de 
máquina em condições diferentes, desde que algum software consiga traduzi-la para ser compatível com o 
sistema operacional, máquina virtual ou hardware. 
 
http://estacio.webaula.com.br/Cursos/gon283/docs/15PDM_aula01_doc01.pdf 
 
Tecnologias para desenvolvimento 
Como já foi dito anteriormente, na área de tecnologia surgem e somem constantemente aparelhos, 
ferramentas, plataformas de desenvolvimento e linguagens de programação. Para evitar uma escolha 
equivocada de equipamentos ou de tecnologias você deve estar atento às informações e tendências de 
mercado. Neste momento, descreveremos resumidamente apenas duas tecnologias, todavia você deve 
pesquisar na internet e procurar mais informações a respeito delas e de outras que existemno mercado. 
 
Java Micro Edition (JME) 
Plataforma de desenvolvimento que faz uso da tecnologia Java para execução de programas em 
dispositivos móveis. Foi criada pela SUN Microsystems e, atualmente, é suportada pela ORACLE. 
 Essa plataforma possui compatibilidade com diversos equipamentos e é aceita na maioria dos 
dispositivos móveis. Um grande diferencial quando comparada a outras plataformas de desenvolvimento é 
que programas desenvolvidos nessa plataforma contam com acessibilidade e portabilidade dentro de algumas 
especificações. 
Programas feitos para a Java ME consomem poucos recursos do dispositivo graças a KVM (Kilo Virtual 
Machine) que é uma máquina virtual com funções reduzidas construídas para atender as necessidades e 
restrições dos dispositivos, impostas por uma especificação chamada configuração CLDC (Connected Limited 
Device Configuration) ou CDC (Connected Device Configuration). 
Por um lado, são vantagens dessa plataforma a vasta quantidade de bibliotecas livres que podem ser 
encontradas na internet, o baixo consumo de recursos e a disponibilidade da tecnologia em diversos 
equipamentos, todavia, por outro lado, existe a dificuldade de se programar com pouca memória e 
processamento (por conta de limitações do dispositivo), dificuldade para manipular dados que necessitam ser 
armazenados ou pesquisados, além disso, algumas características da própria plataforma trazem restrições 
que impedem acesso completo às funcionalidades nativas do dispositivo móvel, ocasionando algumas 
limitações que necessitam de esforço extra para serem superadas - coisa que nem sempre é possível. 
 A plataforma Java ME é gratuita e sua disponibilidade no equipamento depende do fabricante do 
dispositivo móvel. Dependendo do dispositivo o desenvolvedor necessita comprar a KVM, ou negociar a 
distribuição, ou ainda, negociar a licença do produto com o fabricante por imposições legais. 
 
Android 
Plataforma que atende dispositivos móveis mais avançados e que permite desenvolvimento de 
programas através da linguagem Java. Ela possui compatibilidade com equipamentos relativamente novos e 
funciona principalmente em smartphones e tablets, todavia a plataforma também é compatível com 
equipamentos de maior capacidade. 
Essa plataforma conta com um sistema operacional baseado em Linux, foi criada pelo Google e utiliza 
uma máquina virtual chamada Dalvik para executar programas criados a partir do Java. Como a máquina 
virtual Dalvik utiliza padrões que não são compatíveis com os padrões de bytecode da máquina virtual Java, é 
preciso converter o bytecode do formato Java para o formato da Dalvik. 
 A plataforma Android também é gratuita e é open source (código-fonte aberto), ou seja, tem seus 
códigos-fontes disponíveis na internet e qualquer desenvolvedor de software pode consulta-los, alterá-los ou 
aprimorá-los e redistribui-los. 
4 
 
Diferentemente do Java ME, o Android não possui restrições quanto ao acesso às funcionalidades 
nativas do dispositivo móvel, muito pelo contrário, foi concebido para permitir que desenvolvedores possam 
tirar proveitos de tudo o que o aparelho possa oferecer. Além disso, o desenvolvedor conta com recursos 
muito poderosos para exibição gráfica 2D e 3D e também conta com um poderoso e leve banco de dados com 
suporte SQL através do SQLite. Outro ponto muito importante para os aplicativos dessa plataforma é que eles 
podem ser divulgados e distribuídos facilmente através do Android Market, um serviço on-line que o Google 
oferece e que já vem pré-instalado no Android. 
 Diante das tendências no mercado brasileiro e dos comparativos e resultados analisados em cada 
tecnologia, faremos nosso estudo baseando-nos na programação em linguagem Java para a plataforma 
Android. 
 Pesquisar quais são os dispositivos móveis que estão disponíveis no mercado. Nessa pesquisa, deve ser 
observada a relação entre o valor de oferta, as capacidades do equipamento, o sistema operacional utilizado 
no aparelho e as especificações necessárias para desenvolvimento (por exemplo, equipamento permite 
desenvolvimento em Java via JME, MIDP 2.0 com CLDC 1.1). São fatores relevantes na pesquisa à velocidade 
de crescimento de cada tecnologia e como o mercado está reagindo. 
 
AULA 2: PREPARANDO O AMBIENTE 
Conceitos básicos 
Antes de prosseguir, é importante entender alguns termos e conceitos que serão empregados daqui 
por diante: 
 
API 
O termo API significa Application Programming Interface e refere-se a um conjunto de rotinas e 
padrões estabelecidos por um software para a utilização das suas funcionalidades por aplicativos que não 
pretendem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços. Por 
exemplo, façamos uma analogia: se você fosse um software e se sua TV fosse outro, seria como na vida 
física, você usaria a TV, mas não precisaria saber como ela funciona por dentro, em outras palavras, alguém 
desenvolveu a API que dá acesso a TV e você faria uso dela sem envolver-se com os detalhes da 
funcionalidade interna da TV. 
 
CLDC 
O termo CLDC significa Connected Limited Device Configuration e refere-se ao conjunto de 
configurações que caracterizam dispositivos limitados em memória e poder de processamento. Os dispositivos 
que se encaixam nessa configuração possuem: 
 
 Limite de 128 KB de memória para executar o Java; 
 Limite de 32 KB de memória para alocação em tempo de execução; 
 Interface de usuário com recursos limitados; 
 Baixa potência, normalmente são alimentados por bateria; 
 Limitações de conectividade, normalmente wireless, com velocidade limitada e com algumas restrições. 
 
Como exemplos de dispositivos móveis que usam CLDC destacam-se o celular comum, pagers e PDAs. 
 
CDC 
O termo CDC significa Connected Device Configuration e refere-se ao conjunto de configurações que 
caracterizam dispositivos mais potentes em memória, poder de processamento e conectividade de rede. Os 
dispositivos que se encaixam nessa configuração possuem: 
 No mínimo 512 KB de memória para execução do Java; 
 No mínimo 256 KB de memória para alocação em tempo de execução; 
 Conectividade com rede, normalmente persistente e veloz. 
 
Como exemplos de dispositivos móveis que usam CDC destacam-se o celular smartphone, set-top 
boxes, dispositivos e servidores embarcados. 
 
MIDP 
O termo MIDP significa Mobile Information Device Profile e refere-se ao perfil que complementa a 
configuração que caracteriza o dispositivo. Os dispositivos podem se encaixar dentro de uma configuração, 
todavia um telefone celular comum, um PDA e pager apesar de se encaixarem nas diretrizes do CLDC não 
possuem os mesmos recursos de tela e de funcionalidade. Para resolver esta ampla gama de capacidades, e 
5 
 
para proporcionar uma maior flexibilidade como as mudanças tecnológicas, a Sun introduziu o conceito de 
perfil (MIDP) para a plataforma Java Micro Edition. 
Um perfil é uma extensão da configuração e ele provê as bibliotecas para o desenvolvedor escrever 
aplicativos para um determinado tipo de dispositivo. Por exemplo, o MIDP define APIs (Application 
Programming Interface) para a interface de usuário, entrada, componentes, manipulação de eventos, 
armazenamento persistente, rede e temporizadores, levando em consideração a tela, memória e limitações 
do dispositivo móvel. 
Desenvolvimento, recursos e ajuda 
A maioria dos aplicativos móveis usa a plataforma Java Micro Edition (Java ME), pois ela está 
presente em uma ampla variedade de dispositivos e foi desenvolvida para suportar pequenos dispositivos 
móveis, como telefones celulares. A plataforma Java ME usa subconjuntos reduzidos de componentes da 
plataforma Java SE e também define APIs (Application Programming Interface), que são especificamente 
destinadas a dispositivos móveis e dispositivos embarcados. 
 
Instalação do JavaEntre no site da Oracle para baixar o JDK do Java SE: 
 
 
 
 
Selecione o JDK do Java SE, leia e aceite os termos do contrato e baixe o instalador do JDK para seu 
computador em conformidade com o sistema operacional que você usa. A referência x86 no nome significa 
sistema operacional para processador de 32 bits e a referência x64 significa sistema operacional para 
processador de 64 bits: 
 
 
Vamos instalar o Java por completo em um Windows. Dê um duplo clique em seu ícone: 
 
 
Leia e siga as telas do assistente de instalação e configuração do JDK do Java SE. Veja aqui. 
http://estacio.webaula.com.br/Cursos/gon283/docs/15PDM_aula02_doc02.pdf 
 
Instalação da ferramenta de desenvolvimento 
Entre no site www.netbeans.org 
para baixar o NetBeans: 
Clique no link download e faça o download completo do 
NetBeans: 
6 
 
 
 
 
Instale por completo o NetBeans. Dê um duplo clique em seu ícone: 
 
 
 
 
 
 
 
7 
 
 
 
 
 
 
Este exemplo demonstrou como baixar e instalar o NetBeans em um Windows de 64 bits, o 
procedimento para o Windows de 32 bits é o mesmo e, para verificar o sucesso, você pode abrir o NetBeans 
dando um duplo clique em seu ícone. A seguinte tela deverá surgir: 
8 
 
 
 
Testando a instalação 
Para testar a instalação e constatar que houve sucesso, siga os passos: 
Com o NetBeans aberto, siga as instruções que estão na imagem: 
 
 
Se o seu NetBeans até o momento não foi utilizado com Java ME, a tela seguinte aparecerá: 
9 
 
 
 
Dê um nome ao projeto, mantenha as caixas de seleção marcadas e clique em próximo: 
 
Como estamos testando, não modifique nada, apenas atente-se aos valores e finalize. 
 
10 
 
 
O fluxo é montado automaticamente, não modifique nada ainda, apenas observe. 
 
 
Execute o programa e veja a mensagem “Olá Olá mundo! (Hello Hello World!)”. 
 
 
Se tudo isso aconteceu sem erros então provavelmente seu NetBeans foi instalado com sucesso! Se 
quiser, agora você pode fechar o emulador de celular e o NetBeans. 
 Com as ferramentas instaladas e configuradas, estamos aptos a começar o aprendizado para o 
desenvolvimento. Na próxima aula iniciaremos essa fase de aprendizado, iniciando pelas facilidades que o 
NetBeans oferece. 
 Na pesquisa, será facilmente observado que existem várias ferramentas profissionais e que são 
gratuitas. Será observado também que existe uma grande quantidade de pessoas divididas entre as 
ferramentas NetBeans e Eclipse. Abaixo seguem alguns exemplos com a solução da atividade proposta, 
baseada em uma pesquisa realizada em 14/01/12: 
11 
 
 http://java.sun.com/javame/downloads/index.jsp – Java ME downloads – Downloads 
para MIDP CLDC WTKs, CDC WTKs, referências, especificações e documentações. 
Download gratuito. 
 http://netbeans.org/features/javame/index.html – Cria, testa e depura aplicações para 
Mobile Information Device Profile (MIDP) 1.0, 2.0, 2.1 (MSA), para Connected Limited 
Device Configuration (CLDC) 1.0 e 1.1, e para Connected Device Configuration (CDC). 
 http://developer.motorola.com/ – No site MotoDEV são combinados os programas de 
desenvolvimento MotoIDEN e MotCoder JavaME para disponibilizar os últimos SDKs para 
todos os telefones da Motorola. Requer registro para download gratuito. 
 http://www.eclipseme.org/ – EclipseME é um plugin do Eclipse que ajuda no 
desenvolvimento de JME MIDlets. O EclipseME faz a “tarefa difícil” e ajuda no 
desenvolvimento da aplicação. Download gratuito. 
 
Alguns sites recomendados seguem abaixo: 
 http://netbeans.org/kb/docs/javame/quickstart.html – Java ME MIDP Development 
Quick Start Guide (inglês) 
 http://netbeans.org/kb/docs/javame/cdc-quickstart.html – Java ME CDC Development 
Quick Start Guide (inglês) 
 http://netbeans.org/features/javame (inglês) 
 http://www.oracle.com/technetwork/java/javame/javamobile/download/overview/ind
ex.html (inglês) 
 Grande parte da documentação que envolve conhecimentos de programação 
normalmente está no idioma inglês. Se tiver dificuldades ou dúvidas com o idioma, 
procure utilizar tradutores. 
 Alguns sites recomendados que fornecem gratuitamente recursos de tradução on-line: 
 http://translate.google.com.br 
 http://babelfish.yahoo.com 
 
AULA 03: INTRODUÇÃO À PROGRAMAÇÃO MÓVEL 
Conceitos básicos 
Antes de prosseguir, vamos revisar alguns conceitos básicos que vimos na aula anterior e incorporar 
outros novos conceitos: 
 
 
O termo API significa Application Programming Interface e refere-se a um conjunto de rotinas e 
padrões estabelecidos por um software para a utilização das suas funcionalidades por aplicativos que não 
pretendem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços. 
 O termo CLDC significa Connected Limited Device Configuration e refere-se ao conjunto de 
configurações que caracterizam dispositivos limitados em memória, conectividade, vídeo, interoperabilidade 
e poder de processamento. Como exemplos de dispositivos móveis que usam CLDC destacam-se o celular 
comum, pagers e PDAs. 
 O termo CDC significa Connected Device Configuration e refere-se ao conjunto de configurações que 
caracterizam dispositivos mais potentes em memória, poder de processamento, vídeo, interoperabilidade e 
conectividade de rede. Os dispositivos que se encaixam nessa configuração possuem o mesmo conjunto de 
recursos do Java Standard Edition. Como exemplos de dispositivos móveis que usam CDC destacam-se o 
celular smartphone, set-top boxes, dispositivos e servidores embarcados. 
 O termo MIDP significa Mobile Information Device Profile e define as APIs (Application Programming 
Interface) para a interface de usuário, entrada, componentes, manipulação de eventos, armazenamento 
persistente, rede e temporizadores, levando em consideração a tela, memória e limitações do dispositivo 
móvel, ou seja, refere-se ao perfil que complementa a configuração que caracteriza o dispositivo. 
 
Sobre a KVM 
12 
 
 
 
 
Como a KVM implementa parcialmente as especificações da JVM (Java Virtual Machine) os aplicativos 
gerados para uma plataforma podem não ser portáveis para outras. 
Para garantir a compatibilidade, como regra geral, certifique-se de que o outro dispositivo utilize 
versões de MIDP, CLDC ou CDC compatíveis com a plataforma atual antes de portar a aplicação para outra 
plataforma. Quando um dispositivo suporta Java, normalmente no manual técnico ou no site do fabricante 
constam as especificações e versões de MIDP, CLDC ou CDC do dispositivo. 
 
MIDLET 
Uma MIDlet é uma aplicação da plataforma Java Micro Edition que utiliza recursos do MIDP e do 
CLDC. 
 Para gerenciar e executar aplicações MIDlet, os dispositivos possuem um software denominado AMS 
que é responsável por controlar os aplicativos. Esse software gere a instalação, o armazenamento e o 
comportamento da MIDlet durante a execução. O AMS também é responsável por receber propriedades do 
arquivo descritor da aplicação e por notificar alterações no estado da MIDlet. 
 Podemos dizer que uma MIDlet possui um conjunto de classes projetadas para ser executada e 
controlada pelo AMS e que os métodos da MIDlet permitem ao AMS criar, iniciar, pausar e destruir uma 
MIDlet. Na prática da programação, trabalhamos normalmente com três estados da MIDlet geridos pelo AMS, 
que são: 
 
 
 
 
 
 
 
 
Empacotamento da aplicação 
Para facilitar a organização e a manipulação da aplicação, as MIDlets são colocadas (empacotadas) 
dentro de um arquivo de extensão JAR. Todo arquivo do tipo JAR possui a capacidade de ajuntar ou de 
compactar arquivos e pastas dentro dele, de forma similar como acontece com um arquivo gerado pelo 
compactador ZIP. O trabalho de empacotamento normalmente é realizado pela própria ferramenta utilizada 
para o desenvolvimento de softwaree, além das classes Java que compõe o programa, também dentro do 
arquivo JAR é incluído um arquivo de manifesto que indica a classe que utiliza determinada MIDlet. Na 
estrutura empacotada podem existir também recursos que vão além dos programas Java, como, por exemplo, 
arquivos de imagem e som. 
 Exemplo do conteúdo de um arquivo de manifesto para dispositivo móvel (MANIFEST.MF): 
 
Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.8.2 
Created-By: 1.7.0_02-b13 (Oracle Corporation) 
MIDlet-1: HelloMIDlet, /icones/app.png , hello.HelloMIDlet 
MIDlet-Vendor: Estacio 
Iniciado (started): Realiza a aquisição de recursos e inicialização da 
execução (startApp); 
Pausado (paused): Realiza a liberação parcial de recursos, modo de 
espera (pauseApp); 
Destruído (destroyed): Realiza a liberação completa de recursos, 
finalização (destroyApp). 
13 
 
MIDlet-Name: OlaMobileApplication 
MIDlet-Version: 1.0 
MicroEdition-Configuration: CLDC-1.1 
MicroEdition-Profile: MIDP-2.1 
 
Distribuição da aplicação 
Depois de empacotar, chega o momento de distribuir a aplicação para que ela possa ser instalada nos 
dispositivos. Para auxiliar com o processo, existe um arquivo de extensão JAD (Java Application Descriptor) 
que deve ser gerado após o empacotamento das MIDlets e esse arquivo deve conter um texto que descreva as 
MIDlets que são distribuídas como arquivos JAR. 
 
O tipo JAD comumente é utilizado para distribuir aplicações Java ou jogos para que possam ser 
baixados para dispositivos móveis, pois dentro deles existem referências de localização do JAR, a lista das 
MIDlets e outros atributos. A distribuição da aplicação pode ser realizada por rede ou localmente. 
 A distribuição local requer que os arquivos da MIDlet sejam transferidos para o dispositivo através de 
uma conexão, como cabo USB, Bluetooth ou IrDA (necessitando eventualmente de hardware e software 
específico para realizar a transferência). 
 A distribuição por rede acontece via protocolo HTTP (Hypertext Transfer Protocol) e os 
procedimentos a seguir acionam um tipo de instalação conhecida por OTA (over the air): 
 Enviar os arquivos do tipo JAR e JAD a um servidor Web que esteja acessível ao dispositivo móvel 
através via HTTP; O usuário entra em um software cliente HTTP, com o navegador do dispositivo, baixa o 
arquivo JAD e os MIDlets necessários são instalados. 
 
Exemplo do conteúdo de um arquivo do tipo JAD: 
 
MIDlet-1: HelloMIDlet, /icones/app.png , hello.HelloMIDlet 
MIDlet-Description: Programa de teste 
MIDlet-Jar-Size: 2217 
MIDlet-Jar-URL: http://www.estacio.br/OlaMobileApplication.jar 
MIDlet-Install-Notify: http://www.estacio.br/ota/install.jsp?k=123&u=abc 
MIDlet-Delete-Notify: http://www.estacio.br/ota/delete.jsp?k=123&u=abc 
MIDlet-Name: OlaMobileApplication 
MIDlet-Vendor: Estacio 
MIDlet-Version: 1.0 
MicroEdition-Configuration: CLDC-1.1 
MicroEdition-Profile: MIDP-2.1 
 
Segurança de MIDLET e verificação de bytecode 
Assim como acontece com uma aplicação Java na plataforma Standard Edition, antes de colocar uma 
aplicação na memória (ou instalá-la), o verificador de classes da VM precisa verificar o arquivo recebido para 
ter certeza que está correto, conferindo cada item em seu conteúdo interno. Todavia, devido às limitações 
de memória e de poder de processamento disponível em um dispositivo móvel, a verificação que o verificador 
de classes da VM realiza pode ser apenas superficial, pois por questões de limitações os verificadores de 
classes da VM normalmente possuem funcionalidades reduzidas, sendo capazes apenas de realizar 
verificações rápidas e incompletas. 
 Por esse motivo, o bytecode de cada classe da MIDlet deve ser pré-verificado usando um pré-
verificador, para que a VM execute a classe poupando parte do trabalho de realizar as verificações que foram 
realizadas previamente, tornando a execução rápida sem abrir mão da segurança. 
 
Interface gráfica 
 As classes gráficas (classes GUI) do Java Micro Edition são definidas pela JCP (Java Community 
Process) e estão inclusas no MIDP. Estudaremos algumas das classes gráficas da MIDP para a criação de telas. 
 
14 
 
 
 
Existem dois tipos de APIs para o desenvolvimento de interfaces gráficas: a High Level API e a Low 
Level API. A primeira consiste em classes, como Alert, List e Form, que são componentes que possuem 
funcionalidades pré-determinadas e que possibilitam a portabilidade das aplicações entre dispositivos 
diferentes, pois a implementação High Level API se encarrega de fazer as adaptações necessárias para o 
hardware e o estilo da interface de usuário nativa do dispositivo. A segunda classe é que capaz de desenhar e 
pintar objetos. 
 Utilizando a High Level API e a Low Level API é possível escrever aplicativos atraentes para diferentes 
dispositivos móveis, todavia a aperência e o comportamento são sempre um desafio. Devido a diferenças de 
implementação em fontes, layout, menus, dentre outras coisas, o mesmo aplicativo pode ter aparência e se 
comportar de forma muito diferente em diferentes dispositivos, além disso, grande parte da funcionalidade 
da interface do usuário avançada não é acessível via High Level API, obrigando o desenvolvedor a recorrer a 
Low Level API para alcançar o resultado desejado à custa de esforço adicional. 
 
Biblioteca gráfica 
O uso de bibliotecas pode simplificar o desenvolvimento de aplicações, facilitando o trabalho. Uma 
biblioteca notória é o LWUIT (Lightweight UI Toolkit), ela foi desenvolvida para simplificar a criação de 
aplicativos atraentes para diferentes dispositivos móveis, dispondo de recursos que simplificam a criação de 
interfaces de modo bem atraente. 
 A vantagem dessa biblioteca é que ela emprega um paradigma de programação semelhante ao da 
biblioteca Swing do Java SE e usa também uma avançada ferramenta de criação de telas e temas para que os 
elementos se comportem da mesma maneira em todos os dispositivos. Vale a pena dar uma conferida, você 
pode obter mais informações sobre essa biblioteca e a ferramenta no site Oracle. 
 Agora que temos a teoria e o conhecimento para fazer o básico, na próxima aula estudaremos um 
pouco mais da aplicação da linguagem Java na plataforma Java Micro Edition. 
 Pesquisar os dispositivos móveis do tipo smartphone que suportam Java ME nas especificações mais 
elevadas de MIDP e CLDC. Na pesquisa, será observado que existem muitos aparelhos disponíveis no mercado 
com especificação MIDP 2.1 e CLDC 1.1. 
 Abaixo seguem um exemplo com a solução da atividade proposta, baseada numa pesquisa realizada 
em 15/02/12: 
http://www.forum.nokia.com/devices/ 
Celulares smartphones da Nokia e especificações técnicas. 
Acesse: 
 Clique em Device Matrix; 
 Clique em Detailed info on Nokia devices; 
 Clique em Specifications; 
 Escolha o “Nokia 801T”; 
 Clique no menu API. 
 
Alguns sites recomendados seguem abaixo (inglês): 
 http://netbeans.org/kb/docs/javame/quickstart.html Java ME MIDP Development Quick Start Guide 
 http://netbeans.org/kb/docs/javame/cdc-quickstart.html Java ME CDC Development Quick Start Guide 
 http://netbeans.org/features/javame http://www.oracle.com/technetwork/java/javame/javamobile/dow
nload/overview/index.html 
15 
 
 Grande parte da documentação que envolve conhecimentos de programação normalmente está no 
idioma inglês. Se tiver dificuldades ou dúvidas com o idioma, procure utilizar tradutores. Alguns sites 
recomendados que fornecem gratuitamente recursos de tradução on-line: 
 http://translate.google.com.br 
 http://babelfish.yahoo.com 
 http://babelfish.yahoo.com 
 
 
AULA 04: CONTROLE DE FLUXO 
Iniciando o desenvolvimento 
Você deve abrir a aplicação desenvolvida na última aula, para isso, basta abrir a IDE NetBeans e abrir o 
projeto. Você pode pressionar o botão 
(Abrir Projeto) e selecionar a pasta onde salvou o projeto da aulapassada. Se você não possui o projeto da 
aula passada em seu computador, siga os procedimentos relacionados até o término desse tópico: 
 
Com o NetBeans aberto, siga as instruções que estão na imagem: 
 
 
 
Se o seu NetBeans até o momento não foi utilizado 
com Java ME, a tela seguinte aparecerá: 
 
 
 
 
 
 
 
 
 
 
Dê um nome ao projeto, mantenha as caixas de seleção marcadas e clique em próximo: 
16 
 
 
 
Não modifique nada, apenas selecione os valores e finalize. 
 
 
O fluxo é montado automaticamente. 
 
 
 
Execute o programa e veja a mensagem “Olá Olá mundo! (Hello Hello World!)”. 
 
 
 
Feche o emulador, selecione a área de tela através do botão “Tela” e altere os textos. No rótulo coloque 
“Olá” e no texto coloque “Sou + Estácio”, conforme as orientações da imagem: 
 
17 
 
 
 
Vá ao grupo “Itens” e inclua um “campo de texto” na tela (para fazer isso, é necessário clicar no botão 
“campo de texto” e arrastá-lo até a tela, logo abaixo do texto que alterou”). Altere o rótulo, coloque “Nome 
do Aluno”, conforme as orientações da imagem: 
 
 
 
Execute o programa e veja o resultado. 
 
 
 
Feche o emulador. 
 
Agora vamos modificar a aplicação, para isso leia o texto “Modificando a aplicação”. 
 
http://estacio.webaula.com.br/Cursos/gon283/docs/15PDM_aula04_doc01.pdf 
 
 
18 
 
Manuseando o emulador 
Se tiver dificuldades com o manuseio do emulador do celular, as instruções e ilustrações a seguir 
possuem algumas dicas de como você pode proceder: 
 
1 - Pressione o botão 
“Menu”; 
 
 
4 - Escolha o modo 
de digitação “Abc”; 
5 - Pressione o botão 
central de seleção; 
 
 
2 - Selecione o modo 
de teclado “Qwerty”; 
3 - Pressione o botão 
central de seleção; 
 
 
6 - Usando o teclado do celular, 
digite seu nome; 
7 - Pressione o botão “Menu”; 
 
 
8 - Escolha a opção “OK”; 
9 - Pressione o botão 
central de seleção; 
 
 
10 - Observe que o nome 
que você digitou 
apareceu acima. 
 
 
 
Entendendo a modificação 
 O funcionamento é relativamente simples e com alguma lógica poderemos entender. Primeiramente 
alteramos os nomes dos objetos a fim de utilizá-los mais tarde. 
 
 
 
Depois alteramos o fluxo da aplicação para incluir um novo menu, o menu “OK” (Comando OK). As alterações 
fazem com que o formulário da aplicação possua o menu “Sair” e o menu “OK”. 
19 
 
 
 
 
Na área de código-fonte a programação realiza o restante do processo, o objeto nomeStringItem 
define seu texto através do método setText quando recebe o texto do objeto nomeTextField através do 
método getString. Todo o processo é disparado pelo comando “OK”, que aciona a instrução 
nomeStringItem.setText(nomeTextField.getString()) que faz a coleta do nome digitado pelo usuário e o 
transfere para ser exibido em outro componente. 
 
 
Note que na programação estamos utilizando os nomes que demos para os objetos. Através deste exemplo, 
percebemos que é realmente muito simples colher os dados digitados pelo usuário. 
 
Fluxo de controle 
A linguagem de programação Java provê alguns meios para manipular fluxo e dados digitados pelo 
usuário. A partir de agora, vamos estudar o básico da manipulação de fluxo e de dados. 
O comando if, por exemplo, verifica se o dado atende uma determinada condição. Se analisarmos o código 
que foi gerado automaticamente pela IDE NetBeans, o trecho da linha 106 possui a instrução if (command == 
okCommand) que serve para verificar se o menu “OK” foi acionado. 
 Observando o código um pouco antes, também encontramos outra verificação na linha 102 que possui 
a instrução if (command == exitCommand)que serve para verificar se o menu “Sair” foi acionado. A instrução 
else separa as duas condições da instrução if, para garantir que apenas uma delas seja executada quando 
uma determinada condição for atendida. 
 Se continuarmos nossa observação do código e olharmos um pouco antes, notaremos que outra 
instrução if verifica se o nosso formulário está sendo visualizado pelo usuário na linha 101, ou seja, somente 
se o nosso formulário estiver sendo visualizado é que as outras instruções if serão executadas. 
 
Modificando o fluxo de controle 
Vamos fazer uma pequena alteração no fluxo de controle para informar o usuário da necessidade de 
digitação de texto. 
 
1.Com o projeto e a classe “HelloMIDlet” abertos, selecione o botão “Fluxo” (passo 1); 
2.Na paleta de componentes, visualize o grupo “Exibições” (passo 2); 
3.Arraste o componente “Alerta” para a área de desenho de fluxo (passo 3); 
4.Clique em “okCommand” do fluxo “form” e arraste-o para cima do fluxo “alert” (passo 4), 
automaticamente as setas do fluxo serão criadas, conforme a ilustração: 
 
20 
 
 
 
Observação: As setas do fluxo podem ter desenhos diferentes e a distribuição dos objetos podem ser 
diferentes, todavia o que importa realmente é a ligação entre os objetos. Observe que “okCommand” está 
ligado em “alert” (passo 4). 
 
 
 
Clique com o botão direito do mouse (botão auxiliar) sobre “okCommand” e selecione “Ir para o 
código-fonte”; 
 
Salve o projeto: 
 
7. Observe com atenção e altere o código-fonte para que ele seja semelhante à codificação a seguir. 
É importante lembrar que a linguagem de programação Java leva em conta maiúscula e minúscula, ou seja, 
você deve tomar muito cuidado com o texto que digita, observando maiúsculos e minúsculos com atenção. 
 
 
 
Outro ponto de atenção é que a IDE NetBeans permite que a digitação seja feita somente onde a 
linha não tem fundo cinza, portanto, escreva nas linhas que tem fundo branco e, sempre que precisar, 
apague os comentários. Se errar, pressione o botão (desfazer) ou CTRL + Z para desfazer a última ação. 
 
8.Salve e execute o projeto, não escreva nada e selecione a opção “OK”. Você verá a janela de 
alerta informando que é necessário digitar um texto; 
21 
 
 
9.Agora, escreva seu nome usando as teclas do celular e selecione a opção “OK”. Você verá que 
nenhuma janela de alerta apareceu e que seu texto foi transferido para outro controle; 
 
10. Quando acabar de testar, feche o emulador. 
 
 
 
Entendendo o fluxo de controle 
Vamos analisar o trecho modificado: 
 
 
 
A variável texto recebe do campo de texto o que foi digitado pelo usuário através do método 
getString do objeto nomeTextField. A instrução if verifica se esse texto digitado é nulo ou vazio e informa o 
usuário da necessidade de preencher o campo. 
Como pode ser observado, toda a verificação é realizada através da instrução if ((null == texto) || 
("".equals(texto.trim()))) que verifica se o texto é nulo ou se não há texto. Para verificar se não há texto, o 
método trim remove quaisquer espaços digitados antes e depois do texto que foi digitado e o método equals 
verifica se o texto digitado é igual a nenhum texto, ou seja, se é vazio. Se as condições de não haver texto 
forem verdadeiras, o método getAlert retorna o objeto que representa a janela de alerta e o método 
setString define o texto a ser exibido ao usuário por meio desta janela. 
O método switchDisplayable foi criado pela IDE NetBeans e serve trocar o que está sendo exibido na 
tela e para retornar a um ponto de exibição. Neste momento, não vamos analisar esse método, vamos apenas 
acreditar que serve para exibir a nossa janela de alerta. 
 Na próxima aula estudaremos um pouco mais sobre as técnicas básicas de programação para 
dispositivos móveis. 
 
22 
 
 
 
Empregando a linguagem Java, fazer as seguintes pesquisas: 
1. Pesquisar como converter texto para inteiro e vice-versa; 
 
2. Pesquisar como construir um método capaz de ordenar números em ordem crescente. 
 
1. Como converter: 
 A. Texto para inteiro: 
 String texto = "8"; 
 int numero = 0;try { 
 int numero = Integer.parseInt(texto, 10); 
 } catch (NumberFormatException nfex) { 
 // Erro ao converter 
 } 
 B. Inteiro para texto: 
 int numero = 10; 
 String texto = Integer.toString(numero); 
 // ou String texto = "" + numero; 
 
2. Como ordenar números em ordem crescente: 
 int[] valores = new int[]{3, 4, 7, 5, 2, 6}; 
 for (int j = 0; j < (valores.length - 1); j++) { 
 int menor = valores[j]; 
 for (int i = (j + 1); i < valores.length; i++) { 
 if (valores[i] < menor) { 
 menor = valores[i]; 
 int troca = valores[j]; 
 valores[j] = menor; 
 valores[i] = troca; 
 } 
 } 
 } 
 
Aula 05: Técnica 
Técnicas 
Existem muitas boas práticas e técnicas de programação que contribuem para o bom desenvolvimento 
de uma aplicação. Primeiramente, entenderemos como são classificados os erros de programação e como 
podemos aplicar boas práticas e técnicas de programação a fim de evitá-los. 
 
Categorias de Erro de Programação 
Neste tópico, você aprenderá sobre os diferentes tipos de erros que podem ocorrer ao escrever um 
programa. 
Mesmo os programadores mais experientes cometem erros, e saber como depurar um aplicativo e encontrar 
esses erros é uma parte importante da programação. Antes de saber sobre o processo de depuração, no 
entanto, é preciso saber os tipos de erros que você precisará localizar e corrigir. Os erros de programação se 
encaixam em três categorias: 
 
Erros de Compilação 
Erros de compilação, também conhecidos como erros de compilador, são erros que ocorrem antes de 
seu programa executar. Quando você tenta executar um programa, o código necessita ser traduzido 
(compilado) para um idioma que possa ser compreendido e executado pelo dispositivo. Se o compilador 
encontrar algo que não possa traduzir, haverá um erro de compilação, um aviso será emitido ao programador 
e o processo possivelmente não irá adiante. 
A maioria dos erros de compilação ocorre por erros de digitação de código-fonte. Por exemplo, você 
pode errar uma palavra, não observar maiúsculas e minúsculas, deixar o código-fonte sem algumas 
pontuações necessárias ou errar no aninhamento de chaves dentre outras coisas. 
A maioria das ferramentas de desenvolvimento ajudam a evitar este tipo de erro e, felizmente, a IDE 
NetBeans também, pois foi projetada para identificar essa categoria de erro, exibindo um ou mais erros, 
inclusive, antes da compilação efetiva do programa. 
23 
 
 
Erros de Tempo de Execução 
Erros em tempo de execução são erros que ocorrem enquanto o programa é executado. Eles 
normalmente ocorrem quando o programa tenta uma operação que é impossível executar. 
Temos como exemplos clássicos a divisão por zero, a utilização de objetos que são nulos e, ainda, a 
conversão de objetos para tipos incompatíveis, todavia o exemplo mais simples de elucidar é o da divisão por 
zero. Suponha que você tenha a seguinte instrução em seu código-fonte: 
 
int velocidade = km / hora; 
 
Se a variável “hora” receber um valor 0 (zero) durante a execução de seu programa, a operação de 
divisão falhará e fará com que ocorra um erro em tempo de execução. Dependendo da plataforma, erros em 
tempo de execução podem causar a interrupção do programa. 
Quando ocorrer um erro de tempo de execução, você pode usar as ferramentas de depuração para 
determinar a causa. 
 
Erros de Lógica 
Erros lógicos são erros que impedem seu programa de fazer de maneira adequada o que deveria ser feito - 
existem muitas problemáticas causadas por erros lógicos. Nessa categoria de erro seu código-fonte pode ser 
compilado e executado aparentemente sem erros, todavia quando a lógica é processada, o erro ocorre e o 
resultado é de algum modo deficitário. 
 
Por exemplo, você pode ter uma variável chamada “nome” e outra chamada “sobrenome”. Imagine que o 
usuário digita seu nome e sobrenome em campos de preenchimento separados. Agora imagine que você 
decidiu ajuntar (concatenar) as duas variáveis para exibir o nome completo desse usuário. Esquecer-se de dar 
um espaço em branco entre as duas variáveis antes de exibir o nome completo, o resultado não será o 
desejado - você está diante de um simples erro de lógica. 
 
Boas Práticas 
Embora a IDE NetBeans possua fantásticos recursos capazes de apontar erros de forma antecipada a 
execução, é importante ressaltar a importância de se conhecer e aplicar técnicas e boas práticas de 
programação para facilitar nosso trabalho, pois alguns erros escapam. 
 
Documentação e comentários: 
 Para reduzir o tempo de manutenção e de desenvolvimento de novas funcionalidades em uma 
aplicação é recomendável sempre documentar o código-fonte, o fluxo do processo e a forma como os dados 
são armazenados e processados. Adicionalmente, tudo o que fez e faz parte do projeto deve ser 
documentado. 
 
Troca da posição de variáveis e constantes na comparação: 
Para evitar erros em tempo de execução, em comparações, é aconselhável que a constante esteja à 
esquerda: 
 
if (3 == n) { … } 
while (true == b) { … } 
 
Vamos nos atentar a dois pontos importantes da linguagem de programação Java: 
 
Para comparar valores primitivos utilizam-se dois sinais de igual (==); 
Para atribuir um valor a uma variável utiliza-se um único sinal de igual (=). 
 
Com base nesses pontos, se o programador esquecer-se de um sinal de igual em uma instrução de 
comparação, ao invés de apenas comparar, estará também atribuindo. Veja o exemplo: 
 
if (b = true) { … } 
 
Neste exemplo, falta um sinal de igual e a variável “b” recebe um valor “true” (verdadeiro), pois o sinal de 
igual atribui o valor “true” a variável “b”. Como consequência, a instrução “if” entende que “b“ é “true” 
processando o que estiver dentro da instrução “if”. 
 
Se a posição da constante for invertida o erro não acontece mais na lógica de programação. Veja o exemplo: 
 
24 
 
if (true = b) { … } 
 
Neste exemplo, o programa não compilará e não irá adiante, pois não se pode atribuir um valor a uma 
constante (pois ela é imutável), portanto, se o programador esquecer-se de um sinal de igual em uma 
instrução de comparação ocorrerá um erro de compilação. Erros de compilação são mais fáceis de localizar 
quando comparados a erros lógicos. 
 
Uso de “curto-circuito” na comparação: 
A fim de aumentar o desempenho da aplicação, nas comparações, sempre coloque do lado esquerdo o 
que possuir maior probabilidade de mudança ou o que for mais importante. Veja o exemplo: 
private void teste(int y) { 
for (int x = 0; 10 > x; x++) { 
if ((6 < x) && (9 == y)) { 
break; 
} 
} 
} 
Neste teste, a contagem de “x” poderá ser interrompida a partir do número 7 (sete) - se ambas as 
comparações forem verdadeiras. Observe que a variável “y” foi colocada à direita, pois seu valor não muda 
durante a contagem. A verificação da condição acontece da esquerda para a direita e, neste caso, se a 
primeira verificação retornar “false” a verificação da segunda não acontece e algum tempo de análise será 
poupado. A este encurtamento de análise dá-se o nome de “curto-circuito”. 
 
Limitação de novos objetos: 
Em dispositivos móveis com pouco poder de processamento e recursos de memória deve-se evitar 
criar novos objetos sem uma real necessidade, pois novos objetos tendem a consumir mais processamento e 
memória RAM do dispositivo. 
 
Variáveis de objetos nulas: 
Nas instruções de comparação, verifique sempre qualquer objeto que tenha a possibilidade de não 
ter sido instanciado, pois um erro em tempo de execução ocorrerá se um atributo ou um método de uma 
variável de objeto nula (“null”) for invocado. 
 
Exemplo 1: 
 
if (nome.equals("")) { … } 
 
Neste exemplo, um eventual erro em tempo de execução ocorrerá se a variável “nome” fornula (“null”), 
pois não se pode chamar qualquer atributo ou método de uma variável de objeto nula (“null”). Para resolver 
essa questão, podemos realizar uma verificação adicional, conforme explana o próximo exemplo. 
Exemplo 2: 
 
if ((null != nome) && (nome.equals(""))) { … } 
 
Neste exemplo, para evitar um eventual erro em tempo de execução, foi verificado se a variável “nome” foi 
instanciada antes de chamar seu método “equals”. A primeira parte do “if” verifica se há ou não uma 
instância de objeto na variável “nome” e a segunda parte do “if” descobre se a variável “nome” está vazia 
(sem qualquer texto dentro dela) ou não. Se a variável “nome” for nula (“null”), a segunda parte do “if” não 
é processada e algum tempo de análise será poupado (“curto circuito”), do contrário, as duas partes do “if” 
são processadas normalmente. 
Exemplo 3: 
 
if ("".equals(nome)) { … } 
 
Neste exemplo, temos o mesmo efeito do exemplo anterior com uma codificação relativamente menor e mais 
rápida, pois existe a comparação de um conteúdo vazio (sem texto) com a variável “nome”. Esse conteúdo 
vazio na verdade é um objeto instanciado do tipo String que atua como uma constante e que realiza a 
verificação de equidade através do método “equals” com a variável “nome”. Como "" é uma constante, 
podemos chamar a partir dela o método “equals”, que é capaz de fazer comparações sem gerar erros, pois 
ele trata internamente o valor nulo (“null”) que foi passado por parâmetro, portanto, neste caso, nenhum 
erro ocorrerá mesmo se a variável “nome” estiver nula (“null”). 
 
25 
 
Nomes apropriados: 
 
Para facilitar a compreensão do código e facilitar futuras manutenções, além dos comentários e das 
documentações é recomendável que você também utilize nomes apropriados para tudo o que codificar, 
inclusive em variáveis, métodos, classes, enumeradores e interfaces. 
Além dos nomes apropriados, você também pode fazer uso de uma notação chamada CamelCase para 
facilitar a compreensão da codificação, pois através dela, mesmo sem entender do contexto, dá para ter uma 
ideia do que provavelmente está sendo realizado. Veja alguns exemplos de fragmentos de código-fonte: 
 
for (int reduzValor = 10; 0 <= reduzValor; reduzValor--) { … } 
if (nomeDoProfissional.equals(nomeDaPessoa)) { … } 
while (0 < numeroDeRegistros) { … } 
 
Depuração 
 
 
Atividade 
Empregando a linguagem Java, fazer a seguinte atividade: 
Construir uma calculadora para as operações de adição, subtração e multiplicação usando CLDC 1.1 e MIDP 
2.1; 
Pesquisar como trabalhar com números de ponto flutuante em Java Micro Edition. 
 
 Solução 
* Usar os conversores abaixo para realizar os cálculos: 
1.Texto para inteiro: 
String texto = "8"; 
int numero = 0; 
try { 
int numero = Integer.parseInt(texto, 10); 
} catch (NumberFormatException nfex) { 
// Erro ao converter 
} 
1.Inteiro para texto: 
int numero = 10; 
String texto = Integer.toString(numero); 
// ou String texto = "" + numero; 
Para pontos flutuantes, considerar o uso das classes Float e Double e dos tipos primitivos float e Double.

Outros materiais