Plataforma Java 2 Micro Edition (J2ME) Divisões do JAVA J2SE – java standard edition – J2EE – Enterprise edition – Desktop Servidores J2ME – Micro edition – – Dispositivos com recursos limitados Introduzida em 1999 Vantagens do J2ME Programe uma vez, rode em todo lugar Linguagem de alto nível para dispositivos móveis Portabilidade Navegue pela rede seguro Alta escalabilidade com J2SE e J2EE Plataforma Java Micro Edition (J2ME) Tecnologia Java para dispositivos embebidos e de consumo (PDA’s, telemóveis, impressoras, set-topboxes de TV digital, etc.) Específica as características da máquina virtual (JVM) e – – APIs nucleares em configurações e APIs para aplicações ou mercados específicos em profiles Página web: http://java.sun.com/j2me J2ME Comité Executivo BEA Systems Cisco Systems Ericsson IBM Insignia Matsushita (Panasonic) Motorola Nokia Palm Philips Research In Motion Siemens Sony Sun Microsystems Texas Instruments Zucotto Wireless Plataforma Java Micro Edition (J2ME) Plataformas de desenvolvimento para a Nokia: Pilha Tecnológica do J2ME Java Application Profile Configuration Native OS Device Connected Device Configuration (CDC) Define um ambiente de execução Java para dispositivos conectados – – – PDAs, Telemóveis, impressoras, set-topboxes, etc. Profiles Pacotes opcionais Objectivo primordial: – Adaptar a tecnologia Java SE a dispositivos embebidos (conectados) Connected Device Configuration (CDC) Sem GUI Reuso de código J2SE com esforço mínimo Ambientes com recursos limitados Connected Device Configuration (CDC) Categorias de dispositivos endereçados Java SE versus Java CDC Java SE Java CDC Plataforma Java J2ME Connected, Limited Device Configuration (CLDC) – – – – Específica as propriedades do core da VM e os APIs para os dispositivos com desempenho limitado, conectividade à Internet limitada e intermitente, e interfaces com o utilizador restritos Empresas podem utilizar qualquer VM CLDC compatível que quiserem Exemplo: CLDC é implementado na Series 40, Series 60 e Series 80 de dispositivos da Nokia CLDC homepage: http://java.sun.com/products/cldc Plataforma Java J2ME Mobile Information Device Profile (MIDP) – – – – Tem como alvo dispositivos de comunicação two-way que implementem o J2ME CLDC Endereça display e interface com o utilizador (UI), persistência de dados, e redes (HTTP, etc.) Exemplos: MIDP é também implementada nas Series 40, Series 60 e Series 80 de dispositivos da Nokia MIDP homepage: http://java.sun.com/products/midp Plataforma Java J2ME Connected Device Configuration (CDC) e Personal Profile – Series 80, plataforma de desenvolvimento 2.0, também implementa – Series 80, plataforma de desenvolvimento 2.0, implementa J2ME CDC em adição ao J2ME MIDP CDC/Personal Profile permite o desenvolvimento de aplicações mais do tipo desktop, incluindo o acesso a métodos nativos via Java Native Interface (JNI) CDC/Personal Profile com a Máquina Virtual IBM J9 CDC/Personal Profile – homepage: http://java.sun.com/products/cdc Configurações J2ME Connected Device Configuration (CDC) – – – – 2 a 16 MB dispositivos CDC podem ser ligados por fios set-top boxes para TV digital, dispositivos wireless mais sofisticados Compact Virtual Machine (CVM) Connected Limited Device Configuration (CLDC) – – – – – 160 kB a 512 kB de memória total Processador de 16- ou de 32-bits Dispositivos CLDC são normalmente wireless com largura de banda limitada (normalmente 9600 bits ou menos) Telemóveis, Pagers, PDAs, etc. Kilo Virtual Machine (KVM) Mobile Information Device Profile 1.0 (MIDP 1.0) Características: – – – – – 128 KB de memória não-volátil para a implementação MIDP 32 KB de memória volátil para o heap 8 KB de memória não-volátil para dados persistentes Um ecrã de pelo menos 96 x 54 píxeis Alguma capacidade para introdução de dados – Teclado, ecrã táctil,… Conexão em rede two-way, possivelmente intermitente Introdução às MIDlets Aplicações Java para serem executadas no contexto MIDP MIDlet “Aplicação Java em concordância com as especificações do CLDC e do MIDP.” Desenvolvendo MIDlets São executadas sempre do lado do cliente As MIDlets têm um interface com o utilizador bastante sofisticado, permitem o armazenamento local de dados, e o acesso a dados remotamente Todas as MIDlets têm de extender a classe: – javax.microedition.midlet.MIDlet O grupo de MIDlets que constituem uma MIDlet suite (incluindo outros recursos) é distribuída segundo um arquivo JAR Java Application Descriptor (JAD): descreve o arquivo JAR Desenvolvendo MIDlets Java Application Manager (JAM) O JAM é responsável por: – – – carregar o código através de uma conexão sem-fios, por exemplo Indicar o local no dispositivo onde esse código deve ser guardado Definir o modo como o utilizador pode lançar a aplicação O JAM guarda a aplicação no dispositivo e em seguida apresenta as MIDlets dessa aplicação selecionáveis para execução A especificação do MIDP define vagamente que o dispositivo tem de incluir um gestor de aplicações JAM Ciclo de Vida de uma MIDlet Estado Paused: quando a MIDlet é seleccionada para execução Estado Active: a MIDlet entra neste estado depois do gestor de aplicações invocar o método startApp() Estado Destroyed: o gestor de aplicações pode terminar a execução da MIDlet invocando o método destroyApp(), neste ponto a MIDlet é “destruída” e é esperado o GC Ciclo de Vida de uma MIDlet import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class myFirstMIDlet extends MIDlet { //obrigatorio public void startApp() { } //obrigatorio public void pauseApp() { } //obrigatorio public void destroyApp(boolean unconditional) { } } Bibliotecas: APIs CLDC java.lang java.io java.util javax.microedition.io MIDP javax.microedition.lcdui javax.microedition.midlet javax.microedition.rms Diagrama MIDlet Passos de Desenvolvimento Escrever o código da MIDlet Compilar a MIDlet Pré-verificação das classes da MIDlet Ofuscação das classes da MIDlet (se necessário) Empacotamento num arquivo JAR Criação da JAD (Java Application Descriptor) Carregar e executar a aplicação no emulador ou no dispositivo Verificação das Class Files Verificação dos bytecodes é um dos conceitos fundamentais do modelo de segurança do Java Antes do carregamento de uma class (pelo class loader), o verificador de bytecodes analisa a classe de modo a verificar que a estrutura e comportamento estão de acordo com o esperado. Exemplo: – – o verificador no J2SE precisa de um mínimo de 50 KB de espaço para o código binário, e pelo menos 30-100 KB de RAM dinâmica na execução Em adição, o desempenho do CPU necessário para as verificações em tempo-real pode ser significativo Verificação das Class Files Para agilizar a etapa de verificação das MIDlets – – Existe uma etapa de pré-verificação Nesta etapa são realizadas as verificações possíveis de efetuar estaticamente Verificação das Class Files 1. 2. Verificação de bytecodes em duas etapas é definida pelo CLDC e trabalha do seguinte modo: As Class Files são verificadas antes da instalação no dispositivo A segunda etapa de verificação é executada no dispositivo aquando do carregamento das classes e durante a execução dos bytecodes Classes não verificadas em (2) são rejeitadas. Este novo verificador requer cerca de 10 KB de código binário e menos de 100 bytes de RAM dinâmica em tempo-real MIDlets Acesso ao Display da MIDlet – Display.getDisplay(this) Comandos de Interacção com o utilizador – – – Associar um gestor de eventos ao Display Gestor deve implementar a interface CommandListener Acções relacionadas com a gestão de eventos: commandAction() MIDlets Dados remotos – Dados locais – – – Connector.open(http://...); store = RecordStore.openRecordStore("DataStore", true); store.closeRecordStore(); RecordStore.deleteRecordStore("DataStore"); Dados em arquivos (e.g., cartão de memória do dispositivos) – Connector.open("file:///E:/rcs/file.txt", Connector.WRITE); Processo de carregamento de uma MIDlet MIDlets A tendência é para que sejam cada vez mais inovadoras, de maior complexidade computacional J2ME Wireless Development Kit J2ME Wireless Development Kit Ambiente de desenvolvimento de MIDlets – – – Compilador, ofuscador Emuladores Profiling e monitorização de memória J2ME Wireless Development Kit Instale o Eclipse Coloque os plugins do EclipseME na pasta do eclipse Instale o Sun Java Wireless Toolkit Siga os procedimentos do Tutorial (www/~mbaj/IM/Tutorial J2ME.pdf) Exercícios Altere o código exemplo1 para que ao pressionar o softkey esquerdo, apareca uma mensagem na tela e ao pressionar o softkey direito o aplicativo feche. Altere o código exemplo2 para que uma firgura primitiva da classe Canvas (triangulo, circulo etc) mova nas direcionais do dispositivo.