Plataforma Java 2 - Micro Edition
(J2ME)
Prof. Afonso Ferreira Miguel, MSc
O que é Java
•Simple
•Object oriented
•Architecture Neutral and Portable
•Distributed
•High performance
•Interpreted
•Multithreaded
•Robust
•Dynamic
•Secure
Java - Estrutura Geral
Ciclo de desenvolvimento:
Plataforma:
•The Java Virtual Machine (Java VM)
•The Java Application Programming Interface (Java API)
O que é J2ME
"a highly optimized Java run-time environment targeting a wide
range of consumer products, including pagers, cellular phones,
screen-phones, digital set-top boxes and car navigation systems."
Sun Microsystems
Announced in June 1999 at the JavaOne Developer Conference,
J2ME brings the cross-platform functionality of the Java
language to smaller devices, allowing mobile wireless devices
to share applications. With J2ME, Sun has adapted the Java
platform for consumer products that incorporate or are based on
small computing devices.
J2ME - Estrutura Geral
• Configuration  basic run-time environment (core
classes and a specific JVM);
• Profile  Application (domain-specific classes ).
Profile
Configuration
Virtual
Machines
J2ME
J2ME - Configuration
Configuration
Connected Limited Device Configuration (CLDC)
• Utiliza KVM para dispositivos de 16 ou 32-bit com espaço
de memória limitado (<500k);
• Utilizada para pequenas aplicações J2ME;
• Exemplo de wireless device : Palm Hand-held.
Connected Device Configuration (CDC)
• Utiliza C virtual machine (CVM) para dispositivos de 32-bits
• Aquitturas com mais de 2MB
• Exemplo - Net TV box.
Device x CLDC
• 160 to 512 kilobytes of total memory available for the Java platform;
• Limited power, often battery powered;
• Network connectivity, often with a wireless, inconsistent connection
and with limited bandwidth;
• User interfaces with varying degrees of sophistication; sometimes
with no interface at all.
Exemplos:
• wireless phones;
• pagers;
• mainstream personal digital assistants (PDAs);
•small retail payment terminals.
Device x CDC
• Powered by a 32-bit processor;
• Two megabytes or more of total memory available for the Java
platform;
•Network connectivity, often with a wireless, inconsistent connection
and with limited bandwidth;
• User interfaces with varying degrees of sophistication; sometimes
with no interface.
Exemplos:
• residential gateways;
• PDAs;
• Organizers;
• home appliances;
• point-of-sale terminals;
• car navigation systems.
CDC x CLDC
"Write Once, Run Anywhere.“ ????
Conclusão: progs J2SE e J2ME na maioria das vezes não
são compatíveis (interface)
J2ME - Profile
Profile
• Define o tipo de device suportado pela aplicação;
• Construído sobre Configuration (CDC/CLDC);
• Sobre CLDC, disponível em dois modelos:
• KJava;
•MIDP - Mobile Information Device Profile (classes para
telefones celulares e PDAs).
• Sobre CDC, disponível o Foundation Profile que permite criar
profiles personalisados;
Profile 1: KJava
Profile
• KJava é propriedade da Sun;
• Roda sobre uma JVM (Java Virtual Machine) chamada KVM
(KJava Virtual Machine);
• Versões preliminares para telefones celulares e PDAs;
• Construído sobre CLDC.
Profile 2: MIDP
Mobile Information Device Profile
Profile
• MIDP é um padrão aberto (não proprietário);
• Roda também sobre a JVM (Java Virtual Machine) chamada
KVM;
• Versões finais disponíveis para telefones celulares e PDAs;
• Construído sobre CLDC.
Kava x MIDP
Profile
• KJava foi o primeiro profile da Sun;
• Foi adotado como padrão por vários desenvolvedores;
• MIDP foi aprovado por um Java Community Process, garantindo
a independência de fabricante;
• Novos produtos geralmente são desenvolvidos para MIDP,
brevemente desaparecendo o KJava;
• 2001 Sun anuncia o lançamento do MIDP para PALM.
J2ME x J2SE x J2EE
Considerações para projeto em
pequenos dispositivos
Keep it simple:
• Remove unnecessary features;
Smaller is better:
• Smaller applications use less memory and require shorter
installation times;
Minimize run-time memory use:
• Use scalar types in place of object types;
• Do not depend on the garbage collector;
• Use lazy instantiation, only allocating objects on an as-needed
basis;
• Release resources quickly, reuse objects, and avoid exceptions.
Considerações para projeto em
dispositivos móveis
Let the server do most of the work: move the computationally
intensive tasks to the server, and let the server run them for you. Let
the mobile device handle the interface and minimal amounts of
computations, and let the server do the intensive work.
Choose the language carefully: J2ME still is in its infancy and
may not be the best option. Other object-oriented languages, like
C++, could be a better choice, depending on your needs.
Considerações sobre desempenho
Use local variables: it is quicker to access local variables than to
access class members.
Avoid string concatenation: string concatenation decreases
performance and can increase the application's peak memory usage.
Use threads and avoid synchronization: any operation that takes
more than 1/10 of a second to run requires a separate thread.
Avoiding synchronization can increase performance as well.
Separate the model using the model-view-controller (MVC):
MVC separates the logic from the code that controls the
presentation.
Configurando o sistema...
Recursos necessários:
1. Java 2 SDK (j2sdk-1_4_0_01-windows-i586.exe);
2. Java 2 ME – Wireless Toolkit (j2me_wireless_toolkit1_0_4_01-bin-win.exe);
3. JCreator (jcrea250.zip);
4. Palm-OS Emulator (emulator-win.zip);
5. PALM-ROM Mirror (Palm Afonso.rom)
Configurando o sistema...
Procedimentos:
1. Instalar Java 2 SDK, Java 2 ME – Wireless Toolkit e Jcreator
(nesta ordem) utilizando as definições padrão;
2. Instalar Palm-OS Emulator descompactando para um diretório
padrão (PALM-EMUL);
3. Copiar Palm Afonso.rom para o mesmo diretório do item 2.
Desenvolvendo aplicativos ...
Considerações iniciais sobre inteface gráfica em MIDP:
MIDP possui tanto métodos de baixo-nível como de alto-nível.
Métodos de baixo-nível permitem acessar a inteface do dispositivo
tratando pixel a pixel.
Métodos de alto-nível, inserem controles próprios da API
aparecendo conforme a implementação MIDP para o
dispositivo.
Desenvolvendo aplicativos ...
MIDLET
J2ME Wireless Toolkit
1ª aplicação... ... Hello World
Passo 1: Criando projeto no J2ME Wireless Toolkit
•Criar projeto com botão New Project...
•Pressionar OK
1ª aplicação... ... Hello World
Passo 2: Criando projeto no JCreator
•Criar um Empty Project no diretório c:\Wtk104\apps\ com o
mesmo nome do projeto criado no J2ME Wireless Toolkit
(MeuTeste);
•Criar um Java File chamado HelloWorld.java no diretório
c:\Wtk104\apps\MeuTeste\src\
1ª aplicação... ... Hello World
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;
Passo 3: código Java
public class HelloWorld extends MIDlet implements CommandListener
{
private Form form;
•Entrar com o código a seguir:
•Salvar
public HelloWorld()
{
form = new Form("Isto é um teste");
form.append("Olá Mundo!");
form.addCommand( new Command( "Sair", Command.EXIT, 1 ) );
form.setCommandListener( this );
}
public void startApp()
{
Display display = Display.getDisplay(this);
display.setCurrent( form );
}
public void pauseApp()
{
}
public void destroyApp(boolean unconditional)
{
form = null;
}
public void commandAction(Command c, Displayable d)
{
destroyApp(true);
notifyDestroyed();
}
}
1ª aplicação... ... Hello World
Passo 4: compilando e testando...
•Voltar ao J2ME Wireless Toolkit compilar o projeto
com o botão Build;
•Selecionar o device a ser emulado (Motorola_i85s);
•Executar através do botão Run;
•Selecionar a aplicação e executá-la através do botão
Launch.
Download

J2ME: Overview - Afonso Ferreira Miguel, MSc