skoro instalacja javy ma JRE a JRE ma JVM to po co jeszcze dodatkowa JVM jest zainstalowana?

0

Na serwerze który działa na Ubuntu zainstalowałem javę

sudo apt install default-jre

po zainstalowaniu sprawdzam

java -version

i widzę:

openjdk version "17.0.10" 2024-01-16
OpenJDK Runtime Environment (build 17.0.10+7-Ubuntu-123.10.1)
OpenJDK 64-Bit Server VM (build 17.0.10+7-Ubuntu-123.10.1, mixed mode, sharing)

no i czytam, że JRE (chodzi mi o to co wyżej widać jako "OpenJDK Runtime Environment") zawiera w sobie

The JRE is responsible for providing the runtime environment necessary for executing Java applications. It includes the Java class libraries, the Java Virtual Machine (JVM), and other components required to run Java bytecode.

to skoro JRE zawiera już VM to po co ta VM poniżej (chodzi mi o "OpenJDK 64-Bit Server VM")?

0

Czemu zakładasz, że są 2 wirtualne maszyny? To poniżej zawiera się w tym powyżej.

0

Może po prostu (hgw czemu) komenda -version wypisuje co wie o JVM dwukrotnie.

0

Masz jedną javę zainstalowaną.
To po prostu kolejne linijki wyświetlane przez "-version".
Ta poniżej generalnie opisuje głównie VM/JITa i jego główne parametry:
OpenJDK 64-Bit Server VM (build 17.0.10+7-Ubuntu-123.10.1, mixed mode, sharing)
nie wiem czy gdzieś to jest standaryzowane, czy po prostu tak się autorom chciało napisać po prostu

0

Myślę, że autorowi wątku chodzi o to, że skoro JRE dostarcza JVM, to dlaczego "-version" zwraca oddzielnie wersję JRE i JVM tak jakby to były dwa oddzielne niezależne byty.

0

Kiedyś w HotSpot były 2 maszyny: jedna dla GUI, jedna "serwerowa" dla aplikacji WWW.

Moje przypuszczenie:

OpenJDK Runtime Environment (build 17.0.10+7-Ubuntu-123.10.1)

To jest RE - czyli jaki rt.jar jest na classpath'ie (java.util i przyjaciele).

OpenJDK 64-Bit Server VM (build 17.0.10+7-Ubuntu-123.10.1, mixed mode, sharing)

To jest faktyczny VM który jest użyty do zaczytania rt.jar oraz class'fileow twojej aplikacji.

0
0xmarcin napisał(a):

Kiedyś w HotSpot były 2 maszyny: jedna dla GUI, jedna "serwerowa" dla aplikacji WWW.

teraz jest dodatkowo graalvm:

https://www.graalvm.org/22.0/docs/getting-started/

java -version
openjdk version "17.0.2" 2022-01-18
OpenJDK Runtime Environment GraalVM CE 22.0.0 (build 17.0.2+5-jvmci-22.0-b02)
OpenJDK 64-Bit Server VM GraalVM CE 22.0.0 (build 17.0.2+5-jvmci-22.0-b02, mixed mode, sharing)

a w przypadku javy 8 numeracja jre i vmki jest oddzielna:

openjdk version "1.8.0_402"
OpenJDK Runtime Environment (build 1.8.0_402-8u402-ga-2ubuntu1~18.04-b06)
OpenJDK 64-Bit Server VM (build 25.402-b06, mixed mode)
Roman Mokrzan napisał(a):

to skoro JRE zawiera już VM to po co ta VM poniżej (chodzi mi o "OpenJDK 64-Bit Server VM")?

to jest właśnie ta vmka zawarta w jre

1 użytkowników online, w tym zalogowanych: 0, gości: 1