java klessis wescley

72
 1 UNIVERSIDADE FEDERAL DO PARÁ CENTRO DE CIÊNCIAS EXATAS E NATURAIS DEPARTAMENTO DE INFORMÁTICA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO Klessis Lopes Dias Wescley Pimentel Fontes Orientadora: Regiane Silva Kawasaki Francês Desenvolvimento de Aplicações para Dispositivos Móveis utilizando a Plataforma J2ME Belém 2003

Upload: thejotta-junior

Post on 30-Oct-2015

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 1/72

1

UNIVERSIDADE FEDERAL DO PARÁ

CENTRO DE CIÊNCIAS EXATAS E NATURAIS

DEPARTAMENTO DE INFORMÁTICA

CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO

Klessis Lopes DiasWescley Pimentel Fontes

Orientadora: Regiane Silva Kawasaki Francês

Desenvolvimento de Aplicações para Dispositivos

Móveis utilizando a Plataforma J2ME

Belém2003

Page 2: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 2/72

2

UNIVERSIDADE FEDERAL DO PARÁ

CENTRO DE CIÊNCIAS EXATAS E NATURAISDEPARTAMENTO DE INFORMÁTICA

CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO

Klessis Lopes DiasWescley Pimentel Fontes

Orientadora: Regiane Silva Kawasaki Francês

Desenvolvimento de Aplicações para DispositivosMóveis utilizando a Plataforma J2ME

Belém

2003

Trabalho de Conclusão de

Curso apresentado para

obtenção do grau de

Bacharel em Ciência da

Computação.

Orientador (a): Prof.

...........................................

...........................................

Page 3: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 3/72

3

Trabalho de Conclusão de

Curso apresentado para

obtenção do grau de Bacharel

em Ciência da Computação

pela Universidade Federal doPará. Submetido à banca

examinadora do Colegiado

constituída pelos

PROFESSORES:

.................................................

.................................................

.................................................

Klessis Lopes Dias

Wescley Pimentel Fontes

Desenvolvimento de Aplicações para Dispositivos

Móveis utilizando a Plataforma J2ME

Julgado em: ___/___/___

Conceito: _____________

Page 4: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 4/72

4

¢ ¡ £ ¥ ¥ ¨ ¥ £ ¥ ¨ ¥

!

" £ ¥ $ ¡ £ ' ( ¨ 0 £ 3 5 £ ¡ 8 3 5 £ ¥

 

B C E G £ $ £ 0 ¥ E ¨ 0 £ ¨ E 0 £ 3 5 £ W X Y ` a c £ 3 ¥ G £ c

¥ g G £ ` h 3 5 G £ £ G £ 5 £ E 0 ¨ 3 r s E E £ ¡ ¨ w r s G £ ¥ 5 £

5 E ¡ ¥ 3 ¥ ¥ ¥ ¨ ¥ £ ¨ E 0 s ¥ ` a c £ 3 c 3 $ 3 ¥

¡ 5 E 0 3 ¥ E ¥ G ¨

$ £ ¨ ¥ ` ¥ £ 0 E £ E $ c E 3 G 3 ¥

E ¨ £ 3 5 E £ c G E ¥ 3 ¥ ¥ ¥ $ ¡ £ C ¥ G £ $ c E ¥ ` a c £

¥ £ 0 E £ 3 ¥ E E $ ¨ 3 E 0 c 0 £ m $ £ ¡ £ 3 5 £ 0 ¨ £ 3 5 £

G £ $ 3 h ¨ h 3 $ ¨ ` 5 3 5 G £ 3 5 E a c 3 5

E G ¥ ¡ G £

c ¡ 3 ¥ ¥ E ¨ £ 3 5 G E E

£ ¥ ¥ E £ C ¨ 3 £ ` £ ¡

¨ E £ $ £ ¨ G ` 3 GH £ ¥ c $ ¨ 3 $ ¨

¨ G £

c 3 G 0 £ 3 5 ¡ ¨ 0 E 5 3 $ ¨ EF $ 3 $ ¡ c ¥ s G

5 E ¡ ¥ 3 ¥ ¥ ¥ 3 0 E G ¥ ` a c £ ¥ £ 0 E £ 5 ¨ h £ E 0

$ ¨ 3 $ ¨ £ 0 3 ¥ $ ¡ £ E G £

E 0 $ E ¨ 3 ¥ 3 ¥

0 0 £ 3 5 ¥ G £ G ¨

¨ $ c ¡ G G £

 

Page 5: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 5/72

5

SUMÁRIO

1- INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10

1.1- Objetivos.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12

1.2- Organização do Trabalho.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12

2- COMUNICAÇÕES MÓVEIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13

2.1-Histórico das Comunicações Móveis... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13

2.2-Elementos de Uma Rede Móvel Celular... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17

3- APLICAÇÕES MÓVEIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19

3.1-Comunicações.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20

3.2-Serviços de Valor Agregado.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21

3.3-Aplicações Verticais... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22

3.4-Serviços Baseados em Localização.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22

3.5- Publicidade.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23

4- A TECNOLOGIA JAVA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24

4.1-Uma breve História de Java.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24

4.2-A Arquitetura de Java.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25

4.2.1-A Linguagem de Programação Java.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25

4.2.2-O Arquivo Class... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28

4.2.3-A API Java.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28

4.2.4-A Máquina Virtual Java.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29

4.2.4.1-A Carga e execução de uma JVM..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30

4.2.4.2 - Class Loader (Carregador de Classes)... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30

4.2.4.3 - O Engenho de Execução.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31

4.3- Evolução da Linguagem Java: do Lançamento até Java 2.... . . . . . . . . . . . . . . . . .32

4.3.1- Java Development Kit 1.0 (JDK).... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32

4.3.2- Java Development Kit 1.1... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33

4.3.3- Java 2.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33

4.4- O Processo da Comunidade Java (JCP).... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35

4.4.1- A Requisição de Especificação Java (JSR).... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36

5- A PLATAFORMA JAVA 2 MICRO EDITION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37

5.1- O que é J2ME?.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37

5.2- O que J2ME oferece?.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37  

Page 6: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 6/72

6

5.3- Os Conceitos de Configurações e Perfis... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39

5.3.1- Configurações.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39

5.3.2- Perfil.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40

5.4- As Máquinas Virtuais J2ME..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41

5.4.1- A máquina virtual K (KVM).... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41

5.4.2- A máquina virtual C (CVM).... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43

5.5- A Configuração para Dispositivos com Limite de Conexão (CLDC).... . .44

5.5.1- Características eliminadas da J2SE (Java 2 Standard Edition)... . . . . . . . .45

5.5.2- Processo de Verificação.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45

5.5.3- APIs suportadas.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .465.6- O Modelo MIDP.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47

5.6.1- Requisitos mínimos de Hardware para um dispositivo MIDP.... . . . . . . . . .47

5.6.2- Requisitos mínimos de Software para um di spositivo MIDP.... . . . . . . . . . .48

5.6.3- As APIs do MIDP.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48

6- TÉCNICAS E DIRETRIZES PARA O DESENVOLVIMENTO DE

APLICAÇÕES SEM FIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .53

6.1- Restrições em Aplicações Sem Fio.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .536.2- Desafios para o desenvolvimento sem fio... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55

6.2.1- Transmissão de Erros... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55

6.2.2- Latência... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55

6.2.3- Segurança.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56

6.3- Diretrizes para o Desenvolvimento de Aplicações Móveis... . . . . . . . . . . . . . . . . .57

6.4- Técnicas para otimizar a performance em aplicações J2ME..... . . . . . . . . . . . . .58 

7- ESTUDO DE CASO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59

7.1- Aplicação Agenda Telefônica.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59

7.2- Estrutura da Aplicação.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60

7.3- O Processo de desenvolvimento.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60

7.4- Resultados Obtidos.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62

8- CONSIDERAÇÕES FINAIS E TRABALHOS FUTUROS . . . . . . . . . . . . . . . . . . . . .64

Page 7: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 7/72

7

RESUMO

Computação móvel é um novo paradigma computacional que tem como

objetivo prover ao usuário, acesso a uma rede fixa ou móvel, independente de

sua localização. A principal vantagem deste paradigma é a de fornecer a

capacidade de acessar informações, aplicações e serviços a qualquer lugar e a

qualquer momento através de um dispositivo móvel. O objetivo desta

monografia é apresentar a arquitetura da plataforma denominada Java 2  Mi cro

 Edition (J2ME), voltada para o desenvolvimento de aplicações para

dispositivos móveis. Dispositivos móveis são os elementos fundamentais

dentro do paradigma da computação móvel, eles reúnem características como

mobilidade e recursos computacionais limitados. Desta forma serão abordados

conceitos e benefícios da arquitetura J2ME para o desenvolvimento de

aplicações para o ambiente da computação móvel.

Page 8: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 8/72

8

ABSTRACT  

Mobile computation is a new computational paradigm that has as goal

to provide for user access to a permanent or mobile net, independent of your

physical position. The main advantage of this paradigm is provide the

capacity of accessing information, applications and services to anywhere and

at anytime, through a mobile device. The goal of this monograph is introduce

the platform framework called Java 2 Micro Edition (J2ME). This Java

technology has been developed to provide solutions for mobile devices.

Mobile devices are the fundamental elements for this computational

paradigm, having characteristics as mobility and limited computational

resources. Thus will be presented concepts and benefits of the J2ME

architecture for the applications development   for mobile computation

environment.

Page 9: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 9/72

9

Lista de Figuras

1. Instrumentos de Informação conectados a Internet... . . . . . . . . . . . . . . . . . . . . . . . . .11

2. Arquitetura de uma Rede Celular... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18

3. Portabilidade de Java.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26

4. Código Java transformado para o bytecode após a compilação.... . . . . . . .28

5. Subsistemas de uma JVM..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30

6. Diagrama do class loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30

7. Passos de Execução de uma JVM..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32

8. A Plataforma Java 2.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35

9.  Download  de aplicações J2ME..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38

10. Arquitetura J2ME.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .43

11. Passos para a execução de programas em dispositivos móveis... . . . . . . .47

12. Teclas de um telefone celular... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54

13. KtoolBar... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60

14. Ambiente de Desenvolvimento Sun One Mobile Edition 4.... . . . . . . . . . . . . .6116. Telas da aplicação.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62

17. Telas da aplicação.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63

Page 10: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 10/72

10

1. Introdução

Conectividade, personalização e inteligência nos instrumentos de

informação, como apresentado nos dispositivos móveis, estão trazendo

importantes benefícios em nossos negócios e vida privada. Estes dispositivos

tais como, telefones celulares,  pagers, screen phones1

, PDAs2(Personal

 Digital Assistant ) e sistemas de navegação de carros possuem muitas

características em comum, porém diferem em diversas formas e funções. Estes

dispositivos tendem a ser construídos para um propósito específico

diferentemente das máquinas de computação convencionais de propósito geral

[9].

A proliferação desses instrumentos de informação tem crescido

rapidamente. Segundo [9], o número de assinantes wireless (sem fio) no

mundo é estimado em cerca de um bilhão para o final de 2002 e início de

2003, comparando com os computadores pessoais existentes, que no início de

2002 estavam por volta de 311 milhões no mundo.

Segundo [9], prevê-se que dentro de dois a cinco anos, a maioria dos

instrumentos de informação estarão conectados à Internet. Isto resultará em

uma radical mudança na maneira de como as pessoas utilizam esses

dispositivos. Os usuários dos instrumentos de informação querem acessar

informações como, conteúdo da web , dados corporativos e dados pessoais de

maneira conveniente em qualquer lugar e a qualquer hora através de uma

variedade de dispositivos. A figura 1 mostra o ambiente dos instrumentos de

informação conectados à Internet.

1 Espécie de telefone convencional com tela para acessar a internet.2

Dispositivo portátil que combina características de telefone, fax, agenda, computação e rede.

Page 11: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 11/72

11

Figura 1. Instrumentos de Informação conectados à Internet.

Uma conseqüência importante da evolução dos instrumentos de

informações, é que estes dispositivos serão muito mais personalizados e

customizáveis.

Diferentemente do que ocorria no passado, quando os dispositivos como

telefones celulares eram fabricados com um conjunto de funções pré-

determinadas, por exemplo: jogos, agenda, etc, que permaneciam imutáveis

por toda a vida útil do aparelho. Podem hoje, com avanço tecnológico desses

dispositivos aliado a tecnologia J2ME, permitir aos usuários customizar seus

dispositivos, carregando novos serviços e aplicações da Internet de acordo

com suas necessidades [6].

Page 12: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 12/72

12

1.1. Objetivos

O objetivo principal deste trabalho é mostrar um estudo da linguagem

J2ME, abordando seus conceitos, fundamentos, aplicações e técnicas, e além

disso, mostrar a importância do ganho de produtividade na criação de

soluções para dispositivos móveis que são desenvolvidas com esse tipo de

tecnologia Java.

1.2. Organização do trabalho

Além deste capítulo introdutório, esta monografia é composta de mais

sete capítulos que estão dispostos da seguinte forma:

• O capítulo 2 descreve o histórico das comunicações móveis,

assim como os elementos básicos que compõem uma rede de

comunicação móvel celular;

• O capítulo 3 apresenta algumas das possíveis aplicações que

podem ser implementadas em um ambiente móvel;

• O capítulo 4 mostra as características da Tecnologia Java;

• O capítulo 5 apresenta a Plataforma J2ME.

• O capítulo 6 descreve algumas técnicas e diretrizes para o

desenvolvimento de aplicações em J2ME;

• O capítulo 7 apresenta o estudo de caso feito utili zando J2ME;

• O capítulo 8 mostra as considerações finais e alguns temas para

trabalhos futuro.

Page 13: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 13/72

13

2. Comunicações Móveis  

2.1. Histórico das Comunicações Móveis

Um sistema de comunicação móvel tem como característica a

possibilidade de movimento relativo entre as partes como, por exemplo, a

comunicação entre o telefone celular e a estação base na telefonia celular.

Sistemas móveis usam a tecnologia sem fio para possibilitar uma comunicação

transparente enquanto o usuário se desloca [4]. A seguir, é apresentado um

breve histórico das comunicações móveis.

O desejo da humanidade em comunicar-se livre de fios ocorre desde os

primórdios da civilização. Na Grécia antiga o uso de sinais de fumaça é

mencionado como forma de comunicação. No final do século XVIII, Claude

Chape inventa a telegrafia óptica (1794), possibilitando a comunicação sem

fio para longas distâncias. Em 1820, Hans Christian Oersted descobre

experimentalmente que a corrente elétrica produz um campo magnético. As

comunicações sem fio tiveram uma contribuição fundamental com Michel

Faraday demonstrando a indução eletromagnética1

em 1831. Em 1864, James

C. Maxwell lança os fundamentos teóricos sobre campos magnéticos com suas

famosas equações. Em 1876, Alexander Graham Bell inventa o telefone.

Finalmente, Heinrich Hertz foi o primeiro a demonstrar, através de um

experimento em 1887, as equações de Maxwell sobre ondas eletromagnéticas

[4].

As equações de Maxwell, descrevendo a propagação de ondas

eletromagnéticas, e os experimentos de Heinrich Hertz, foram as bases para a

descoberta da radiotelegrafia por Marconi, o qual conseguiu a primeira

patente industrial na área de comunicações sem fio, em 1896. Marconi

demonstrou a primeira transmissão de rádio da Ilha de Wight , localizada na

Inglaterra, até um rebocador situado a dezoito milhas da Ilha [22]. Em 1905,

ocorreu a primeira transmissão de voz e música em um canal sem fio por

1 Indução Eletromagnética: geração de corrente elétrica utilizando um imã.

Page 14: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 14/72

14

Reginald Fessenden, e em 1946, o primeiro sistema de telefonia móvel

comercial, operado pela empresa americana Bell, foi implantado em St. Louis,

Missouri, nos Estados Unidos. Nos anos 80, as unidades móveis eram

instaladas em veículos o que permitia apenas uma comunicação veicular e não

pessoal. A era da telefonia celular teve seu início efetivo no início dos anos

90, quando o usuário podia portar o aparelho embora suas dimensões iniciais

fossem grandes [4].

O espectro de freqüências, que constitui o meio de transmissão das

redes móveis sem fio, precisa ser compartilhado entre os vários usuários do

sistema. É sob este espectro que as técnicas de acesso múltiplo ao meiooperam, garantindo um acesso compartilhado e com equidade para todos os

terminais móveis [4]. As principais técnicas responsáveis pela divisão dos

recursos de freqüência em vários canais não interferentes possibilitando o

acesso múltiplo dos usuários são FDMA 1 (Frequency Division Multiple

 Access), TDMA2 (Time Division Multiple Access) e CDMA3 (Code Division

Multiple Access).

Vários padrões para a telefonia celular foram adotados em diferentes

países e ficaram conhecidos como sistemas de 1ª Geração (1G), entre eles

podem-se citar: o AMPS ( Advanced Mobile Telephone System) nos Estados

Unidos, o TACS (Total Access Communications Systems ) no Reino Unido, o

JTACS ( Japan Total Access Communications Systems) no Japão e o NMT

( Nordic Mobile Telephones system) nos países do norte europeu (Dinamarca,

Finlândia, Suécia e Noruega).

Os sistemas de 1G utilizam a transmissão de dados no modo analógico e

a técnica de acesso ao meio utilizada é a FDMA. Os principais problemas com

esses sistemas eram a baixa qualidade e capacidade dos canais de

comunicação e a incompatibilidade entre os diversos sistemas existentes.

1 Técnica de múltiplo acesso ao meio de transmissão por divisão da freqüência.2 Técnica de múltiplo acesso ao meio de transmissão por divisão do tempo.3 Técnica de múltiplo acesso ao meio de transmissão por divisão de código.

Page 15: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 15/72

15

Depois da primeira geração de sistemas móveis veio a 2a

Geração (2G)

numa tentativa de ampliar a capacidade dos sistemas existentes. O sistema

AMPS( Advanced/American Mobile Phone System) evoluiu para o D-

AMPS( Digital Advanced Mobile Phone System) que utilizava TDMA, também

conhecido por IS-54 ( Interim Standard  – 54). Como uma alternativa ao IS-54

surgiu nos Estados Unidos o IS-95 ( Interim Standard  – 95), ainda na primeira

metade da década de 90 e utilizava o CDMA, aumentando a capacidade em

relação aos sistemas existentes. O IS-54 foi sucedido pelo IS-136 ( Interim

Standard  – 136). Portanto, em meados da década de 90 dois sistemas móveis

digitais competiam nas Américas na faixa de 800 MHz.

Na Europa surgiu o GSM (Global System for Mobile Communications),

no início da década de 90, alcançando um maior número de assinantes, devido

abranger uma maior área de cobertura dentre os padrões de segunda geração.

Utiliza acesso FDMA/TDMA. Uma grande inovação do sistema GSM é o

módulo de identificação do usuário, o SIM ( Subscriber Identification Module)

que contém a identificação completa do usuário, chaves de código de

privacidade e outras informações específicas sobre o usuário. O SIM se

apresenta sob a forma de um cartão de crédito ou de um  plug-in1

que é

conectado ao terminal GSM. Estes cartões podem ser removidos de um

telefone GSM e usados em um outro, permitindo que o usuário utilize

qualquer telefone GSM. Sem o SIM, o terminal t orna-se inoperante.

Esse sistema padronizou as comunicações celulares na Europa,

permitindo ao usuário utilizar seu telefone em qualquer país europeu. Aindapode-se destacar como sistema 2G o PDC (Personal Digital Cellular )

desenvolvido no Japão.

Com a 2ª geração de celulares foram introduzidos novos serviços de

comunicação de voz, com maior qualidade e capacidade de transmissão,

possibilitando atender um maior número de usuários e, também, foram criados

serviços de transmissão de dados como o Serviço de Mensagens Curtas (Short 

1Módulo de software ou hardware independente, que pode ser adicionado a um sistema a fim de se obter alguma

funcionalidade extra.

Page 16: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 16/72

16

 Messages Service – SMS ) para transmissão de pequenos pacotes de dados. O

SMS  permite que o usuário envie e receba mensagens de texto de até 160

bytes [4].

Ainda no início da década de 90 surgiu a idéia da 3 a Geração (3G) dos

sistemas celulares, como uma proposta para a padronização global das

comunicações móveis, com a disponibilização de altas taxas de transmissão de

dados possibilitando o suporte a aplicações multimídia e acesso à Internet. O

IMT-2000 ( International Mobile Telecommunications 2000) é a especificação

para os sistemas 3G que está sendo desenvolvida pela ITU 1 ( International

Telecommunication Union). Esses sistemas, que já se encontram em uso noJapão, disponibilizam serviços de voz, dados, e aplicações multimídia sobre

as redes sem fio. A idéia é que o IMT-2000 especifique uma “família de

padrões” que disponibilize pelo menos taxas de 2 Mbps (Mega bits por

segundo) em ambientes indoor 2 , 384 Kbps em ambientes de baixa mobilidade,

144 kbps (Kilo bits por segundo) em ambientes vei culares (outdoor 3). [4]

Na década passada, duas tecnologias - comunicações móveis e aInternet, cresceram de uma maneira que excederam todas as expectativas. O

serviço móvel celular obteve um crescimento muito grande de usuários

 juntamente com a redução drástica dos planos para os serviços de voz. Por

outro lado, a Web proporciona uma grande possibilidade de acesso a

informações para os usuários fixos. A possibilidade de acesso à informação e

serviços a qualquer hora e em qualquer lugar poderá moldar uma nova

sociedade de informação com os usuários acessando a informação na Internetatravés de diversos dispositivos móveis, tais como telefones celulares, PDAs

(Assistentes Pessoais Digitais) e Laptops.

1 Órgão internacional responsável pela padronização das Telecomunicações.2 Ambiente interno.3 Ambiente externo.

Page 17: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 17/72

17

2.2. Elementos de uma Rede de Comunicação Móvel Celular  

Uma rede básica de comunicação móvel celular é formada pelos

seguintes elementos (vide figura 2): telefones/estações móveis (MS –  Mobile

Stations), estações base (BSs - Base Stations), centro de comutação (MSC –

 Mobile Switching Center ), HLR ( Home Location Register ) e o VLR (Visitor 

 Location Register ) [4]. Cada um desses elementos será apresentado a seguir.

Telefones móveis se comunicam com a estação base por meio de sinais

de rádio. A estação base, que cobre uma determinada área denominada de

célula, converte estes sinais e os transferem para um MSC via um enlace de

comunicação com fio ou sem fio. O MSC coordena e roteia as chamadas para

outros telefones móveis ou para telefones fixos conectados à rede pública de

telefonia (PSTN – Public Switched Telephone Network ). O HLR é uma base

de dados de uma área de serviço que contém informações sobre as MSs

cadastradas naquela área. Nos HLRs são armazenadas informações como:

MIN ( Mobile Identification Number ), ESN ( Eletronic Serial Number ) e perfil

do usuário com dados sobre faturamento(billing), call forward-to number ,

estado (ativo ou inativo) e ponteiro para o último VLR onde a MS se

registrou. O VLR funciona em conjunto com o HLR para suportar roaming1  

automático. É um repositório local, temporário, com dados da MS que está

fora de sua área de serviço [4].

O conceito introduzido pelos sistemas celulares permite que pequenas

áreas de cobertura de rádio tornem-se parte de um grande sistema através da

interconexão destas pequenas áreas por meio do MSC. Com o crescimento da

demanda e o reduzido espectro de freqüências, as células têm uma tendência a

reduzirem sua área de cobertura. As células reduzem, também, a potência de

suas BSs. Um procedimento importante em sistemas celulares é denominado

handoff  e corresponde à mudança automática de chamada de uma célula para

outra à medida que o usuário se desl oca.

1 Permite aos usuários “viajarem” à volta das áreas de cobertura sem serem desconectados.

Page 18: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 18/72

18

Na figura 2 pode-se visualizar os elementos que compõem uma rede de

comunicação móvel celular básica.

Figura 2. Arquitetura de uma Rede Celular.

Page 19: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 19/72

19

3. Aplicações Móveis

Aplicações móveis apresentam várias características que agregam

funcionalidade aos seus usuários. A primeira delas é a mobilidade, a

capacidade de manter voz constante e comunicação de dados enquanto em

movimento. Em segundo lugar está o imediatismo, que permite aos usuários

obter conectividade quando necessário, sem considerar a localização e sem

uma longa sessão de login1. Finalmente, localização permite aos usuários

obterem informações relevantes para suas localizações atuais. A combinação

dessas características fornece uma grande faixa de possíveis aplicações que

podem ser oferecidas aos usuários móveis. Essas aplicações podem ficar

disponíveis em uma rede do provedor de serviço ou na Internet pública. As

aplicações móveis são de várias categorias e incluem [14]:

• Comunicações – e-mail, fax, mensagem unificada e acesso à

intranet/Internet;

• Serviço de valor agregado(VAS – Value added services) – serviços de

informação e jogos;

•  M-commerce – venda a varejo, compra de bilhetes, serviços bancários e

comércio financeiro;

• Aplicação baseada em localização – Navegação, condições de tráfego

de veículos, localização de pessoas e hospitais, etc;

• Aplicações verticais – gerenciamento de frota, alocação de recursos,

etc;

• Publicidade.

A seguir, serão detalhadas as categorias de aplicações móveis citadas

anteriormente.

1Ato de se autenticar em uma rede.

Page 20: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 20/72

20

3.1. Comunicações

Aplicações de comunicações incluem aquelas em que o usuário utiliza a

rede de comunicação móvel apenas como um canal para acessar mensagens ou

informações. Diferem de outras aplicações em que os usuários acessam um

serviço fornecido por uma operadora de rede móvel. As aplicações de

comunicações são:

• Acesso à intranet – permite aos usuários manter contato com a sede

através de e-mail, fax e voice mail usando sistemas de mensagem unificada.

Arquivos e dados podem ser acessados através da intranet da empresa;

• Acesso à Internet – a Internet é um meio de grande valor para acessar

dados corporativos além de informação sobre produtos e serviços. As

empresas estão usando a Internet como um ambiente para realizar negócios

com seus clientes e fornecedores através do e-commerce (comércio

eletrônico), e como meio de divulgação de propagandas;

•  E-mail e Fax – e-mails em redes móveis podem ser de dois tipos. É

possível mandar o e-mail para um usuário móvel diretamente, ou usuários

podem ter uma conta de e-mail em uma operadora de rede móvel ou em um

provedor de serviço Internet. No segundo caso, uma notificação será enviada

para o terminal móvel do usuário e incluirão informações sobre o emissor,

hora/data e assunto;

• Mensagem unificada – Usa somente uma caixa de correio eletrônico

para todas as mensagens, incluindo voice mail, e-mail , faxes, SMS (short 

message service) e mensagens de  pager . Com várias caixas de correio em

somente um local, sistemas de mensagens unificados permitirão uma

variedade de métodos de acesso para recuperar mensagens de diferentes tipos.

Alguns usarão sistemas de texto para voz para ler e-mail e, menos comum,

faxes sobre uma linha telefônica normal. A maioria permitirá a interrogação

do conteúdo de várias caixas de correio através de acesso aos dados, como a

Page 21: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 21/72

21

Internet. Outros podem ser configurados para alertar o usuário no tipo de

terminal de sua escolha quando as mensagens são recebidas [14]. 

3.2. Serviços de Valor Agregado

Serviços de valor agregado referem-se aos conteúdos fornecidos pela

operadora da rede móvel para aumentar o valor de seus serviços aos

assinantes. Push e Pull são termos usados relacionados a aplicações de

fornecimento de dados. Push refere-se a transmissão de dados em um tempo

pré-determinado, ou sob condições pré-determinadas. O fornecimento não

solicitado de propaganda é um exemplo de utilização da técnica  push . Pull

refere-se a demanda de dados em tempo real pelo usuário. Leitura de jornais

eletrônicos diariamente é um exemplo dessa técnica [4].

Para agregar valor aos usuários da aplicação, o conteúdo disponível

deve possuir várias características:

• Informação personalizada e adequada para as necessidades

específicas do usuário. Uma aplicação de e-commerce que conheça o

perfil do usuário é um exemplo de informação relevante e

personalizada;

• Conteúdo de localização deve ser baseada na localização atual do

usuário, incluindo mapas, localizadores de hotel, etc;

• A interface de acesso e as telas de menu devem ser intuitivas e

fácil de navegar;

Vários serviços de valor agregado são descritos a seguir:

• M-commerce – é definido como a realização de negócios através

de dispositivos móveis, na Internet ou em serviços de dados;

• Banking – a popularidade dos serviços bancários eletrônicos

deve-se ao fato da redução do custo das transações feitas

Page 22: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 22/72

22

eletronicamente em relação às transações feitas no próprio banco.

Transações bancárias que podem ser feitas em uma conexão sem fio

incluem: verificação de saldo, transferência de dinheiro entre contas,

pagamento de taxas;

• Comércio financeiro – a velocidade com que as transações são

feitas usando a Internet e atualização das informações a todo o

momento, tem tornado o comércio financeiro uma aplicação bastante

utilizada.

3.3. Aplicações Verticais

Em um ambiente móvel, essas aplicações utilizam a infra-estrutura

móvel para dar suporte a execução de tarefas específicas dentro da cadeia de

valor da empresa, em oposição às aplicações que são oferecidas para consumo

direto. São exemplos dessas aplicações: suporte a vendas, gerenciamento de

frota, controle de cargas, etc.

3.4. Serviços Baseados em Localização

Serviços baseados em localização fornecem a capacidade de acessar

serviços de informação levando em consideração a localização do usuário.

São exemplos desses serviços: localizadores de hotel e restaurante, serviços

de assistência na estrada, serviços de emergência, informações e notícias

específicas da localização. Esta tecnologia tem também aplicações verticais

tais como gerenciamento de recursos e rastreamento de veículos [4].

Page 23: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 23/72

23

3.5. Publicidade  

Publicidades são serviços oferecidos do tipo  push . Serviços de

propaganda podem ser oferecidos aos clientes para subsidiar os custos com os

serviços de voz e outros serviços de informação. Propaganda pode também ser

sensível a localização, por exemplo, um usuário entra em um shopping e

recebe publicidade específica das lojas daquele shopping [4].

Page 24: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 24/72

24

4. A Tecnologia Java

4.1 Uma Breve História de Java

Em 1990, a Sun Microsystems desenvolveu uma linguagem orientada a objetos

denominada Oak , cujo propósito era o desenvolvimento de pequenos aplicativos e programas

para controle de eletrodomésticos e dispositivos portáteis [6]. Com essa linguagem seria

possível programar novas funções para os aparelhos domésticos, tornando-os mais flexíveis.

Por exemplo, um forno de microondas poderia ser programado para preparar diversos tipos de

alimentos. Os fabricantes de um aparelho poderiam oferecer vários aplicativos para tarefas e

usuários diferentes [12]. 

Além disso, a proposta da Sun previa o desenvolvimento de um sistema operacional

que controlasse uma rede de eletrodomésticos e dispositivos portáteis. Com isso seria possível

utilizar um microcomputador para automatizar uma residência e seus eletrodomésticos [1].

Uma das primeiras conclusões durante o processo de desenvolvimento foi a de que o

sistema não poderia ficar preso a plataformas, pois os clientes não estavam interessados no

tipo de processador que estavam utilizando, e fazer uma versão do projeto para cada tipo de

sistema seria inviável.

Com a popularização da rede mundial de computadores (Internet), através da World Wide

Web, a Sun decidiu adiar a idéia dessa rede doméstica e em 1995, direcionou a linguagem

Oak para o desenvolvimento de aplicações na Web, dando origem à linguagem Java [12].

Page 25: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 25/72

25

4.2 Arquitetura de Java

Java não é somente uma linguagem de programação [12]. Ela é formada por um

conjunto de elementos que envolvem, além da sintaxe da linguagem de programação, os

formatos de arquivos (.java e .class), um conjunto de APIs1(classes, componentes,

frameworks), e uma Máquina Virtual Java (JVM). Cada um desses elementos de Java serão

detalhados a seguir. 

4.2.1 A Linguagem de Programação Java

Java é uma linguagem de programação de alto nível, que segue o paradigma de

programação orientado a objetos. A seguir são apresentadas as principais características de

Java:

• Compilada e Independente de Plataforma (Portabilidade): Um programa escrito em Java

precisa ser compilado antes de ser executado. O compilador traduz o código-fonte em

Java (extensão .java) e gera um código em linguagem de máquina virtual Java (bytecode - que é próximo das instruções de máquina, mas não de uma máquina real) para um

microprocessador virtual. [2]. Cada programa Java consiste da implementação de no

mínimo uma classe. Uma classe é um tipo definido pelo usuário que contém o molde e a

especificação para os objetos2. Não é necessário recompilar um programa para que ele

rode numa máquina e sistema diferente, basta que a plataforma (máquina e sistema) tenha

uma implementação que permita a emulação da máquina virtual Java. A figura 3 ilustra os

diferentes ambientes operacionais nos quais um mesmo programa em Java pode ser

executado.

1  Applications Programming Interface - Interfaces para programação de aplicações que oferecem

funcionalidades para a construção de interface com o usuário, banco de dados, etc.2 São instâncias de uma classe.

Page 26: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 26/72

26

Figura 3. Portabilidade de Java.

• Segurança: Apresenta uma tipagem de dados forte, por somente permitir acesso a campos

pelo nome (e não por endereço), um programa em Java pode ser verificado antes de ser

executado para prevenir a execução de código não autorizado além de proteger o sistema

do cliente contra possíveis ataques não intencionais, o ambiente também deve protegercontra ações premeditadas. A presença de coleta automática de lixo, evita erros comuns

que os programadores cometem quando são obrigados a gerenciar diretamente a memória.

A eliminação do uso de ponteiros1, em favor do uso de vetores

2, objetos e outras estruturas

substitutivas, traz benefícios em termos de segurança. O programador é proibido de obter

acesso à memória que não pertence ao seu programa. As presenças de mecanismos de

tratamento de exceções tornam as aplicações mais robustas, não permitindo que elas

falhem, mesmo quando estão rodando sob condições anormais [2].

• Coleta de Lixo: A coleta de lixo é uma eficiente técnica de liberação de memória utilizada

pela linguagem Java [15]. Muitas linguagens permitem que o programador aloque

memória em tempo de execução. Esta alocação consiste geralmente no retorno de um

ponteiro que indica o início do bloco da memória que foi alocado. Quando aquela

memória não é mais necessária, o programa deve liberar recursos para que ela possa ser

reutilizada e evitar que o sistema pare por falta de memória. Nas linguagens de

1São utilizados em programas para acessar a memória e manipular endereços.

2 Estrutura de dados utilizada para armazenar informações do mesmo tipo.

Page 27: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 27/72

27

programação como C e C++, o programador deve se preocupar em controlar a memória

alocada e liberá-la quando não for mais utilizada. Esta, geralmente, é uma tarefa complexa

e propensa a erros, uma vez que deixa a cargo do programador o gerenciamento de

memória da aplicação [15]. O sistema de coleta de lixo da linguagem Java tira esta

responsabilidade do programador. Através de uma linha de execução (thread) de baixa

prioridade, o sistema de coleta de lixo mantém um registro da memória alocada e conta o

número de referências para cada ponteiro de memória. Nos intervalos em que a máquina

virtual Java está inativa, o coletor de lixo (Garbage Collector  – CG) verifica quais os

ponteiros de memória que não têm mais referências apontando para eles e libera a

memória.

• Suporte a programação concorrente (multithreandig): Programas em Java podem ter mais

de uma linha de execução ocorrendo simultaneamente. Os programadores podem definir

quando e com que prioridade certas linhas de execução serão rodadas. A vantagem disso é

que programas podem ficar realizando outras tarefas enquanto o usuário interage com ele.

Java ainda fornece meios de sincronizar essas linhas de execução. Quando um programa

usa muitas delas e há o risco de utilizarem o mesmo conjunto de dados, é necessário

sincronizar as ações para que não haja conflitos.

Com essas qualidades, Java pode ser utilizada para a criação de vários tipos de

aplicativos, desde aplicações standalone (local) até aplicações designadas para serem

controladas pelo software que as executa, tais como APPLETS (são pequenos programas

escritos em Java que podem ser inseridos em documentos de hipertextos – HTML1) que

são carregados pela web e executados dentro de um browser 2, SERVLETS, que são

aplicações para serem executados dentro de um servidor web, MIDLETs, que sãoaplicações designadas para serem executados dentro de dispositivos móveis (telefones

celulares, pagers, etc), XLETS, que são aplicações para receptores de TV digital ou Set 

Top Boxes (dispositivo que estende a funcionalidade de um receptor de TV digital), entre

outros [11] .

1Linguagem de Marcação de Hipertexto.

2 Programa que permite visualizar um documento criado em html.

Page 28: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 28/72

28

4.2.2 O Arquivo Class

O formato de arquivo class é um formato binário, independente de hardware ou

sistema operacional, e que representa o código compilado a ser executado pela máquina

virtual Java. Tipicamente é armazenado em um arquivo com formato .class. O formato de

arquivo .class define precisamente a representação de uma classe1

ou interface2, e contém as

instruções da máquina virtual Java (bytecodes) e uma tabela de símbolos, bem como outras

informações adicionais [17]. A figura 4 ilustra um código Java transformado para o bytecode 

após a compilação.

Figura 4. Código Java transformado para o bytecode após a compilação.

4.2.3 A API de Java

A API ( Interface Programming Applications) de Java consiste em um

conjunto de bibliotecas de tempo de execução que fornecem ao desenvolvedor

de software uma forma padrão de acessar os recursos do sistema [17].

A especificação da API de Java, bem como a máquina virtual, devem

ser implementados para cada plataforma, o que garante independência de

1Um modelo para um objeto que contém variáveis para descrevê-los e métodos para descrever seu

comportamento.2

Uma especificação do comportamento abstrato que as classes individuais podem implentar.

Page 29: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 29/72

29

plataforma para os programas que rodam sobre os mesmos. Para acessar

recursos nativos do sistema, a API Java invoca método nativos. Em Java, há dois

tipos dos métodos: Java e nativo. Um método Java é escrito na linguagem Java,

compilado para bytecodes, e armazenado em um arquivo .class. Um método

nativo é escrito em alguma outra linguagem, tal como C, C++ ou assembly, e

compilado para código nativo de máquina de um processador particular. Os

métodos nativos são armazenados em uma biblioteca de vínculo dinâmico cuja

forma exata é específica da plataforma. Métodos Java são independentes de

plataforma; os métodos nativos não são. Quando um programa Java chama um

método nativo, a JVM carrega a biblioteca de vínculo dinâmico que contém o

método nativo e o invoca [17].

Esta API contribui não apenas com a independência de plataforma, mas

também com a segurança, pois os métodos da mesma verificam se possuem

permissão para efetuar qualquer ação potencialmente prejudicial (como por

exemplo, apagar arquivos).

4.2.4 A Máquina Virtual Java (JVM)

A portabilidade dos aplicativos desenvolvidos em Java, dentro do

conceito "escreva uma vez, execute em qualquer lugar" (Write Once, Run

 Anywhere - WORA) sempre foi o principal slogan da linguagem e tornou Java

a linguagem predileta para desenvolvimento de aplicações para uso na

Internet. Para que isto fosse possível, foi definida uma "máquina virtual",

denominada Máquina Virtual Java [10]. A máquina virtual Java é umcomputador hipotético, implementado como uma aplicação de software em

uma máquina real [15]. Ela executa instruções representadas em um código de

máquina independente de plataforma, denominado bytecode, que é o código

gerado pelo compilador Java (javac).

Portabilidade e segurança são características fundamentais da

plataforma Java obtidas pela existência de uma máquina virtual para a qual os

programas Java são feitos.

Page 30: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 30/72

30

4.2.4.1 A Carga e execução de classes

A atividade principal de uma JVM é carregar classes e executar os bytecodes que elas

contêm. Os subsistemas principais de uma JVM são apresentados abaixo na figura 5. A JVM

contém um class loader , ou carregador de classes, que carrega as classes oriundas do

programa e da API de Java. Apenas as classes da API que são atualmente necessárias pelo

programa em execução são carregadas pela JVM

Figura 5. – Subsistemas de uma JVM.

4.2.4.2 Class Loader (Carregador de Classes)

As atividades do class loader  são compostas das fases de carga e

l inkagem, a qual divide-se em verificação, preparação e opcionalmente

resolução. Isto é exemplificado no di agrama apresentado na figura 6.

Figura 6. Diagrama do class loader.

Page 31: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 31/72

31

Durante a carga de uma classe, o “class loader ” é responsável por

encontrar uma representação binária para a mesma. Caso não seja possível,

um erro será gerado. A fase de verificação checa se a estrutura binária da

classe carregada é bem formada, o carregador de classes tem essas

informações na hora em que se transfere um programa Java do disco local ou

de um endereço remoto. Programas locais são considerados confiáveis e têm

menos restrições. Programas remotos têm que passar pelo verificador, que irá

dizer se o código foi corrompido ou não, garantindo a não violação da

integridade do sistema. A preparação envolve a criação dos campos estáticos

de classes ou interfaces e iniciação dos mesmos com seus valores padrão. Na

fase de resolução, referências simbólicas são validadas e, t ipicamente,

substituídas com referências diretas.

4.2.4.3 O Engenho de Execução

Os bytecodes são executados dentro de um engenho de execução, que

pode variar em diferentes implementações. A forma mais simples de engenho

de execução consiste na interpretação dos bytecodes um por vez. Outra opção

é a compilação  just-in-time (JIT), onde os bytecodes são convertidos para

código nativo na primeira vez que o método é invocado; o código nativo será

então posto numa cache1

e reutilizado na próxima vez que o método for

chamado, isso faz com que os programas escritos em Java não percam o

desempenho para programas escritos em C ou C++. Uma outra opção é a

compilação adaptativa que converte para código nativo apenas as áreas de

código que são mais utilizadas no programa. O quarto tipo de engenho de

execução, conhecido como ahead-of-time (AOT), produz, a partir dos

bytecodes, um programa executável para a plataforma alvo. Por fim, pode

adotar como alternativa a implementação da JVM inteiramente em hardware

[17].

1Memória de armazenamento temporário.

Page 32: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 32/72

32

A figura abaixo ilustra a execução de uma Máquina Virtual Java em todos os

passos.

Figura 7. Passos de Execução de uma JVM.

4.3 Evolução da Linguagem Java: do Lançamento até Java 2

4.3.1 Java Development Kit 1.0 (JDK)

Em 1995, a linguagem Java foi disponibilizada pela primeira vez para o

grande público através da primeira versão do  Java Development Kit  (JDK

1.0). O JDK é uma coleção de ferramentas de linha de comando para, entre

outras tarefas, compilar, executar e depurar aplicações Java.

Além disso, a existência do interpretador Java e a sua biblioteca

padronizada foram outros pontos a favor da linguagem. Nessa primeira versão

do JDK 1.0, foram introduzidas várias bibliotecas (pacotes1). Java.lang e

 java.applet disponibilizam as classes que formam a base da lingu age m.

O pacote java.awt é o que define as ferramentas para desenvolvimento

de interfaces gráficas. O pacote java.net fornece facilidades para acesso aos

recursos da rede bem como para programação concorrente e distribuída.

1 Uma coleção de classes e interfaces.

Page 33: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 33/72

33

Foram disponibilizados ainda os pacotes java.io e java.util . Java também

permite a definição e controle de processos leves ( threads1) através de

elementos da própria linguagem desde sua versão inicial.

Nessa versão foram introduzidos vários mecanismos importantes como

RMI ( Remote Method Invocation) e JNI ( Java Native Interface). RMI é usado

em programas cliente-servidor e distribuídos para acessar métodos de objetos

remotos. JNI permite o acesso a funções implementadas em outras linguagens,

como C e C++, como se fossem métodos Java, facilitando a integração de

sistemas legados [12].

4.3.2 Java Development Kit 1.1

A primeira versão serviu para consolidar a posição da linguagem no

desenvolvimento da Web, mas existiam muitos pontos que podiam ser

melhorados e vários bugs (erros) a serem corrigidos. A versão JDK 1.1,

lançada em 1997, trouxe uma série de inovações, dentre as quais destaca-se a

integração com bancos de dados, a qual foi facilitada com a introdução do

Java  Data Base Connection (JDBC). Com o JDK 1.1 também foi introduzido o

conceito de modelo de componentes (beans) e de uma apresentação e

comportamento da interface independente de plataforma (swing) [12].

4.3.3 Java 2

Já com a maturidade alcançada, foi lançada a versão 1.2 do JDK em

1998, que posteriormente veio a ser chamada pela Sun de J2SDK(Java

Software Development Kit  2) ou simplesmente Java 2. O J2SDK, foi dividido

em duas partes, o JRE (Java  Run-Time Environment) que é o Ambiente de

Execução Java responsável por fornecer as condições para executar as

aplicações Java e o SDK(Software Development Kit) o Kit de

Desenvolvimento de Software, o qual é superconjunto do JRE. O SDK contém

1várias linhas de execução, “rodando” simultaneamente.

Page 34: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 34/72

34

tudo que o JRE possui mais ferramentas adicionais como compiladores e

depuradores responsáveis pelo desenvolvimento das aplicações Java.

O mais importante, porém, foi que a plataforma Java foi dividida em

três edições a partir da versão Java 2. Cada uma dessas edições define um

conjunto de ferramentas que podem ser usadas para uma determinada

categoria de plataforma. Dentre outras coisas essas ferramentas contêm:

• Máquinas Virtuais Java para uma ampla gama de dispositivos;

• Bibliotecas e APIs (Interfaces para Programação de Aplicações)

especializadas para cada tipo de dispositivo;

• Ferramentas para desenvolvimento e configuração de dispositivos.

As três edições são explicadas abaixo:

• Java 2 Standard Edition (J2SE): Java 2 Edição Padrão, possui um conjunto

de ferramentas que possibilita o desenvolvimento de aplicações para

desktop; 

Java 2  Enterprise Edition (J2EE): Java 2 Edição Corporarativa, é umsuperconjunto da J2SE, voltado para aplicações corporativas e

distribuídas, voltadas para o servidor, usando dentre outras coisa,

 Enterprise JavaBeans1  (EJB), aplicações web (Servlets e JavaServer

Pages), CORBA2(Common Object Request Broker Architecture) e

XML3(Linguagem de Marcação Extensível);

• Java 2  Micro Edition (J2ME): Java 2 Edição Micro, voltada para o

desenvolvimento de aplicações para dispositivos portáteis. J2ME é umsubconjunto da J2SE, pois não apresenta todas as classes que J2SE

apresenta.

1 É uma arquitetura para o desenvolvimento e gerenciamento de aplicações distribuída baseada em componentes. 2 Tipo de arquitetura que permite as aplicações distribuídas comunicarem-se e trocarem informações.

3 É uma maneira de representar as informações.

Page 35: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 35/72

35

Cada uma dessas edições apresenta um determinado grau de sofisticação

em suas aplicações, por exemplo, na edição J2EE o número de classes é bem

superior ao disponível para J2ME. Com a divisão de Java em três edições, foi

possível a evolução da linguagem em diferentes direções, mostrando o

verdadeiro espírito da linguagem. A figura 8 mostra o panorama de algumas

plataformas que as edições contemplam.

Figura 8. A Plataforma Java 2.

4.4 O Processo da Comunidade Java (JCP)

O Processo da Comunidade Java ou  Java Community Process (JCP) é

um fórum criado pela Sun e por vários parceiros da indústria de tecnologia,

como forma de evoluir e manter a tecnologia aberta e disponível para todos,

permitindo que haja competição e inovação dentro do mundo Java, mas de

forma a sempre garantir a compatibilidade e independência de plataforma.

Todas as tecnologias, desde servidores, como J2EE até os pequenos aparelhos

que usam J2ME, passando pelo mundo dos desktops, todos têm em comum o

fato de serem mantidos, modificados e evoluídos através do Java Community

Process [18].

Page 36: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 36/72

36

4.4.1 A Requisição de Especificação Java (JSR)

A especificação Java (JSR – Java Specification Request ) é um

documento, que diz o que um produto deve fazer, mas não diz como ele deve

fazer. É basicamente uma especificação que detalha toda a interface, e o que

deve acontecer do ponto de vista do desenvolvedor que utiliza a

especificação. A partir dessas informações, qualquer fornecedor pode definir

a sua implementação específica [18].

Maiores informações sobre o JCP podem ser encontradas em

http://www.jcp.org , onde, é possível conseguir uma lista de todo o JSRs que

foram definidos ou estão no processo para serem definidos.

Page 37: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 37/72

37

5. A Plataforma Java 2  Micro Edition (J2ME)

5.1. O que é J2ME?

Java 2  Micro Edition (J2ME) é a edição da linguagem Java para ser

usada em dispositivos de computação portáteis e móveis, que possuem as

seguintes características: mobilidade, baixa capacidade de processamento e

pouca memória disponível, alimentação elétrica por baterias, pequenas áreas

de display, e limitados e variados métodos de entrada e saída. Algunsexemplos destes dispositivos seriam os telefones celulares,  pagers ,

PDAs(Assistentes Digitais Pessoais), Palms, entre outros [9].

J2ME não define um novo tipo de Java, mas adapta sua plataforma para

que seja possível executar programas em dispositivos, como os citados

anteriormente. Sendo assim, todo programa desenvolvido para J2ME poderá

ser executado sem nenhum problema nas edições Standard  (J2SE) e

 Enterprise (J2EE), assumindo que as APIs usadas estejam presentes para estas

plataformas.

5.2. O que J2ME oferece?

Essencialmente, a plataforma J2ME busca criar um conjunto de

conceitos para homogeneizar o desenvolvimento em pequenos dispositivos,

transparecendo ao desenvolvedor todos os detalhes proprietários do fabricante

como arquitetura de hardware e sistema operacional do dispositivo sobre o

qual esteja trabalhando.

No passado, todo dispositivo era oferecido com um conjunto fixo de

funcionalidades cuja programação era realizada exclusivamente pelo

fabricante, sobre uma tecnologia altamente proprietária. Através de J2ME,

torna-se possível desenvolver, atualizar e instalar novas aplicações segundoas necessidades particulares de cada usuário [6]. Além disso, é possível

Page 38: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 38/72

38

depois de feito o download  da aplicação para o dispositivo, trabalhar

conectado à rede (on-line) ou desconectado da rede (off-line), no caso de se

estar desconectado da rede, quando a rede estiver disponível pode-se fazer a

sincronização1 dos dados e das informações utilizadas anteriormente. As

aplicações para a plataforma J2ME vão desde jogos, aplicações que acessam

banco de dados, etc. A figura 9 ilustra como novas aplicações podem ser

baixadas para os dispositivos.

Figura 9.  Download  de aplicações J2ME.

Utilizar Java na programação de pequenos aparelhos significa ganhar

todas as vantagens que a tecnologia traz consigo:

• Dinamismo: novas aplicações podem ser baixadas da rede e

instaladas no dispositivo a qualquer tempo;

• Segurança: verificação de classes, forte tipagem, garbage

colection etc, garantem a proteção das informações carregadas pelo

dispositivo. Dados de uma aplicação não são acessíveis por outras aplicações;

• Portabilidade: aplicações podem ser portadas entre dispositivos

de diferentes fabricantes e de diferentes tipos;

• Orientação a Objetos: alto nível de abstração do código,

modularização e reusabilidade.

1Determinação da ordem (seqüência) correta de execução dos processos. 

Page 39: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 39/72

39

5.3. Os Conceitos de Configurações e Perfis

Existe uma diversidade de dispositivos, no qual estes apresentam

muitos pontos em comum, mas diferenciam-se em suas formas, funcionalidade

e características. Existem também dispositivos com uma grande variedade de

capacidade de processamento, memória e interação com o mundo exterior

(interface com o usuário, métodos de entrada e saída de informações e dados).

Afirmar que uma tecnologia serve para todos os dispositivos da mesma

“família”, tal como nas outras edições de Java, não funciona nos dispositivos

de recursos limitados devido a todas essas diferenças [7].

Para suportar esse tipo de diversificação dos dispositivos, dois

conceitos essenciais foram definidos pela edição J2ME que são:

Configurações e Perfis . Esses dois conceitos serão detalhados a seguir.

5.3.1 Configurações

Uma configuração define uma plataforma mínima para um grupo de

dispositivos com características similares, tanto na memória quanto no poder

de processamento. Sendo assim, uma configuração define as características

suportadas tanto pela própria linguagem de programação Java, pela máquina

virtual e suas bibliotecas de classes e APIs, as quais um determinado

fabricante pode esperar que estarão disponíveis em todos os dispositivos de

uma mesma categoria [8]. Atualmente existem duas configurações definidas e

validadas pela Sun:

• Configuração para dispositivos conectados (CDC). A CDC é designada

para dispositivos fixos um pouco maiores, com pelo menos dois

megabytes de memória disponível, conectividade com redes,

possibilitando estabilidade e grande largura de banda. Usa a máquina

virtual Compact Virtual Machine (CVM) que é uma máquina virtual

completa e projetada para os dispositivos que necessitam de toda a

funcionalidade presente na edição J2SE (JVM), apresentando porém

Page 40: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 40/72

40

bem menos requisitos de memória, tendo assim suporte para

implementação completa de sua especificação. Alguns exemplos desses

dispositivos são: televisão com Internet, sistema de navegação de

carros, entre outros.

• Configuração para dispositivos com limites de conexão (CLDC). A

CLDC é designada para dispositivos móveis, pequenos e com grande

restrição de recursos, conectividade a algum tipo de rede, em geral

sem-fio. Conexão intermitente e banda limitada. Usa uma máquina

virtual reduzida em relação à máquina virtual clássica, que é a KVM

(Kilo Virtual Machine). A KVM será apresentada mais adiante.

telefones celulares,  pagers e PDAs são alguns dos dispositivos

pertencentes a CLDC. A CLDC será detalhada posteriormente.

5.3.2 Perfil

Um perfil define uma plataforma Java para um segmento vertical

específico do mercado, ou seja, para uma categoria de dispositivos. O perfil é

a camada mais visível para usuários e desenvolvedores de aplicações. Define

o conjunto mínimo de interfaces de programa da aplicação (APIs) disponível

em uma classe particular dos dispositivos representando um segmento de

mercado “vertical” particular. Os perfis são implementados para uma

configuração particular (CLDC ou CDC). As aplicações são escritas para um

perfil específico sendo, deste modo, portáteis para qualquer dispositivo que

suporte aquele perfil . Um dispositivo pode sustentar múltiplos perfis. Existem

vários perfis como, por exemplo, o Perfil Fundamental ( Foundation Profile),

complementa a configuração CDC e o Perfil do Dispositivo de Informação

Móvel (MIDP), para dispositivos de informação móveis que complementa a

configuração CLDC [7]. Neste trabalho dar-se-á ênfase ao perfil MIDP que

será detalhado mais adiante.

A introdução de perfil facilita a portabilidade de aplicações dentro de

uma mesma categoria, mas limita tal característica para perfis diferentes.

Page 41: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 41/72

41

5.4 As Máquinas Virtuais J2ME

Uma Máquina Virtual Java é o fundamento para a Tecnologia Java,

permitindo que aplicações escritas na linguagem de programação Java sejam

portáveis através de ambientes de hardware e sistemas operacionais

diferentes.

A máquina virtual faz a ponte entre a aplicação e a plataforma

utilizada, convertendo o bytecode da aplicação em código de máquina

apropriado para o hardware e sistema operacional utilizados. Além de

gerenciar a execução dos bytecodes da aplicação, a máquina virtual lida comtarefas relacionadas à administração da memória do sistema, provendo

segurança contra código malicioso e administrando as threads dos programas.

A máquina virtual Java usada na versão standard  (padrão) e na versão

enterprise (corporativa)  foi desenvolvida para ser utilizada em sistemas

desktop e servidores respectivamente. Em J2ME deve-se utilizar uma máquina

virtual Java que seja apropriada para os dispositivos como telefones celulares,

 pagers e PDAs que possuem tamanho de memória reduzido e outra para

dispositivos com um poder um pouco maior de memória tais como: set-top

boxes, sistemas de navegação de carros, pcs handhelds e outros [8].

Em virtude disso, duas máquinas virtuais foram projetadas. Uma para

ser utilizada na configuração CLDC, Kilo Virtual Machine (KVM), e outra

para a configuração CDC, a Compact Virtual Machine (CVM). Ambas as

máquinas virtuais, serão apresentadas a seguir.

5.4.1 A máquina virtual K (KVM)

A KVM ou Kilo Virtual Machine é a mais nova e otimizada máquina

virtual Java para dispositivos com limites de restrições. Possuindo cerca de

40 a 80K de memória, tornou-se bastante apropriada para dispositivos como

pagers, telefones celulares e PDAs [9].

Page 42: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 42/72

42

A KVM pode executar em qualquer sistema que possua um processador

de 16 ou 32 bits e um total de memória de 160 a 512K. Além disso, não

suporta tipos de dados longos e de ponto flutuante. Seu projeto foi baseado

em algumas importantes considerações, incluindo o tamanho reduzido para

conservar um melhor espaço em memória quanto possível (tanto em termos de

armazenamento quanto execução) e a capacidade de rodar em processadores

de pequeno poder computacional [9].

A meta do projeto para a construção da KVM era o de criar uma

máquina virtual compacta que mantivesse os aspectos mais importantes da

linguagem de programação Java, e que conseguisse executar em um

dispositivo com recursos limitados, com só algumas dezenas ou centenas de

kilobytes de memória disponível (daí vem o K, de kilobytes) [9]. Mais

especificamente, a KVM é projetada para ser:

• Pequena e com baixo requisito de memória;

• Enxuta e portável;

• Modular e customizável;

• Tão completa e rápida quanto possível.

A KVM é implementada na linguagem C, por isso pode ser portável

para outras plataformas que contenham um compilador C.

Page 43: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 43/72

43

5.4.2 A máquina virtual C (CVM)

A máquina virtual C foi desenvolvida para adicionar maior

funcionalidade aos dispositivos da segunda categoria dos quais a KVM não

suporta. Praticamente esta máquina virtual engloba quase todas as

características de uma máquina virtual Java convencional, só que de forma

mais otimizada. Eis algumas características da CVM:

• Melhor desempenho em aplicações real t ime1

;

• Coleta automática de Lixo (garbage collection) otimizada;

• Mapeamento direto de threads Java para threads nativos;

• Execução de classes diretas da memória ROM;

• Portabilidade;

• Sincronização com um reduzido número de instruções;

Os conceitos de Perfil, Configurações e Máquinas Virtuais formam as

camadas da Arquitetura J2ME, mostrada na Figura abaixo.

Figura 10. Arquitetura J2ME.

1Aplicações que necessitam de um tempo de resposta dentro de certas restrições.

Page 44: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 44/72

44

5.5 A Configuração para Dispositivos com Limite de Conexão

(CLDC)

A configuração CLDC consiste de uma máquina virtual, a KVM, e um

conjunto de bibliotecas de classes para serem utilizados dentro de um perfil

definido pela indústria, tal como o MIDP [3].

A CLDC foi projetada pela Sun para ser uma configuração padrão,

portável, com requisitos mínimos, para ser utilizada em dispositivos móveis,

pequenos e com grande restrição de recursos, tais como  pagers, telefones

celulares, assistentes pessoais digitais e terminais de ponto de venda.

Os dispositivos que se enquadram nesta configuração apresentam como

características:

• Processadores de 16 ou 32 bits;

• Requerem de 160Kb a 512Kb de memória total disponível para a

plataforma Java;

• Baixos consumos de potência, freqüentemente são dispositivos operados

por bateria;

• Conectividade com alguma espécie de rede, freqüentemente com uma

conexão intermitente, sem fio e com largura de banda limitada (9600bps ou

menos).

A especificação da CLDC não impõe nenhum requisito de hardware

específico, a não ser o requisito de memória de 160Kb-512Kb. Mais

especificamente:

• 128Kb de memória não volátil para a máquina virtual e bibliotecas CLDC;

• Pelo menos 32Kb de memória volátil para o ambiente de execução e

objetos alocados.

A CLDC abrange as seguintes áreas:

• Características da máquina virtual e da linguagem;

• Entrada/saída;

Page 45: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 45/72

45

• Acesso à rede;

• Segurança;

• Internacionalização;

• Bibliotecas de classes e APIs suportadas (java.util .*, java.lang.*) .

As seguintes áreas não são cobertas pela CLDC, devendo ser abrangidas por

perfis montados no topo da CLDC:

• Interface com o usuário;

• Manipulação de eventos;

• Gerenciamento do ciclo de vida da aplicação (instalação, remoção, etc.).

5.5.1 Características eliminadas da J2SE (Java 2 Standard 

 Edition)

Algumas características foram eliminadas da JVM que suporta CLDC

(KVM) porque as bibliotecas de classes incluídas na CLDC são mais limitadas

que as presentes na edição padrão de Java. São elas:

• Suporte a operações de ponto flutuante;

• Finalização;

• Java native interface (JNI);

• Class loaders definidos pelo usuário;

• Reflexão;

• Grupos de threads e daemon threads;

• Referências fracas.

5.5.2 Processo de Verificação

CLDC requer que uma  Java Virtual Machine seja capaz de identificar e

rejeitar arquivos inválidos. Entretanto, sabendo que o processo padrão devalidação e verificação definido pela Sun para a edição  J2SE  é bastante

Page 46: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 46/72

46

consumidor de memória, e que esta técnica se torna inviável para os

dispositivos menores, a CLDC define um mecanismo alternativo para tal

finalidade.

Assim, na configuração CLDC, foi adotada uma estratégia dividida em

duas partes: pré-verifição e verificação final . A primeira etapa, a pré-

verificação, é feita fora do dispositivo aonde a aplicação vai executar,

normalmente na máquina onde as classes foram compiladas. Numa segunda

etapa, já no dispositivo alvo, uma nova verificação, bem mais eficiente é

feita para poder validar o arquivo. Em seguida, o programa está pronto para

ser executado pela máquina virtual Java.

Figura 11. Passos para a execução de programas em dispositivos

móveis.

5.5.3 APIs suportadas

As APIs da CLDC pode ser dividida em duas categorias:

A primeira delas são subconjuntos da edição padrão de Java (J2SE):

•  java.lang – classes fundamentais da linguagem de programação Java;

•  java.io – entrada/saída através de streams (conjuntos) de dados;

Page 47: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 47/72

47

•  java.util – variadas classes utilitárias.

A segunda categoria é específica da CLDC:

•  javax.microedition.io – classes para conexões genéricas.

5.6 O Modelo MIDP

O Perfil do Dispositivo de Informações Móveis (MIDP) é o primeiro

perfil disponível para a plataforma J2ME. A combinação do CLDC e do MIDP

fornece um ambiente completo de desenvolvimento para a criação de

aplicações em celulares e  pagers [21]. Aplicações que executam em

dispositivos que suportam MIDP são denominados MIDlets. O MIDP foi feito

para executar em cima da camada de configuração CLDC.

5.6.1 Requisitos mínimos de Hardware para um dispositivo MIDP 

Os MIDs (Dispositivos de Informações Móveis) devem possuir as

seguintes características mínimas de hardware para se enquadrar no perfil

MIDP (além daquelas que são requeridas pelo C LDC):

•  Display:

• Tamanho da tela: 96x54 pixels;

• Profundidade: 1 bit;

• Formato do pixel (proporção de aspecto): 1:1;

•  Input :

• “One handed keyboard ”

• “Two handed keyboard ”

• Touch Screen; (Tela sensível ao toque)

• Memória:

• 128Kbytes para os componentes MIDP;

• 8Kbytes para dados das aplicações;

Page 48: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 48/72

48

• 32Kbytes para o JAVA em tempo de execução;

• Rede:

• Duplex, sem fio, possivelmente intermitente (sem conexão permanente)

e com largura de banda limitada.

5.6.2 Requisitos mínimos de Software para um dispositivo MIDP 

Os MIDs possuem uma grande variedade de softwares de sistema. Por

essa razão, o MIDP estabeleceu alguns requisitos mínimos de sistema [21]:

• Um kernel para controlar o hardware, que possua uma entidade escalonável

para rodar a Máquina Virtual Java;

• Um mecanismo para ler e escrever na memória para suportar as APIs;

• Acesso à leitura e escrita à rede sem fio;

• Capacidade de escrever num display bit-mapped ;

• Um mecanismo para capturar entrada de um input device;

5.6.3 As APIs do MIDP

Por ser designado para operar sobre uma configuração (CLDC), o perfil

MIDP agrega os pacotes citados na descrição da CLDC, a saber:

•  java.lang – classes fundamentais da linguagem de programação Java;

•  java.io – entrada/saída através de streams de dados;

•  java.util – variadas classes utili tárias;

•  javax.microedition.io – classes para conexões genéricas.

Page 49: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 49/72

49

O MIDP herda a conectividade do CLDC e suporta um subconjunto do HTTP

(Protocolo de Transferência de HiperTexto) , que pode ser implementado com protocolos IP1 

(TCP/IP) e não-IP (WAP2 e i-mode3).

A interface HttpConnection possui funcionalidades que permitem a realização de

funções específicas do HTTP. Aparelho como: telefones celulares,  pagers e PDAs, que

implemente MIDP devem suportar o HTTP 1.1, requisições HEAD, GET, POST e FORMS

[21].

Em adição, foram acrescentados outros pacotes específicos do perfil

MIDP, são eles:

 javax.microedition.lcdui – classes utilizadas para a implementação de

interfaces com o usuário para aplicações MIDlet. Elas são constituídas de

APIs de baixo nível e de alto nível.

A API de baixo nível fornece pouca abstração e é designada para

aplicações que necessitam ter controle preciso sobre o posicionamento eatuação dos componentes gráficos, além de necessitar manipular eventos de

baixo nível. Esta API é implementada pela classe Graphics 4 . É importante

salientar que a utilização da API de baixo nível não garante a portabilidade da

aplicação porque elas acessam detalhes que são específicos de um dispositivo

em particular.

A API de alto nível é designada para aplicações que executam emdispositivos nos quais a portabilidade é importante. Para conseguir

portabilidade, a API de alto nível apresenta algumas limitações. Por exemplo,

aplicações utilizando API de alto nível não podem acessar entradas de

dispositivos, como teclas específicas.

1 Protocolo projetado para permitir a interconexão de redes de computadores que utilizam tecnologia de

comutação de pacotes.2 Padrão para aplicações de ambientes sem fio desenvolvido pelo WAP Fórum.3 Arquitetura para aplicações de ambientes sem fio da operadora Japonesa NTT DoCoMo.4 Esta é uma classe básica usada para desenhar objetos no display do dispositivo.

Page 50: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 50/72

50

•  javax.microedition.rms – MIDP fornece um mecanismo para que os

MIDlets armazenem e recuperem dados de forma persistente. É o chamado

 Record Management System (RMS).

A API RMS contém as classes necessárias para implementar uma base

de dados de armazenamento persistente no dispositivo. Essa base de dados é

limitada em suas potencialidades para armazenar e recuperar a informação

devido às limitações do tamanho do dispositivo.

A classe  RecordStores localizada no pacote  javax.microedition.rms   é

uma coleção de registros que permanece o mesmo durante múltiplas chamadasdo MIDlet. A plataforma é responsável por manter a integridade desses

registros, mesmo após dispositivo sofrer reboots ou trocas de baterias.

•  javax.microedition.midlet – define aplicações MIDP (MIDlets) e as

interações entre estas aplicações e o ambiente no qual a aplicação executa.

O pacote de  javax.microedition.midlet contém a classe MIDlet . Esta

classe executa o ciclo de vida do MIDlet e fornece o método

 getAppProperty(key) para recuperar informação a partir das propriedades da

aplicação definidas em um arquivo  jad, que contém a descrição de algumas

das características da mesma.

O MIDP define um modelo de aplicação que permite que os recursoslimitados dos MIDs sejam compartilhados por várias aplicações, as MIDlets.

Este compartilhamento é viável mesmo com os limitados recursos e

framework de segurança do MID, pois eles são obrigados a compartilhar

classes e estão sujeitos a um conjunto de políticas e controles que permitem

isso.

Os elementos de uma MIDlet Suíte( um ou mais MIDlets agrupados)

formam software de gerenciamento de aplicação , do qual se espera, a

Page 51: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 51/72

51

implementação de funções necessárias pelos usuários para instalar,

selecionar, rodar e remover midlets, estes elementos são:

• Ambiente de Execução: é compartilhado por todas as MIDlets que estão

na mesma MIDlet suite, e qualquer MIDlet pode interagir com outra que

esteja no mesmo pacote.

• Empacotamento do MIDlet Suite: uma ou mais MIDlets podem ser

empacotadas num único arquivo JAR, que contém as classes

compartilhadas e os arquivos de recursos utilizados pelas MIDlets, além

de um manifesto descrevendo seu conteúdo( arquivo Descritor da

Aplicação Java - JAD). Existem vários atributos pré-definidos que

permitem identificação de uma MIDlet, como nome, versão, tamanho de

dados, descrição, etc.

• Descritor de Aplicação: é utilizado para gerenciar a MIDlet e é usada

pela própria MIDlet para atributos de configuração específica. O descritor

permite que seja verificado que a MIDlet é adequada ao aparelho antes de

se carregar todo o arquivo JAR da MIDlet suite. Ele também permite que

parâmetros sejam passados para as MIDlets sem modificar os arquivos

JAR.

• Ciclo de Vida da Aplicação : uma MIDlet não deve possuir um método

 public void static main(). O software de gerenciamento de aplicação deve

suprir a classe inicial necessária pelo CLDC para iniciar a MIDlet. Quando

uma MIDlet é instalada, ela é mantida no aparelho e fica pronta para uso.

Quando é executada, uma instância é criada através de seu construtor

público sem argumentos, e seus métodos são chamados para mudar pelos

estados da MIDlet. Quando ela é terminada, ou destruída, os recursos

utilizados por ela podem ser recuperados, incluindo os objetos criados e

suas classes.

O software de gerenciamento de aplicação disponibiliza um ambiente noqual a MIDlet é instalado, iniciado, parado e desinstalado. Também é

Page 52: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 52/72

52

responsável por manusear os erros que podem ocorrer durante alguma destas

etapas.

O compartilhamento de dados e outras informações entre MIDlets são

controlados pelas APIs individuais e suas implementações. Assim, por

exemplo, os métodos da API de um sistema de gerenciamento de registros

devem ser especificados para manusear com dados que podem ser

compartilhados com outras MIDlets.

O Software de Gerenciamento de Aplicação pode administrar as

atividades de múltiplos MIDlets dentro de um ambiente em tempo de

execução (runtime). Além disso, o MIDlet pode iniciar sozinho algumas

mudanças de estados e notificar para o software de gerenciamento de

Aplicação que estas mudanças ocorreram.

Page 53: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 53/72

53

6. Técnicas e Diretrizes para o Desenvolvimento de Aplicações

Sem Fio

Desenvolver software para as plataformas de servidores e desktops é

uma tarefa diferente quando se for comparada ao desenvolvimento de

aplicações para dispositivos móveis. Sistemas para servidores e dektops 

utilizam plataformas que possuem grande quantidade de memória e alto poder

de processamento. Quando se desenvolvem aplicações para dispositivos

móveis, novos obstáculos surgem devido aos recursos limitados disponíveis

nos dispositivos, como tamanho da tela reduzida, pouca memória disponível, e

baixo poder de processamento. Além disso, outros obstáculos surgem em

virtude dos ambientes que os dispositivos operam; mobilidade e redes sem fio

que tipicamente oferecem largura de banda mais baixa e menos confiabilidade

no tráfego em comparação com as redes com fio [11].

Essas limitações exigem que a construção de aplicações sem fio seja

bem planejada em relação à interface com o usuário, que deve ser simples e

intuitiva. Além disso deve-se administrar a utilização da memória de forma

econômica e eficiente, diminuir o tempo de interação com o sistema, para que

não se utilize em demasia a bateria do dispositivo e avaliar as condições

ambientais em que os dispositivos móveis operam, devido à baixa largura de

banda e segurança na transmissão dos dados.

6.1 Restrições em Aplicações Sem Fio

O crescimento do mercado de dispositivos sem fio está estimulando

esforços na adaptação quase total de qualquer tecnologia já desenvolvida aos

computadores de mesa (desktops) para que estejam disponíveis aos

dispositivos móveis. Essa adaptação não é uma tarefa trivial.

As aplicações sem fio devem trabalhar dentro das restrições dos

dispositivos, tais como:

Page 54: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 54/72

54

• Pouca memória: os dispositivos como telefones celulares e  pagers  

possuem memórias limitadas, obrigando a considerar o

gerenciamento de memória um fator primordial.

• Baixo poder de processamento: os dispositivos de sem fio também

possuem uma potência de processamento limitada (variando de

32Kbytes a 64Mbytes).

• Entrada de dados: as capacidades de entrada são limitadas. A

maioria dos telefones celular dispõe de uma entrada com doze

botões: sendo dez números e alguns símbolos especiais como (*) e

(#), como mostrado na Figura 12. Já Palmtops possuem entrada

através de canetas ou teclados alfanuméricos.

Figura 12. Teclas de um telefone celular.

• Tela: O vídeo pode ter uma dimensão pequena (96  pixels de largura

por 54  pixels comprimento) e monocromático. A quantidade de

informações que se pode escrever em uma tela de um telefone

celular é bastante limitada.

É fácil perceber as limitações dos dispositivos, mas, além disso, não se

pode deixar de mencionar em que condições esses dispositivos operam:

• As Redes Wireless possuem baixa largura de banda.

• As Redes Wireless estão sujeitas a mais erros do que a redes com

fio.

A grande mobilidade dos dispositi vos pode gerar perda da conexão.

Page 55: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 55/72

55

6.2 Desafios para o desenvolvimento sem fio

Como mencionado anteriormente, desenvolver aplicativos para

dispositivos sem fio é uma tarefa desafiadora. Na seção abaixo serão

apresentados alguns dos principais pontos que os desenvolvedores de

aplicações sem fio devem estar atentos antes de iniciar a construção de uma

aplicação.

6.2.1 Transmissão de Erros

As mensagens enviadas sobre conexões sem fio estão sujeitas a

interferência e à demora, isso pode alterar o conteúdo recebido pelo usuário

do dispositivo de destino ou pelo servidor. É necessário assegurar que o

aplicativo esteja preparado para resolver estes problemas. Erros de

transmissão podem ocorrer em qualquer ponto de uma transmissão sem fio e

em qualquer ponto quando se envia ou recebe uma mensagem. Eles podem

acontecer depois que um pedido foi iniciado, no meio da transmissão, ou

depois que uma resposta foi enviada.

Os protocolos de rede de sem fio são capazes de descobrir e corrigir

alguns erros, mas é preciso que o programador faça estratégias para

tratamentos de erros que são prováveis de acontecer [11].

6.2.2 Latência

Latência é o tempo que uma mensagem leva até chegar ao seu destino.

A Latência é principalmente afetada pela natureza de cada sistema que emite

a mensagem, e pelo tempo de processamento necessário em cada nó de origem

até o destino.

É importante lembrar que uma mensagem pode ser entregue para um

usuário muito tempo depois de ser enviada. Uma demora longa poderia ser

devido a problemas de cobertura ou erros de transmissão ou o dispositivo do

Page 56: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 56/72

56

usuário pode estar desligado ou ter ficado sem a bateria. Alguns sistemas

continuam tentando transmitir a mensagem até que seja entregue. Outros

sistemas armazenam a mensagem que não pode ser enviada em determinado

momento, e quando o dispositivo for reconectado à rede, a mensagem é

enviada. A grande preocupação é evitar que sejam enviadas informações

desatualizadas.

6.2.3 Segurança

Quaisquer informações transmitidas sobre redes sem fio estão sujeitas a

interceptações. Algumas informações podem ser confidenciais, como números

de cartão de crédito e outras informações pessoais. Para prover uma solução

de segurança fim a fim, deve-se implementar a segurança nas duas partes,

tanto no cliente quanto no servidor, e estar assegurado que os sistemas

intermediários, também sejam seguros.

Uma solução para utilizar quando as informações manipuladas são

altamente confidenciais seria a criptografia, onde o remetente codifica os

dados antes de transmiti-los pela rede sem fio, e o receptor autorizado recebe

os dados codificados e os decifra usando uma tecla especificada.

As aplicações de Comércio Eletrônico utilizam o Protocolo de

Transferência de Hipertexto Seguro (HTTPS), que é o HTTP sobre a Camada

de Sockets Seguros1

(SSL). O SSL trabalha de forma eficiente com comércio

eletrônico e existem expectativas que ele seja bastante utilizado pelo m-

commerce2

também. Para J2ME já existe uma versão do SSL para dispositivos

móveis chamado kSSL( Kilo Safe Sockets Layer).

1Protocolo de segurança da Web criado pela Netscape.

2 Comércio Eletrônico feito através de dispositivos móveis. 

Page 57: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 57/72

57

6.3 Diretrizes para o Desenvolvimento de Aplicações Móveis 

Nesta seção, serão apresentadas algumas diretrizes úteis durante o

processo de desenvolvimento de aplicações para dispositivos móveis [21]. Sãoelas:

• Ambiente: Fazer uma pesquisa sobre o ambiente em que a aplicação será

utilizada, antes de começar o desenvolvimento da aplicação. Deve-se

primeiro saber as necessidades dos usuários em potenciais, os requisitos

impostos pelas redes e em que plataformas o aplicativo funcionará

(telefones celulares,  palmtops, etc);

• Dividir as Tarefas da Aplicação: É preciso pensar cuidadosamente quanto à

decisão de quais operações devem ser feitas no servidor e quais devem ser

feitas no dispositivo móvel. MIDlets permitem localizar muitas da

funcionalidades do aplicativo no dispositivo, podem recuperar dados do

servidor, processá-los e exibi-los na tela do dispositivo localmente. Esta

abordagem reduz a interação com a rede sem fio, conseqüentemente

diminuindo o tráfego da rede;

• Representação dos dados: Os dados podem ser representados de muitas

formas, uns mais compactos do que outros. Deve-se considerar

representações disponíveis e escolher aquelas que exigem menos bits para

ser transmitidos. Por exemplo, números normalmente são muito mais

compactos se transmitidos na forma binária do que se transmitidos na

forma de string;

• Latência da Mensagem: Em algumas aplicações, pode ser possível fazer

outras tarefas enquanto uma mensagem está sendo processada. Se a demora

é considerável, é importante manter o usuário informado do progresso da

transmissão.

• Simplicidade da Interface: Manter a interface do aplicativo simples e

intuitiva, de forma que o usuário raramente precise consultar o manual do

usuário para fazer uma tarefa. É importante reduzir a quantidade de

informações exibidas no dispositivo; apresentar as seqüências das entradas

do usuário com um número mínimo de acionamento de botão ou teclas;

oferecer sempre que possível listas de seleção para o usuário.

Page 58: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 58/72

58

6.4 Técnicas para otimizar a performance em aplicações J2ME

Aplicações utilizadas em dispositivos móveis devem ser de rápida

execução, pois quanto menor o tempo de execução, menos tempo de uso da

bateria, acarretando uma maior satisfação para o usuário [11]. Nesta seção são

apresentadas algumas técnicas de programação para aumentar a performance

de aplicações J2ME.

• Sempre que possível utilizar variáveis locais ao invés de variáveis de

classes, assim o acesso aos atributos de objeto é mais rápido com o uso

das variáveis locais;

• Tentar diminuir as chamadas de métodos, pois quando um método é

chamado, a máquina virtual java aloca um novo nodo da pilha de

execução, isso faz com que a memória seja sobrecarregada;

• Minimizar a criação de objetos, pois quando um objeto é criado, na

maioria das vezes ele será destruído, isso leva à uma diminuição da

performance da aplicação. Para evitar a criação de muitos objetos deve-

se utilizar objetos que possam ser “reciclados” ou mantidos na memória

o máximo de tempo possível;

• Tentar não concatenar strings, a concatenação com o operador + leva a

criação de um novo objeto e por conseqüência utiliza mais a memória e

o processamento; 

• Evitar a sincronização, se um método demora algumas frações de

segundos para executar, deve-se colocar a sua chamada em uma thread  

em separado.

Page 59: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 59/72

59

7. Estudo de Caso

7.1- Aplicação Agenda Telefônica

A aplicação desenvolvida corresponde a uma agenda telefônica que

utiliza a plataforma J2ME, ou mais especificamente, a configuração CLDC e o

perfil MIDP, vistos anteriormente. Trata-se de uma aplicação simples, que

pode ser utilizada em  pagers ou em telefones celulares que apresentam as

seguintes funcionalidades:

• Adicionar um contato;

• Excluir de um contato;

• Pesquisar um contato;

• Sair da Agenda.

Através da notação em UML, o diagrama de casos de uso abaixo (Figura

13), mostra as funcionalidades da Agenda:

Figura 13. - Diagrama de Casos de uso

Page 60: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 60/72

60

7.2 Estrutura da Aplicação  

Esta aplicação utiliza o pacote  javax.mi croedition.rms,    Record 

 Management System, que contém as classes necessárias para implementar

uma base de dados de armazenamento persistente no dispositivo. Essa base de

dados é chamada de persistente, porque mesmo quando o dispositivo sofre

reboots, troca de bateria ou desligamentos, os dados gravados permanecem

inalterados. A base é limitada em suas potencialidades para armazenar e

recuperar a informações devido às limitações do dispositivo.

7.3 O Processo de desenvolvimento

Para o desenvolvimento das aplicações, foi utilizado o J2ME Wireless

Toolkit 1.0.4, que é um Kit de Desenvolvimento Java (JDK) para J2ME,

proporcionando aos desenvolvedores de aplicações um ambiente para emular

dispositivos, ferramentas, documentação e exemplos necessários para o

desenvolvimento de aplicações MIDP/CLDC. O KtoolBar, que vem junto com

o J2ME Wireless Toolkit, é um ambiente de desenvolvimento mínimo que

apresenta uma interface gráfica de usuário (GUI), para compilar e executar os

aplicativos MIDP, porém ele não constitui um IDE devido a não apresentar

edição e depuração da aplicação, características obrigatórias em um IDE. A

Figura 14, mostra o KtoolBar.

Figura 14. KtoolBar

As aplicações podem ser desenvolvidas com um simples editor de texto

com os arquivos possuindo a extensão .java ou com ambientes de

desenvolvimento integrados (IDEs), compatíveis com o J2ME Wireless  

Page 61: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 61/72

61

Toolkit , que automatizam grande parte do desenvolvimento. Utilizando-se o

Sun One 4 Mobile Edition 4.0, ambiente de desenvolvimento que se integra

com o J2ME Toolkit  para simplificar a codificação e depuração na construção

de MIDlets. A figura 15 mostra o Sun One 4 Mobile Edition 4.0 integrado com

o emulador.

Figura 15. - Ambiente de Desenvolvimento Sun One Mobile Edition 4.0

Page 62: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 62/72

62

7.4 Resultados Obtidos

A seguir, são apresentadas as principais telas da aplicação

desenvolvida, para isso utilizamos um dos emuladores que fazem parte do

J2ME Wireless Toolkit . Trata-se de um dispositivo que simula um telefone

celular (Figura 16 e Figura 17).

Tela Principal Adicionar nome Confirmação

Figura 16. – Telas da aplicação.

Page 63: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 63/72

63

Pesquisar nome Resultado da pesquisa Deletar nome

Figura 17. – Telas da aplicação.

Page 64: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 64/72

64

8. Considerações Finais e Trabalhos Futuros

Neste trabalho, foi abordada uma tecnologia muito importante para a

consolidação do paradigma da computação móvel, a linguagem J2ME. Dentre

as muitas questões trazidas pela computação móvel, uma questão fundamental

seria os fatores que um desenvolvedor deve preocupar-se na implementação

de uma aplicação para um sistema móvel. Um sistema móvel tem diversas

peculiaridades que o torna diferente de um sistema distribuído comum. Dentre

as principais restrições estão: alto índice de perda de pacotes, baixa largura

de banda, alta latência de acesso aos dados, dispositivos com pouca

capacidade de processamento, armazenamento e energia, dentre outras

questões. Assim, J2ME auxilia o desenvolvimento de aplicações móveis,

tentando trabalhar da melhor forma possível, para que as restrições da

computação móvel não tornem as aplicações inviáveis para o uso.

As sugestões para trabalhos futuros abrangem os seguintes segmentos:

• Aplicações empresarias:

• Relatório de Despesas: Todas as empresas têm seus

“representantes externos”, especialmente o pessoal de vendas.

Essas pessoas estão constantemente em movimento. O relatório

de despesas pode ser integrado em um aplicativo disponibilizado

em um Palm; 

• Gerenciamento de Projetos: Desenvolvimento de gerenciadores

de projetos portáteis que possam ser executados de um PDA;

• Saúde:

• Acompanhamento médico: Estes tipos de aplicações podem ser

utilizados para armazenar e processar informações sobre

pacientes do hospital usando dispositivos portáteis em vez de

papel; 

Page 65: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 65/72

65

• Transporte: Aplicações que informem ao usuário de transporte

urbano, por exemplo, qual a li nha de ônibus que presta serviços a

um determinado bairro e quais os horários dos coletivos.

Informações que poderiam ser mostradas no visor de um telefone

celular; 

• Acesso a banco de dados remotos: Aplicações que permitam ao

usuário a partir de seu dispositivo de informação móvel acessar

os dados residentes em servidores remotos;  

• Entretenimento: Desenvolvimento de interfaces para jogos, que

podem ser baixados ou atualizados da Internet diretamente para

os dispositivos de informação móveis.  

Page 66: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 66/72

66

9. Referências

[1] A Brief History of the Green Project. Disponível em: http:

 //java.sun.com/people/jag/gr een/index.html.

[2] Cesta, A. Tutori al: “A Linguagem de Program ação Java™”. Instit uto de

Computação, 1996. Disponível em: http://www.dcc.unicamp.br/~aacesta.

[3] Connected, Limited Device Configuration. Specification Version 1.0a

Java 2 Platform Micro Edition, 2000. Disponível em:

http://www.sun.java.com/ .

[4] Dias, K. L; Sadok, D. F.H. Internet Móvel: Tecnologias, Aplicações e

QoS. XIX Simpósio Brasileiro de Redes de Computadores, 2001.

[5] Dornan, A. Wireless Communications – O Guia Essencial de

Comunicação sem Fio. Editora Campus, 2001.

[6] Gomes, A. Tutori al: “J2ME – Visão Geral”. Dispon ível em:

http://www.mundooo.com.br/  

[7] Gupta, V. Dass, A. Chauhan, Y. Cracking the Code – Wireless

Programming with J2ME™. Hungry Minds, Inc, 2002.

[8] Introduction to Java 2 Platform Micro Edition and KVM. Disponível

em: http://www.sun.java.com.

[9] Java    2 Platform Micro Edition (J2ME   ) Technology for Creating Mobile

Devices. White Paper. Sun, 2000. Disponível em http://www.java.sun.com/ 

Page 67: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 67/72

67

[10] Lisboa, C. PicoJav a : “A Máquin a Java Real”. Disponí vel em:

http://www.inf.ufrgs.br/procpar/disc/cmp157/trabalhos/sem2000-2/tf/lisboa ,

2000.

[11] Mahmoud, Q. H. Wireless Software Design Techniques

What every wireless software developer should know. May 2002. Disponível

em: http://wireless.java.sun.com/midp/articles/uidesign/ 

[12] Magan, M; Vargas, P; Azzolin, D. Técnicas para Desenvolvimento de

Aplicações Orientadas a Objetos Utilizando a Linguagem Java. III Simpósio

Brasileiro de Linguagens de Programação, 1999.

[13] MIDP Style Guide - Mobile Information Device Profile (MIDP)

1.0a. Sun, 2002. Disponível em: http://www.sun.java.com.

[14] Ribeiro, A. Serviços de Dados Móveis. Trabalho de Conclusão de

Disciplina - Sistemas de Comunicações Móveis. 2002.

[15] Rocha, H. Tutorial: “Desenvolvimento de Applets & Aplicações em

Java”. 1998.

[16] Sharma, C. Aplicações Comerciais da Internet Sem Fio. Editora Makron

Books, 2001

[17] Silva, W. Tecnologias Java para Sistemas Embarcados. Trabalho deConclusão de Curso. 2001

[18] Souza, B. O mais importante do Java – Esforço de uma comunidade.

Revista Java Magazine, Edição 4, 2003.

[19] Tanenbaum, A.S.; Woodhull, A.S. Sistemas Operacionais: Projeto e

Implementação, 2a. ed., Porto Alegre: Bookman, 2000.

Page 68: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 68/72

68

[20] The Java Language Environment - A White Paper May 1996 James

Gosling and Henry McGilton.

[21] Topley, Kim. J2ME in a Nutshell. The Mobile Information Device

Profile and MIDlets. O´REILLY, 2002.

[22] Walrand, J.; Varaiya, P. High-Performance Communication Networks,

Margan Kaufman, 2000.

Page 69: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 69/72

69

Lista de Siglas

1G - Primeira Geração de Sistemas Celulares.

2G - Segunda Geração de Sistemas Celulares.

3G -Terceira Geração de Sistemas Celulares.

AMPS - Advanced Mobile Telephone System.

AOT- Ahead-of-Time.

APIs - Applications Programming Interface.

BSs - Base Stations.

CDC - Configuração para dispositi vos conectados.

CDMA - Code Division Multiple Access

CG - Garbage Collector.

CLDC - Configuração para dispositivos com limites de conexão.

CORBA - Common Object Request Broker Architecture.

CVM - Compact Virtual Machine.

EJB - Enterprise J avaBeans.

ESN - Eletronic Serial Number.

FDMA - Frequency Division Multiple Access.

GSM - Global System for Mobile Communications.

HLR - Home Location Register.

HTTP - Protocolo de Transferência de Hipertexto.

HTTP - Protocolo de Transferência de HiperTexto.

HTML - Linguagem de Marcação de Hipertexto.

HTTPS - Protocolo de Transferência de Hipertexto Seguro.

IMT - 2000 - International Mobile Telecommunications 2000.

IP - Internet Protocol.

IS-136-Interim Standard 136.

IS-54 - Interim Standard 54

IS-95 - Interim Standard 95.

ITU - International Telecommunication Union.

J2ME - Java 2 Micro Edition

J2EE - Java 2 Enterprise Edition.

J2SDK- Java Software Development Kit 2.

Page 70: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 70/72

70

J2ME- Java 2 Micro Edition.

J2SE - Java 2 Standard Edition.

JAR - Java Archive.

JAD - Java Archive Descriptor.

JCP - Java Community Process.

JDBC - Java Data Base Connection.

JDK - Java Development Kit.

JIT - Just in Time.

JNI - Java native interface.

JNI - Java Native Interface.

JRE - Java Run-Time Environment.

JSR - Java Specification Request.

JTACS- Japan Total Access Communications Systems.

JVM - Java Virtual Machine.

KVM - Kilo Virtual Machine.

M-commerce - Mobile commerce.

MIN- Mobile Identification Number.

MIDP - Perfil do Dispositivo de Informações Móveis.

MS - Mobile Stations.

MSC - Mobile Switching Center.

NMT - Nordic Mobile Telephones system.

PDC - Personal Digital Cellular.

PDAs - Personal Digital Assistant

PSTN - Public Switched Telephone Network.

RMS - Record Management System.RMI - Remote Method Invocation

SIM - Subscriber Identification Module.

SMS- Short Messages Service.

SSL - Camada de Sockets Seguros.

TACS - Total Access Communications Systems.

TCP/IP - Transmission Control Protocol.

TDMA - Time Division Multiple Access

VLR - Visitor Location Register.

WAP - Wireless Application Protocol.

Page 71: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 71/72

71

XML - Linguagem de Marcação Extensível.

Page 72: Java Klessis Wescley

7/16/2019 Java Klessis Wescley

http://slidepdf.com/reader/full/java-klessis-wescley 72/72

Plataformas Utilizadas no Trabalho

Hardware: Microcomputador Pentium III – 128 MB de memória RAM.

Softwares:

• Emulador – J2ME Wireless Toolkit . Disponível para download em

http://www.java.sun.com ;

• Ambiente de Desenvolvimento Integrado – Sun One Mobile Studio

4. Disponível para download em http://www.java.sun.com ;

• Ferramenta Case – Rational Rose. Disponível em

http://www.rational.com/rose .