java klessis wescley
TRANSCRIPT
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
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.
...........................................
...........................................
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: _____________
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 £
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
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
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.
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.
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
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.
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].
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.
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ã.
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.
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.
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.
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.
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.
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.
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
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
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].
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].
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].
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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].
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.
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
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.
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
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.
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].
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.
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.
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;
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
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;
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;
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.
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.
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
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 é
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.
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:
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.
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
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.
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.
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.
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
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
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
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.
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.
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;
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.
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/
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.
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.
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.
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.
7/16/2019 Java Klessis Wescley
http://slidepdf.com/reader/full/java-klessis-wescley 71/72
71
XML - Linguagem de Marcação Extensível.
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 .