JVM | |
---|---|
Utvecklaren | Sun Microsystems |
Lite djup | 32 (64 med Java 9) |
Presenteras | 1994 |
Versioner | 18.0.1.1 [1] |
Sorts | Stackmaskin, med dedikerad minnesåtkomst |
Byte-ordning | big-endian |
Register | |
generell mening | Operandstack för varje metod (upp till 65535 operander) och lokala metodvariabler (upp till 65535) |
Java Virtual Machine (förkortat Java VM , JVM ) - Java Virtual Machine - huvuddelen av Java -exekveringssystemet , den så kallade Java Runtime Environment ( JRE ). Java Virtual Machine kör Java -bytekod som tidigare har genererats från källkoden för ett Java-program av Java- kompilatorn ( javac ). JVM kan också användas för att köra program skrivna på andra programmeringsspråk . Till exempel kan Ada -källkoden kompileras till Java-bytekod, som sedan kan exekveras av JVM.
JVM är en nyckelkomponent i Java-plattformen. Eftersom virtuella Java-maskiner är tillgängliga för många hårdvaru- och mjukvaruplattformar kan Java ses som både en middleware och en fristående plattform. Användningen av en bytekod för många plattformar gör att Java kan beskrivas som "kompilera en gång, kör var som helst" (kompilera en gång, kör var som helst).
Virtuella Java-maskiner innehåller vanligtvis en bytekodtolkare , men för att förbättra prestandan använder många maskiner också JIT -kompilering av ofta körda bytekodfragment till maskinkod .
1996 släppte Sun den första versionen av JVM Blue Book -dokumentet , som beskrev specifikationen för den virtuella Java-maskinen, som blev de facto industristandard för Java-plattformen. Tack vare detta dokument dök det upp alternativa implementeringar av JVM, som är " utveckling från grunden " ( eng. renrumsdesign ). Ett exempel är Kaffe .
Från och med J2SE 5.0 genereras ändringar i JVM-specifikationen enligt intressenternas formaliserade önskemål. Processen att göra ändringar i JVM-specifikationerna kallas för Java Community Process .
JVM som finns tillgänglig i Suns C - källa kallas KVM (Kilo Virtual Machine) och finns tillgänglig på deras hemsida.
I början av utvecklingen av "Java"-plattformen fanns det två konkurrerande implementeringar av Java VM:
"Microsoft Java VM" var dock inte helt kompatibel med specifikationen som beskrevs av Sun i "JVM blue book", och hade betydande prestanda- och säkerhetsproblem under tunga arbetsbelastningar (med ett stort antal samtidigt körande trådar).
Sun ansåg att denna situation var oacceptabel och beslutade att Microsoft medvetet misskrediterade och vanhelgade Java-plattformen genom att distribuera dess version av Java Virtual Machine, som har ovanstående nackdelar. På grundval av detta stämde Sun flera gånger Microsoft - och Microsoft berövades följande rättigheter att implementera:
Vissa datorgranskare har föreslagit att Suns hårda hållning till Java kan ha gett ytterligare incitament för Microsoft att utveckla sin egen Windows-lösning: " .NET Framework ".
År 2001 , med målet att utveckla en standard för plattformsoberoende skrivbordsapplikationer , lanserade IBM ett projekt med öppen källkod: "Eclipse" .
Ramverket "Eclipse" baserades på en tidigare sluten utveckling: IBM:s "VisualAge" . IBM lyckades balansera det fria samhällets intressen och företagens intressen (deras intressen) i Eclipse Public License , erkänd av Free Software Foundation .
Projektet utvecklas framgångsrikt, används i branschen, har i stort sett separerats från IBM till ett oberoende (se "Eclipse Foundation" ).
Sun är fortfarande i opposition till Eclipse Foundation , såväl som till Microsoft. Formellt är den främsta orsaken till kontroverser fortfarande "Standard Widget Toolkit" -biblioteket (SWT), som motsäger Suns koncept med en virtuell maskin och portabiliteten av Java-applikationer.
Program som är avsedda att köras på JVM måste kompileras i ett standardiserat portabelt binärt format, som vanligtvis representeras som ".class"-filer. Ett program kan bestå av många klasser placerade i olika filer. För att göra det enklare att vara värd för stora program kan vissa ".class"-filer paketeras tillsammans i en så kallad ".jar"-fil (förkortning av "Java Archive").
JVM kör ".class"- och ".jar"-filer och emulerar instruktionerna i dem på följande sätt:
Idag används JIT-kompilering i de flesta JVM:er för att uppnå högre hastighet. Det finns också kompilatorer i förväg som tillåter applikationsutvecklare att kompilera om klassfiler till plattformsinbyggd kod.
Liksom de flesta virtuella maskiner har Java Virtual Machine en stack-orienterad arkitektur som är gemensam för mikrokontroller och mikroprocessorer .
JVM - en instans av JRE (Java Runtime Environment) som träder i kraft när Java-program körs; efter avslutad avrättning tas denna instans bort av sophämtaren. JIT är den del av Java Virtual Machine som används för att påskynda exekveringen av applikationer; JIT kompilerar de delar av bytekoden som har samma funktionalitet samtidigt, vilket minskar tiden det tar att kompilera.
Java Virtual Machines ( jämförelse ) | |
---|---|
Sun , Oracle | |
Stora implementeringar | |
Inbäddad |
|
Övrig | |
Utan stöd |
Java | |
---|---|
Plattformar | |
Sun Technologies | |
Viktiga tredjepartstekniker | |
Berättelse |
|
Språkegenskaper | |
Skriptspråk |
|
Java-konferenser |
|
C programmeringsspråk | |
---|---|
Kompilatorer |
|
Bibliotek | |
Egenheter | |
Några ättlingar | |
C och andra språk |
|
Kategori:C programmeringsspråk |