j-menezes:
juliocbq:
j-menezes:
juliocbq:
j-menezes:
Por questões de portabilidade.
Nem todo mundo tem tempo pra ficar aprendendo essa tonelada de arquitetura proprietária.
Mas entre dispositivos android não existe nenhum problema de compatibilidade. O sdk é claro e bem formulado.
O único problema que vejo o pessoal comentando é querer rodar software de plaraforma java em um android. E isso não tem cabimento porque são coisas diferentes.
Da minha parte refiro a ter uma jvm que roda byte code, evidentemente a partir de uma api desenhada pra isso e em java.
ok. então você precisa desenvolver para dispositivos java. Android está fora do seu escopo. Para desenvolver para android precisa usar o sdk do mesmo, não concorda?
Se já desenvolveram a api, seria somente usa-la diretamente em uma jvm ao inves do dalvik vm.
A google por questões politicas e financeiras, passou a usar o java como linguagem e não como plataforma. E isso pra quem desenvolve em java é péssimo, por causa da portabilidade.
Basta ter uma jvm dentro do kernel linux que é a base do android, esta por sua vez conversa com o hard e o sistema operacional,
como acontece em qualquer implementação de jvm pra qualquer so.
A jvm não tem que ficar dentro da dalvik vm e nem faz sentido isso.
Tem alguns estudando criar um JIT de byte code para dalvik vm em tempo de execução, mas este processo poderá deixa-la um pouco lenta, todavia melhor que nada.
J-Menezes, eu vou te explicar essa questão de linguagens e plataformas, mas não fica bravo não, porque não é uma ofensa.
A plataforma dalvik(me referindo ao hardware virtual ou não) executa instruções diferente das da plataforma java. A linguagem de programação é um ítem insignificante para a plataforma, pois a plataforma só entende assembly(seja bytecode, x86, amd_64, arm, etc…).
Um exemplo é a plataforma dotnet suportar java, c++, vbasic, c#, ruby, python… Pois existe um compilador que converte essa escrita para assembly da plataforma. Com java(plataforma) é a mesma coisa, consequentemente na dalvik também.
A dalvik desconhece Java(linguagem) pois ela lê o assembly que o compilador criou.
No caso os compiladores da dalvik(que geram seu set de instruções ou assembly) não servem para os java. A api do android só funciona para android. No caso o que a google te cede é um conversor(nem é compilador de certa linguagem) de bytecode java para dalvik.
A google usa a linguagem java por questões de marketing, porque muita gente sabe utilizá-la, mas para o fim de alcaçar mais desenvolvedores.
Ela não fica “dentro” (no sentido literal) do kernel, ela funciona no mesmo nível do kernel do android, conversando com ele próprio. Isso quer dizer que ela tem privilégio de rodar softwares em background como serviços(daemons se preferir),e acessar recursos que outros processos rodando a nível de aplicação não podem. A jvm se roda a nível de aplicação. Você não cria serviços com ela, e para conseguir esse feito precisa escrever um software em c ou c++ para alcançar isso. Na dalvik todos os widgets de interface gráfica(inclusive os processos rodando em background responsáveis pelo gerenciamento da bateria, etc…) não são código nativo, são bytecode. Até o próprio htc sense é bytecode. Praticamente tudo que roda no android é bytecode(tirando o kernel e módulos linux que fazem o I/O(baixo nível) com periféricos).
Então faz bastante sentido
Esse pdf explica isso:
http://davidehringer.com/software/android/The_Dalvik_Virtual_Machine.pdf
A dalvik já tem um jit desde a versão do froyo(2.2). Ela não precisa disso.
[youtube]http://www.youtube.com/watch?v=Ls0tM-c4Vfo[/youtube]