Robison Cris Brito Java ME na Prática Fundamentos da plataforma passo a passo Java ME na Prática – Fundamentos da plataforma passo a passo Copyright¤ Editora Ciência Moderna Ltda., 2014 Todos os direitos para a língua portuguesa reservados pela EDITORA CIÊNCIA MODERNA LTDA. De acordo com a Lei 9.610, de 19/2/1998, nenhuma parte deste livro poderá ser reproduzida, transmitida e gravada, por qualquer meio eletrônico, mecânico, por fotocópia e outros, sem a prévia autorização, por escrito, da Editora. Editor: Paulo André P. Marques Produção Editorial: Aline Vieira Marques Assistente Editorial: Dilene Sandes Pessanha Capa: Carlos Arthur Candal Diagramação: Carlos Arthur Candal Várias Marcas Registradas aparecem no decorrer deste livro. Mais do que simplesmente listar esses nomes e informar quem possui seus direitos de exploração, ou ainda imprimir os logotipos das mesmas, o editor declara estar utilizando tais nomes apenas para fins editoriais, em benefício exclusivo do dono da Marca Registrada, sem intenção de infringir as regras de sua utilização. Qualquer semelhança em nomes próprios e acontecimentos será mera coincidência. FICHA CATALOGRÀFICA BRITO, Robison Cris. Java ME na Prática – Fundamentos da plataforma passo a passo Rio de Janeiro: Editora Ciência Moderna Ltda., 2014. 1. Linguagem de Programação – 2. Informática I — Título ISBN: 978-85-399-0547-8 Editora Ciência Moderna Ltda. R. Alice Figueiredo, 46 – Riachuelo Rio de Janeiro, RJ – Brasil CEP: 20.950-150 Tel: (21) 2201-6662/ Fax: (21) 2201-6896 E-MAIL: [email protected] WWW.LCM.COM.BR CDD 005.133 004 05/14 Dedicatória Dedico este livro à minha família, que sempre esteve ao meu lado. Aos meus pais, que não mediram esforços para investir na minha educação, mesmo nos momentos mais difíceis. À minha irmã, que sempre me apoiou. Aos amigos de trabalho, professores e técnicos administrativos da Universidade Tecnológica Federal do Paraná, que me incentivaram a estudar novas tecnologias. Aos meus queridos e estimados alunos, sem eles, meu trabalho não faz sentido. Em especial, dedico este livro à minha querida e amada esposa Jaqueliny, horas de trabalho, viagens, palestras, estudos. Espero um dia retribuir tudo que ela fez por mim. Amor, te amo. E claro, dedico este livro à minha pequena papai te ama. Agradecimentos Quero agradecer a um conjunto de pessoas que me apoiou e incentivou, fazendo com que este livro virasse realidade. !"#$ fessor e mestre, que me ensinou os primeiros códigos na plataforma Java, assim com o primeiro HelloWorld na linguagem Java ME. Um “muito obrigado” ao meu amigo Ricardo Ogliari, com o qual escrevo artigos sobre dispositivos móveis para a revista Mobile Magazine, do grupo Devmedia, grupo este que sempre me incentivou a escrever novos artigos e publicar videoaulas. Em especial, muito obrigado à Universidade Tecnológica Federal do Paraná Campus Pato Branco, onde leciono e tenho o prazer de conviver com pessoas maravilhosas, que me inspiraram a ser cada vez melhor. Muito obrigado, professores e professoras. Sobre o autor %&#'( ))' trial pela Universidade Tecnológica Federal do Paraná, onde ministra aulas sobre tecnologia Java e Computação Móvel nos cursos de tecnologia em Análise e Desenvolvimento de Sistemas e Engenharia da Computação. Escreve artigos para as revistas Java Magazine e Mobile Magazine, para as quais elabora videoaulas sobre programação para dispositivos . Foi palestrante de *+(/00$123(43536 JustJava. Evangelista da tecnologia, procura apresenta palestras e minicursos em universidades e eventos. Prefácio O desenvolvimento de aplicativos para dispositivos móveis, além de fascinante, é uma excelente oportunidade de negócio. Hoje, muitas empresas de desenvolvimento de software possuem setores especializados nessa platafor 789 :; <5 valores e facilitando o compartilhamento de informações. Ao longo de vários anos, Java ME foi e continua sendo sinônimo de desenvolvimento para dispositivos móveis, tais como aparelhos celulares, set-top box de tv digital, plataformas de sistemas embarcados, presentes inclusive em alguns “brinquedos” hi-tech. No desenvolvimento para aparelhos celulares, fornece inúmeros recursos, permitindo que tirássemos “leite de pedra” ao trabalhar com uma grande quantidade de recursos em aparelhos tão limitados. Hoje existem várias ferramentas para o desenvolvimento de aplicativos em *() 0)= qual possui um ambiente robusto e integrado para o desenvolvimento de apli78 ;77>0)" % (6?50) Netbeans , que permite o desenvolvimento de aplicativos para celular através ' @; telas, wizards para comunicação e desenvolvimento de jogos, entre muitos outros recursos, que torna rápido e prazeroso o desenvolvimento de programas para celulares. Neste contexto, o presente livro apresenta os conceitos básicos da programação para celular usando a já consolidada plataforma Java ME, apresentan7 0)= utilização de componentes visuais da plataforma, os modelos para tratamento de eventos, utilização das principais classes do Java ME, a persistência de dados e algumas das principais técnicas de conectividade. Todos os conceitos são apresentados e aplicados a estudos de casos práticos. Na sequência, após a apresentação dos fundamentos da plataforma Java ()'; (6?5 de software para celular muito mais simples e inteligente, desde o desenvol ' 7 a conectividade. X — Java ME na Prática - Fundamentos da plataforma passo a passo Este livro é uma ferramenta útil aos desenvolvedores, acadêmicos, professores, a comunidade tecnológica em geral, a quem deseja explorar novos 5<" Uma boa leitura a todos. Sumário Capítulo 1 - Iniciando o desenvolvimento de aplicativos para a plataforma Java ME ...........................................................................1 Sobre a Tecnologia Java .................................................................... 2 Capítulo 2 - Características Importantes da Plataforma Java ME 5 7&78? ........................................................ 6 $&78K&RQ¿JXUDWLRQ.................................................... 6 &0& ......................................................................................... 6 CDC ............................................................................................ 7 ?K3UR¿OH) .................................................................................... 7 (0? .......................................................................................... 8 KVM........................................................................................... 8 ?+K2SWLRQDO3DFNDJHV) ........................................... 9 Concluindo... .......................................................................................... 10 Capítulo 3 - Preparando um ambiente de desenvolvimento Java ME multiplataforma ......................................................................... 11 )0) .................................................................................... 14 *() ....... 14 +' (0 ................................................................................ 21 &` (0............................................................ 21 (02................................................................................... 22 Concluindo... ................... ...................................................................... 23 Capítulo 4 - Componentes Visuais da Plataforma Java ME .........25 TextBox.................................................................................................. 27 ......................................................................................................... 29 Alert ....................................................................................................... 34 Form....................................................................................................... 38 ........................................................................................................ 41 2 ........................................................................................ 41 Classe TextField .............................................................................. 43 DateField ......................................................................................... 47 ........................................................................................ 50 ChoiceGroup.................................................................................... 54 }~*()?1 — Java ME na Prática - Fundamentos da plataforma passo a passo Gauge ............................................................................................... 57 $' .......................................... 59 45 ..................................................................................................... 65 Command............................................................................................... 68 Concluindo... .......................................................................................... 73 Capítulo 5 - Trabalhando com Eventos na Plataforma Java ME.75 Recuperando Eventos Gerados por Commands .................................... 76 %) .............................................. 81 4)? &4 4 45 ................. 85 Classe Timer .................................................................................... 85 &4 45............................................................................. 86 Utilizando Agendamento com Repetição .............................................. 87 Utilizando Agendamento sem Repetição ............................................... 91 Concluindo… ......................................................................................... 96 Capítulo 6 - Alternando entre diferentes telas e um aplicativo Java ME ..97 Alternando entre telas com uma única Classe ....................................... 98 Alternando entre Telas com Várias Classes ......................................... 103 Concluindo... .........................................................................................111 Java ME ........................................................................................... 113 Documentação do Java ME ................................................................. 113 java.util.Date.................................................................................. 114 java.util.Calendar ........................................................................... 115 java.util.Random............................................................................ 119 java.util.Vector ............................................................................... 121 Java.lang.Math ............................................................................... 124 java.lang.String .............................................................................. 126 java.lang.StringBuffer ................................................................... 129 Concluindo… ....................................................................................... 132 Capítulo 8 - Aumentando a produtividade no desenvolvimento Java ME com Mobility Pack do Netbeans .............................................133 & (0` ....................................................... 134 Trabalhando com um projeto Java ME visual no Netbeans ................ 136 Modo de visualização de Fluxo ..................................................... 137 Modo de visualização de Tela........................................................ 138 2 ~} Modo de visualização - Códigos Fontes ........................................ 139 Modo de visualização - Analyzer .................................................. 141 Desenvolvendo um primeiro aplicativo de forma visual ............ 141 Concluindo... ........................................................................................ 152 Capítulo 9 - Componentes Visuais e Técnicas de Depuração no Mobility Pack ..................................................................................153 Paleta de componentes visuais do Netbeans ........................................ 154 Categoria Displayable ................................................................... 155 Categoria Commands .................................................................... 157 & .............................................................................. 158 Categoria Elements ........................................................................ 159 Categoria Flow .............................................................................. 160 Categoria Resource ........................................................................ 162 Categoria DataBinding .................................................................. 163 Categoria SVG Components ......................................................... 163 Mudando as propriedades de um componente Visual ............ 164 Depurando um aplicativo ..................................................................... 166 #5? ........................................................................ 167 ` .............................................................................. 169 Watches .......................................................................................... 170 (9: .......................................... 171 Concluindo... ........................................................................................ 173 Capítulo 10 - Persistência de dados em aplicações Java ME ......175 Criando um RecordStore ..................................................................... 177 Manipulando registros em um RecordStore ........................................ 179 % ........................................................................ 179 Alterando Registros ....................................................................... 181 Excluindo Registros....................................................................... 183 Recuperando Registros .................................................................. 184 Percorrendo todos os registros de um RecordStore ....................... 186 Enumeração de Registros .............................................................. 188 @; ; registros .................................................................................. 191 ); `%2 .. 195 Filtrando Registros ........................................................................ 208 Ordenando Registros ..................................................................... 212 }`~*()?1 — Java ME na Prática - Fundamentos da plataforma passo a passo Capítulo 11 - Conectividade em aplicações Java ME ..................219 Panorama das conexões em Java ME .................................................. 220 Arquitetura de uma aplicação com conectividade ............................... 221 Utilizando o protocolo HTTP .............................................................. 222 Utilizando o protocolo HTTPS ............................................................ 225 Utilizando datagramas no celular ........................................................ 226 5 ................................................................ 229 25 ....................................... 230 5 ......................................................... 231 Enviando mensagens SMS ........................................................... 232 Enviando mensagens MMS .......................................................... 235 Comparando as tecnologias de comunicação ...................................... 236 Concluindo... ........................................................................................ 238 Capítulo 12 - Utilizando recursos de conectividade do Netbeans......239 Utilizando a comunicação HTTP – Desenvolvimento de um servlet .. 241 Utilizando a comunicação HTTP – Desenvolvimento do aplicativo Java ME ....................................................................................................... 247 Conectividade utilizando WebService ................................................. 255 Concluindo........................................................................................... 264 Capítulo 13 - Recursos de Proxy no Acesso ao WebService utilizando Mobility Pack do Netbeans ............................................................265 Conectividade utilizando WebService ................................................. 267 Desenvolvendo um aplicativo Java ME para acesso ao WebService .. 269 Conectando o aplicativo JavaME ao WebService GlobalWeather 271 @; 78.............. 276 Utilizando proxys para comunicação com WebService....................... 278 Desenvolvendo o servidor de proxy .................................................... 280 Desenvolvendo um aplicativo Java ME para acessar o Proxy ...... 281 Concluindo........................................................................................... 287 Capítulo 1 Iniciando o desenvolvimento de aplicativos para a plataforma Java ME Veja as principais características da programação para dispositivos móveis e conheça um pouco mais sobre a tecnologia Java A busca pela comunicação ágil e rápida sempre existiu em todas as sociedades. Os romanos construíram uma rede de mais de 80.000 quilômetros para manter da maneira mais ágil possível as comunicações dentro do império. Na ' ; /5 ' ; chegar a Roma. Mas, desde que Marconi enviou a primeira mensagem de rádio, isto em 1895, nunca mais a comunicação precisou de um meio físico e de um mensageiro para transportá-la. A comunicação pelo rádio revolucionou a sociedade, pois podemos agora enviar mensagens sem sair do lugar. E, com o advento da > 7"0 Martin Cooper, inventor do celular, o número de transmissões de dados ou voz que conseguimos enviar pelo ar, em todo o mundo, dobra a cada 30 meses. A telefonia móvel tornou-se popular com a introdução dos telefones celulares. Essa invenção despertou muito interesse e viu-se em poucos anos uma verdadeira explosão mundial no seu uso, transformando a sociedade e causando o grande momento da telefonia celular. O nome celular é decorrente do fato da rede de comunicações ser composta de uma rede de células, com transceptores de rádio, chamados de estação-base, no centro de cada célula. A célula é a área de cobertura de uma única 2 — Java ME na Prática - Fundamentos da plataforma passo a passo estação-base. Conforme um telefone móvel se desloca em uma rede, ele tem acesso aos serviços por intermédio da estação-base da célula em que se encontra naquele momento. A célula pode ter diversas formas, de acordo com a "= mais adotada é a hexagonal. ' plo. O comércio eletrônico tradicional já sinaliza claramente que a vantagem da conveniência é bem-aceita. Pode-se fazer compras pela Web sem precisar enfrentar trânsito ou perder tempo em deslocamentos. Se essa conveniência puder ser disponibilizada sem a necessidade de nos dirigirmos a um ponto ; : equipamento móvel como um celular, com certeza teremos um maior conforto no uso dos serviços. Outra vantagem no desenvolvimento de soluções utilizando dispositivos móveis está na sua disseminação. Hoje há mais usuários de celulares e equipamentos móveis do que usuários de PCs. A disseminação de celulares tende ser muito maior devido à real necessidade que as pessoas têm de poder ser contatadas em qualquer lugar. Aliado a essa demanda, vê-se a evolução tecnológica dos aparelhos. As tecnologias de comunicação estão cada vez mais potentes em termos de capacidade de transmissão, permitindo tráfego de imagens e vídeos de alta re7"% ?278`+? de voz estão se tornando onipresentes nos aparelhos celulares. Tem-se ainda tecnologias de desenvolvimento de aplicativos, como a tecnologia Java, que permite fazer uso de vários recursos existentes no aparelhos celulares, além de permitir a comunicação do aparelho com outros computadores ou disposi 31 e Bluetooth. Sobre a Tecnologia Java Segundo a Sun Microsystem, empresa que desenvolveu a linguagem Java, essa é uma linguagem de programação independente de plataforma. Original ' década de 90, possibilitando a interatividade em páginas web que até então "$ * uma grande revolução, que foi a possibilidade do desenvolvimento de aplicativos pessoais para dispositivos móveis. &97~/ Com isso, Java tornou-se uma excelente plataforma para o desenvolvimento de aplicativos para celulares. Dentre as vantagens, destaca-se a segurança, já que o código Java executa sempre dentro dos limites da Máquina Virtual Java existentes no dispositivo, o que torna o ambiente seguro para executar programas de origem desconhecida. Outras vantagens são os tratamentos de exceções e o garbage collector, que facilitam a programação no que se refere ao aplicativo se recuperar automaticamente de erros e a exclusão de objetos que não são mais referenciados na memória. A portabilidade é outra vantagem. Um programa desenvolvido sem utilizar 9 9 ; aparelhos que possuam uma Máquina Virtual Java. Para garantir a portabilidade, a plataforma Java é dividida em 3 grandes grupos, conforme Figura 1. Figura 1. Grupos da plataforma Java. + Java Micro Edition: Versão do Java destinada a pequenos dispositivos ou dispositivos limitados, como telefones celulares, smartphones, TV Digital, entre outros. Java Stardard Edition: Esta versão do Java se destina ao desenvol 5" Java Enterprise Edition: Versão destinada ao desenvolvimento de softwares para grandes servidores, como, por exemplo, aplicações web e webservices. 4 — Java ME na Prática - Fundamentos da plataforma passo a passo Este livro apresentará com detalhes a programação Java para dispositivos móveis, mostrando recursos básicos como a preparação do ambiente de desenvolvimento, o desenvolvimento de um primeiro aplicativo, componentes visuais, modos de interação, ferramentas para produtividade, persistência de dados, conectividade usando a rede da operadora e Bluetooth, utilização ?2 7 9 34 desenvolvimento visual, desenvolvimento de jogos, pagamento utilizando celular, desenvolvimento colaborativo para aplicativos móveis, utilização de código de barras e desenvolvimento de aplicativos Java ME para a plataforma #5#6' ") sários para um programador leigo se tornar um expert na programação Java ME.