sábado, 20 de março de 2010

Um pouco de café e J2ME - Parte I

J2ME - Java Plataform Micro Edition - Conhecido comumente por J2ME ou JME (Como quiser!) - É uma coleção de APIs Java definidas através da JCP (Java Community Proccess) voltada p/ aplicativos que rodam em pequenos dispositivos e que possuem como características principais pouco recurso de memória,processamento e video (Celulares, Agendas Eletrônicas, PDAs, ou seja, todo tipo de dispositivo eletrônico que permita um sistema embarcado).


Aos poucos irei fazendo uma mescla de parte técnica com teórica p/ um melhor entendimento e não ficar tão chato, ou melhor, menos chato.............mas primeiramente pergunte-se, qual a idéia por trás do J2ME ??? Independente do tipo de dispositivo(Hardware) que possuímos, os produtos(softwares) devem interagir com diversos recursos que esses dispositivos dispõe de forma unica e simplificada ok ?? pois bem, sendo assim esse pensamento nos leva a idéia de máquina virtual, pois cada dispositivo executa internamente uma máquina virtual Java desenvolvida por seu fabricante e os aplicativos desenvolvidos por nós que são os aplicativos terceiros interagem apenas com a máquina virtual e não diretamente com o dispositivo, mas antes que você pergunte já vou dizer, a intenção disso é que os programadores Java não precisem conhecer nenhuma API especifica de cada dispositivo. Quer entender o por que ???


Situação:  Imagine você ou uma empresa desenvolvendo alguma aplicação e quando houver a necessidade de fazer manutenção ter que alterar o código fonte p/ cada fabricante diferente e podemos deixar a situação ainda pior, imagine que cada fabricante solte um novo modelo de aparelho no mercado e você tenha que adaptar seu código fonte p/ cada um deles ?? percebeu o problema ?? Cada dia que passa o hardware evolui mais e mais e por mais que se tente manter a padronização sempre acaba exigindo modificação na programação em baixo nível, por isso é extremamente eficiente que haja uma abstração de máquina virtual  p/ os dispositivos.


Um pouco da plataforma...


O J2ME é dividido em duas categorias de dispositivos, são elas: 


- Dispositivos consumidores de alto padrão: Essa categoria se encaixa no conceito de CDC (Connected Device Configuration), esse conceito inclui equipamentos do tipo TV set-top boxes, sistemas de entretenimento e navegação automobilística, entre outros...não entendesse ainda né?? claro! esse tipo de definição não deixa nada claro, pense em algum dispositivo eletrônico com uma boa capacidade de processamento, memória, maior banda de rede(Dispositivos com funcionalidades bem próximas as encontradas nos ambientes de execução JAVA p/ PC) em alguns casos é citado como mínimo p/ ser considerado um CDC as seguintes características, CPUs de 32-bits e um mínimo de 2MB de memória disponível para armazenamento da máquina virtual e bibliotecas de classes.


Um pouco mais de CDC em números...


Um dispositivo desse tipo tem um mínimo de memória ROM na casa de 512 KB e 256 KB de memória RAM e algum tipo de conexão de rede, isso tudo significa que CDC DEVE necessariamente suportar uma JVM completa como definida na especificação da plataforma JAVA 2, as configurações da J2ME são descritos de forma bem genérica baseado na capacidade de memória sendo especificadas a quantidade mínima de ROM RAM 


- Dispositivos consumidores de baixo padrão: Essa categoria se encaixa no conceito de CLDC (Connected Limited Device Configuration) que inclui celulares, agendas eletrônicas, terminais de ponto de venda, entre outros dispositivos que fazendo uma analogia, são dispositivos mais limitados em termos de processamento, memória etc... mínimo p/ ser considerado CLDC 6-bits ou 32-bits e um mínimo de 128KB à 512KB de memória disponível para a implementação da platafoma Java e aplicações compatíveis.


Um pouco mais de CLDC em números...


Quanto ao CLDC digamos que é o que mais nos interessa atualmente pois engloba os Smartphones e outros tipos de PDAs, são especificados dispositivos desse tipos aqueles que possuem por volta de 128 KB e 512KB de memória disponível p/ a plataforma JAVA e aplicações compativeis. A JVM  p/ esse tipo de dispositivo é bem reduzida, conhecida como KVM, a letra K é devido a unidade de Kilobyte e não Megabyte como na JVM p/ PC e CDC.


Pois então como funciona a KVM já que é tão limitada ??


Como é uma máquina virtual reduzida a KVM não consegue fazer tudo que uma JVM faz no J2SE, ela inclui apenas um subconjunto de bytecode padronizados, ou em poucas palavras, a verificação das classes é dividida entre o dispositivo CLDC e algum mecanismo externo.
                                                           
Os dois conceitos nos dias atuais...


Nos dias atuais o conceito que sem dúvidas mais está presente no nosso dia-dia são os CLDCs, fato esse que pode ser confirmado principalmente pelos telefones celulares  presentes nas nossas vidas, não temos somente um aparelho capaz de fazer ligações, atualmente eles INCLUSIVE fazem ligações, ou seja, temos tantas funções agregadas que nos permitem chama-los de Smartphone, além disso com a evolução das redes(3G, logo mais 4G e outras como LTE) e dos microchips a tendência é que os aparelhos deixem cada vez mais de ser limitados e acabem passando de CLDC p/ CDC.


Bom o post de hoje foi uma introdução aos conceitos básicos do J2ME(ainda tem mais, antes de entrarmos no código fonte em si), os posts serão feitos por partes e não muito extensos de forma com que o conteúdo possa ser absorvido mais facilmente, senão fica muito cansativo p/ o leitor um post muito extenso, estou aberto a comentários e sugestões


Abaixo algumas das bibliografias que pretendo seguir, bem legal e muito interessante em termos de teoria e exemplos iniciais e lembre-se de COLABORAÇÃO, dêem sua opinião,sugiram, critiquem, enfim...


ahhh!!! e quanto ao café, o meu já acabou enquanto escrevia o post! hehe :-)


Fui...


Créditos de Imagem: wjrsp


Bibliografia I - Programação JAVA para WIRELESS
Bibliografia II - Beginning J2ME: from novice to professional





0 comentários:

Postar um comentário