|
Mange venner kan være som meg som har brukt JAVA lenge, men forbindelsen og forskjellen mellom JDK, JRE og JVM har alltid vært vag. I dag skal jeg skrive denne artikkelen for å finne ut av forholdet mellom de tre.
JDK : Java utviklingsverktøysett. JDK er kjernen i hele JAVA, inkludert Java Runtime Envirnment, en rekke Java-verktøy (javac/java/jdb osv.), og Java-baserte biblioteker (dvs. Java API-er inkluderer rt.jar). Den mest mainstream JDK er JDK utgitt av Sun, i tillegg til Sun finnes det mange selskaper og organisasjoner som har utviklet sin egen JDK, som utenlandske IBM-selskaper som har utviklet sin egen JDK, innenlandske Taobao har også utviklet sin egen JDK, ulike organisasjoner har utviklet sin egen JDK for å oppnå forbedringer på enkelte områder, for å tilpasse seg sine egne behov, slik som IBMs JDK sies å være mye mer effektiv enn SUNs JDK. Men uansett må vi fortsatt mestre det grunnleggende Sun JDK først. Det finnes tre versjoner av JDK: J2SE, standardutgave, standardutgave, er en versjon hvor vi vanligvis bruker J2EE, enterprise-utgave, og bruker denne JDK til å utvikle J2EE-applikasjoner J2ME, mikro-edtion, hovedsakelig brukt for Java-applikasjoner på mobile enheter, innebygde enheter
Vi bruker ofte JDK for å referere til Java API, Java API er Javas programmeringsgrensesnitt, faktisk er det noen Java-klasser skrevet av våre forgjengere, inkludert viktige språkstrukturer og grunnleggende grafikk, nettverk og fil-I/O osv., vi kaller disse klassene skrevet av våre forgjengere i våre egne programmer, som grunnlag for vår egen utvikling. Selvfølgelig finnes det stadig flere tredjepartsbiblioteker med bedre ytelse eller kraftigere funksjoner til rådighet.
JRE: Java Runtime miljø. Med andre ord må alle Java-programmer være under JRE for å kjøre. Inkluderer JVM- og JAVA-kjernebiblioteker og støttefiler. Sammenlignet med JDK inkluderer den ikke utviklingsverktøy – kompilatorer, feilsøkere og andre verktøy.
JVM: Java Virtual Mechinal (JAVA Virtual Machine). JVM er en del av JRE, som er en fiktiv datamaskin implementert ved å simulere ulike datamaskinfunksjoner på en ekte datamaskin. JVM har sin egen komplette maskinvarearkitektur, som prosessorer, stabler, registre osv., og har også et tilsvarende instruksjonssystem. Hovedoppgaven til JVM er å tolke sitt eget instruksjonssett (dvs. bytekode) og mappe det til den lokale CPU-ens instruksjonssett eller operativsystemets systemkall. Java-språket kjører plattformuavhengig, som faktisk er et annet operativsystem, med andre JVM-kartleggingsregler for å gjøre det uavhengig av operativsystemet og fullstendig plattformuavhengig. JVM bryr seg ikke om de øvre Java-kildefilene, den bryr seg bare om klassefilene som genereres av kildefilene. Klassefilen består av et JVM-instruksjonssett, en symboltabell og noe tilleggsinformasjon. Følgende figur gir en god oversikt over forholdet mellom JDK, JRE og JVM:
Den faktiske utviklingssituasjonen er at etter at vi har utviklet vårt eget JEVA-program med JDK (kall JAVA API), kompilerer vi våre tekst-javafiler til JAVA-bytekode gjennom kompilatoren (javac) i JDK, kjører disse JAVA-bytekodene på JRE, JVM parser disse bytekodene, og mapper dem til CPU-instruksjonssettet eller systemkallene til operativsystemet.
|