Atenção: esse artigo tem um vídeo complementar. Clique e assista!

De que se trata o artigo:

A intenção deste artigo é apresentar a plataforma Java ME para desenvolvedores iniciantes, mostrando como está organizada e seus principais componentes. Neste artigo serão explicados conceitos chave dessa tecnologia, além de como preparar um ambiente de desenvolvimento utilizando o NetBeans IDE.


Para que serve:

Desenvolver aplicações para dispositivos que tenham suporte a Java ME, mais precisamente dispositivos móveis, como celulares, que implementam a pilha CLDC/MIDP. Serve ainda como fonte de referência ao desenvolver aplicativos para outros dispositivos que utilizam o Java ME como plataforma de desenvolvimento, a exemplo de PDAs.

Em que situação o tema é útil:

Java ME está presente em um grande número de dispositivos, que vão desde receptores para TV a celulares. Conhecer esta plataforma é uma oportunidade para o desenvolvimento de aplicativos Java que vão além dos ambientes Web e Desktop.

Resumo DevMan:

Java ME é uma tecnologia criada para facilitar o desenvolvimento de aplicações para dispositivos com restrições no hardware, a exemplo de celulares e PDAs. Ela encontra-se dividida em um conjunto de especificações, como Configurações, Perfis e APIs opcionais para acomodar todos os dispositivos que possuem grandes diferenças em sua forma, função e recursos. Todas essas especificações ajudam o desenvolvedor a abstrair as diferenças de recursos de hardware e software presentes em tantos dispositivos que utilizam o Java ME.

O NetBeans IDE, juntamente com o Java ME SDK 3.0, formam o ambiente perfeito para o desenvolvimento de aplicações Java ME, em razão do poder de uma excelente IDE com a grande variedade de bibliotecas, emuladores e ferramentas presentes no SDK, tornando o desenvolvimento de aplicativos mais produtivo e rápido.

Java ME é uma tecnologia que visa facilitar o desenvolvimento de aplicações para dispositivos com restrições no hardware, geralmente não encarados como computadores, a exemplo de celulares, receptores para TV Digital, GPSs, dentre outros. Além de funcionar em dispositivos diferentes, permite que programas feitos para uma certa categoria de dispositivos seja portável entre eles, como um jogo criado para rodar tanto em celulares simples como em smartphones. Tudo isso é possível através da linguagem Java que estamos habituados, mas com algumas diferenças.

O presente artigo faz uma introdução a essa tecnologia, apresentando suas características, objetivo e como criar aplicações por meio de sua utilização. Para isso, serão expostos alguns conceitos chave, a saber, Configurações (Configurations) e Perfis (Profiles), dividindo em grupos os diversos dispositivos em que o Java ME está presente. Abordaremos ainda a preparação de um ambiente de desenvolvimento, mais precisamente a IDE NetBeans, com o intuito de criar sistemas Java ME.

Por fim, trataremos sobre MIDlets e, através da implementação de dois programas, aprenderemos como permitir a interação do usuário com a aplicação em ambientes móveis.

O que é Java ME?

Quando a linguagem Java foi lançada em 1995, trazia um objetivo audacioso: estar presente em todos os ambientes computacionais possíveis, seja ele Desktop, Web ou em pequenos dispositivos, permitindo que um programa escrito para um desses ambientes pudesse rodar nos outros sem grandes modificações. Pode-se dizer que esse objetivo foi em parte alcançado, pois nos dias de hoje a plataforma Java está presente em todos esses ambientes. Nos desktops temos o Java SE, que é o core da plataforma, possuindo as bibliotecas e especificações básicas para o desenvolvimento Java. No ambiente web e de aplicações empresariais aparece o Java EE, que é uma extensão ao Java SE, possuindo um número maior de pacotes e muitas especificações. Já no ambiente de dispositivos móveis, ou pervasivos, encontramos o Java ME (ver Figura 1), foco principal do presente artigo.

Figura 1. Java ME em face de outras tecnologias Java.

Em síntese, a plataforma Java ME consiste em uma família de especificações que definem um conjunto de versões mais enxutas do Java SE (Java padrão), sendo usadas para desenvolver aplicações para dispositivos eletrônicos com baixo poder de processamento e memória, mesmo que eles sejam tão diferentes entre si na forma e função.

Java ME encontra-se dividida em Configurações, Perfis e APIs opcionais. Configuração é uma especificação escrita para um grupo de dispositivos diferentes em função, mas com capacidade de processamento e memória parecidos, a exemplo de set-top boxes e GPSs. A configuração define também uma Java Virtual Machine (JVM) que obedeça estas restrições.

Perfil é uma camada de abstração sobre uma configuração, adicionando um conjunto de APIs de alto nível, como APIs para a construção de interfaces com o usuário e persistência. Essas APIs servem de base para o desenvolvimento de aplicativos para dispositivos com hardware (basicamente memória e processador) e função parecidas, a exemplo de celulares com sua diversidade de modelos e diferentes fabricantes. Uma configuração pode ter mais de um perfil associado a ela.

APIs opcionais definem funcionalidades adicionais que podem ser incluídas em uma configuração em particular. O conjunto formado por uma Configuração, um ou mais Perfis e APIs opcionais implementadas em um dado dispositivo é chamado de Pilha (Stack), como pode ser visto na Figura 2. Assim, uma pilha comum em Java ME é CLDC (Configuração) + MIDP (Perfil) + JSR 82 (API opcional).

Figura 2. Representação de Pilha (Stack).

Configuração (Configuration)

As configurações especificam um conjunto de serviços mínimos que serão utilizados pela aplicação, como o controle do ciclo de vida, criação de interfaces gráficas, serviços de persistência de dados, segurança, troca de dados por uma rede, entre outros serviços; no entanto, não fornece um tipo de classe para o gerenciamento destes. As classes de gerenciamento são disponibilizadas nos perfis e nas APIs opcionais.

Uma configuração também define uma JVM, capaz de prover esses serviços de baixo nível tendo em vista as restrições impostas pela própria natureza do dispositivo, a saber:

• O tipo e quantidade de memória disponível;

• O tipo de processador e sua velocidade;

• A forma de conexão em rede e acesso a Internet.

Devido à diversidade dessas características, encontradas nos dispositivos em que o Java ME está presente, o mesmo define duas grandes configurações: Connected Device Configuration (CDC) e Connected Limited Device Configuration (CLDC).

Connected Device Configuration (CDC)

Determina que os dispositivos tenham, pelo menos, 512 KB de memória ROM, 256 KB de memória RAM e possuam algum tipo de conexão com uma rede. A CDC foi desenvolvida visando dispositivos como set-top boxes, GPSs, fotocopiadoras, etc. Na CDC a JVM escolhida foi a CDC HotSpot.

A CDC HotSpot é baseada na JVM padrão do Java 1.4 (Java SE 1.4), com modificações para dispositivos com restrições de poucos recursos. As características mais importantes dessa máquina virtual são:

• Portabilidade;

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

• Suporte nativo a threads;

• Mapeamento de threads Java direto para threads nativas;

• Suporte a segurança, referências fracas, Java Native Interface (JNI), Remote Method Invocation (RMI) e Java Virtual Machine Debugging Interface (JVMDI).

...
Quer ler esse conteúdo completo? Tenha acesso completo