JVMå°±æ¯å¸¸è¯´çjavaèææºï¼å®æ¯æ´ä¸ªjavaå®ç°è·¨å¹³å°ç ææ ¸å¿çé¨åï¼ææçjavaç¨åºä¼é¦å 被ç¼è¯ä¸º.classçç±»æ件ï¼è¿ç§ç±»æä»¶å¯ ä»¥å¨èææºä¸æ§è¡ï¼ä¹å°±æ¯è¯´class并ä¸ç´æ¥ä¸æºå¨çæä½ç³»ç»ç¸å¯¹åºï¼èæ¯ç»è¿èææºé´æ¥ä¸æä½ç³»ç»äº¤äºï¼ç±èææºå°ç¨åºè§£ éç»æ¬å°ç³»ç»æ§è¡ã
JVM æ¯ Java å¹³å°çåºç¡ï¼åå®é çæºå¨ä¸æ ·ï¼å®ä¹æèªå·±çæ令éï¼å¹¶ä¸å¨è¿è¡ æ¶æä½ä¸åçå ååºåã JVM éè¿æ½è±¡æä½ç³»ç»å CPU ç»æï¼æä¾äºä¸ç§ä¸å¹³å°æ å ³ç代ç æ§è¡æ¹æ³ï¼å³ä¸ç¹æ®çå®ç°æ¹ æ³ã主æºç¡¬ä»¶ã主æºæä½ç³»ç»æ å ³ãä½æ¯å¨ä¸äºå°çæ¹é¢ï¼ JVM çå®ç°ä¹æ¯äºä¸ç¸åçï¼æ¯å¦åå¾åæ¶ ç®æ³ï¼çº¿ç¨è°åº¦ç®æ³ï¼å¯è½ä¸å OS æä¸åçå®ç°ï¼ãJVM ç主è¦å·¥ä½æ¯è§£éèªå·±çæ令éï¼å³åèç ï¼å° CPU çæ令éæ OS çç³»ç»è°ç¨ï¼ä¿æ¤ç¨æ·å 被æ¶æç¨åºéªæ°ã JVM 对ä¸å±ç Java æºæ件æ¯ä¸å ³å¿çï¼å®å ³æ³¨çåªæ¯ç±æºæ件çæçç±»æä»¶ï¼ class file ï¼ãç±»æ件ç ç»æå æ¬ JVM æ令éï¼ç¬¦å·è¡¨ä»¥åä¸äºè¡¥å©ä¿¡æ¯ã
JREæ¯æjavaè¿è¡ç¯å¢ãå
æJVMè¿ä¸è½æclassç æ§è¡ï¼å 为å¨è§£éclassçæ¶åJVMéè¦è°ç¨è§£éæéè¦çç±»åºlibã å¨JDKçå®è£
ç® å½éä½ å¯ä»¥æ¾å°jreç®å½ï¼éé¢æ两个æ件夹binålib,å¨ è¿éå¯ä»¥è®¤ä¸ºbinéçå°±æ¯jvmï¼libä¸åæ¯jvmå·¥ ä½æéè¦çç±»åºï¼èjvmå libåèµ·æ¥å°±ç§°ä¸ºjreãæ以ï¼å¨ä½ åå®javaç¨åºç¼è¯æ.classä¹åï¼ä½ å¯ä»¥æè¿ä¸ª.classæ件 åjreä¸èµ·æå
åç»æåï¼è¿æ ·ä½ çæåå°± å¯ä»¥è¿è¡ä½ åç¨åºäºãï¼jreéæè¿è¡.classçjava.exeï¼
JRE æ¯ Sun å ¬å¸åå¸çä¸ä¸ªæ´å¤§çç³»ç»ï¼å®éé¢å°±æä¸ä¸ª JVM ã JRE å°±ä¸å ·ä½ç CPU ç»æåæä½ç³»ç»æå ³ï¼æä»¬ä» Sun ä¸è½½ JRE çæ¶åå°±çå°äºä¸åçåç§çæ¬ãå JVM ä¸èµ·ç»æ JRE çè¿æä¸äº API ï¼å¦ awt ï¼ swing çï¼ã JRE æ¯è¿è¡ Java ç¨åºå¿ ä¸å¯å°çã
JRE ï¼ Java Runtime Environment ï¼ï¼æ¯è¿è¡ Java ç¨åºå¿ ä¸å¯å°çï¼é¤éç¨å ¶ä»ä¸äºç¼è¯ç¯å¢ç¼è¯æ.exeå¯æ§è¡æ件â¦â¦ï¼ï¼JREç å°ä½å°±è±¡ä¸å°PCæºä¸æ ·ï¼æ们å好çWin32åºç¨ç¨åºéè¦æä½ç³»ç»å¸® æ们è¿è¡ï¼åæ ·çï¼æ们ç¼åçJavaç¨åºä¹å¿ é¡»è¦JREæè½è¿è¡ã
JREéé¢æä¸ä¸ª JVM ï¼ JRE ä¸å
·ä½ç CPU ç»æåæä½ç³»ç»æå
³ï¼æä»¬ä» Sun ä¸è½½ JRE çæ¶åå°±çå°äºä¸åçåç§çæ¬ï¼ï¼å JVM ä¸èµ·ç»æ JRE çè¿æ ä¸äº API ï¼å¦ awt ï¼ swing çï¼ï¼ JRE æ¯ è¿è¡ Java ç¨åºå¿
ä¸å¯å°ç.
JDKæ¯javaå¼åå·¥å
·å
ï¼åºæ¬ä¸æ¯ä¸ªå¦javaç人é½ä¼å
å¨æºå¨ ä¸è£
ä¸ä¸ªJDKï¼é£ä»é½å
å«åªå é¨åå¢ï¼è®©æ们çä¸ä¸JDKçå®è£
ç®å½ãå¨ç®å½ä¸é¢æ å
个æ件夹ãä¸ä¸ªsrcç±»åºæºç å缩å
ãåå
¶ä»å 个声ææ件ãå
¶ä¸ï¼çæ£å¨è¿è¡javaæ¶èµ·ä½ç¨ç æ¯ä»¥ä¸å个æ件夹ï¼binãincludeãlibã jreãç°å¨å¯ä»¥çåºè¿æ ·ä¸ä¸ªå
³ç³»ï¼JDKå
å«JREï¼èJREå
å«JVMã
bin:æ主è¦çæ¯ç¼è¯å¨(javac.exe)
include:javaåJVM交äºç¨ç头æ件
libï¼ç±»åº
jre:javaè¿è¡ç¯å¢
ï¼æ³¨æï¼è¿éçbinãlibæ件夹åjreéçbinãlibæ¯ ä¸åçï¼æ»çæ¥è¯´JDKæ¯ç¨äºjavaç¨åºçå¼å,èjreå æ¯åªè½è¿è¡classè没æç¼è¯çåè½ï¼eclipseãideaç å
¶ä»IDEæèªå·±çç¼è¯å¨èä¸æ¯ç¨JDK binç®å½ä¸èªå¸¦çï¼æ以å¨å®è£
æ¶ä½ ä¼åç°ä»ä»¬åªè¦æ±éä¸jreè·¯å¾å°±okäºã
ä¸è
èç³»ï¼
Java ååºç带ææ å¿æ§çå£å·â Write Once ï¼ Run Anywhere ï¼ä¸æ¬¡ç¼åï¼å°å¤è¿è¡ï¼âï¼æ£æ¯å»ºç«å¨ JRE çåºç¡ä¹ä¸ãä½ä»¥å®ç°ï¼å°±æ¯å¨ Java åºç¨ç¨åºåæä½ç³»ç»ä¹é´å¢å äºä¸èæå±ââ JRE ã
ç¨åºæºä»£ç ä¸æ¯ç´ æ¥ç¼è¯ãé¾æ¥ææºå¨ä»£ç ï¼èæ¯å 转åå°åèç ï¼ bytecode ï¼ è¿ç§ç¹æ®çä¸é´å½¢å¼ï¼åèç å转æ¢ææºå¨ç æç³»ç»è°ç¨ãåè æ¯ä¼ ç»çç¼è¯æ¹æ³ï¼çæçæºå¨ä»£ç å°±ä¸å¯é¿å å°è·ç¹æ®çæä½ç³»ç»åç¹æ®çæºå¨ç»æç¸å ³ãè Java ç¨åºçåèç æ件å¯ä»¥æ¾å°ä»»æè£ æ JRE ç计ç®æºè¿è¡ï¼åç±ä¸å JRE çå°å®ä»¬è½¬åæç¸åºçæºå¨ä»£ç ï¼è¿å°±å®ç°äº Java ç¨åºçå¯ç§»æ¤æ§ãè¿æ ·ç¨åºåä¹ä¸ç¨å» å ³å¿ç¨åºè¿è¡çå ·ä½ç¯å¢ï¼èå¯ä»¥ä¸å¿ç¼å软件ãè¿ç§åå±æ½è±¡ãéèç»èçææ³å¨è®¡ç®æºç§å¦ä¸å¤å¤å¯è§ï¼æ¯å¦æºå¨ç»ç»ç»æç设计ãç½ç»åè®®çå®ç°çã Pascal è¯è¨çåæè Niklaus Wirth ï¼å°±å¯æé¢è§æ§å°æåºåºè¯¥æè¿æ ·ä¸ç§å¯ç§»æ¤çè¯è¨ï¼å ¶çæçä¸é´ä»£ç å¯ä»¥å¨ä¸å°åæ³çæºå¨ï¼ a hypothetical machine ï¼ä¸è¿è¡ã
è Java èææºï¼ Java virtual machine æ JVM ï¼å°±æ¯è¿æ ·çä¸å°æºå¨ï¼å®æ¨¡æå®é å¤çå¨çç»æï¼è§£éåèç ã æä¹ä¸ä¼è¯´æ¯ JRE ï¼ä¸ä¼å¿åæäº JVM ï¼ä¸¤è æ¯å¦åç©ä¸ååï¼ åçæ¯å¦å®çã
JREçå°ä½å°±è±¡ä¸å°PCæºä¸æ ·ï¼æ们å好çWin32åºç¨ç¨åºéè¦æä½ç³»ç»å¸® æ们è¿è¡ï¼åæ ·çï¼æ们ç¼åçJavaç¨åºä¹å¿ é¡»è¦JREæè½è¿è¡ã
è¦è¿è¡Appletï¼å¨å®¢æ·ç«¯å¿ é¡»å®è£ æ JREï¼å³âè¿è¡æ¶âï¼å®¹æä¸ç¹ç解ï¼å°±è±¡æè°çâæ件âï¼è¦å¼åJAVAåºç¨ç¨åº\Webåºç¨ï¼å°±å¿ é¡»å¨æå¡å¨ç«¯å®è£ ç¸åºç JVM+JDK äº(å¼ååºç¨ Java webåºç¨ æ¶ï¼å®¢æ·ç«¯ä¸éè¦å®è£ ä»»ä½çJVMï¼å¦æ使ç¨JAVAå¼ååºç¨ï¼å°±éè¦å®è£ JRE+JDKï¼å°±æ¯ J2SE. ã å¦æå¨å®¢æ·ç«¯è¿è¡Appletï¼å®¢æ·ç«¯æµè§å¨å¿ é¡»åµæJAVA JVMï¼å¦æ没æï¼å°±éè¦å®è£ ï¼å³ï¼ å¨å®¢æ·ç«¯å建JREï¼è¿è¡æ¶ï¼å å«JVMï¼ï¼è客æ·ç«¯æ¯ä¸éè¦åå¼åçï¼æ以ï¼JDK就没æå¿ è¦å®è£ äºã ä¸åçæ¬çAppletå¨ä¸åçJVMä¸å¯è½æ æ³æ£å¸¸è¿è¡,èMicrosoft JVMåªæ¯Sun JVMçâä½çæ¬âï¼å¾®è½¯å¨windows xp/2003ä¸å¹²èå°JVMå»æäº.
是不是jdk包含了jre?怎么eclipse也有一个jre,?什么是编译器?
追答eclipse里面的jre其实是你本地的jre以插件的形式加载到项目环境里面,表示你使用当前jre来运行.class文件,在本地计算机里面可以装多个jdk。编译器就是jre里面那个javac命令,jre是存在于jdk里面的
本回答被提问者采纳哪个是编译器?