O documento discute o desenvolvimento de aplicações móveis com Java 2 Micro Edition (J2ME), abordando tópicos como a popularização de dispositivos microprocessados, o interesse no mercado de aplicativos móveis, as vantagens da plataforma Java para pequenos dispositivos, a arquitetura J2ME, as configurações e perfis CLDC e MIDP, ferramentas de desenvolvimento, etapas de criação de um aplicativo MIDP e exemplos de código.
4. Porque tanto interesse em
Aplicações Móveis?
- Mercado de US$ 6.0 bilhões em
'mobile games' em 2004.
fonte: Gartner Group
- Mercado de US$12,9 bilhões em
aplicações 'mobile office' em 2005.
fonte: Yankee
5. Porque Java para
pequenos dispositivos?
- Independência de Plataforma
- Orientação a Objetos
- Networking
- Segurança
- Tratamento de Exceções
- Multithreads
- ...
- ... e o mais importante, PADRONIZAÇÃO
6. Porque Java para
pequenos dispositivos?
Padronização:
- A tecnologia Java está em 100 % das
listas de padrões da empresas
'Fortune 500'.
fonte: IBM
Plataforma:
- 78 % dos executivos vêem a tecnologia
Java como a melhor plataforma para
Web Services.
fonte: Giga, Computerworld
7. Dispositivos 'Java Enabled'
- Java é a plataforma líder em aplicações
móveis, 53 operadoras de telefonia
celular no mundo já fazem 'deploy' de
aplicações J2ME. Mais 11 estão em testes.
- Já existem mais de 150 dispositivos 'Java
Enabled' de 22 fabricantes.
- Serão 841 milhões de celulares Java
em 2004 e 1.1 bilhão em 2006.
fonte: ARC Group
12. Como colocar Java em
pequenos dispositivos?
Subset da API
do J2SE
+
API Complementar
+
JVM Adequada
Resposta:
Criando-se um
JRE apropriado
para as capacidades
do dispositivo.
13. www.jcp.org
- Organização aberta de abrangência mundial,
focada na padronização da plataforma Java.
- Mais de 660 empresas e participantes
individuais.
JCP é maneira através da qual
a plataforma Java evolui.
14. A Plataforma J2ME
Java 2 Micro Edition
J2ME define um padrão para colocar
Java dentro de dispositivos que não
possuem o poder de processamento
de ambientes J2SE completos.
Dispositivos como PDAs, celulares,
TVs, eletrodomésticos,
computadores de bordo e muitos
outros.
15. J2ME
- Com J2ME é possível construir ambientes
de execução Java (runtime environments)
muito pequenos, menores que 200 Kbytes.
- Possui arquitetura bastante modularizada.
16. Atualmente existem 52 JSRs
(Java Specification Request)
relacionadas com J2ME
Algumas delas:
JSR 66 – RMI Optional Package
JSR 120 – Wireless Messaging API
JSR 134 – Java Game Profile
JSR 135 – Mobile Media API
JSR 82 – Java APIs for Bluetooth
JSR 184 – Mobile 3D Graphics API
19. Configurations
- Define a mínima plataforma Java para um
conjunto de dispositivos comuns.
- Suporta um ou mais 'profile'
- Definido através do Java Comunity
Process(JCP)
22. Profiles
- Complementam a Configuração para
prover capacidades para uma família
específica de dispositivos ou segmento
da indústria.
- Provê flexibilidade e optimiza portabilidade.
- Frequentemente provê UI, tratamento de
evento e mecanismos de persistência.
55. IDEs para o Desenvolvimento de
Aplicações J2ME/MIDP
- WebSphere Studio Device Developer
- Sun ONE Studio, Mobile Edition
- JBuilder MobileSet
- Simplicity for Java
- JDeveloper J2ME Extension
56. Etapas no Desenvolvimento de
uma Aplicação MIDP
Código Fonte
(arquivos .java)
javac
Binários
(arquivos .class)
preverify
Binários Pré-
verificados
(arquivos .class)
jar
Arquivo .jar Arquivo .jad
(.class + .png)
57. Exemplo de Código
package exemplo;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class Contador extends MIDlet implements CommandListener {
private Command cmdAdd;
private Command cmdReset;
private Command cmdExit;
private Form frm;
private StringItem strTotal;
private int counter;
public Contador() {
// Cria e inicializa a tela principal
frm = new Form(quot;Contadorquot;);
strTotal = new StringItem(quot;Total: quot;, quot;0quot;);
frm.append(strTotal);
// Cria e adiciona os Commands(botoes)
cmdAdd = new Command(quot;+quot;, Command.SCREEN, 0);
cmdReset = new Command(quot;Resetquot;, Command.SCREEN, 1);
cmdExit = new Command(quot;Sairquot;, Command.SCREEN, 0);
frm.addCommand(cmdAdd);
frm.addCommand(cmdReset);
frm.addCommand(cmdExit);
frm.setCommandListener(this);
}
58. Exemplo de Código (cont.)
public void startApp() {
Display.getDisplay(this).setCurrent(frm);
}
public void pauseApp() {
}
public void destroyApp(boolean b) {
}
public void commandAction(Command cmd, Displayable disp) {
// Incrementa o contador
if (cmd == cmdAdd) {
strTotal.setText(String.valueOf(++counter));
// Reseta o contador
} else if (cmd == cmdReset) {
counter = 0;
strTotal.setText(quot;0quot;);
// Sai da aplicacao
} else {
destroyApp(false);
notifyDestroyed();
}
}
}
59. Exemplo de Arquivo JAD
MIDlet-Name: Contador
MIDlet-Jar-URL: contador.jar
MIDlet-Jar-Size: 2509
MIDlet-Version: 1.0
MIDlet-1: Contador, /images/logo.png , exemplo.Contador
MIDlet-Description: Exemplo de MIDlet
MIDlet-Vendor: My Company
MIDlet-Info-URL: http://www.mycompany.com
60. MIDlets em Palm OS
MIDP for PalmOS
http://java.sun.com/products/midp4palm/
Palm OS > 3.5
WebSphere Micro Environment
Parceria Palm e IBM
http://pluggedin.palm.com
Palm Tungsten
Virá de Fábrica
61. Exemplo de Celular como Ferramenta de
Controle Remoto
Internet
App Server
Servlet
x,y x,y
HTTP HTTP