Por que apps java no Pc precisam da JRE e no Android não? O Android usa JVM?

Eu vi um esquema, mostrando como o java funciona, e vi que em alguns casos, usam interpretadores no lugar do compilador, e em outros, o código é diretamente interpretado por uma "cpu java". O que isso significa? Onde são usadas cpus java? É comum?

O google “fundiu” o mecanismo da jvm dentro do linux que originou o kernel android (e o android, por fim).

1 curtida

huuum, interessante, mas
O que é “cpu java”?

Desde que: cpu seja central process unit, cpu java nada mais é que a própria jvm.

1 curtida

Pode posta um link ou imagem desse esquema que você viu, para entendermos do que você está falando?

Respondendo suas perguntas:

Por que apps java no Pc precisam da JRE e no Android não?

O Android vem com uma VM embutida própria, portanto não precisa de uma VM à parte como nos PCs (JRE, por exemplo).

O Android usa JVM?

Usa uma VM própria. Como dito pelo darlan acima, é fundida com o próprio sistema.

Eu vi um esquema, mostrando como o java funciona, e vi que em alguns casos, usam interpretadores no lugar do compilador, e em outros, o código é diretamente interpretado por uma "cpu java. O que isso significa?

Sem links de referência, não dá pra saber bem do que você está falando.

Onde são usadas cpus java? É comum?

Se for o que imagino, são sistemas onde a JVM está codificada no hardware. E não são comuns.

Não é o caso do Android, onde a VM é software.

Abraço.

1 curtida

Ok, interessante. Vou procurar o link aqui e mandar

https://www.google.com/url?sa=i&source=images&cd=&ved=2ahUKEwj9jMWB__HmAhWyGLkGHQVAChMQjRx6BAgBEAQ&url=http%3A%2F%2Fwww.silviogarbes.com.br%2Fdesenvolvimento-web%2Ftutorial-de-programacao-java&psig=AOvVaw2EyyB1B3FGYbqNpKBM5htS&ust=1578503789190637

Esse é´o link da imagem

Basta olhar para a imagem e entender que se trata de um SO java.

1 curtida

Vlw

Como já disseram o Android não usa uma Java Virtual Machine, ele usa sua própria VM.

Só que essa VM não é apenas uma outra VM que executa Java. Na verdade ela não executa Java.

Enquanto uma JVM executa arquivos .class que seguem o formato definido aqui:
https://docs.oracle.com/javase/specs/jvms/se13/html/jvms-2.html#jvms-2.1

A Dalvik ou o ART executam arquivos .dex que seguem o formato definido aqui:
https://source.android.com/devices/tech/dalvik/dex-format

Mais informação aqui: https://source.android.com/devices/tech/dalvik

Só pra ficar claro até onde o Android usa Java de fato, o processo é o seguinte:

  1. O código Java é compilado para bytecode no formato class usando o javac normalmente
  2. Usa-se a ferramenta d8 para compilar os bytecodes Java para os bytecode DEX
4 curtidas

Não sabia disso, por isso que quando eu descompactava os apks, eu via um tanto de arquivos .dex no lugar de .class
Que legal

1 curtida

Bom o pessoal já respondeu e muito bem esse tópico.
Mas os caras da Sun eram mais sonhadores que negociantes, e tenho saudades deles.
Do JavaOS ( descontinuado )

Olha que brinquedinho legal esse, Java CPU Card e JCOP - Java Card Operating System (Esses tão bem vivos)

VIU, REALMENTE EXISTIU UMA CPU JAVA KKK, Então isso era um projeto da sun… Interessante. O java sempre me surpreendendo. Vivendo e aprendendo

Ainda existe. ( risos)
Pequenos dispositivos é um mercado gigantesco, maior que desktop.
Ele é mais silencioso tambem, porque você usa um pequeno dispositivo e não vê de cara o que tem lá dentro.

1 curtida