Saltar al contento

Machina virtual Java

De Wikipedia, le encyclopedia libere
Machina virtual Java
instantia de: run-time system[*], computing platform[*], cross-platform software[*], virtual machine[*], technical standard[*], specification[*]
subclasse de: run-time system[*]


Commons: Java Virtual Machine

Le machina virtual Java, dicite anque Java Virtual Machine o JVM, es le componente del platteforma Java que exeque le programmas traducite in bytecode post un prime compilation.

Principio

Le passos que debe esser facite pro exequer un programma scribite in linguage Java son le sequente:

  1. Un programmator usa un editor de texto o un integrated development environment como Eclipse, NetBeans o IntelliJ IDEA pro scriber un o plus classes Java.
  2. Un programmatura de compilation transforma le programma in bytecode, que es un legier abstraction del codice machina.
  3. Le bytecode es fornite a un machina virtual Java que exeque lo.

Le bytecode es generalmente producite per le compilation de codices fonte (o file fonte) scribite in linguage Java, anque si il es possibile producer bytecode per partir de altere linguages como Scala, Clojure o Groovy[1].

Le JVM es definite per un specification, mantenite per Oracle. Qualcunque systema que se comporta in modo coherente con tal specification es considerate como un particular implementation del JVM. Il ha implementationes programmatura per practicamente tote le systemas operative moderne, sia gratuite que commercial. In addition, il ha implementationes special per particolari ambientes hardware/software, como telephonos mobile e palmari), e mesmo implementationes hardware como Jazelle.

Le disponibilitate de implementationes del machina virtual Java pro diverse ambientes operative es le clave del portabilitate de Java, proclamate in le slogan write once, run everywhere ("scribe un vice, exeque in tote locos"). Le machina virtual crea un ambiente homogenee de execution, que cela al programmatura Java (e dunque al programmator) qualcunque specificitate del systema de operation subordinate:

Programmatura applicative Java
Java Virtual Machine
Systema de operation

Implementationes

OpenJDK e HotSpot

Ultra a diriger le specification del machina virtual Java, Oracle forni un implementation appellate HotSpot que es gratuite e in parte open source. Le parte non distribuibile reguarda le font, le audio, le securitate e le cryptographia[2][3]; le implementationes Oracle son usualmente vidite como implementationes de referentia ma son anque largemente utilisate per usatores final, interprisas e institutiones.

IcedTea e Zero

Per substituer le partes de HotSpot que era sub licentia non open, le projecto IcedTea es nascite.[4] Le machina virtual disveloppate in tal projecto se appella HotSpot Zero Assembly, appellate anque simplemente Zero.[5] Le projecto ha anque le scopo de supportar un numero major de familias de processores in comparation al machina virtual de Oracle. Per facer isto, tote le codice assembly presente in HotSpot ha essite rescribite in C++, in modo a poter esser compilate sur plus architecturas.[6]

Le altere implementationes

Numerose altere partes forni regularmente implementationes del machina virtual Java, usualmente con le intento de competer con le implementation Oracle in quanto a performantias; in alcun casos illos son implementationes commercial. Son disponibile anque altere implementationes open source; inter le plus note on pote citar Waba[7]. Le specification del JVM son dictate e actualisate per le Oracle in quanto initiator e mantenitor del projecto, ma son sovente disattendite per multes del implementationes non-Oracle de JVM que son in circulation, specialmente per quanto reguarda le framework que cata JVM include. Dunque, le diverse JVM non son totalmente compatibile inter illos e on debe haber attention in le scriber le programmas, si on vole que illos fnctiona sur cata JVM. Le cosa melior a facer a tal scopo esserea non usar le ultime characteristicas del linguage introducite per le Oracle in le JVM plus recente e usar del API "stabile", dunque illos pote esser presente in le JVM Oracle de varie versiones.

Compilation Just-In-Time

Le prime implementationes del machina virtual Java era interpretes. Iste solution totevia ha revelate se pauco efficiente, in quanto le programmas interpretate era comocunque multo lente. Per iste motivo, tote le implementationes recente de machinas virtual Java ha incorporate un compilator just-in-time (JIT compiler), in altere parolas un compilator interne, que al momento del lancear traduce al volo le programma bytecode Java in un normal programma in le linguage machina del computer hospite[8]. In addition, iste recompilation es dynamic, in altere parolas le machina virtual analysa constantemente le modello de execution del codice (profiling), e optimisa ulteriormente le partes plus frequentemente exequite, durante que le programma es in execution.

Iste arrangiamentos, a precio de un parve periodo de attender in phase de lancear del programma, permitte de haber del applicationes Java decisemente plus veloces e legier. Totevia, anque assi Java resta un linguage minus efficiente que le linguages propriemente compilate como le C++, per discontar le facto de posseder stratos de abstraction in plus, e de implementar un serie de automatismos, como le garbage collector, que si de un latere illos sparnia tempore e errores in phase de disveloppamento del programmas, del altere latere illos consume memoria e tempore de processator central (CPU) in phase de execution del programma finite.

Notas

  1. The Adventurous Developer's Guide to JVM Languages. Recuperate le 2015-05-30.
  2. OpenJDK
  3. Oracle America vs Google, Corte de Appello Federal, le 9 de maio 2014
  4. Projecto IcedTea
  5. Zero and Shark FAQ
  6. Zero and Shark: a Zero-Assembly Port of OpenJDK
  7. Waba
  8. Haase, C. (2007). Consumer JRE: Leaner, Meaner Java Technology (in en). Sun Microsystem. Recuperate le 30 de maio 2015. 

Bibliographia

Nota
Nota