88问答网
所有问题
谁能简单阐述下java编译执行的过程?
如题所述
举报该问题
推荐答案 2013-07-27
ããJavaèææº(JVM)æ¯å¯è¿è¡Java代ç çåæ³è®¡ç®æºãåªè¦æ ¹æ®JVMè§æ ¼æè¿°å°è§£éå¨ç§»æ¤å°ç¹å®ç计ç®æºä¸ï¼å°±è½ä¿è¯ç»è¿ç¼è¯çä»»ä½Java代ç è½å¤å¨è¯¥ç³»ç»ä¸è¿è¡ãæ¬æé¦å ç®è¦ä»ç»ä»Javaæ件çç¼è¯å°æç»æ§è¡çè¿ç¨ï¼éå对JVMè§æ ¼æè¿°ä½ä¸è¯´æã
ãã
ããä¸.Javaæºæ件çç¼è¯ãä¸è½½ã解éåæ§è¡
ããJavaåºç¨ç¨åºçå¼åå¨æå æ¬ç¼è¯ãä¸è½½ã解éåæ§è¡å 个é¨åãJavaç¼è¯ç¨åºå°Javaæºç¨åºç¿»è¯ä¸ºJVMå¯æ§è¡ä»£ç ?åèç ãè¿ä¸ç¼è¯è¿ç¨åC/C++çç¼è¯æäºä¸åãå½Cç¼è¯å¨ç¼è¯çæä¸ä¸ªå¯¹è±¡ç代ç æ¶ï¼è¯¥ä»£ç æ¯ä¸ºå¨æä¸ç¹å®ç¡¬ä»¶å¹³å°è¿è¡è产ççãå æ¤ï¼å¨ç¼è¯è¿ç¨ä¸ï¼ç¼è¯ç¨åºéè¿æ¥è¡¨å°ææ对符å·çå¼ç¨è½¬æ¢ä¸ºç¹å®çå åå移éï¼ä»¥ä¿è¯ç¨åºè¿è¡ãJavaç¼è¯å¨å´ä¸å°å¯¹åéåæ¹æ³çå¼ç¨ç¼è¯ä¸ºæ°å¼å¼ç¨ï¼ä¹ä¸ç¡®å®ç¨åºæ§è¡è¿ç¨ä¸çå åå¸å±ï¼èæ¯å°è¿äºç¬¦å·å¼ç¨ä¿¡æ¯ä¿çå¨åèç ä¸ï¼ç±è§£éå¨å¨è¿è¡è¿ç¨ä¸åç«å åå¸å±ï¼ç¶ååéè¿æ¥è¡¨æ¥ç¡®å®ä¸ä¸ªæ¹æ³æå¨çå°åãè¿æ ·å°±ææçä¿è¯äºJavaçå¯ç§»æ¤æ§åå®å ¨æ§ã
ãã
ããè¿è¡JVMåèç çå·¥ä½æ¯ç±è§£éå¨æ¥å®æçã解éæ§è¡è¿ç¨åä¸é¨è¿è¡ï¼ä»£ç çè£ å ¥ã代ç çæ ¡éªå代ç çæ§è¡ãè£ å ¥ä»£ç çå·¥ä½ç±"ç±»è£ è½½å¨"ï¼class loaderï¼å®æãç±»è£ è½½å¨è´è´£è£ å ¥è¿è¡ä¸ä¸ªç¨åºéè¦çææ代ç ï¼è¿ä¹å æ¬ç¨åºä»£ç ä¸çç±»æ继æ¿çç±»åè¢«å ¶è°ç¨çç±»ãå½ç±»è£ è½½å¨è£ å ¥ä¸ä¸ªç±»æ¶ï¼è¯¥ç±»è¢«æ¾å¨èªå·±çåå空é´ä¸ãé¤äºéè¿ç¬¦å·å¼ç¨èªå·±åå空é´ä»¥å¤çç±»ï¼ç±»ä¹é´æ²¡æå ¶ä»åæ³å¯ä»¥å½±åå ¶ä»ç±»ãå¨æ¬å°è®¡ç®æºä¸çææç±»é½å¨åä¸å°å空é´å ï¼èææä»å¤é¨å¼è¿çç±»ï¼é½æä¸ä¸ªèªå·±ç¬ç«çåå空é´ãè¿ä½¿å¾æ¬å°ç±»éè¿å ±äº«ç¸åçåå空é´è·å¾è¾é«çè¿è¡æçï¼åæ¶åä¿è¯å®ä»¬ä¸ä»å¤é¨å¼è¿çç±»ä¸ä¼ç¸äºå½±åãå½è£ å ¥äºè¿è¡ç¨åºéè¦çææç±»åï¼è§£éå¨ä¾¿å¯ç¡®å®æ´ä¸ªå¯æ§è¡ç¨åºçå åå¸å±ã解éå¨ä¸ºç¬¦å·å¼ç¨åç¹å®çå°å空é´å»ºç«å¯¹åºå ³ç³»åæ¥è¯¢è¡¨ãéè¿å¨è¿ä¸é¶æ®µç¡®å®ä»£ç çå åå¸å±ï¼Javaå¾å¥½å°è§£å³äºç±è¶ ç±»æ¹åè使å类崩æºçé®é¢ï¼åæ¶ä¹é²æ¢äºä»£ç 对å°åçéæ³è®¿é®ã
ãã
ããéåï¼è¢«è£ å ¥ç代ç ç±åèç æ ¡éªå¨è¿è¡æ£æ¥ãæ ¡éªå¨å¯åç°æä½æ°æ 溢åºï¼éæ³æ°æ®ç±»å转åçå¤ç§é误ãéè¿æ ¡éªåï¼ä»£ç 便å¼å§æ§è¡äºã
ãã
ããJavaåèç çæ§è¡æ两ç§æ¹å¼ï¼
ãã1.å³æ¶ç¼è¯æ¹å¼ï¼è§£éå¨å å°åèç ç¼è¯ææºå¨ç ï¼ç¶ååæ§è¡è¯¥æºå¨ç ã
ãã2.解éæ§è¡æ¹å¼ï¼è§£éå¨éè¿æ¯æ¬¡è§£é并æ§è¡ä¸å°æ®µä»£ç æ¥å®æJavaåèç ç¨ åºçæææä½ã
ããé常éç¨çæ¯ç¬¬äºç§æ¹æ³ãç±äºJVMè§æ ¼æè¿°å ·æ足å¤ççµæ´»æ§ï¼è¿ä½¿å¾å°åèç ç¿»è¯ä¸ºæºå¨ä»£ç çå·¥ä½
ãã
ããå ·æè¾é«çæçã对äºé£äºå¯¹è¿è¡é度è¦æ±è¾é«çåºç¨ç¨åºï¼è§£éå¨å¯å°Javaåèç å³æ¶ç¼è¯ä¸ºæºå¨ç ï¼ä»èå¾å¥½å°ä¿è¯äºJava代ç çå¯ç§»æ¤æ§åé«æ§è½ã
ãã
ããäº.JVMè§æ ¼æè¿°
ããJVMç设计ç®æ æ¯æä¾ä¸ä¸ªåºäºæ½è±¡è§æ ¼æè¿°ç计ç®æºæ¨¡åï¼ä¸ºè§£éç¨åºå¼å人åæå¾å¥½ççµæ´»æ§ï¼åæ¶ä¹ç¡®ä¿Java代ç å¯å¨ç¬¦å该è§èçä»»ä½ç³»ç»ä¸è¿è¡ãJVMå¯¹å ¶å®ç°çæäºæ¹é¢ç»åºäºå ·ä½çå®ä¹ï¼ç¹å«æ¯å¯¹Javaå¯æ§è¡ä»£ç ï¼å³åèç (Bytecode)çæ ¼å¼ç»åºäºæç¡®çè§æ ¼ãè¿ä¸è§æ ¼å æ¬æä½ç åæä½æ°çè¯æ³åæ°å¼ãæ è¯ç¬¦çæ°å¼è¡¨ç¤ºæ¹å¼ã以åJavaç±»æ件ä¸çJava对象ã常éç¼å²æ± å¨JVMçåå¨æ 象ãè¿äºå®ä¹ä¸ºJVM解éå¨å¼å人åæä¾äºæéçä¿¡æ¯åå¼åç¯å¢ãJavaç设计è å¸æç»å¼å人å以éå¿æ欲使ç¨Javaçèªç±ã
ãã
ããJVMå®ä¹äºæ§å¶Java代ç 解éæ§è¡åå ·ä½å®ç°çäºç§è§æ ¼ï¼å®ä»¬æ¯ï¼
ããJVMæ令系ç»
ããJVMå¯åå¨
ããJVMæ ç»æ
ããJVMç¢çåæ¶å
ããJVMåå¨åº
ãã
ãã2.1JVMæ令系ç»
ãã
ããJVMæ令系ç»åå ¶ä»è®¡ç®æºçæ令系ç»æå ¶ç¸ä¼¼ãJavaæ令ä¹æ¯ç± æä½ç åæä½æ°ä¸¤é¨åç»æãæä½ç 为8ä½äºè¿å¶æ°ï¼æä½æ°è¿ç´§éå¨æä½ç çåé¢ï¼å ¶é¿åº¦æ ¹æ®éè¦èä¸åãæä½ç ç¨äºæå®ä¸æ¡æ令æä½çæ§è´¨ï¼å¨è¿éæ们éç¨æ±ç¼ç¬¦å·çå½¢å¼è¿è¡è¯´æï¼ï¼å¦iload表示ä»åå¨å¨ä¸è£ å ¥ä¸ä¸ªæ´æ°ï¼anewarray表示为ä¸ä¸ªæ°æ°ç»åé 空é´ï¼iand表示两个æ´æ°ç"ä¸"ï¼retç¨äºæµç¨æ§å¶ï¼è¡¨ç¤ºä»å¯¹æä¸æ¹æ³çè°ç¨ä¸è¿åãå½é¿åº¦å¤§äº8ä½æ¶ï¼æä½æ°è¢«å为两个以ä¸åèåæ¾ãJVMéç¨äº"big endian"çç¼ç æ¹å¼æ¥å¤çè¿ç§æ åµï¼å³é«ä½bitsåæ¾å¨ä½åèä¸ãè¿å Motorolaåå ¶ä»çRISC CPUéç¨çç¼ç æ¹å¼æ¯ä¸è´çï¼èä¸Inteléç¨ç"little endian "çç¼ç æ¹å¼å³ä½ä½bitsåæ¾å¨ä½ä½åèçæ¹æ³ä¸åã
ãã
ããJavaæ令系ç»æ¯ä»¥Javaè¯è¨çå®ç°ä¸ºç®ç设计çï¼å ¶ä¸å å«äºç¨äºè°ç¨æ¹æ³åçè§å¤å ç¨ç³»ç»çæ令ãJavaç8ä½æä½ç çé¿åº¦ä½¿å¾JVMæå¤æ256ç§æ令ï¼ç®å已使ç¨äº160å¤ç§æä½ç ã
ãã
ãã2.2JVMæ令系ç»
ãã
ããææçCPUåå å«ç¨äºä¿åç³»ç»ç¶æåå¤çå¨æéä¿¡æ¯çå¯åå¨ç»ãå¦æèææºå®ä¹è¾å¤çå¯åå¨ï¼ä¾¿å¯ä»¥ä»ä¸å¾å°æ´å¤çä¿¡æ¯èä¸å¿ 对æ æå åè¿è¡è®¿é®ï¼è¿æå©äºæé«è¿è¡é度ãç¶èï¼å¦æèææºä¸çå¯åå¨æ¯å®é CPUçå¯åå¨å¤ï¼å¨å®ç°èææºæ¶å°±ä¼å ç¨å¤çå¨å¤§éçæ¶é´æ¥ç¨å¸¸è§åå¨å¨æ¨¡æå¯åå¨ï¼è¿åèä¼éä½èææºçæçãé对è¿ç§æ åµï¼JVMåªè®¾ç½®äº4个æ为常ç¨çå¯åå¨ãå®ä»¬æ¯ï¼
ããpcç¨åºè®¡æ°å¨
ããoptopæä½æ°æ 顶æé
ããframeå½åæ§è¡ç¯å¢æé
ããvarsæåå½åæ§è¡ç¯å¢ä¸ç¬¬ä¸ä¸ªå±é¨åéçæé
ããææå¯åå¨å为32ä½ãpcç¨äºè®°å½ç¨åºçæ§è¡ãoptop,frameåvarsç¨äºè®°å½æåJavaæ åºçæéã
ãã
ãã2.3JVMæ ç»æ
ãã
ããä½ä¸ºåºäºæ ç»æç计ç®æºï¼Javaæ æ¯JVMåå¨ä¿¡æ¯ç主è¦æ¹æ³ãå½JVMå¾å°ä¸ä¸ªJavaåèç åºç¨ç¨åºåï¼ä¾¿ä¸ºè¯¥ä»£ç ä¸ä¸ä¸ªç±»çæ¯ä¸ä¸ªæ¹æ³å建ä¸ä¸ªæ æ¡æ¶ï¼ä»¥ä¿å该æ¹æ³çç¶æä¿¡æ¯ãæ¯ä¸ªæ æ¡æ¶å æ¬ä»¥ä¸ä¸ç±»ä¿¡æ¯ï¼
ããå±é¨åé
ããæ§è¡ç¯å¢
ããæä½æ°æ
ãã
ããå±é¨åéç¨äºåå¨ä¸ä¸ªç±»çæ¹æ³ä¸æç¨å°çå±é¨åéãvarså¯åå¨æå该åé表ä¸ç第ä¸ä¸ªå±é¨åéã
ããæ§è¡ç¯å¢ç¨äºä¿å解éå¨å¯¹Javaåèç è¿è¡è§£éè¿ç¨ä¸æéçä¿¡æ¯ãå®ä»¬æ¯ï¼ä¸æ¬¡è°ç¨çæ¹æ³ãå±é¨åéæéåæä½æ°æ çæ 顶åæ åºæéãæ§è¡ç¯å¢æ¯ä¸ä¸ªæ§è¡ä¸ä¸ªæ¹æ³çæ§å¶ä¸å¿ãä¾å¦ï¼å¦æ解éå¨è¦æ§è¡iadd(æ´æ°å æ³)ï¼é¦å è¦ä»frameå¯åå¨ä¸æ¾å°å½åæ§è¡ç¯å¢ï¼èå便ä»æ§è¡ç¯å¢ä¸æ¾å°æä½æ°æ ï¼ä»æ 顶弹åºä¸¤ä¸ªæ´æ°è¿è¡å æ³è¿ç®ï¼æåå°ç»æåå ¥æ 顶ã
ããæä½æ°æ ç¨äºåå¨è¿ç®æéæä½æ°åè¿ç®çç»æã
ãã
ãã2.4JVMç¢çåæ¶å
ãã
ããJavaç±»çå®ä¾æéçåå¨ç©ºé´æ¯å¨å ä¸åé çã解éå¨å ·ä½æ¿æ 为类å®ä¾åé 空é´çå·¥ä½ã解éå¨å¨ä¸ºä¸ä¸ªå®ä¾åé å®åå¨ç©ºé´åï¼ä¾¿å¼å§è®°å½å¯¹è¯¥å®ä¾æå ç¨çå ååºåç使ç¨ãä¸æ¦å¯¹è±¡ä½¿ç¨å®æ¯ï¼ä¾¿å°å ¶åæ¶å°å ä¸ã
ããå¨Javaè¯è¨ä¸ï¼é¤äºnewè¯å¥å¤æ²¡æå ¶ä»æ¹æ³ä¸ºä¸å¯¹è±¡ç³è¯·åéæ¾å åã对å åè¿è¡éæ¾ååæ¶çå·¥ä½æ¯ç±Javaè¿è¡ç³»ç»æ¿æ çãè¿å 许Javaè¿è¡ç³»ç»ç设计è èªå·±å³å®ç¢çåæ¶çæ¹æ³ãå¨SUNå ¬å¸å¼åçJava解éå¨åHot Javaç¯å¢ä¸ï¼ç¢çåæ¶ç¨åå°çº¿ç¨çæ¹å¼æ¥æ§è¡ãè¿ä¸ä½ä¸ºè¿è¡ç³»ç»æä¾äºè¯å¥½çæ§è½ï¼èä¸ä½¿ç¨åºè®¾è®¡äººåæè±äºèªå·±æ§å¶å å使ç¨çé£é©ã
ãã
ãã2.5JVMåå¨åº
ãã
ããJVMæ两类åå¨åºï¼å¸¸éç¼å²æ± åæ¹æ³åºã常éç¼å²æ± ç¨äºåå¨ç±»å称ãæ¹æ³åå段å称以å串常éãæ¹æ³åºåç¨äºåå¨Javaæ¹æ³çåèç ã对äºè¿ä¸¤ç§åå¨åºåå ·ä½å®ç°æ¹å¼å¨JVMè§æ ¼ä¸æ²¡ææç¡®è§å®ãè¿ä½¿å¾Javaåºç¨ç¨åºçåå¨å¸å±å¿ é¡»å¨è¿è¡è¿ç¨ä¸ç¡®å®ï¼ä¾èµäºå ·ä½å¹³å°çå®ç°æ¹å¼ã
ãã
ããJVMæ¯ä¸ºJavaåèç å®ä¹çä¸ç§ç¬ç«äºå ·ä½å¹³å°çè§æ ¼æè¿°ï¼æ¯Javaå¹³å°ç¬ç«æ§çåºç¡ãç®åçJVMè¿åå¨ä¸äºéå¶åä¸è¶³ï¼æå¾ äºè¿ä¸æ¥çå®åï¼ä½æ 论å¦ä½ï¼JVMçææ³æ¯æåçã
ãã
ãã对æ¯åæï¼å¦ææJavaåç¨åºæ³è±¡ææ们çC++åç¨åºï¼Javaåç¨åºç¼è¯åçæçåèç å°±ç¸å½äºC++åç¨åºç¼è¯åç80x86çæºå¨ç ï¼äºè¿å¶ç¨åºæ件ï¼ï¼JVMèææºç¸å½äº80x86计ç®æºç³»ç»,Java解éå¨ç¸å½äº80x86CPUãå¨80x86CPUä¸è¿è¡çæ¯æºå¨ç ï¼å¨Java解éå¨ä¸è¿è¡çæ¯Javaåèç ã
ãã
ããJava解éå¨ç¸å½äºè¿è¡Javaåèç çâCPUâ,ä½è¯¥âCPUâä¸æ¯éè¿ç¡¬ä»¶å®ç°çï¼èæ¯ç¨è½¯ä»¶å®ç°çãJava解éå¨å®é ä¸å°±æ¯ç¹å®çå¹³å°ä¸çä¸ä¸ªåºç¨ç¨åºãåªè¦å®ç°äºç¹å®å¹³å°ä¸ç解éå¨ç¨åºï¼Javaåèç å°±è½éè¿è§£éå¨ç¨åºå¨è¯¥å¹³å°ä¸è¿è¡ï¼è¿æ¯Java跨平å°çæ ¹æ¬ãå½åï¼å¹¶ä¸æ¯å¨ææçå¹³å°ä¸é½æç¸åºJava解éå¨ç¨åºï¼è¿ä¹æ¯Java并ä¸è½å¨ææçå¹³å°ä¸é½è½è¿è¡çåå ï¼å®åªè½å¨å·²å®ç°äºJava解éå¨ç¨åºçå¹³å°ä¸è¿è¡ã
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://88.wendadaohang.com/zd/VctcMKSVK.html
其他回答
第1个回答 2013-07-27
java文件被javac命令编译成 .class文件, 然后通过java命令执行, 然后向控制台输出信息比如HelloWorld.java 源代码文件, 通过javac HelloWorld.java 命令, 把源文件解释为可以被计算机执行的 HelloWorld.class 文件用java HelloWorld命令 把HelloWorld.class 文件执行, 在控制台输出结果, 这就是java编译执行的过程.
第2个回答 2013-07-27
应该不是很难吧,就是.java文件被编译成class文件,然后被执行
相似回答
简述
JAVA
程序的编辑
编译
和
运行过程
答:
第一步(编译): 创建完源文件之后,程序会先被编译为.class文件。
Java编译
一个类时,如果这个类所依赖的类还没有被编译,编译器就会先编译这个被依赖的类,然后引用,否则直接引用,这个有点象make。如果
java编译
器在指定目录下找不到该类所其依赖的类的.class文件或者.java源文件的话,编译器话报“...
java
语言
编译
和解释
执行的
具体
过程
是怎样的?
答:
4、解释器在
java
虚拟机中,
编译
器在JDK或JRE 中。5、java虚拟机就是常说的java
运行
环境,其缩写是 JRE,安装在操作系统
下的
一个目录中,这个目录在安装时可以由你自行指定,就像你安装其它应用软件一样。JDK中包含了JRE,还有开发环境,如编译器,帮助文档生成器,以及系统API的jar库文件等。
开发与
运行Java
程序需要经过的三个主要
步骤
是?
答:
Java编译
器,“javac”,读取你的Java源程序并翻译 成Java虚拟机能够明白的指令集合,且以字节码的 形式保存在文件中。通常,字节码文件以class作为 扩展名;运行class(字节码)文件 Java解释器读取字节码,取出指令并且翻译成计算 机能
执行的
代码,完成
运行过程
;...
Java的
详细
运行步骤
答:
在
编译
好
java
程序得到MainApp.class文件后,在命令行上敲java AppMain。系统就会启动一个jvm进程,jvm进程从classpath路径中找到一个名为AppMain.class的二进制文件,将MainApp的类信息加载到
运行
时数据区的方法区内,这个
过程
叫做MainApp类的加载。然后JVM找到AppMain的主函数入口,开始
执行
main函数。main...
java
工作原理
答:
,通过调用类(这些类实现了
Java
API)中的方法来访问资源系统,把源文件编译生成一种二进制中间码,存储在class文件中,然后再通过
运行
与操作系统平台环境相对应的Java虚拟机来运行class文件,
执行编译
产生的字节码,调用class文件中实现的方法来满足程序的Java API调用 。
如何在CMD
编译
和
运行JAVA
代码?
答:
要想编译和
运行java
文件,很
简单
,只需要两个命令:(1)javac:作用:
编译java
文件;使用方法: javac Hello.java ,如果不出错的话,在与Hello.java 同一目录下会生成一个Hello.class文件,这个class文件是操作系统能够使用和
运行的
文件。(2)java: 作用:运行.class文件;使用方法:java Hello,如果...
java中的编译
与反
编译?
答:
class文件打破了C或者C++等语言所遵循的传统,使用这些传统语言写的程序通常首先被
编译
,然后被连接成单独的、专门支持特定硬件平台和操作系统的二进制文件。通常情况下,一个平台上的二进制可
执行
文件不能在其他平台上工作。而
Java
class文件是
可以运行
在任何支持Java虚拟机的硬件平台和操作系统上的二进制文件...
请问
java
程序在
编译
和
运行
时有什么区别,系统分别都会做什么?
答:
小弟不才,笼统点说,编译是把我们写的
java
语言编译成一种过渡语言给机器识别(电脑是不会直接看懂你写的java语言的,中间需要一个转换
过程
,可以理解成是
编译的
作用),例如会生成*.class等这些文件,而
运行
就是
执行编译
后的那些文件。。应该大概就是这样 ...
大家正在搜
执行编译好的java程序的命令是
java是编译执行还是解释执行
java编译运行过程
java编译执行
编译和解释执行一个java
java程序的编译命令是什么
java编译可执行文件
java源程序经过编译
javac编译java文件
相关问题
Java编译运行过程
java语言编译和解释执行的具体过程是怎样的?
java程序的工作原理(从源码编写到编译到运行全过程)
java的编译和执行模式包括哪两点
简述JAVA程序的编辑编译和运行过程
Java编译执行顺序
下面的Java 程序编译运行结果是( )。 ...