Java VM

Java VM
Java-Logo

Die Java Virtual Machine (abgekürzt Java VM oder JVM) ist der Teil der Java-Laufzeitumgebung (JRE) für Java-Programme, der für die Ausführung des Java-Bytecodes verantwortlich ist. Hierbei wird im Normalfall jedes gestartete Java-Programm in seiner eigenen virtuellen Maschine ausgeführt. Der andere Teil der Java-Laufzeitumgebung sind die Java-Klassenbibliotheken.

Die JVM dient dabei als Schnittstelle zur Maschine und zum Betriebssystem und ist für die meisten Plattformen verfügbar. (z. B. Linux, Mac, Palm OS, Solaris, Windows, usw.). Die JVM ist in den Programmiersprachen C und C++ geschrieben.

Die Bestandteile der JVM sind

  • Klassenlader (classloader und resolver),
  • Speicherverwaltung und automatische Speicherbereinigung (garbage collection) und die
  • Ausführungseinheit (execution engine).

Inhaltsverzeichnis

Sicherheitsvorteile

Die Java Virtual Machine bietet neben der Plattformunabhängigkeit auch einen Gewinn an Sicherheit. Suns JVM überwacht zur Laufzeit die Ausführung des Programms, verhindert also z. B., dass ein Programm über Arraygrenzen hinweg liest oder schreibt. Im speziellen Fall von Java fällt diese Überwachung sehr einfach aus, da Java keine Zeiger unterstützt. Somit werden Pufferüberläufe verhindert, die vor allem bei den in C oder C++ geschriebenen Programmen vorkommen können.

Optimierungsverfahren

Um die Geschwindigkeit ("performance") der Programmausführung zu erhöhen, setzen die meisten Java-VMs sogenannte JIT-Compiler (JITC) ein, die unmittelbar während des Programmablaufs den Bytecode „Just In Time“ („Gerade rechtzeitig“, oder „Gerade zur rechten Zeit") in Maschinencode übersetzen. Eine Weiterentwicklung dieses Ansatzes, der Hotspot-Optimizer von Sun, behebt weitgehend den Geschwindigkeitsnachteil der JVM, der hohe Speicherbedarf bleibt jedoch bestehen. Außerdem gibt es designbedingt einige Einbußen, vor allem durch die automatische Speicherbereinigung (garbage collection). Einige JVMs anderer Hersteller wie zum Beispiel IBM J9 oder Insignia Jeode können diese Nachteile weitgehend kompensieren.

Dynamische Optimierung

Ein Vorteil der Java Virtual Machine ist die dynamische Optimierung. Oft ist zum Zeitpunkt der Kompilierung nicht bekannt, welche konkrete Eingabe eine Software verarbeiten muss. Demzufolge muss die Software mit allen Arten von Eingaben zurechtkommen. Die Eingabe wird demnach in Variablen gespeichert. Nach dem Start des Programms werden jedoch viele Variablen nicht mehr geändert. Folglich sind diese – von einem Zeitpunkt kurz nach dem Start an – Konstanten. Wird nun erst nach diesem Zeitpunkt die Software für die System-Architektur kompiliert (dies ist bei Java Hotspot der Fall), so können diese Konstanten berücksichtigt werden. Bestimmte Verzweigungen, die nur von solchen „Halbkonstanten“ abhängig sind, sind dann für immer eindeutig und stellen somit kein Risiko für eine falsche Sprungvorhersage dar. Ein solcher Programmcode kann also theoretisch schneller ablaufen als zu früh compilierter Code.

Implementierungen in Hardware

Ausführungen in Hardware sind Java-Prozessoren, Mikroprozessoren, die Java-Bytecode als Maschinensprache verwenden. Sie konnten sich gegen die schnelle Steigerung der Leistungsfähigkeit von Standard-PC und JVM nicht durchsetzen.

Abschottung der Threads

Die Java VM schottet die in ihr laufenden Prozesse (Threads) vom Betriebssystem ab (Green Threads). Dies hat zur Folge, dass es nicht mehr möglich ist, mit systemeigenen Mitteln Prozesse zu kontrollieren. Sie stellt aber auch keine eigenen Funktionen zur Prozesskontrolle und -steuerung bereit. Somit können diese auch nicht von außen beendet werden, wenn sie aufgrund eines Fehlers das Gesamtsystem stören. Dazu muss dann die gesamte VM beendet werden. Manche Java Virtual Machines erlauben allerdings das direkte Mappen von dedizierten Java-Threads auf Betriebssystem-Prozesse (native Threads).

Mittlerweile ist das Mappen von Java-Threads die Default-Einstellung, d. h. nur in Ausnahmefällen wie dem Verwenden einer älteren VM erfolgt das Thread-Management nur durch die VM und nicht durch das Mapping auf Threads des Betriebssystems.

Siehe auch

  • Java Development Kit – die Java-Entwicklungswerkzeuge von Sun
  • Blackdown – eine Java-Implementierung für Linux
  • Kaffe – eine freie Java-Implementierung
  • Persistent Reusable Java Virtual Machine (PRJVM) – eine von IBM modifizierte Form der JVM
  • SableVM – freie LGPL JVM-Implementierung
  • Dalvik, eine von Google für die Android-Plattform entwickelte JVM

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • java — java …   Dictionnaire des rimes

  • Java 5 — Java (langage) Pour les articles homonymes, voir Java.  Ne doit pas être confondu avec JavaScript …   Wikipédia en Français

  • Java EE — Java Platform, Enterprise Edition, abgekürzt Java EE oder früher J2EE, ist die Spezifikation einer Softwarearchitektur für die transaktionsbasierte Ausführung von in Java programmierten Anwendungen und insbesondere Web Anwendungen. Sie ist eine… …   Deutsch Wikipedia

  • Java EE — Java Platform, Enterprise Edition o Java EE (anteriormente conocido como Java 2 Platform, Enterprise Edition o J2EE hasta la versión 1.4), es una plataforma de programación parte de la Plataforma Java para desarrollar y ejecutar software de… …   Wikipedia Español

  • JAVA — Île volcanique de l’Indonésie, Java est séparé de Sumatra par le détroit de la Sonde, à l’ouest, et de Bali par le détroit du même nom à l’est. Sa superficie est de 132 000 kilomètres carrés. Alors que le relief suggère une division en bandes… …   Encyclopédie Universelle

  • Java EE — Java Enterprise Edition, ou Java EE (anciennement J2EE), est une spécification pour la technique Java de Sun plus particulièrement destinée aux applications d’entreprise. Ces applications sont considérées dans une approche multi niveaux[1]. Dans… …   Wikipédia en Français

  • Java SE — Java Platform, Standard Edition o Java SE (conocido anteriormente hasta la versión 5.0 como Plataforma Java 2, Standard Edition o J2SE), es una colección de APIs del lenguaje de programación Java útiles para muchos programas de la Plataforma Java …   Wikipedia Español

  • JAVA — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom …   Wikipédia en Français

  • Java ME — Java Platform, Micro Edition, abgekürzt Java ME [ˈdʒɑːvə ˌɛmˈiː], früher auch als Java Platform 2, Micro Edition oder kurz J2ME bezeichnet, ist eine Umsetzung der Programmiersprache Java für so genannte »embedded consumer products« wie etwa… …   Deutsch Wikipedia

  • Java 2 — Java 2, или Java 2.0 дальнейшее развитие и усовершенствование спецификации исходного стандарта языка и платформы Java, на который теперь принято ссылаться как на Java 1.0. В настоящее время спецификация платформы Java 2 продолжает интенсивно… …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”