Machina virtual Java

De Wikipedia, le encyclopedia libere
Machina virtual Java
instantia de: run-time system[*], computing platform[*], cross-platform software[*], virtual machine[*]
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 qui exeque le programmas traducite in bytecode post un prime compilation.

Principio[modificar | modificar fonte]

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

  1. Un programmator usa un editor de texto o un ambiente de disveloppamento integrate (IDE) como Eclipse, NetBeans o IntelliJ IDEA pro scriber un o plus classes Java.
  2. Un compilator transforma le programma in bytecode, qui es un legier abstraction del codice machina.
  3. Le bytecode es providite a un machina virtual Java qui lo exeque.

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 a partir de altere linguages como Scala, Clojure o Groovy[1].

Le JVM es definite per un specification, mantenite per Sun (nunc Oracle). Qualcunque systema qui se comporta in un maniera coherente con tal specification es considerate como un particular implementation del JVM. Il ha implementationes de programmatura per practicamente tote le systemas operative moderne, gratuite o commercialisate. In addition, il ha implementationes special pro particular ambientes hardware/software, como telephonos mobile e palmari), e etiam 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 unic de execution functionante qualcunque specificitate del systema de operation subordinate:

Programmatura applicative Java
Java Virtual Machine
Systema de operation

Implementationes[modificar | modificar fonte]

OpenJDK e HotSpot[modificar | modificar fonte]

Ultra a diriger le specification del machina virtual Java, Oracle provide un implementation appellate HotSpot qui es gratuite e in parte in codice aperite. Le parte non distribuibile reguarda le font, le audio, le securitate e le cryptographia[2][3]; le implementationes de Oracle es normalmente vidite como implementationes de referentia sed es anque largemente usate per usatores final, interprisas e institutiones.

IcedTea e Zero[modificar | modificar fonte]

Pro substituer le partes de HotSpot qui era sub licentia non aperite, 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 famiglias de processatores in comparation al machina virtual de Oracle. Pro facer isto, tote le codice assembly presente in HotSpot ha essite rescribite in C++, in un maniera de poter esser compilate super plus de architecturas.[6]

Le altere implementationes[modificar | modificar fonte]

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

Compilation Just-In-Time[modificar | modificar fonte]

Le prime implementationes del machina virtual Java esseva interpretes. Iste solution totevia se es revelate un pauco efficiente, quando le programmas interpretate esseva 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, qui al momento del lancear traduce al volo le bytecode Java in un programma normal in le linguage machina del computator 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 applicationes Java decisemente plus rapide 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.

Referentias[modificar | modificar fonte]

  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 Archived 2014-10-06 at the Wayback Machine
  5. Zero and Shark FAQ. Archivo del original create le 2009-08-23. Recuperate le 2016-05-07.
  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[modificar | modificar fonte]

Nota
Nota