Java virtuel maskine

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 14. maj 2021; checks kræver 7 redigeringer .
JVM
Udvikler Sun Microsystems
Lidt dybde 32 (64 med Java 9)
Fremlagde 1994
Versioner 18.0.1.1 [1]
Type Stablemaskine med dedikeret hukommelsesadgang
Byte rækkefølge big-endian
Registre
generelle formål Operand stack for hver metode (op til 65535 operander) og metode lokale variabler (op til 65535)

Java Virtual Machine (forkortet Java VM , JVM ) - Java virtual machine - hoveddelen af ​​Java -eksekveringssystemet , det såkaldte Java Runtime Environment ( JRE ). Java Virtual Machine udfører Java - bytekode , der tidligere er blevet genereret fra kildekoden til et Java-program af Java- kompileren ( javac ). JVM kan også bruges til at udføre programmer skrevet på andre programmeringssprog . For eksempel kan Ada kildekode kompileres til Java bytecode, som derefter kan udføres af JVM.

JVM er en nøglekomponent i Java-platformen. Fordi virtuelle Java-maskiner er tilgængelige for mange hardware- og softwareplatforme, kan Java ses som både en middleware og en selvstændig platform. Brugen af ​​én bytekode til mange platforme gør det muligt for Java at blive beskrevet som "compile once, run anywhere" (compile once, run anywhere).

Java virtuelle maskiner indeholder normalt en bytekode - fortolker , men for at forbedre ydeevnen bruger mange maskiner også JIT - kompilering af hyppigt udførte bytekodefragmenter til maskinkode .

JVM-specifikation

I 1996 udgav Sun den første version af JVM Blue Book- dokumentet , som beskrev specifikationen for den virtuelle Java-maskine, som blev de facto industristandarden for Java-platformen. Takket være dette dokument dukkede alternative implementeringer af JVM op, som er " udvikling fra bunden " ( eng. renrumsdesign  ) . Et eksempel er Kaffe .

Fra og med J2SE 5.0 genereres ændringer til JVM-specifikationen i henhold til interessenternes formaliserede ønsker. Processen med at foretage ændringer i JVM-specifikationerne kaldes Java Community Process .

Den JVM, der er tilgængelig i Suns C -kilde , hedder KVM (Kilo Virtual Machine) og er tilgængelig på deres hjemmeside.

Konkurrence mellem Sun og Microsoft

I begyndelsen af ​​udviklingen af ​​"Java"-platformen var der to konkurrerende implementeringer af Java VM:

"Microsoft Java VM" var dog ikke fuldt ud kompatibel med specifikationen beskrevet af Sun i "JVM blue book", og havde betydelige ydeevne- og sikkerhedsproblemer under store arbejdsbelastninger (med et stort antal samtidig eksekverende tråde).

Sun anså denne situation for uacceptabel og besluttede, at Microsoft bevidst miskrediterede og vanhelligede Java-platformen ved at distribuere sin version af Java Virtual Machine, som har ovenstående ulemper. På dette grundlag sagsøgte Sun gentagne gange Microsoft - og Microsoft blev frataget følgende rettigheder til at implementere:

  1. Kald det "Java VM" (det nye navn er "Microsoft VM");
  2. Integrer det i leveringen af ​​browsere og operativsystemer (inklusive Internet Explorer og Windows) - men med ret til at tilbyde til download på siden;
  3. Udvikle dens nye versioner og opdateringer;
  4. Giv det til download på webstedet.

Nogle computeranmeldere har foreslået, at Suns hårde holdning til Java kan have givet Microsoft yderligere incitament til at udvikle sin egen Windows-løsning: " .NET Framework ".

Uenigheder mellem Sun og IBM

I 2001 , med det mål at udvikle en standard for desktop-applikationer på tværs af platforme , lancerede IBM et open source-projekt: "Eclipse" .

"Eclipse" -rammen var baseret på en tidligere lukket udvikling: IBM's "VisualAge" . IBM formåede at balancere det frie fællesskabs interesser og erhvervslivets interesser (deres interesser) i Eclipse Public License , anerkendt af Free Software Foundation .

Projektet udvikler sig med succes, bruges i industrien, er stort set adskilt fra IBM til et uafhængigt (se "Eclipse Foundation" ).

Sun er fortsat i opposition til Eclipse Foundation såvel som til Microsoft. Formelt set er hovedårsagen til kontroverser "Standard Widget Toolkit" -biblioteket (SWT), som modsiger Suns koncept om en virtuel maskine og portabiliteten af ​​Java-applikationer.

Runtime

Programmer beregnet til at køre på JVM skal kompileres i et standardiseret bærbart binært format, som normalt repræsenteres som ".class"-filer. Et program kan bestå af mange klasser placeret i forskellige filer. For at gøre det nemmere at hoste store programmer kan nogle ".class"-filer pakkes sammen i en såkaldt ".jar"-fil (forkortelse for "Java Archive").

JVM'en udfører ".class"- og ".jar"-filer og emulerer instruktionerne i dem på følgende måder:

I disse dage bruges JIT-kompilering i de fleste JVM'er for at opnå større hastighed. Der er også tidligere kompilatorer, der giver applikationsudviklere mulighed for at omkompilere klassefiler til platformsnative kode.

Som de fleste virtuelle maskiner har Java Virtual Machine en stak-orienteret arkitektur, der er fælles for mikrocontrollere og mikroprocessorer .

JVM - en instans af JRE (Java Runtime Environment), der træder i kraft, når Java-programmer udføres; efter afslutning af udførelsen fjernes denne instans af skraldemanden. JIT er den del af Java Virtual Machine, der bruges til at fremskynde eksekveringen af ​​applikationer; JIT kompilerer de dele af bytekoden, der har samme funktionalitet på samme tid, hvilket reducerer den tid, det tager at kompilere.

Se også

Noter

  1. JDK-  udgivelsesversioner . Java (2. maj 2022). Hentet 24. maj 2022. Arkiveret fra originalen 4. juni 2022.

Litteratur

Links