apostila complementar java móvel
TRANSCRIPT
Java Móvel
Marcelo Quinta Ins3tuto de Informá3ca -‐ UFG
Introdução ao Java ME e WTK 3.0
GOJAVA
• Graduado em Ciência da Computação – UFG;
• GUJ leader GoJava; • Monitor da Especialização de “Desenvolvimento Web para Interfaces Ricas” – INF/UFG;
• Mestrando na área de Engenharia de SoPware – Orientado pelo professor Fábio Nogueira; – Arquitetura e construção de aplicação para visualização de objetos de aprendizagem customizados em múl3plos disposi3vos.
• O que estudo e trabalho:
Apresentação
2 JavaME JavaFX JavaEE Teste de So@ware Usabilidade
Criando aplicações para celulares u3lizando Java ME
Agenda
3
• Diferenças entre as plataformas Java; • Apresentação de aplicações Java ME; • Desafios para programação para disposi3vos móveis; • Arquitetura do Java ME; • WTK 3.0 no NetBeans; • Definição dos MIDlets; • Ciclo de vida dos MIDlets; • Hello World; • Instalação de aplicações no celular;
Criando aplicações para celulares u3lizando Java ME
Agenda
4
• Introdução à API MIDP 2.0; • Noções de interface gráfica; • Tratamento de eventos; • Persistência; • Comunicação Web;
• LWUIT.
Criando aplicações para celulares u3lizando Java ME
5
Plataformas Java
Java SE JDK 6
Java EE SDK 5
Java ME CLDC 1.1 CDC 1.1
Criando aplicações para celulares u3lizando Java ME
Foco do Java ME
6
Criando aplicações para celulares u3lizando Java ME
O que se pode fazer com Java ME
7
Criando aplicações para celulares u3lizando Java ME
O que pode-‐se fazer sabendo Java ME
8
Programar para TV Digital
Criando aplicações para celulares u3lizando Java ME
Desafios da programação para disposiPvos móveis
• Memória para gravação pequena; – “Meu celular não tem memória pra guardar esse arquivo.”;
• Tamanho do Display pequeno; – “Não dá pra ver a foto direito nessa tela.”;
• Velocidade de Processamento baixa; – “Meu celular é uma carroça.”;
• Uso grande de bateria; – “Minha bateria não dura nada.”
• Dificuldades com comunicação externa. – “Nunca usei a internet do meu telefone.”;
9
Criando aplicações para celulares u3lizando Java ME
Arquitetura do Java ME
10
Criando aplicações para celulares u3lizando Java ME
Arquitetura do Java ME
11
Criando aplicações para celulares u3lizando Java ME
Máquina Virtuais
• CVM (C Virtual Machine) • Projetada para disposi3vos móveis mais poderosos;
• KVM (K Virtual Machine) / HotSpot CLDC • Projetada para disposi3vos móveis mais simples; • Bibliotecas de classe com código objeto de tamanho reduzido em 50-‐80 Kb;
• Pequena u3lização de memória; • Performance efe3va em processadores de 16-‐32 bits; • Mul3threading e coleta de lixo independentes do sistema;
12
Criando aplicações para celulares u3lizando Java ME
Arquitetura do Java ME
13
Criando aplicações para celulares u3lizando Java ME
Configurações
• Conjunto de funcionalidades para que as aplicações Java ME possam “se comunicar com a JVM”;
• É específica para certa gama de aparelhos;
• Menos visível aos usuários, mas é muito importante para implementadores de perfis (profiles);
• Duas configurações básicas: CDC e CLDC.
14
Criando aplicações para celulares u3lizando Java ME
CDC – Connected Device ConfiguraPon
• Supõe disposi3vos com mais capacidade, tais como seuop boxes digitais, screen-‐phones, Nokia Communicator e alguns PDAs mais poderosos;
• Recursos mais avançados mais complexos, incluindo suporte ao Oracle;
• Atualmente na versão CDC 1.1.2 (JSR 218).
15
Criando aplicações para celulares u3lizando Java ME
CLDC – Connected Limited Device ConfiguraPon
• Supõe disposi3vos mais simples, com mais limitações, como telefones celulares e pagers;
• É a configuração mais usada para programação Java ME;
• Atualmente na versão 1.1. (JSR 139);
16
Criando aplicações para celulares u3lizando Java ME
Pensando em funcionalidades
17
Criando aplicações para celulares u3lizando Java ME
Arquitetura do Java ME
18
Criando aplicações para celulares u3lizando Java ME
Perfis
• Definem uma API disponível para um conjunto específico de aparelhos;
• Cada um é implementado sobre uma configuração par3cular;
• Os mais conhecidos são Personal, Founda3on e Basis (CDC) e MIDP (CLDC).
19
Criando aplicações para celulares u3lizando Java ME
Configuração X Perfil
• Configuração • Descreve de forma geral uma família de disposi3vos;
• Perfil • Fica mais específico a um 3po de aparelho.
20
Criando aplicações para celulares u3lizando Java ME
Personal, Basis and FoundaPon
• Baseados na CDC; • Suporte a JDBC e RMI; • Founda3on (Biblioteca de classes simples e sem interface gráfica);
• Basis (Biblioteca de classes e interface gráfica simples);
• Personal (Biblioteca de classes complexa, inclusive com suporte a applets e interface AWT).
21
Criando aplicações para celulares u3lizando Java ME
MIDP
• Mobile Informa3on Device Profile, baseado na CLDC;
• Atualmente na versão 2.1;
• É o mais popular;
• Garbage collector “o3mizado”;
• API bastante parecida com Java 6, possuindo interface gráfica, persistência e acesso a web.
22
Criando aplicações para celulares u3lizando Java ME
MIDP 2.0
23
Criando aplicações para celulares u3lizando Java ME
Arquitetura do Java ME
24
Bibliotecas
• Definições específicas de APIs que realizam trabalhos pontuais; – JSR 179: Loca3on API for Java METM; – JSR 172: Java METM Web Services Specifica3on; – JSR 75 : PDA Op3onal Packages for the Java METM Plaworm;
– JSR 82: JavaTM APIs for Bluetooth;
hZp://jcp.org/en/jsr/pla^orm?listBy=1&listByType=pla^orm
25
Criando aplicações para celulares u3lizando Java ME
Arquitetura do Java ME
26
Criando aplicações para celulares u3lizando Java ME
O que vamos aprender?
• CLDC 1.0/CLDC 1.1 + MIDP 2.0 – Suportado na maior parte dos celulares modernos;
– Maior facilidade de depuração;
– Mais limitações para codificação.
27
Criando aplicações para celulares u3lizando Java ME
PráPca
28
Criando aplicações para celulares u3lizando Java ME
Wireless Toolkit 3.0 • Ferramenta para facilitar a construção de aplicações J2ME;
– Integração com emuladores de terceiros, bem como, de disposi3vos com Windows Mobile;
– Simplificação no processo de deploy em disposi3vos reais; – Integração do CDLC/MIDP, CDC/FP/PBP/AGUI e BD-‐J em um único SDK,
não sendo mais necessário o download e instalação de pacotes separados;
– Uma nova máquina virtual HotSpot CLDC, em subs3tuição à an3ga KVM;
– Suporte a profiling; – Suporte a BD-‐J; – Novo ambiente de desenvolvimento baseado na plataforma Netbeans; – Integração com Lightweight UI Toolkit (LWUIT);Pesquisa por
especificações técnicas de disposi3vos integrado no SDK.
29
GRATUITO
Criando aplicações para celulares u3lizando Java ME
NetBeans 6.9
• A versão Java e completa vem com Mobility Pack: – WTK 3.0; – Adicionais para depuração / produ3vidade;
30
GRATUITO
Criando aplicações para celulares u3lizando Java ME
31 Auto-‐Complete Paleta
Design Visual Configurações
Fluxo de Aplicação
Criando aplicações para celulares u3lizando Java ME
Como funciona uma aplicação Java ME?
32
• MIDlet – Semelhante a um applet, mas nãe é controlado por uma função main(String args[]);
– Gerencia qual tela mostrar, qual função chamar, como comunicar com o AMS (Applica?on Management SoAware) do disposi3vo;
– Define as transições possíveis de uma aplicação MIDP: Pausado, A?vo ou Destruído.
Criando aplicações para celulares u3lizando Java ME
MIDlet
33
• int checkPermission(String permission); • String getAppProperty(String key); • boolean plawormRequest(String URL);
• void destroyApp(boolean uncondiPonal); • void no3fyDestroyed() ; • void no3fyPaused() ; • void pauseApp() ; • void resumeRequest(); • void startApp();
Criando aplicações para celulares u3lizando Java ME
Como funciona uma aplicação Java ME?
34
APLICACAO.JAR
Tela Atual Entrada de comandos Iniciar Pausar Terminar
Criando aplicações para celulares u3lizando Java ME
Hello World Java ME import javax.microedi3on.lcdui.*;
import javax.microedi3on.midlet.*;
public class PrimeiroMidlet extends MIDlet implements CommandListener { Display display; Form formulario; Command comandoSaida; public void startApp() {
display = Display.getDisplay(this); formulario = new Form(“WTC 2010"); formulario.append("Olá J2ME!!!"); comandoSaida = new Command("Exit", Command.EXIT, 2); formulario.addCommand(comandoSaida); formulario.setCommandListener(this); display.setCurrent(formulario);
} public void pauseApp() { } public void destroyApp(boolean uncondi3onal) { } public void commandAc3on(Command arg0, Displayable arg1) { if (arg0 == comandoSaida) { destroyApp(true); this.no3fyDestroyed();
} } }
35
Criando aplicações para celulares u3lizando Java ME
Executando a aplicação
• Pode-‐se usar o WTK 3.0; • Outros emuladores – Nokia – Motorola; – ...;
36
Criando aplicações para celulares u3lizando Java ME
Instalando a Aplicação...
• Arquivo “.jar” da aplicação – Classes; – Recursos; – Manifest; – Bibliotecas adicionais
• Arquivo “.jad” descritor da aplicação;
37
SEMINFO 2009 – INTRODUÇÃO AO J2ME E WTK 3.0
Instalando a aplicação • Exemplo de .jad:
MIDlet-1: HelloMidlet, , hello.HelloMidlet
MIDlet-Jar-Size: 1481 MIDlet-Jar-URL: HelloWorld.jar MIDlet-Name: HelloWorld MIDlet-Vendor: Vendor MIDlet-Version: 1.0 MicroEdition-Configuration: CLDC-1.1 MicroEdition-Profile: MIDP-2.0
38
Criando aplicações para celulares u3lizando Java ME
FIM DA PRIMEIRA PARTE
• O que já sabemos: – Diferença de Java ME para Java SE E Java EE;
– O que podemos fazer; – Problemas que enfrentaremos na programação; – Como é a arquitetura Java ME;
– Como se configura um programa Java ME; – Como executar; – Como instalar.
39
Criando aplicações para celulares u3lizando Java ME
API MIDP 2.0
• Sintaxe é extremamente parecida com Java SE e tem API com configuração muito parecida;
40
Interface gráfica
Persistência
Ciclo de vida
Conexão Web
Mídia Segurança
Fluxo de dados
Core
UPlidades
Criando aplicações para celulares u3lizando Java ME
Mas antes de programar... • Lembre-‐se: que Java ME tem a mesmo 3po de sintaxe de JAVA SE e Java EE!!!; – O que muda é a API e o propósito da aplicação;
– Dica para seu trabalho com programação Java ser respeitado:
APLIQUE AS CONVENÇÕES DE CÓDIGO JAVA (Java Code ConvenPons)
Não é frescura, é a norma!!!
Criando aplicações para celulares u3lizando Java ME
Voltando ao MIDlet...
42
• int checkPermission(String permission); • String getAppProperty(String key); • boolean pla^ormRequest(String URL);
• void destroyApp(boolean uncondi3onal); • void no3fyDestroyed() ; • void no3fyPaused() ; • void pauseApp() ; • void resumeRequest(); • void startApp();
Criando aplicações para celulares u3lizando Java ME
Mãos à obra
hup://exemplos.googlecode.com
Referência hup://java.sun.com/javame/reference/apis/jsr118/
43
Criando aplicações para celulares u3lizando Java ME
Métodos do MIDlet
• String getAppProperty(String key) – Retorna o valor da propriedade do MIDlet
– Propriedades podem ser customizaveis;
• String System.getProperty(String property) – hup://developers.sun.com/mobility/midp/ques3ons/proper3es/index.html;
• String checkPermission (String permission) – Checa se uma operação é permi3da;
44
Criando aplicações para celulares u3lizando Java ME
Interface Gráfica
45
Screen Canvas
Criando aplicações para celulares u3lizando Java ME
Record Management System
46 j2mesalsa.com
Criando aplicações para celulares u3lizando Java ME
Conexão
47
Criando aplicações para celulares u3lizando Java ME
LWUIT
48
hups://lwuit.dev.java.net/
Criando aplicações para celulares u3lizando Java ME
JavaFx
49
hup://www.javafx.com/pt-‐br/
Criando aplicações para celulares u3lizando Java ME
Comunidades
50
www.gojava.org
Criando aplicações para celulares u3lizando Java ME
Comunidades
51
Criando aplicações para celulares u3lizando Java ME
Se não gostou do J2ME...
Programar para Windows Mobile é uma alterna3va. O Visual Studio ajuda bastante.
Acesse www.devgoias.net
52
Criando aplicações para celulares u3lizando Java ME
Se você não gosta do Bill Gates...
... e gosta do Google. 53
Criando aplicações para celulares u3lizando Java ME
Mas se você gosta do Steve Jobs
iPhone!! 54
Criando aplicações para celulares u3lizando Java ME