j-menezes:
marcosalex:
juliocbq:
Ok marcos, mas eu não consigo entender o seguinte:
O que é write once run anyware é a plataforma(Não faz sentido a linguagem rodar em qualquer lugar porque ela não roda nada). A linguagem não tem nada haver com isso:
Se a linguagem não seguir a spec, não roda na virtual machine então não é linguagem java.
Entendeu agora, juliocbq ?
A coisa toda é muito confusa.
O que roda na Dalvik VM é bytecode dalvik e não bytecode Java, claro porque a dalvik NÃO é uma JVM, e nunca disse que era, blz.
A linguagem usada para programar para android é Oracle Java, até aqui eu acho que não problema algum, se houvesse problema o google ja teria retirado isso aqui do site:
The Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language
http://developer.android.com/guide/basics/what-is-android.html:
OK.
Entao o Android SDK disponibiliza as API(as libs) com os classes especificas do android, tipo Activity, Services, Broadcast e por ae vai.
Bom até aqui acho que não foge do normal, estamos no eclipse, usando o JDK, com as lib do android desenvolvendo um app java normal, tirando a api do android o resto é tudo do JDK, int, String, ArrayList, etc, até aqui continuo achando que não tem problema algum.
Agora tu manda ele fazer o build, aqui começa a coisa toda, ai ele pega teus .class e converte para .dex, que é bytecode dalvik, depois compacta tudo num .apk, semelhante a um .jar, estes .dex é que vao executar na dalvik, a dalvik tem que ter a implementação de tudo que tu usou, List, String, ArrayList etc, e é aqui que acho que a confusão começa, no código fonte da dalvik, pois os caras tiveram que implementar tudo, poderiam ter chamado de DalvikArrayList, mas parece que usaram os mesmos nomes de classes e pacotes, apesar de apenas o rangeCheck ter código identico.
Mas a questão não é o google dizer que tu programa em java para android, isto esta certo e a oracle não esta reclamando disto, ela esta reclamando da implementação da Dalvik, que usou a mesma estrutura de pacotes e nomes de classes do JDK, alem de ter copiado o rangeCheck.
Em momento algum do processo eu vi alguma menção da Oracle dizendo que o google não poderia dizer que se programa em android, o que esta la pra todos verem é a questão de copyright(estruturas as API’s, pacotes e classes, alem de copia de código fonte), e agora na segunda etapa do processo, vem a questão de patente, que se restaram duas, e mais uma vez, eu não vejo nada haver com usar o nome java:
The two remaining patents ? U.S. Patents 6,061,520 and RE38,104, aka ?520 and ?104 ? are related to the underpinnings of the Java virtual machine, a piece of software that runs applications written in the Java programming language…
As the two sides battle over patent ?104 ? which describes a ?method and apparatus for resolving data references in generated code? ? the arguments will revolve around the term ?symbolic reference? and how this applies to software compilation, the process of turning programming code into executable software. A ?symbolic reference? tags data with a name rather than its numeric memory location, and the two are then dynamically resolved. Google will argue that it does not use symbolic references, Jacobs said, but Oracle will argue otherwise. ?The evidence is the source code,? he said.
The ?520 patent describes a ?method and system for performing static initialization.? Basically, this is a way of consolidating classes of files, allowing virtual machines to execute less code than they otherwise would. Here the key term is ?simulated execution.? Oracle claims Google uses simulated execution with Dalvik, while Google says it doesn?t simulate ? it merely parses files.