A plataforma Java

O surgimento da tecnologia Java se deu em 1991, na empresa Sun Microsystems, com o Green Project, que tinha como mentores Patrick Naughton, Mike Sheridan e o líder do projeto, James Gosling (JAVA, 2006).

1.1. As Principais caracteristicas da Linguagem Java.

A linguagem Java foi projetada tendo em vista os seguintes objetivos:

  • Orientação a objeto - Baseado no modelo de Smalltalk e Simula67;
  • Portabilidade - Independência de plataforma - "write once run anywhere”;
  • Recursos de Rede - Possui extensa biblioteca de rotinas que facilitam a cooperação com protocolos TCP/IP, como HTTP e FTP;
  • Segurança - Pode executar programas via rede com restrições de execução;

Além disso, podem-se destacar outras vantagens apresentadas pela linguagem:

  • Sintaxe similar a Linguagem C/C++;
  • Facilidades de Internacionalização - Suporta nativamente caracteres Unicode;
  • Simplicidade na especificação, tanto da linguagem como do "ambiente" de execução (JVM);
  • É distribuída com um vasto conjunto de bibliotecas (ou APIs);
  • Possui facilidades para criação de programas distribuídos e multitarefa (múltiplas linhas de execução num mesmo programa);
  • Desalocação de memória automática por processo de coletor de lixo (garbage collector);
  • Carga Dinâmica de Código - Programas em Java são formados por uma coleção de classes armazenadas independentemente e que podem ser carregadas no momento de utilização.

1.2. Edições Java

A versão Java 2 está dividida em:

  • Java 2 Standard Edition (J2SE): Tecnologia projetada para computadores pessoais e ambientes de trabalho.
  • Java 2 Enterprise Edition (J2EE): Tecnologia direcionada para aplicações baseadas no servidor, contendo suporte interno para JSP (JavaServer Pages), XML (eXtensible Markup Language) e servlets.
  • Java 2 Micro Edition (J2ME): Tecnologia direcionada para dispositivos com poucos recursos computacionais como, por exemplo, palms e telefones celulares.

A Figura 1 apresenta as edições da linguagem Java de acordo com os seus alvos de aplicação.

Edições da linguagem Java e seus respectivos alvos de aplicação
Figura 1. Edições da linguagem Java e seus respectivos alvos de aplicação.

A Plataforma Java 2 Micro Edition: J2ME

O Java Micro Edition é voltado para micro aplicações que rodam em micro processadores como os de celulares e PDA’s. A plataforma é direcionada a uma vasta gama de dispositivos que vai desde Smart Cards até celulares e PDA’s. Consiste de um conjunto de especificações organizadas em camadas que abrangem vários dispositivos e tecnologias.

2.1. A arquitetura J2ME

A arquitetura da plataforma J2ME é dividida em três camadas: Máquina Virtual, Configurações e Perfis, como na Figura 2.

A Arquitetura Java 2 Micro Edition (J2ME)
Figura 2. A Arquitetura Java 2 Micro Edition (J2ME)

A configuração é um conjunto de bibliotecas básicas disponíveis para o programador. Ela também define qual o nível de serviços e funcionalidades oferecidos pela máquina virtual. Uma configuração é definida para uma classe horizontal de dispositivos, ou seja, uma gama de dispositivos com diferentes aplicações, mas com características em comum. Por exemplo, dispositivos com comunicação wireless, abrangendo celulares, PDA’s, pagers, etc. No momento existem duas configurações definidas: O CLDC (Connected Limited Device Configuration), utilizado em dispositivos limitados como celulares, PDA’s, pagers, etc e o CDC (Connected Devide Configuration), utilizado em dispositivos com maior capacidade (de memória e processamento) como Sistemas de Navegação de Carros, Televisores com Conexão à Internet, etc.

O perfil define um conjunto de bibliotecas específicas para classes verticais de dispositivos. Ou seja, poderíamos ter um perfil para celulares, outro para PDA’s, etc. Um perfil é sempre especificado para uma determinada configuração, mas uma configuração pode dar suporte a vários perfis. Existem dois perfis definidos para o CLDC: o MIDP (Mobile Information Device Profile) e o IMP (Information Module Profile). O IMP é mais recente e é basicamente um subconjunto do MIDP e é utilizado em dispositivos com uma interface mais limitada.

A máquina virtual fica diretamente acima do sistema operacional do dispositivo. É ela quem define quais as limitações dos programas que executarão no dispositivo. A máquina virtual correspondente ao CLDC é chamada KVM, desenhada especialmente para dispositivos pequenos e com recursos limitados. A KVM mantém os aspectos centrais da Máquina Virtual Java e tem tamanho reduzido a algumas centenas de kilobytes, inclusive o K de KVM vem de kilo, uma alusão ao tamanho da máquina virtual.

Além das configurações e perfis, ainda existem as bibliotecas chamadas pacotes opcionais, que são bibliotecas de programação específicas a uma determinada tecnologia. Elas aumentam a capacidade do ambiente, caso estejam implementadas no dispositivo.

2.2. MIDlets

MIDlet é um aplicativo Java para executar em um dispositivo móvel (MUCHOW, 2004). Entrando mais fundo nesse conceito, a classe MIDlet constrói um aplicativo MIDlet, onde o método dessa classe é acessada pelo gerenciador de aplicações. Quando mais de uma MIDlet se encontram em uma mesma aplicação, dá-se o nome de MIDlet Suite.

Uma MIDlet é uma classe que estende a classe javax.microedition.midlet.MIDlet Seu ciclo de vida é dividido em três estados: Pausa, Ativa e Destruída. A MIDlet pode passar por cada um desses estados. A Figura 3 abaixo apresenta a máquina de estados que compõem o ciclo de vida da MIDlet.

Máquina de estados do ciclo de vida da MIDlet
Figura 3. Máquina de estados do ciclo de vida da MIDlet

Uma dada aplicação utiliza três métodos abstratos que são chamados pelo gerenciador de aplicações fornecidos pela classe MIDlet. São eles: startApp(), spauseApp() e sdestroyApp(). Logo abaixo é feita a descrição dos três estados presentes no ciclo de vida da MIDlet.

  • Pausa: Depois da entrada do construtor, ocorre a liberação de recursos de modo que a MIDlet fique em um estado de espera. Quando o gerenciador de aplicativos inicia essa MIDlet, a mesma pode mudar de Pausa para Ativa através do método startApp(), e de Ativa para Pausa, através do método pauseApp(), quantas vezes quiser.
  • Ativa: Ocorre no início da execução da MIDlet, através do método startApp() , devido a liberação de recursos.
  • Destruída: Neste momento, houve a liberação total dos recursos pela MIDlet através do método destroyApp(). Por fim, a MIDlet é desligada pelo gerenciador de aplicativos.