1. Agenda
Parte 2
• Introdução a tecnologia Java
• Plataformas Java
• Ambiente de execução Java
• Plataforma JavaME
• Arquitetura
• Configurações e perfis
2. Introdução a Tecnologia Java
Histórico do Java
• A tecnologia Java iniciou em dispositivos embarcados (*7 (Star
Seven))
• A partir de 1997 9 iniciou s um trabalho para definir uma nova
-8 -e
plataforma Java para dispositivos móveis
• EmbeddedJava: primeira especificação envolvendo dispositivos
embarcados
• PersonalJava: 89/99, pai do JavaME
• Plataforma JavaME lançada em
99/2000
6. Plataforma JavaME
Definição
• Criada pela Sun Microsystems na forma de especificação em
2000
• Coleção de APIs para o desenvolvimento de aplicações para
dispositivos móveis na linguagem Java
– Baseado no Java Runtime Environment 1.3
• Organizado em subconjuntos de configurações e perfis de
APIs
– Configurações: classes (recursos básicos)
– Perfis: subclasses de configurações (recursos médios e altos)
• Apoiado pela maioria dos fabricantes
– Nokia, Sony-Ericsson, Motorola, Samsung, LG, . . .
• O número de dispositivos (celulares) com a tecnologia é
imenso
– + 2 bilhões de aparelhos celulares
10. Configurações
Configuration Limited Device Profile - CLDC 1.1
• Herança de J2SE
– java.lang, java.io e java.util
• Novidades: javax.microedition
• Diferenças: Modelo mais simplificado
• Requisitos
• Novas APIs
– Rede, segurança, persistência, etc.
• Requisitos
– 128 kb de memória não volátil
– 32 kb de memória volátil
– Acesso ao sistema operacional
11. Perfis
Modelos de Aplicação
• Computador: Application – Stand-alone
– Sobre um PC
• Web: Applet
– Sobre um navegador Web
• Servidor: Servlet
– Sobre um servidor remoto
• Set-top Box: Xlet
– Sobre um setop box
• Celular: MIDlet
– Sobre um dispositivo móvel
12. Perfis
Mobile Information Device Profile - MIDP 2.1
• Modelo de Aplicação – MIDlet Suite
• Ciclo de vida do MIDlet
• User interface API (LCDUI)
• Armazenamento de registros - RMS API
• Protocolos e funcionalidades avançadas de
rede, incluindo conexões seguras
• API de jogos e mídia
• Política de segurança e assinatura de código
• Empacotamento de aplicativos e
provisionamento sobre o ar (OTA)
13. Ambiente de Desenvolvimento
Ferramentas
• Mínimo
– JDK (Java Development Kit)
– SDKs (Wireless Toolkit, SDKs de
fabricantes)
• Recomendado
– JDK + SDK
– IDEs (Eclipse + EclipseME
plugin, Netbeans + Mobility
Pack)
– Dispositivo real
• Dispositivo real
– Telefones celulares, PDAs,
Smartphones, etc.
15. Ambientes de Desenvolvimento
Sun Wireless Toolkit 2.5/3.0
• Kit de ferramentas para a criação de aplicativos
MIDP criado pela Sun
• Três componentes principais
– KToolbar: automação de tarefas envolvidas na criação
de aplicativos MIDP
– Emulator: simulador de um celular
– Conjunto de utilitários: console, utilitários de
criptografia, assinatura, etc.
• Funcionalidades
– Build e empacotamento de classes: Compilação, pré-
verificação, empacotamento
– Execução e monitoramento: execução, instalação,
monitor de memória, profiler de rede
– Assinatura de Suite de MIDlets
• Assinatura criptográfica para testes em domínios de
proteção diferentes
16. Processo de Desenvolvimento
Codificação
• Composto de etapas a
Desenho
serem executadas sobre
uma aplicação sendo
Codificação
desenvolvida
Compilação • Pode ser gerenciado por
uma ferramenta de
desenvolvimento integrado
Pré-verificação
– Ex: Eclipse, Netbeans, WTK,
dentre outras.
Empacotamento
Testes
Instalação
17. Processo de Desenvolvimento
Desenho
• Definição da arquitetura e
Desenho
desenho das interfaces de
usuário (GUIs)
Codificação
• Opções de arquitetura
Compilação – Cliente/Servidor, P2P,
Standalone
Pré-verificação • Telas de navegação da
aplicação
Empacotamento • APIs a serem usadas pela
aplicação
Testes – compatibilidade com o
dispositivo
Instalação
18. Processo de Desenvolvimento
Codificação
• Criação da classe que
Desenho
extende de MIDlet
Codificação – Acesso ao display
• Uso das APIs de acesso a
Compilação recursos do dispositivo
• HelloWorld.java
Pré-verificação
• Uso de IDEs na codificação
– Ex: Eclipse, Netbeans
Empacotamento
Testes
Instalação
19. Processo de Desenvolvimento
Compilação
• Criação do bytecode
Desenho
representando a classe
Java
Codificação
• HelloWorld.class
Compilação • Ferramenta javac do SDK
Pré-verificação
Empacotamento
Testes
Instalação
20. Processo de Desenvolvimento
Pré-verificação
• A pré v
- erificação de código
Desenho
no JavaSE é feita na
própria JVM
Codificação
– Tarefa imprópria para
dispositivos móveis
Compilação
• JavaME: Dividida em duas
fases:
Pré-verificação
– Durante a compilação
– Durante a execução no
Empacotamento
dispositivo
• Ferramenta preverify do
Testes
WTK
Instalação
21. Processo de Desenvolvimento
Empacotamento
• Empacotamento da
Desenho
aplicação em dois arquivos
Codificação – JAR: Java Archive
– JAD: Java Application
Compilação Description
• Ferramenta JAR no SDK
Pré-verificação
Empacotamento
MIDlet-Name: Hello World
Testes MIDlet-Version: 1.0
MIDlet-Vendor: Jim
MIDlet-Description: My First MIDlet suite
MIDlet-1: HelloWorld, null, greeting.HelloWorld
Instalação
MIDlet-Jar-URL: HelloWorld.jar
MIDlet-Jar-Size: 1428
22. Processo de Desenvolvimento
Testes
• Execução de testes
Desenho
automatizados ou
interativos sobre a
Codificação
aplicação
– J2MEUnit
Compilação
• Normalmente feitos sobre
Pré-verificação um emulador
Empacotamento
Testes
Instalação
23. Processo de Desenvolvimento
Instalação
• Instalação da aplicação
Desenho
empacotada no
emulador/dispositivo
Codificação
– Arquivos JAR e JAD
Compilação • Métodos de instalação
– Cópia de arquivos JAR e JAD
Pré-verificação via USB ou BT/IrDA
– Pela Internet via OTA
Empacotamento
Testes
Instalação
24. MIDP 2.1
Ciclo de Vida
• Métodos do ciclo
– startApp(): Inicialização de recursos
– pauseApp(): Chamado quando algum evento do dispositivo ocorre (ex:
ligação telefônica)
• Persistência, parada de processamento
– destroyApp(boolean): Encerramento do aplicativo
• Métodos da aplicação
– exitMidlet()
new HelloMIDlet()
pauseApp
Paused Active
startApp
public void exitMIDlet()
{
destroyApp(true); destroyApp
notifyDestroyed();
} Destroyed
25. Aplicação em JavaME
Hello World
import javax.microedition.lcdui.*;
public class MeuPrimeiroMIDlet extends MIDlet {
public MeuPrimeiroMIDlet() {
super();
Display.getDisplay(this).setCurrent(
new Alert(quot;Titulo Telaquot;, quot;Hello Worldquot;,
null, AlertType.INFO));
}
protected void startApp() throws MIDletStateChangeException {
System.out.println(quot;startAppquot;);
}
protected void pauseApp() {
System.out.println(quot;pauseAppquot;);
}
protected void destroyApp(boolean arg0) throws
MIDletStateChangeException {
System.out.println(quot;destroyAppquot;);
}
}
26. Aplicação em JavaME
Atividade Prática new HelloMidlet()
pauseApp
• Exercício 1: Criar um
Paused Active
projeto JavaME no Eclipse startApp
e codificar o Hello World
• Exercício 2: Rastrear o ciclo
destroyApp
de vida de um MIDlet
Destroyed
28. JavaME
Padronização
• Objetivos
– Minimizar fragmentação de plataforma, implementação e dispositivo
• Esforços
– Java Technology for the Wireless Industry (JTWI) – JSR 185
– Mobile Services Architecture (MSA) – JSR 248
• Java Community Process (JCP)
• Java Specification Request (JSR)
29. JavaME
Padronização
------
------
JCP ---
----
Grupos Membros Artefatos Participação
PMO Spec Lead Spec Indivíduo
Maintenance
EC RI Empresa
Lead
EG Especialista TCK Entidade
30. JavaME
Padronização
-----
TCK
-----
-----
RI
----
First Public Final Final
Initiation Maintenance
Draft Draft Draft Release
Writing the EG Formation Review and Preparing for Final Submitting the Review and
proposal Updates in the PD Draft of Spec Final Release of updates in
Preparing the FD
Spec, RI and TCK Maintenance
Submitting the Approval of PD by Delivery of TCK
Review and Versions
proposal EC and RI
Updates in the FD
Input of
Review and Submitting Final
TCK and RI functionalities for
acceptance by EC Draft to EC
Planning new Spec Proposal
Approval by EC
Participants:
Public Expert Group Spec/Maintenance Leader JCP Members Executive Comittee
31. JavaME
Padronização de APIs
• JTWI: Java Technology for the Wireless Industry
• MSA: Mobile Service Architecture
JTWI MSA Novas JSRs
JSR 30: CLDC 1.0 JSR 75: PIM/FC JSR 253: MTA API
JSR 37: MIDP 1.0 JSR 82: BTAPI JSR 256: Sensor API
JSR 139: CLDC 1.1 JSR 184: 3D Graphics JSR 266: UMBA API
JSR 118: MIDP 2.0 JSR 205: WMA 2.0 JSR 271: MIDP 3.0
JSR 120: WMA 1.0 JSR 226: SVG JSR 272: MBS API
JSR 135: MMAPI JSR 172: WS API JSR 281: IMS API
JSR 177: SATSA JSR 293: Location API 2.0
JSR 179: Location API JSR 297: 3D 2.0
JSR 180: SIP API JSR 304: MTA 2.0
JSR 211: CHAPI
JSR 229: PAPI
JSR 234: AMS
JSR 238: i18n
32. JavaME
Principais APIs
• MIDP LCDUI: Alto e baixo níveis
• API UI para jogos
• RMS: Persistência de dados
• GCF: framework genérico para conexões
– HTTP, IRda, BT, FC,
• MMAPI e AMS: Multimídia
• WMA: SMS e MMS
• WSA: Web Services, SOAP, XML
• I18n: Internacionalização
• LAPI: Localização
• M3DG: Gráficos 3D
35. JavaME
Game API
• Utiliza a API de baixo nível (GameCanvas) para a criação de
cenários de jogos em JavaME
• Classes especializadas para o gerenciamento de camadas e
atores
– LayoutManager (gerenciador de cadamas), Layer (camada) e Sprite
(personagem)
Sprite
Layer
38. Evolução JavaME
Plataforma JavaFX
• Plataforma de software para o desenvolvimento de
aplicações ricas sobre a internet (RIA) sobre uma grande
variedade de dispositivos
– Suporte a desktop, navegador Web e celulares
– Suporte planejado a set-top box de TVs, consoles de jogos, tocadores Blu-
ray, dentre outras
• Versão atual: 1.1.1 (Março de 2009)
• Integrado ao ambiente de execução Java
– JRE e ao JavaME (dispositivos móveis)
• Linguagem declarativa JavaFX Script
• Concorrentes diretos
– Adobe Flash Player, Adobe Integrated Runtime, OpenLaslo, MS Silverlight
42. JavaME
Tendências
• Curto e médio prazo
– Crescimento das plataformas de smartphones
• Dot NET Compact Framework, IPhone, Android, Symbian
– Novas tecnologias JavaME
• MSA incorporado nos dispositivos (SE Z750)
• JavaFX Mobile, Mobile Ajax
– Evolução: aplicações móveis serem executadas sobre a Web
• Novas JSRs (IMS API, MIDP 3.0, etc.)
• Longo prazo
– Convergência de configurações
• CLDC + CDC -> JavaSE
– Aumento da capacidade de processamento dos dispositivos
• Fim do JavaME?
• Ainda existem muitos dispositivos com JavaME
43. Links Interessantes
• Mobile and Embedded Community
– http://community.java.net/mobileandembedded/
• PhoneME
– https://phoneme.dev.java.net/
• Java Community Process
– http://www.jcp.org/en/home/index
• ME Application Developers
– https://meapplicationdevelopers.dev.java.net
• Site Oficial do JavaME – Sun
– http://java.sun.com/javame/index.jsp
• Lista de discursão JavaME
– j2me-list@soujava.dev.java.net