Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fernandes
Java ME e Android: Onde manter o foco?
-
Upload
rodolfo-chaves-fernandes -
Category
Technology
-
view
5.170 -
download
2
Transcript of Java ME e Android: Onde manter o foco?
Java ME e Android: Onde manter o foco?
Ambas plataformas são direcionadas a dispositivos que possuem processamento,
memória e vídeo limitado, onde o foco maior está em celulares e PDA’s. No mundo
modernizado em que vivemos, onde os dispositivos móveis tornaram-se equipamentos
onipresentes, possuindo o mesmo poder de processamento que computadores de 10
anos atrás, é necessário pensar em tecnologias para desenvolvimento para estes
aplicativos. Dentre as tecnologias, atualmente as que mais se destacam para o
desenvolvimento móvel é o Java ME e o Android.
Java ME
A plataforma Java Micro Edition é direcionada a dispositivos limitados. Além de
celulares e PDA’s é comum encontramos aplicações para TVs, controles remotos, entre
outros sistemas embarcados. O Java está presente na grande maioria dos celulares,
sendo que hoje existe no mercado inúmeros jogos e aplicações desenvolvidos em Java.
Um grande diferencial do Java ME sobre as outras plataformas de desenvolvimento é a
acessibilidade e portabilidade, pois com um baixo custo suas aplicações poderem ser
executadas nas plataformas de várias empresas de dispositivos móveis, isto acontece
graças a KVM (Kilo Virtual Machine), uma máquina virtual com funções reduzidas
construída especialmente para implementar as necessidades e restrições impostas pela
configuração CLDC (Connected Limited Device Configuration).
Vale ressaltar que a plataforma Java em si possui uma vasta gama de APIs e
frameworks (o que não acontece com as outras plataformas), com o objetivo de otimizar
o desenvolvimento de aplicações muitas das funcionalidades necessárias já foram
codificadas, basta encontrar a API ou o framework que a implementem).
Os programadores Java ME também podem contar com várias API´s, frameworks,
ferramentas, emuladores e plug-ins que enriquecem o arsenal do desenvolvedor. Mas
nem tudo é vantagem na plataforma Java ME, além da dificuldade de programar com
pouca memória e processamento (limitação do dispositivo), o Java ME tem uma série
de limitações no que diz respeito ao acesso de funcionalidades nativas do aparelho, pois
a segurança do Java está centrada no conceito de sandbox, que consiste na idéia de que
quando um aplicativo precisa ser executado em uma máquina, deseja-se prover um meio
no qual o aplicativo possa rodar, porém este meio possui seus limites. O fato é que o
Java ME está presente nos aparelhos da maioria dos fabricantes (ex. Nokia, Motorola,
Samsung) - e dessa maneira o hardware dos mesmos possuem uma série de
particularidades, o que torna praticamente impossível criar mecanismos genéricos para
acesso a recursos específicos do dispositivo.
Outra limitação do Java ME é o processo para manipulação dos dados persistidos.
A configuração CLDC do JavaME, esta disponível em praticamente todos os aparelhos
celulares Java enabled, possui uma grande limitação para manipulação de registro.
Nestes dispositivos, os registros são tratados como “arquivos binários”, ou seja, são
persistidos como um array de bytes, cabendo ao desenvolvedor elaborar lógicas para
separar os registros em campos, fazer pesquisas complexas, filtrar registros e até mesmo
recuperar um registro específico. Já a configuração CDC (Connected Device
Configuration), disponível para dispositivos não tão limitados quanto os CLDC, possui
uma máquina virtual mais completa e pode trabalhar com banco de dados relacional,
dando suporte inclusive a sintaxe SQL, porém não é a melhor alternativa quando é
necessário um bom desempenho das aplicações.
Então para este foco: "Desenvolvimento de aplicações móveis para grandes
corporações", creio que o Java ME não atenda com tanta eficiência quanto outras
plataformas disponíveis no mercado. Penso que o Java ME esteja destinado à aplicações
móveis voltadas para a "massa", usuários comuns.
Android
O Android é uma plataforma para dispositivos móveis com um sistema
operacional baseado em Linux - Criado pelo Google em consórcio com mais de 40
empresas. Utiliza uma máquina virtual, chamada Dalvik, projetada para otimizar a
memória e os recursos de hardware em um ambiente limitado. No entanto esta máquina
virtual não executa bytecodes no padrão da JVM (“Java Virtual Machine”), desta forma
é necessária a conversão do bytecode padrão da JVM para o formato do Android.
É a primeira plataforma open source para desenvolvimento de aplicações móveis,
portanto é livre para incorporar novas tecnologias, já que o Google optou por usar uma
máquina virtual própria, distanciando-se da Sun e JCP, ocasionando um rápido avanço
da plataforma. Por possuir um SO relativamente novo, esta tecnologia ainda está em
aceitação pelos usuários e desenvolvedores. Existem duas grandes vantagens nesta
plataforma, uma é o fato de já ser agregada com todas as funcionalidades que os
aparelhos móveis mais atuais fornecem, a outra é a criação do Android Market, a loja de
aplicativos da plataforma (semelhante a App Store do iPhone), que já vem integrada nos
aparelhos, desta forma o usuário pode escolher dentre milhares de aplicativos os que
mais lhe agradam. É importante ressaltar que os serviços da Google passam a ser
facilmente acoplados com as tecnologias móveis após o surgimento do Android, já que
o interesse e os investimentos atuais da empresa visam à mobilidade.
O Android foi construído com a intenção de permitir que os desenvolvedores
possam criar aplicações tirando maior proveito do que o aparelho possa oferecer. Tudo
é construído em Java, desta forma os desenvolvedores Java podem construir aplicativos
e disponibiliza-los facilmente. Os desenvolvedores têm acesso a mesma API utilizada
nos aplicativos centrais, podendo aproveitá-las livremente para acessar recursos nativos
do aparelho.
Por ser open source, voltam algumas polêmicas antigas: “Se todo mundo mexer
no código isso não vai virar uma bagunça?”.
Talvez, tanto que o SO já nasceu fragmentado, e precisa se padronizar. Mas
pensando desta forma, se o Linux é open source e possui várias distribuições, onde cada
usuário opta pela que mais lhe agrada, imagine se todos os usuários e desenvolvedores
mantivessem o foco em uma única distribuição. Será que esta distribuição iria tomar
proporções tão grandes a ponto de se tornar um SO referência tanto para leigos quanto
para desenvolvedores?
Além dos aplicativos feitos em Java, o Android possui um conjunto de bibliotecas
C/C++ usadas por diversos componentes que permitem trabalhar com arquivos de
mídia, exibição de conteúdo em 2D e 3D, inclusive bibliotecas implementadas
utilizando OpenGL e um poderoso e leve banco de dados relacional, o SQLite.
Este último é um grande diferencial em relação ao Java ME, pois o SQLite já
possui métodos de indexação. Com um gerenciador é possível criar um banco de dados
no ambiente de desenvolvimento e instalá-lo no dispositivo, o que acelera o processo de
desenvolvimento, visto que os dispositivos possuem um poder de processamento
limitado.
Apesar da grande quantidade de recursos e de funcionalidades que a plataforma
oferece, ainda está nascendo e algumas funcionalidades faltam ser implementadas, além
de possuir poucos aparelhos no Brasil que a suportem. Pode ser demagogia, mas
praticamente tudo que a Google põe a mão vira ouro! Então espere o melhor.
Conclusão
Ambas tecnologias se mostram bastante robustas no desenvolvimento móvel, mas
caso a intenção seja desenvolver aplicações atingir a maioria dos usuários e
dispositivos, com uma aplicação que não exige tanto processamento, mas sim
funcionalidade, o Java ME é o ideal, mas se o objetivo é ter acesso a todas
funcionalidades que o dispositivo oferece, trabalhar de uma forma genérica, sem que
haja restrições devido a portabilidade, inclusive com aplicações que exigem um bom
desempenho com banco de dados relacional, então o Android é a melhor opção. Porém
em algumas situações o programador se sente motivado em contornar as limitações da
plataforma, aceitando o desafio de trabalhar com a limitação do Java ME, e nessa
situações, com certeza o resultado final será mais satisfatório, visto que os aplicativos
podem rodar em diversos devices, sem a necessidade de um hardware específico. O
Java ME é limitado porque sua plataforma é enxuta, cujo foco é a filosofia “Write here,
run Anyware” (“Codifique uma vez, rode em qualquer lugar”).
Por Rodolfo Chaves Fernandes
Revisado pela equipe Java Móvel