O documento discute o desenvolvimento de aplicativos para dispositivos móveis usando Java 2 Micro Edition (J2ME), abordando aspectos da configuração, perfil, ambiente de desenvolvimento e construção de aplicativos. É apresentado um exemplo de aplicativo "Olá Mundo" desenvolvido para um celular Nokia 3100 usando o Wireless Toolkit da Sun.
Utiizando o Celular no Apoio à Gerência de configuração
1. Usando o celular no apoio á
gerência de configuração
Especialização Avançada em Sistemas
Distribuídos
Seminário de Computação Móvel
UFBA - 2007
2. Usando o celular no apoio á
gerência de configuração
Roteiro
Aspectos relevantes na construção de
aplicativos para dispositivos limitados
Configuração
Perfil
Ambiente de desenvolvimento
Construção de aplicativos J2ME
3. Usando o celular no apoio á
gerência de configuração
Aspectos relevantes da
configuração:
A JVM do CLDC não suporta matemática de
ponto flutuante
Máximo de dígitos é 10 (CLDC 1.1 – Nokia
3600)
Não há suporte ao método finalize()
4. Usando o celular no apoio á
gerência de configuração
Aspectos relevantes da
configuração:
Classes são específicas da JVM
Não tem suporte a reflexão
Não tem suporte a classe ThreadGroup
Não suporta referências fracas
5. Usando o celular no apoio á
gerência de configuração
Aspectos relevantes do Perfil:
Requisitos não-funcionais
Memória
S.O.
Suporte aos serviços ( e.g. HTTPS, soquetes,
datagramas, multimídia)
Transferência do aplicativo para o dispositivo?
6. Usando o celular no apoio á
gerência de configuração
MIDP 2.0:
WMA – Wireless Media API (e.g. SMS)
MMAPI – Mobile Media API (e.g. Multimídia)
WSA - Webservices
Location API - Serviços de Localização (e.g.
GPS)
M3G - Mobile 3D Graphics API
7. Usando o celular no apoio á
gerência de configuração
Ambiente de desenvolvimento
IDE
Eclipse (Plugin EclipseME)
Netbeans (Mobile pack)
Jdeveloper da Oracle
Jbuilder MobileSet da Borland
8. Usando o celular no apoio á
gerência de configuração
Ambiente de desenvolvimento
Editor de texto
Linhas de comando
Wireless Tool Kit da Sun
Obter um simulador do dispositivo para a
configuração e perfil adequado
Emuladores (e.g. Motorola SDK, Nokia
SDK, Siemens Mobility Toolkit)
9. Usando o celular no apoio á
gerência de configuração
Construção de um aplicativo
10. Usando o celular no apoio á
gerência de configuração
Construção de um aplicativo
Funcionamento básico de uma MIDlet :
1Mostrar um Displayable;
2Esperar por ação do usuário;
3Decidir qual Displayable mostrar em
seguida;
4Repetir a etapa 1.
11. Usando o celular no apoio á
gerência de configuração
Construção de um aplicativo
Criação da classe Midlet
import javax.microedition.midlet.MIDlet;
javax.microedition.midlet.MIDlet;
javax.microedition.lcdui.*;
import javax.microedition.lcdui.*;
public final class OlaMundo extends MIDlet {
/**
* Caixa de texto para a mensagem quot;Olá Mundoquot;.
*/
textBox;
TextBox textBox;
12. Usando o celular no apoio á
gerência de configuração
Construção de um aplicativo
Criação da classe Midlet
OlaMundo()
public OlaMundo() {
textBox = new TextBox(quot;A Primeira MIDletquot;, quot;Olá Mundo!quot;, 255,
TextBox(quot;A MIDletquot;,
TextField.ANY);
TextField.ANY);
System.out.println(quot;
.out.println(quot;MIDlet
System.out.println(quot;MIDlet criada.quot;);
}
startApp()
public void startApp() {
ecrã.
/* colocar a caixa de texto no ecrã. */
Display.getDisplay this).setCurrent(textBox);
getDisplay( ).setCurrent
Display.getDisplay(this).setCurrent(textBox);
System.out.println(quot;MIDlet
System.out.println(quot;MIDlet iniciada.quot;);
.out.println(quot;
}
13. Usando o celular no apoio á
gerência de configuração
Construção de um aplicativo
Criação da classe Midlet
public void pauseApp() {
pauseApp()
System.out.println(quot;
.out.println(quot;MIDlet
System.out.println(quot;MIDlet pausada.quot;);
}
destroyApp( unconditional)
public void destroyApp(boolean unconditional) {
System.out.println(quot;MIDlet destruída.quot;);
System.out.println(quot;MIDlet
.out.println(quot;
}
}
14. Usando o celular no apoio á
gerência de configuração
Construção de um aplicativo
Parte 1 “na mão grande”
1 - Compilar:
Javac bootclasspath ....libcldcapi10.jar;....libmipdpapi20.jar
-d tmpclasses
srcOlaMundo.java
15. Usando o celular no apoio á
gerência de configuração
Ambiente de desenvolvimento
Parte 1 “na mão grande”
2 - Verificar:
preverify.exe
-classpath ....libcldcapi10.jar;....libmidpapi20.jar
-d classes tmpclasses
16. Usando o celular no apoio á
gerência de configuração
Ambiente de desenvolvimento
Parte 1 “na mão grande”
3 – Criar o descritor e arquivo de Manifesto
(NomedaAplicação.jad e MANIFEST.MF)
MIDlet-Name:
MIDlet-Name: Ola Mundo
MIDlet-Version:
MIDlet-Version: 1.0.0
MIDlet-Vendor:
MIDlet-Vendor: EASD 2007
MIDlet- OlaMundo.png,
MIDlet-1: Ola Mundo, OlaMundo.png, OlaMundo
MicroEdition-Profile: MIDP-
MicroEdition-Profile: MIDP-2.0
MicroEdition-Configuration: CLDC-
MicroEdition-Configuration: CLDC-1.0
MIDlet-Jar- OlaMundo.
MIDlet-Jar-URL: OlaMundo.jar
MIDlet-Jar-Size:
MIDlet-Jar-Size: 100
17. Usando o celular no apoio á
gerência de configuração
Ambiente de desenvolvimento
Parte 1 “na mão grande”
4 – Empacotar (gerar um arquivo .jar)
C:j2sebin
C:j2sebinjar
OlaMundo. manifest.
cfm OlaMundo.jar manifest.mf -C classes . -C res .
18. Usando o celular no apoio á
gerência de configuração
Parte 2 – Usando o WTK 2.5.1
19. Usando o celular no apoio á
gerência de configuração
Coleta de dados de informações do S.O.
usando API Win32 e Windows Registry;
Agente construído usando o Borland Delphi
7;
Cliente utiliza o J2ME Wireless Toolkit da
Sun versão 2.5.1 para a configuração CLDC
1.1 e perfil MIDP 2.0.
20. Usando o celular no apoio á
gerência de configuração
Celular Utilizado:
Nokia 3100
CLDC 1.0
Máximo 64 kB alocação de memória
Aplicação de gerência 3 kB
Suporte ao MIDP 1.0
Apenas o MIDP 2.0 suporta soquetes
Implementação da classe HTTP como uma alternativa
através do método GET
21. Usando o celular no apoio á
gerência de configuração
Demonstração
22. Usando o celular no apoio á
gerência de configuração
//Implementação da função obter usuário no agente
//Implementação função usuá
çã çã
function TForm1.LogUser : String;
//Declare Registry na clausula uses da unit
var Registro: TRegistry;
begin
Registro := TRegistry.Create;
Registro.RootKey := HKEY_CURRENT_USER;
if
Registro.OpenKey('SoftwareMicrosoftWindowsCurrentVersionExpl
Registro.OpenKey('SoftwareMicrosoftWindowsCurrentVersion
orer', false) then
result := Registro.ReadString('Logon User Name');
Registro.Free;
Registro.Free;
end;
23. Usando o celular no apoio á
gerência de configuração
//Implementação da função executar programa no agente
//Implementação função
çã çã
Function TForm1.ExecuteProgram(Nome,Parametros:String):String;
Begin
//Declarar API shell32
try
if (ShellExecute(0, 'open', pchar(Nome),nil,nil,
SW_SHOWNORMAL)) > 0 then
result:= 'Aplicação executada.'
'Aplicação executada.'
çã
else
result:= 'Aplicação não existe.';
'Aplicação nã existe.';
çã
except
result:= 'Erro na execução da aplicação.';
execução aplicação
çã çã
end;
End;
24. Usando o celular no apoio á
gerência de configuração
//Implementação da função efetuar log off de um usuário no agente
//Implementação função usuá
çã çã
procedure TForm1.logoff;
Begin
//Declarar API shell32
ExitWindowsEx(EWX_LOGOFF,0);
end;
25. Usando o celular no apoio á
gerência de configuração
//Implementação da conexão soquete no celular
//Implementação conexã
çã
try { String server = servidor.getString();
String port = porta.getString();
String name = quot;socket://quot; + server + quot;:quot; + port;
socket = (StreamConnection)Connector.open(name,
Connector.READ_WRITE);
} catch (Exception ex) {
Alert alert = new Alert(quot;Erro!quot;,
quot;Servidor instável para novas conexões.nquot; + quot;Por
instá conexões. quot;Por
tarde.quot;,
favor, tente novamente mais tarde.quot;, null,
AlertType.ERROR);
alert.setTimeout(Alert.FOREVER);
tela.setCurrent(alert, endForm);
return;
}
27. Usando o celular no apoio á
gerência de configuração
Conclusão
Facilidade no desenvolvimento de aplicativos
simples
Desafios na área de multimídia (e.g. assistir TV no
celular, jogos, câmera, luneta)
O código deve ser bem escrito por questões de
limitação do processamento e memória
O Brasil é referência na área de testes de software
para celulares (e.g. Residência da Motorola Recife,
Centro de Tecnologia Nokia)
28. Usando o celular no apoio á
gerência de configuração
Congressos:
SBAC-PAD/WSCAD - Simpósio Brasileiro de
Arquiteturas de Computadores e Processamento de Alto
Desempenho / Workshop Sistemas de Computação de
Alto Desempenho.
SBRC - Simpósio Brasileiro de Redes de Computadores.
SBLP - Simpósio Brasileiro de Linguagens de
Programação .
WCSF - Workshop em Comunicação Sem Fio e
Computação Móvel.
29. Usando o celular no apoio á
gerência de configuração
Congressos:
CLEI - Latin-American Conference on Informatics.
IDEAS - Workshop Iberoamericano de Ingeniería de
Requisitos y Ambientes Software.
SCCC - Jornadas Chilenas de Computación 2001.
Workshop en Sistemas Distribuídos y Paralelismo. .
CACIC - Congreso Argentino de Ciencias de la
Computación / Workshop de Procesamiento Distribuido
y Paralelo.
30. Usando o celular no apoio á
gerência de configuração
Congressos:
MobiSys - ACM/USENIX Annual International
Conference on Mobile System, Applications and
Services.
MDM - International Conference on Mobile Data
Managment .
UbiComp - International Conference on Ubiquitous
Computing.
Mobicom - Annual International Conference on Mobile
Computing and Networking.
31. Usando o celular no apoio á
gerência de configuração
Congressos:
Pervasive - International Conference on Pervasive
Computing.
WMCSA - IEEE Workshop on Mobile Computing
Systems & Applications.
AMOC - Asian International Mobile Computing
Conference.
IPDPS - International Workshop on Parallel and
Distributed Computing.
32. Usando o celular no apoio á
gerência de configuração
Referências:
Java para telemóveis MIDP 2.0
http://livromidp.jorgecardoso.eu/html/chap4.html
Ortiz, E. A Survey of J2ME today.
http://developers.sun.com
Muchow, J. W. Core J2ME, 2004.
Mahmoud, Q. H. J2ME Low-Level Network
Programming with MIDP 2.0.
http://developers.sun.com
Liscbner, R. Delphi in a nutshell, 2000.
33. Usando o celular no apoio á
gerência de configuração
Referências:
Lobo R. Incrementando o Delphi, 1998.
CLDC Configuração de Dispositivo Conectado
Limitado. http://java.sun.com/products/cldc.
Perfil de dispositivo de informação móvel 2.0.
http://java.sun.com/products/midp.
Java SDK Standart Edition 1.5.
http://java.sun.com/javase.
J2ME Wireless Toolkit. http://java.sun.com/javame.