Artigo Java Magazine 44 - A Plataforma Java ME

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

Comece a conhecer a tecnologia Java ME em profundidade, dos princípios fundamentais a detalhes de configurações, perfis e APIs.

Esse artigo faz parte da revista Java Magazine edição 44. Clique aqui para ler todos os artigos desta edição

A Plataforma Java ME

Parte 1: Conceitos e APIs

Comece a conhecer a tecnologia Java ME em profundidade, dos princípios fundamentais a detalhes de configurações, perfis e APIs

Nestes mais de quatro anos de Java Magazine, todos os artigos desta coluna, cobrindo variados temas e APIs, tiveram uma coisa em comum – o requisito mínimo da plataforma Java SE, e algumas vezes também da Java EE. Mas não é só em direção ao high-end, às grandes aplicações corporativas, que a tecnologia Java evoluiu. Também é notório o sucesso do Java, em anos recentes, em toda espécie de equipamentos limitados, de smart cards a PDAs, comumente chamados "dispositivos" (devices). E esta área de aplicação tem se tornado cada vez mais importante. Em especial devido à popularização mais recente no Brasil de dispositivos de amplo consumo, como modelos acessíveis de telefones celulares, que já suportam a versão "micro" do Java.

A partir desta edição, iniciamos uma série de artigos cobrindo a plataforma Java ME. Este primeiro artigo irá apresentar a Java ME em geral. O objetivo será situar o leitor no complexo universo de padrões e implementações da Java ME, já discutir um pouco questões de projeto específico para dispositivos limitados, e "sobrevoar" diversos tópicos que mais tarde iremos tratar de forma aprofundada.

Aprender a programar para Java ME não é só uma questão de conhecer novas APIs e ferramentas. Para quem está habituado a servidores cheios de gigabytes e gigahertz, o desenvolvimento "micro" apresenta uma mudança de paradigma, sendo preciso repensar várias práticas e técnicas de design e de programação. Nesta série, procuraremos explorar também este aspecto do Java ME. Nos artigos que se seguirão, cobriremos APIs específicas, otimização e outros tópicos importantes. Nosso foco será a configuração CLDC e o perfil MIDP, ou seja, celulares, por ser a plataforma que terá o maior interesse prático para a maioria dos leitores.

A plataforma Java ME

Todo texto introdutório sobre Java ME inclui alguns conceitos e diagramas fundamentais, dos quais também não podemos fugir. Precisamos começar pela estrutura de Configurações, Perfis e Extensões da Java ME. A Figura 1 (fonte: Sun) é uma visão atualizada e detalhada da plataforma.

 

Figura 1. A plataforma Java ME com suas configurações, perfis, e APIs. Existem APIs definidas nos níveis de perfil (“API”) e de configuração (não mostradas), e também APIs de extensão que às vezes são compartilhadas por diferentes configurações (nas "fronteiras"). Além disso, há algumas APIs e padrões que não fazem parte oficialmente da plataforma Java ME mas podem ser oferecidas em implementações de Java ME, especialmente a RealTime Specification for Java.

A maior diferença de paradigma entre os padrões Java SE e EE e a Java ME é que esta não tem uma definição única. O problema é que o hardware ao qual a Java ME se destina é bem mais heterogêneo, em desempenho e em funcionalidades, do que computadores desktop ou servidores. E não há folga que permita impor o peso de APIs que não sejam realmente úteis em cada dispositivo, apenas para manter um ideal de portabilidade.

Por exemplo, precisamos de APIs para multimídia porque existem dispositivos (como PDAs e celulares atuais) com telas de boa resolução, câmeras, e capacidade de processamento e memória suficiente para tocar e até gravar vídeos (entre outros recursos multimídia). Mas o que fazer com dispositivos mais modestos, como um celular simples com tela em preto-e-branco, nenhuma câmera, pouca memória, talvez até CPU fraca demais para codificar vídeo? Se a plataforma Java ME obrigasse tal produto a carregar APIs de multimídia, estaria apenas desperdiçando seus já limitados recursos.

Isto é ainda mais verdadeiro considerando que estes dispositivos são muito mais fechados que um PC: embora existam algumas opções de atualização (inclusive ROMs atualizáveis), a maioria das funcionalidades, seja de software ou hardware, ou vem de fábrica ou não é disponível. Não fariam sentido imposições como "vamos obrigar todos os celulares a ter a API para Bluetooth", pois na grande maioria dos aparelhos que não tenham a capacidade de comunicação Bluetooth, isso não é um item opcional que possa ser instalado pelo usuário.

O resultado desta realidade é que a Java ME é estruturada em subconjuntos de funcionalidade. Existem três níveis de divisão: Configuração, Perfil e Extensões.

Configuração

Uma configuração é uma especificação de capacidades da plataforma subjacente (a JVM, e indiretamente, o hardware). A configuração define uma divisão vertical do mercado, orientada pela capacidade dos dispositivos.

 

Configuração

Especificação

Observações

Connected Device Configuration (CDC)

v1.0: JSR 36

v1.1: JSR 218

CPU de 16 bits ou mais, 192 Kb de memória, rede intermitente / de baixa qualidade

Connected, Limited Device Configuration (CLDC)

v1.0: JSR 30

v1.1: JSR 139

CPU de 32 bits, 768 Kb de memória, rede confiável e de desempenho razoável

Tabela 1. Configurações da Java ME.

A Tabela 1 lista as configurações existentes atualmente. E como você pode ver pela Figura 1, a CLDC é (grosso modo) um subset da CDC; assim, a maioria das aplicações escritas para a CLDC irá funcionar em implementações da CDC, fora poucas exceções.

Bons exemplos de plataforma CDC são os set-top boxes[1], servidores embarcados (ex.: o software de gerenciamento de um roteador de alta capacidade), ou PDAs / palmtops de alta capacidade. No lado da CLDC, o melhor exemplo é o telefone celular. Os celulares modernos têm capacidade de comunicação contínua e de boa velocidade, mas ainda de alto custo, por isso se encaixam perfeitamente nos limites da CLDC.

A exigência mínima de hardware de cada configuração determina diversas funcionalidades que esta configuração suportará ou não, Por exemplo, a CLDC não suporta a JDBC devido ao tamanho e complexidade desta API e à sua dependência de uma conexão de rede de funcionamento contínuo e qualidade e desempenho razoáveis. Já a CDC, mais folgada em ambos os quesitos, tem a possibilidade de suportar a JDBC.

Perfil

Dentro de cada configuração, temos uma divisão "horizontal" que diferencia os dispositivos pela sua aplicabilidade. Dispositivos de capacidade semelhante, mas utilização distinta, implementarão perfis (profiles) diferentes. (É possível para um mesmo dispositivo implementar mais de um perfil.)

 

Perfil CDC

Especificação

Observações

Foundation Profile

v1.0: JSR 46

v1.1: JSR 219

Dispositivos sem nenhuma capacidade gráfica

Personal Basis Profile

v1.0: JSR 129

v1.1: JSR 217

Dispositivos com display simples, com suporte à AWT e parte da Java 2D. É uma versão “light” do Personal Profile

Personal Profile

v1.0: JSR 62

v1.1: JSR 216

Suporte quase total às APIs do J2SE 1.3 e algumas da J2SE 1.4. Substitui a antiga plataforma Personal Java

Tabela 2. Perfis da CDC.

A CDC suporta os perfis mostrados na Tabela 2. Todos os perfis da CDC são definidos como subconjuntos da J2SE (versões 1.0: J2SE 1.3, versões 1.1: J2SE 1.4). Os perfis mais avançados são subconjuntos mais completos, ou seja, suportando um número maior de APIs. Devido à maior proximidade com a J2SE, a CDC evita a necessidade de muitas APIs específicas. Por exemplo, a AWT é suportada nos perfis que suportam GUIs, portanto não precisamos de uma API nova como a LCDUI do CLDC/MIDP. Ainda assim, a CDC suporta algumas APIs específicas ao Java ME: as de I/O (GCF) e segurança (as quais veremos na discussão da CLDC), além de uma API exclusiva à CDC, a XLet, para gerenciar aplicações ou serviços simples[2].

Por exemplo, na comparação entre o Foundation Profile e o Personal Basis Profile, somente o último suporta os pacotes java.awt e java.beans; já na comparação entre este perfil e o Personal Profile, somente este último suporta os pacotes java.applet e java.awt.datatransfer.

 

Perfil CLDC

Especificação

"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?