|
Paljud sõbrad võivad olla nagu mina, kes on JAVA-d kaua kasutanud, kuid JDK, JRE ja JVM vaheline seos ja erinevus on alati olnud ebaselge. Täna kirjutan selle artikli, et selgitada nende kolme omavahelist suhet.
JDK: Java arendustööriistakomplekt. JDK on kogu JAVA tuum, sealhulgas Java Runtime Envirnment, hulk Java tööriistu (javac/java/jdb jne) ja Java-põhiseid teeke (st Java API-d sisaldavad rt.jar). Kõige levinum JDK on Suni poolt välja antud JDK, lisaks Sunile on palju ettevõtteid ja organisatsioone, kes on arendanud oma JDK, näiteks välismaised IBM-i ettevõtted on loonud oma JDK, kodumaine Taobao on samuti arendanud oma JDK, mitmed organisatsioonid on loonud oma JDK, et saada mõningaid parandusi ja kohaneda oma vajadustega, näiteks IBM-i JDK-d peetakse palju tõhusamaks kui SUN-i JDK. Aga igal juhul peame esmalt omandama Sun JDK põhilise oskuse. JDK-l on kolm versiooni: J2SE, standardväljaanne, standardversioon, on versioon, mida tavaliselt kasutame J2EE, Enterprise Edtion, Enterprise Edition, kasutades seda JDK-d J2EE rakenduste arendamiseks J2ME, mikroedtion, mida kasutatakse peamiselt Java-rakenduste jaoks mobiilseadmetes, manusseadmetes
Me kasutame sageli JDK-d Java API tähistamiseks, Java API on Java rakendusliides, tegelikult on see mõned meie eelkäijate kirjutatud Java klassid, sealhulgas olulised keelestruktuurid ja põhigraafika, võrgu- ja failisisend/väljund jne, mida nimetame klassideks, mille on kirjutanud meie eelkäijad oma programmides, et olla aluseks meie enda arendusele. Loomulikult on üha rohkem kolmandate osapoolte teeke, millel on parem jõudlus või võimsamad funktsioonid, mis on meie käsutuses.
JRE: Java Runtime Enviromental. Teisisõnu, kõik Java programmid peavad töötamiseks olema JRE all. Sisaldab JVM ja JAVA põhiteeke ning toetavaid faile. Võrreldes JDK-ga ei sisalda see arendustööriistu – kompilaatorid, silurid ja muud tööriistad.
JVM: Java Virtual Mechinal (JAVA Virtual Machine). JVM on osa JRE-st, mis on väljamõeldud arvuti, mida rakendatakse erinevate arvutifunktsioonide simuleerimise teel päris arvutis. JVM-il on oma täielik riistvaraarhitektuur, nagu protsessorid, virnad, registrid jne, ning vastav käsusüsteem. JVM-i peamine ülesanne on tõlgendada oma käsukomplekti (st baitkoodi) ja kaardistada see kohaliku protsessori käsustikuga või operatsioonisüsteemi süsteemikutsetega. Java keel töötab platvormideüleselt, mis on tegelikult erinev operatsioonisüsteem, kasutades erinevaid JVM-kaardistamise reegleid, et muuta see operatsioonisüsteemist sõltumatuks ja täielikuks platvormideüleseks. JVM-i ei huvita kõrgema taseme Java lähtefailid, vaid ainult algfailide genereeritud klassifailid. Klassifail koosneb JVM käsukomplektist, sümbolitabelist ja mõningast lisainfost. Järgmine joonis annab hea ülevaate JDK, JRE ja JVM vahelistest suhetest:
Meie arenduse tegelik olukord on see, et pärast oma JAVA programmi arendamist JDK abil (kutsu JAVA API), kompileerime oma teksti java-failid JDK kompilaatori (javac) kaudu JAVA baidikoodiks, käivitame need JAVA baitkoodid JRE-s, JVM parseerib need baidikoodid ja kaardistame need CPU käsustikuga või operatsioonisüsteemi süsteemikutsetega.
|