Uma coisa excepcional do Java ME é que uma vez o código escrito roda em qualquer dispositivo compatível (ou quase, quem ja programou em Java ME sabe que não é bem assim
)
A coisa que acho mais irritante sobre o Java ME é que nunca se tem acesso aos recursos mais poderosos dos dispositivos em que o aplicativo esta sendo executado …
Não se tem acesso a uma API para GUI mais poderosa, que grande parte dos dispositivos Java ME possuem.
Não se tem acesso a diversos recursos dos dispositivos mais High End que rodam também o Java ME …
Todos os desenvolvedores que conheço que começaram a programar em Java ME para PALM por exemplo ficaram decepcionados …
tudo bem, alguns de vocês vão dizer que com CDC/Personal Profile isto não é bem verdade, mas quantos dispositivos com suporte a CDC vocês conhecem? eu conheço Pocket PCs (em todas as suas variações) e os comunicators da Nokia apenas …
Neste ponto o Java ME, sai perdendo feio para linguagens onde não se tem tanta portabilidade por exemplo, mas que mesmo assim possuem versões para diversas plataformas …
Como por exemplo, o Ruby e o Python que esta semana descobri que possuem também versões para Symbian …
Ruby para Symbian e Python para Symbian
Estas duas linguagens de script possuem versões para diversas plataformas, claro não tentam ser 100% compatíveis entre estes ports, mas em cada um dos ports disponibilizam acesso a várias APIs nativas de cada plataforma em que podem ser executadas …
Eu acho que isto poderia ser resolvido no Java ME com mais profiles por exemplo, e não apenas o MIDP, mas acho pouco provavel que o JCP aprove algo assim …
o que vocês acham disto?
Se você gostou deste post, lembre-se de assinar o RSS feed do blog, para ser notificado de novos posts!
Tags: Java
Cara realmente é lamentavel o suporte j2me para palm! tive que usar o superwaba! espero uma futura melhora!
Reply to this commentagora espero que isso melhore num futuro próximo!
Além das restrições, achar uma JVM para alguns tipos de dispositivos é como procurar agulha no palheiro.
Reply to this commentAlém deste problema de compatibilidade existem casos em que os fabricantes de um determinado aparelho “afirmam” que possui suporte a toda a especificação MIDP 1.0, por exemplo, mas na hora que você coloca para roda começa a surgir diversos problemas. Outro grande problema que vejo é que cada fabricante desenvolve da forma que acha conveniente algumas API de acesso ao celular, então você precisa montar diversos builds para diversas famílias somente para atender estes casos, isso é realmente frustrante. Bom, sei que vai sair à especificação MIDP 3.0, alguém tem alguma informação sobre isso?
Reply to this commentAcho que o problema maior do JavaME (CLDC) são as máquinas virtuais. Ao contrário do JavaSE/JavaEE em que temos um grande desenvolvedor fazendo VMs com comportamento (quase) iguais em sistemas totalmente diferentes, no JavaME temos vários fabricantes implementando máquinas virtuais, fazendo o possível para não ter que mexer nos seus SOs proprietários para dar suporte total às especificações. Pra ajudar, nas especificações do MIDP e CLDC tem coisa demais deixada como não especificada, deixando a cargo dos fabricantes.
Resultado? Mesmo programas simples, usando Form e Items padrões não tem comportamento linear… o fabricantes se sentem livres de colocar entradas nos menus para permitir a saída do programa, os Commands são alocados conforme seu tipo, não há como agrupá-los de uma determinada forma, ou forçá-los a serem colocados na Soft Key 1 ou 2 (parece que isso será solucionado no MIDP 3.0). Soube que há casos em que o celular é MIDP 2 e não tem os listeners especificados. Por exemplo, soube que um celular da Motorola não tem a classe ItemStateListener (ou ela não funciona, não tenho certeza), portanto, se tentar utilizar essa classe (uma das mais úteis em formulários, na minha opinião), seu Midlet irá abortar, pois ele não encontrará essa classe. Se for pesquisar a quantidade de bugs das VMs, ficará assustado. A Nokia mantém uma lista enorme de bugs que afetam seus aparelhos, alguns afetando classes inteiras de aplicativos, outros afetando aparelhos específicos. Nos outros fabricantes não é muito diferente, mas alguns não oferecem suporte algum ao desenvolvedor.
Há problemas relativos a desleixo do fabricante. Por exemplo, a resolução de tela em modo normal e tela cheia é diferente na maioria dos aparelhos, mas alguns não informam a resolução correta ao usar em tela cheia. É um inferno pra desenvolver. Não raro aplicações gráficas precisam de dezenas de ports pra conseguir atingir um número razoável de aparelhos suportados, ou apelar pra bibliotecas como o J2ME Polish (http://www.j2mepolish.org/)
Já trabalhei com desenvolvimento em JavaME pra Palm e PocketPC, e tive resultados muito bons, Portamos uma aplicação em 2 horas, basicamente trocamos duas telas que eram feitas com Canvas pra usar Form (era um teclado virtual, e no Palm já havia a área de escrita pra isso). Detalhe, em ambos usando a J9 da IBM, então a máquina virtual na medida do possível fornece um comportamento igual entre as plataformas. Agora vou começar a trabalhar com desenvolvimento de jogos pra celular, daí vou ver como é a real situação da compatibilidade nesse ambiente.
Pra terminar, além do problema da compatibilidade por bugs de implementação e suporte a bibliotecas específicas (Bluetooth, acesso ao PIM e arquivos, multimídia, etc), há ainda o fator performance. Em aparelhos com suporte à mesma tecnologia, há uma diferença absurda de performance. Há uma lista aqui (http://www.club-java.com/TastePhone/J2ME/MIDP_Benchmark.jsp), com resultados de um benchmark com vários aparelhos… em alguma casos, há uma diferença de 500% ou mais em dois aparelho com teoricamente o mesmo suporte (ambos com MIDP2 ou MIDP). Fica difícil escrever um código que rode bem nos dois.
Reply to this commentAcho que o propósito de JavaME é diferente de outras linguagens para dispositivos móveis.
Assim como Java, o lema de JavaME é portabilidade.
Enquanto os fabricantes não começarem a viabilizar isso não vai mudar.
Se tratanto de pcs quantos SOs existem? 4 ou 5 (os mais utilizados)…
Agora para dispositivos, cada modelo novo… um SO… e isso dificulta muito
Agora que está começando a mudar.. com o symbiam aih…
Quem sabe um dia… a gente compre um celular.. com sistema operacional A, B ou C…
e entramos no site da Sun e baixamos o JVM para o SO do nosso celular…
seria bem massa!
flw
Reply to this commentAhh soh mais um coisa….
Jah pensou… compro celular e antes de baixar a JVM,
eu formato ele e coloco um sistema open source…
HUAhuAHUAHa
aih sim ia ficar bom
Reply to this comment