Arquitetura Java ME (J2ME) & Tecnologias Java Embarcadas Relacionadas INF-455/655 Computação Móvel Universidade Federal de Viçosa Departamento de Informática Conteúdo 3 sabores para as plataformas Java Arquitetura Java ME Configurações CDC CLDC Perfis Foundation MIDP Tecnologias Relacionadas Java card, Java TV 1
Plataformas Java Por que Java? Outras Alternativas Embedded C++ (Visual Studio) Visual Studio.NET, C#, ASP.NET Delphi Flash Lite Python... Plataformas Java Plataformas Java 1. JVM 2. Languagem de prog. Java 3. Core & pacotes opcionais Java Standard Edition (Java SE) Java Enterprise Edition (Java EE) Java Micro Edition (Java ME) Aplicações desktop & workstation Sistemas corporativos pesados Dispositivos pequenos e de recursos restritos 2
Java SE Feature complete Java foundation Desenvolvimento corporativo do lado do Cliente: aplicações stand alone & web applets 2 binários necessários: JDK: Desenvolvimento das aplicações JRE: Ambiente Runtime Exemplo: desktop ou workstation Java EE Aplicações distribuídas Desenvolvimento corporativo do lado do servidor Modelo multi-tier Middle-tier contém regras de negócios e serviços do sistema Escalabilidade, gerenciabilidade, acessibilidade Exemplos: JDBC, Componentes, CGI etc. 3
Java ME: Modelo multi-tier First tier Cliente Business logic EIS tier Servidor dados First tier Cliente Middle tier Business logic EIS tier Servidor Serviços dados Java ME Dispositivos Móveis p/ Consumo 4
Java ME Sistemas embarcados Java ME 5
Java ME Principais limitações: Atualmente restrito aos recursos do JRE 1.3 Ausência de matemática de ponto flutuante p/ CLDC 1.0 (incluído na versão 1.1) Ausência de finalize() Conjunto limitado de exceções e tratamento de erros Não suporta JNI (Java Native Interface), Reflection, Object Serialization, RMI (Remote Method Invocation) Java ME: Dispositivos Characterísticas Memória limitada: 128K a 2M p/ embarcados Poder de processamento limitado Dispositivos móveis ou plug-in Mobile baterias Necessidades Consistência entre produtos Poder de uma LPOO Portabilidade Segurança em rede Escalabilidade vertical (para EE & SE) 6
Java ME: Building Blocks Configuração Plataforma mínima necessária para um grupo de dispositivos Perfil Endereça necessidades específicas para uma determinada família de dispositivos Java ME Profile Java ME Libraries Java Language Java Virtual Machine Host Operating System Configurações Java ME J2ME Profile1 J2ME Profile2 J2ME Profile3 J2ME Profile4 J2ME Profile5 J2ME Profile6 Bibliotecas CLDC Linguagem Java Máquina Virtual K Bibliotecas CDC Linguagem Java Máquina Virtual Compacta Memória: 128512 kb Processador: 1632 bits Memória: Até 2 MB Processador: 32 bits 7
Servers Optional Packages Java Enterprise Edition (Java EE) Desktop machines Optional Packages Java Standard Edition (Java SE) Java Platform High-end consumer devices Personal Profile Foundation Profile CDC Low-end consumer devices MIDP CLDC Smartcards Java Card APIs Java Virtual Machine KVM CardVM Java Micro Edition (Java ME) CLDC x CDC CLDC Connected, limited device configuration 160 Kbytes a 512 Kbytes de memória total disponível. Processador de 16 ou 32 bits. Baixo consumo de energia, operação com baterias. Conectividade limitada. Smartphones CDC Connected device configuration 2Mbytes ou mais de memória para a plataforma Java. 32 bits. Largura de banda maior, geralmente usando TCP/IP 8
CLDC x CDC CLDC Profiles: MIDP Mobile Information Device Profile Bibliotecas adicionais para comunicação em duas vias (two-way) Estende APIs CLDC Application model (MIDlets) User interface APIs (LCDUI) Persistent storage (RMS) Networking (HTTP) Timers JSR 271 MIDP 3.0 9
Estrutura de um MIDlet Exemplo: HelloMIDlet import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import java.util.*; public class HelloWorld extends MIDlet implements CommandListener { private Command exitcommand; private TextBox tb; public HelloWorld() { exitcommand = new Command("exit", Command.EXIT, 1); tb = new TextBox("HelloWorld", "Hello world!", 15, 0); tb.addcommand(exitcommand); tb.setcommandlistener(this); } protected void startapp() {Display.getDisplay(this).setCurrent(tb);} public void commandaction(command c, Displayable d) { if (c== exitcommand) { destroyapp(false); notifydestroyed();} } protected void destroyapp(boolean u) {} protected void pauseapp() {} } 10
Interface de Baixo Nível CLDC Profiles: IMP Information Module Profile Adequado para sistemas embarcados: settop boxes, máquinas de serviços etc. Subconjunto do MIDP 1.0 Não possui interface c/ usuário (javax.microedition.lcdui) JSR-228 IMP-NG, baseado em MIDP 2.0 APIs p/ segurança e networking 11
Java ME Disponibilidade Nokia S40, Symbian OS Windows CE, Windows Mobile Bada, Maemo, MeeGo Android e ios através do Oracle ADF Mobile http://www.oracle.com/technetwork/developertools/adf/overview/adf-mobile-096323.html MicroEmulator implementação de Java ME em Java SE - http://www.microemu.org/ Java Card Smart Cards Class file(s) Tipic. de 1 a 50K de memória Três componentes: JCVM, JCRE, JC API Versão 3.0 (04/2008) Standard Edition, baseada na v2.2.2 Connected Edition suporte a rede e web applications Converter CAP files Off-card installation program CAD PC ou workstation Runtime environment On-card installer Interpreter Smart card 12
Java Card Smart Cards Smart Cards Contact (gold pads) - 8 pinos Contactless - NFC, RFID Memory Cards / Processor Cards 8 kb RAM, 346 kb ROM, 256 kb PROM, microprocessador de 8, 16 ou 32 bits (tipicamente 3 a 10 MHz) Mais info: http://www.smartcardalliance.org/ http://developers.sun.com/mobility/javacard/articles/javacard2/ http://developers.sun.com/mobility/javacard/articles/javacard3/ 13
JavaTV Baseado em Java SE VM no receptor de TV & executa byte code Aplicações sobdemanda Applications & Applets Java TV API Java Platform Real Time OS Device Drivers Application layer Java technology layer RTOS layer Digital TV Receiver Hardware layer Embedded Server Aplicações em rede orientados a serviço Serviço sobdemanda Serviços através da rede 500K de memória Services http log admin billing other Service Space Java Virtual Machine Operating System Java Embedded Server Hardware 14
Outros Personal Java Versão antiga de embedded java Usa JDK Perfil pessoal para CDC Wireless Toolkit CLDC/MIDP development toolkit BREW Game Design 15
BREW Binary Runtime Environment for Wireless Desenvolvido pela QUALCOMM Internet Services Amarrado ao CDMA (na prática, não na teoria) Assim como Java, roda em uma máquina virtual (em hardware) Aplicações escritas em C, C++ ou Java Jogos de alta performance p/ aparelhos not Symbian OS BREW x CLDC/MIDP Pouca diferença em termos de capacidade técnica Decisão mais baseada em política da empresa Acredita-se que o J2ME tenha um parque maior de aplicações instalado 16
Por que desenvolver jogos usando J2ME/BREW? Maior controle sobre a IHM Acesso direto ao hardware Número de usuários desse tipo de dispositivo crescendo rapidamente Área de grande interesse para as operadoras Limitações Técnicas Sem teclas simultâneas Sem transparências em imagens Não é possível assumir suporte a áudio Sem matemática de ponto flutuante Sem JNI (Java Native Interface) ou AWT (Abstract Windowing Toolkit) Requer certificação da Qualcomm (custo proibitivo p/ hobbyists) 17
Recursos Disponíveis Recursos de IU de alto nível: PNGs & bitmaps Entrada de Texto Radio buttons, check boxes Gráficos de Barras Suport para teclas padrão de celulares (0-9, *, #, setas) Controles de jogos abstraídos Recursos de IU de baixo nível: Canvas Gráficos HTTP IDE Gluon C.E.S.A.R - Centro de Estudos e Sistemas Avançados do Recife baseado em Eclipse / plugin CDT http://gluon.cesar.org.br/ US$ 18,75 p/ instalador binário, 0800 p/ código fonte (http://opensource.cesar.org.br/project s/gluon/) 18
IDE Gluon IDE Gluon 19
Jamdat Bowling Diamond Mine www.jamdatgames.com Micro Nitro Froggy www.morpheme.co.uk www.perimind.com 20
URLs Java ME Wireless Toolkit: http://java.sun.com/products/sjwtoolkit/index.html Java Card http://developers.sun.com/mobility/javacard/articles/javacard2/ Artigos Úteis: http://wireless.java.sun.com/midp/articles/ www.gamasutra.com/resource_guide/20010917/fox_01.htm http://www.devx.com/wireless/article/27871 BREW SDK e informações: https://brewx.qualcomm.com/brew/sdk/download.jsp www.codeproject.com/useritems/introduction_brew.asp www.developer.com/ws/brew/ http://en.wikipedia.org/wiki/brew 21