“O nome de desenvolvimento do smartphone é Buffy, como a Caça-vampiros”
fala sério!
“O nome de desenvolvimento do smartphone é Buffy, como a Caça-vampiros”
fala sério!
Emulador é fundamental para desenvolvimento. Sem falar que é algo simples, não tem motivo para ser tão ruim no Android.
[quote=vargas][quote=Marky.Vasconcelos][quote=j-menezes]
Da minha parte refiro a ter uma jvm que roda byte code, evidentemente a partir de uma api desenhada pra isso e em java.
[/quote]
E o que a Dalvik Virtual Machine faz com o byte code gerado a partir do codigo fonte Java?
Simplesmente não vale a pena ter uma JVM SE em um dispositivo movel, o Swing não seria a melhor solução para desenvolver aplicativos. Por isso temos esse SDK do Android com uma API bem mais util para mobile.[/quote]
Sem emulador o SDK do Android pra mim é inútil.[/quote]
Sem JVM, o JDK é inutil pra mim.
[quote=Marky.Vasconcelos][quote=vargas]
Sem emulador o SDK do Android pra mim é inútil.[/quote]
Sem JVM, o JDK é inutil pra mim.[/quote]
JavaME 2 x 0 Android
[quote=vargas][quote=Marky.Vasconcelos][quote=vargas]
Sem emulador o SDK do Android pra mim é inútil.[/quote]
Sem JVM, o JDK é inutil pra mim.[/quote]
JavaME 2 x 0 Android[/quote]
Essa eu simplesmente não entendi, por favor explique melhor.
[quote=juliocbq][quote=j-menezes][quote=juliocbq][quote=j-menezes]
Por questões de portabilidade.
Nem todo mundo tem tempo pra ficar aprendendo essa tonelada de arquitetura proprietária.
[/quote]
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.[/quote]
Da minha parte refiro a ter uma jvm que roda byte code, evidentemente a partir de uma api desenhada pra isso e em java.[/quote]
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?[/quote]
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.
[quote=j-menezes][quote=juliocbq][quote=j-menezes][quote=juliocbq][quote=j-menezes]
Por questões de portabilidade.
Nem todo mundo tem tempo pra ficar aprendendo essa tonelada de arquitetura proprietária.
[/quote]
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.[/quote]
Da minha parte refiro a ter uma jvm que roda byte code, evidentemente a partir de uma api desenhada pra isso e em java.[/quote]
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?[/quote]
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.
[/quote]
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]
JIT o android tem a tempos.
Agora não estou entedendo uma coisa, que PORTABILIDADE é esta toda que tanto clamam?
Querem programar apenas em java(JME) e rodar em todas as plataformas? Neste caso acho melhor começar a reclamar com a Apple, que foi quem começou isto, Google e por ultimo Microsoft, pedindo para eles “JVM JÁ”.
Agora como programador java, eu acho uma maravilha o google ter pelo menos mantido a linguagem java, como linguagem do Android, e não vejo porque ele, sozinho, deveria ter licenciado a JME, afinal iria ficar a mesma coisa que é atualmente: Google com JME vs iOS com seu Objective-C vs Microsoft com seu sei la o que(C#?), iria fazer alguma diferença para nos programadores? Não!
isto sem falar que JME é um dinossauro velho, que nem evoluia a um bom tempo, o Google ia ter que licenciar, e reinventa-lo, para chegar no que é os OS’s para smartphones atuais, sem falar nas questões do TCK e a amarração com a Oracle!
Então acho que fez foi muito bem em nao ter ido pelo caminho do JME. Pra mim não faz diferença nenhuma, afinal to programando em java. talvez se os outros(Apple e Microsoft) tivessem adotado o JME e apenas o Android não, ai, e somente ai, eu ficaria descontente pelo android ter seguido outro caminho! Mas como cada um seguiu o seu caminho(bem longe do JME), não vejo motivo para este MIMIMI todo!
Para quem acha que o bytecode da Java SE é igual ao da Dalvik.
No link acima(pdf) existe um diagrama mostrando as diferenças…
editado - pdf mostra a estrutura dos pacotes
A diferença do byte code aqui
http://www.antforge.org/blog/2011/04/27/daneel-difference-between-java-and-dalvik
[quote=juliocbq][quote=j-menezes][quote=juliocbq][quote=j-menezes][quote=juliocbq][quote=j-menezes]
Por questões de portabilidade.
Nem todo mundo tem tempo pra ficar aprendendo essa tonelada de arquitetura proprietária.
[/quote]
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.[/quote]
Da minha parte refiro a ter uma jvm que roda byte code, evidentemente a partir de uma api desenhada pra isso e em java.[/quote]
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?[/quote]
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.
[/quote]
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][/quote]
Sei muito bem a diferença de linguagem e plataforma.
Antes que você me acuse de eu ficar bravo, mas pode acusar se desejar, porque não quero e não gosto de controlar opiniões, leia com calma o que eu escrevi.
O que se quer é que um JIT para executar (byte code java) para dalvik vm em tempo de execução. E não um JIT que converta as instruções binarias em nativas, isso aí já tem mesmo.
Em resumo, rodar java diretamente respeitando uma implementação.
Disse tudo! Não existe 1 app android que tenha tornado seu criador milionário, mas em iOS tem!
[quote=fredferrao]JIT o android tem a tempos.
Agora não estou entedendo uma coisa, que PORTABILIDADE é esta toda que tanto clamam?
Querem programar apenas em java(JME) e rodar em todas as plataformas? Neste caso acho melhor começar a reclamar com a Apple, que foi quem começou isto, Google e por ultimo Microsoft, pedindo para eles “JVM JÁ”.
Agora como programador java, eu acho uma maravilha o google ter pelo menos mantido a linguagem java, como linguagem do Android, e não vejo porque ele, sozinho, deveria ter licenciado a JME, afinal iria ficar a mesma coisa que é atualmente: Google com JME vs iOS com seu Objective-C vs Microsoft com seu sei la o que(C#?), iria fazer alguma diferença para nos programadores? Não!
isto sem falar que JME é um dinossauro velho, que nem evoluia a um bom tempo, o Google ia ter que licenciar, e reinventa-lo, para chegar no que é os OS’s para smartphones atuais, sem falar nas questões do TCK e a amarração com a Oracle!
Então acho que fez foi muito bem em nao ter ido pelo caminho do JME. Pra mim não faz diferença nenhuma, afinal to programando em java. talvez se os outros(Apple e Microsoft) tivessem adotado o JME e apenas o Android não, ai, e somente ai, eu ficaria descontente pelo android ter seguido outro caminho! Mas como cada um seguiu o seu caminho(bem longe do JME), não vejo motivo para este MIMIMI todo![/quote]
Eu não posso mudar o mundo pra ser feliz.
No entanto uma observação com calma, verificamos que tudo isso nos remete a uma velha questão, a “bagunça proprietária”.
Na área de microcontroladores, não sei se você já programou pra isso, mas acredite é uma bagunça de tantas versões de linguagens C, que dá pra ficar louco com o tamanho da manutenção e do aprendizado.
Como seria bom se fosse padronizado pela sun e tivesse java em todos eles, não como obrigação e sim como opção.
No caso dos tablets já tem um povo aí tirando o android e colocando o linux ubuntu.
Veja bem : Eu desenvolvi uma linguagem para o mercado financeiro e ela gera executavel em byte code java.
Digamos que eu queira que ela rode em android, ios, firefox os e tantos outros por ai. vai vendo a dor de cabeça sem java.
Se gera bytecode java, entao teoricamente tu consegue programar para android, não á atoa que tem gente programando em Scala para Android, e tantas outras, até Ruby(ou JRuby), ja tem!
Se não me engano, o sdk do android não pega a linguagem java e transforma para o dalvik(apk), ela pega o bytecode, entao qualquer linguagem que rode na JVM e que tenha um compilador que gere bytecode java, daria para programar para android!
E ainda tem o NDK do android, onde tu pode programar nativo em C e C++.
[quote=fredferrao][quote=j-menezes]
Eu não posso mudar o mundo pra ser feliz.
No entanto uma observação com calma, verificamos que tudo isso nos remete a uma velha questão, a “bagunça proprietária”.
Na área de microcontroladores, não sei se você já programou pra isso, mas acredite é uma bagunça de tantas versões de linguagens C, que dá pra ficar louco com o tamanho da manutenção e do aprendizado.
No caso dos tablets já tem um povo aí tirando o android e colocando o linux ubuntu.
Como seria bom se fosse padronizado pela sun e tivesse java em todos eles, não como obrigação e sim como opção.
Veja bem : Eu desenvolvi uma linguagem para o mercado financeiro e ela gera executavel em byte code java.
Digamos que eu queira que ela rode em android, ios, firefox os e tantos outros por ai. vai vendo a dor de cabeça sem java.
[/quote]
Se gera bytecode java, entao teoricamente tu consegue programar para android, não á atoa que tem gente programando em Scala para Android, e tantas outras, até Ruby(ou JRuby), ja tem!
Se não me engano, o sdk do android não pega a linguagem java e transforma para o dalvik(apk), ela pega o bytecode, entao qualquer linguagem que rode na JVM e que tenha um compilador que gere bytecode java, daria para programar para android!
E ainda tem o NDK do android, onde tu pode programar nativo em C e C++.
[/quote]
No caso do Android, na hora de distribuir os executáveis eu teria que ter uma versão binaria para android não ?
[quote=j-menezes][quote=fredferrao][quote=j-menezes]
Eu não posso mudar o mundo pra ser feliz.
No entanto uma observação com calma, verificamos que tudo isso nos remete a uma velha questão, a “bagunça proprietária”.
Na área de microcontroladores, não sei se você já programou pra isso, mas acredite é uma bagunça de tantas versões de linguagens C, que dá pra ficar louco com o tamanho da manutenção e do aprendizado.
No caso dos tablets já tem um povo aí tirando o android e colocando o linux ubuntu.
Como seria bom se fosse padronizado pela sun e tivesse java em todos eles, não como obrigação e sim como opção.
Veja bem : Eu desenvolvi uma linguagem para o mercado financeiro e ela gera executavel em byte code java.
Digamos que eu queira que ela rode em android, ios, firefox os e tantos outros por ai. vai vendo a dor de cabeça sem java.
[/quote]
Se gera bytecode java, entao teoricamente tu consegue programar para android, não á atoa que tem gente programando em Scala para Android, e tantas outras, até Ruby(ou JRuby), ja tem!
Se não me engano, o sdk do android não pega a linguagem java e transforma para o dalvik(apk), ela pega o bytecode, entao qualquer linguagem que rode na JVM e que tenha um compilador que gere bytecode java, daria para programar para android!
E ainda tem o NDK do android, onde tu pode programar nativo em C e C++.
[/quote]
No caso do Android, na hora de distribuir os executáveis eu teria que ter uma versão binaria para android não ?[/quote]
Assim:
1 - Faço o programa em Scala;
2 - Compilo ele, o que vai gerar um .jar com os .class tudo dentro, com a ajuda do Proguard no caso do scala!
3 - o SDK do android pega este .jar e converte para .apk;
Scala
http://insella.se/blog/scala-on-android/
Ruboto - Ruby on Android
http://ruboto.org/
Python
No caso do NDK, que é proprio do Android, com ele fica facil para empresa que ja tem uma app em outra plataforma ter o mesmo app no android, isto se ela fez o app em C ou C++, ja teria boa parte da logica em *.so, o Opera mesmo, se olhar a pasta dele, tem um tanto la!
[quote=fredferrao][quote=j-menezes][quote=fredferrao][quote=j-menezes]
Eu não posso mudar o mundo pra ser feliz.
No entanto uma observação com calma, verificamos que tudo isso nos remete a uma velha questão, a “bagunça proprietária”.
Na área de microcontroladores, não sei se você já programou pra isso, mas acredite é uma bagunça de tantas versões de linguagens C, que dá pra ficar louco com o tamanho da manutenção e do aprendizado.
No caso dos tablets já tem um povo aí tirando o android e colocando o linux ubuntu.
Como seria bom se fosse padronizado pela sun e tivesse java em todos eles, não como obrigação e sim como opção.
Veja bem : Eu desenvolvi uma linguagem para o mercado financeiro e ela gera executavel em byte code java.
Digamos que eu queira que ela rode em android, ios, firefox os e tantos outros por ai. vai vendo a dor de cabeça sem java.
[/quote]
Se gera bytecode java, entao teoricamente tu consegue programar para android, não á atoa que tem gente programando em Scala para Android, e tantas outras, até Ruby(ou JRuby), ja tem!
Se não me engano, o sdk do android não pega a linguagem java e transforma para o dalvik(apk), ela pega o bytecode, entao qualquer linguagem que rode na JVM e que tenha um compilador que gere bytecode java, daria para programar para android!
E ainda tem o NDK do android, onde tu pode programar nativo em C e C++.
[/quote]
No caso do Android, na hora de distribuir os executáveis eu teria que ter uma versão binaria para android não ?[/quote]
Assim:
1 - Faço o programa em Scala;
2 - Compilo ele, o que vai gerar um .jar com os .class tudo dentro, com a ajuda do Proguard no caso do scala!
3 - o SDK do android pega este .jar e converte para .apk;
Scala
http://insella.se/blog/scala-on-android/
Ruboto - Ruby on Android
http://ruboto.org/
Python
No caso do NDK, que é proprio do Android, com ele fica facil para empresa que ja tem uma app em outra plataforma ter o mesmo app no android, isto se ela fez o app em C ou C++, ja teria boa parte da logica em *.so, o Opera mesmo, se olhar a pasta dele, tem um tanto la![/quote]
Então esse é o problema, pois minha ide gera um .class ou jar, então eu teria que disponibilizar para meus usuários uma outra versão somente para o android, e outra versão para firefoxOS e outra para o IOS etc.
sendo que o objetivo deste .class ou .jar é ser executado dentro de um ambiente próprio onde tudo lá é java.
programar em java sem jvm é osso.
O JIT é outra coisa menezes. Ele é um compilador que otimiza o bytecode diretamente e converte as partes mais críticas do software para instruções nativas da plataforma e ganhar desempenho com isso.
O que você quer é um hotspot todo dentro da dalvik, para que seu bytecode jvm não precise ser convertido para o dalvik.
Eu imagino que isso não seja possível por questões de licenciamento da oracle. Aquele mesmo impasse com o harmony da apache.
[quote=fredferrao]
Assim:
1 - Faço o programa em Scala;
2 - Compilo ele, o que vai gerar um .jar com os .class tudo dentro, com a ajuda do Proguard no caso do scala!
3 - o SDK do android pega este .jar e converte para .apk;
Scala
http://insella.se/blog/scala-on-android/
Ruboto - Ruby on Android
http://ruboto.org/
Python
No caso do NDK, que é proprio do Android, com ele fica facil para empresa que ja tem uma app em outra plataforma ter o mesmo app no android, isto se ela fez o app em C ou C++, ja teria boa parte da logica em *.so, o Opera mesmo, se olhar a pasta dele, tem um tanto la![/quote]
Você pode pegar qualquer bytecode “Java SE” (precisa excluir frameworks como swing, etc…) e converter para set o dalvik. É praticamente 100% de compatibilidade.
O ndk é mais usado para você expandir o kernel com módulos. Criando periféricos etc…
[quote=j-menezes][quote=fredferrao][quote=j-menezes]
Eu não posso mudar o mundo pra ser feliz.
No entanto uma observação com calma, verificamos que tudo isso nos remete a uma velha questão, a “bagunça proprietária”.
Na área de microcontroladores, não sei se você já programou pra isso, mas acredite é uma bagunça de tantas versões de linguagens C, que dá pra ficar louco com o tamanho da manutenção e do aprendizado.
No caso dos tablets já tem um povo aí tirando o android e colocando o linux ubuntu.
Como seria bom se fosse padronizado pela sun e tivesse java em todos eles, não como obrigação e sim como opção.
Veja bem : Eu desenvolvi uma linguagem para o mercado financeiro e ela gera executavel em byte code java.
Digamos que eu queira que ela rode em android, ios, firefox os e tantos outros por ai. vai vendo a dor de cabeça sem java.
[/quote]
Se gera bytecode java, entao teoricamente tu consegue programar para android, não á atoa que tem gente programando em Scala para Android, e tantas outras, até Ruby(ou JRuby), ja tem!
Se não me engano, o sdk do android não pega a linguagem java e transforma para o dalvik(apk), ela pega o bytecode, entao qualquer linguagem que rode na JVM e que tenha um compilador que gere bytecode java, daria para programar para android!
E ainda tem o NDK do android, onde tu pode programar nativo em C e C++.
[/quote]
No caso do Android, na hora de distribuir os executáveis eu teria que ter uma versão binaria para android não ?[/quote]
Tem sim, pois a jvm é uma coisa e a dalvik é outra coisa. O sdk do android usa os compiladores do jdk para gerar o bytecode, então o conversor entra em ação e gera um outro para o dalvik.
Concordo com você, mas para atingir outras plataformas diferentes(que não suportam java) precisa se ajustar ao sdk próprio delas. Eu até gosto disso porque ganho know how.