java解釋語言
『壹』 為什麼java是解釋型語言
所謂編譯型是能生成一種機器能直接運行的代碼,就象C++
解釋型的是就只有源代回碼,不進行編答譯,直接用解釋器來執行。
Java編譯成的class文件被設計為能在某種機器上能直接運行,如果真的能有這樣的機器,就能直接運行class文件,而.class就是該機器上能直接運行的文件類型。
就象windows上的exe,如果想在windows上運行其他操作系統上的程序,就要一個模擬器,也就是虛擬機, Java也是一樣的。
所以我還是覺得Java應該是編譯型的。
『貳』 java語言解釋
public class WhileDemo {
public static void main(String[] args) {
String FormMe="Cory this string until you encounter the letter'g'.";//定義一個字元串
StringBuffer ToMe=new StringBuffer();//建立一個stringbuffer
int i=0;//設定初始i
char c=FormMe.charAt(i);//獲取字元串中i位置char
while(c!='g'){//循環 當獲取的char不為g時一直循環
ToMe.append(c);//在stringbuffer中增加獲取到的char
c=FormMe.charAt(++i);//設定cwei字元串中中下一個char
}
System.out.println(ToMe);//列印stringbuffer中的字元串
}
}
『叄』 java是解釋型語言嗎
1.class文件中不是機器語言,是經過編碼的8位位元組二進制流(注意雖然表示方法都似乎一樣的,但是語義是不一樣的,class文件有自己的編碼格式),數據項按順序存儲在class文件中,向另的項之間沒有任何間隔,使得class文件緊湊。其占據多個位元組空間的項按高位在前的順序分為幾個連續的位元組存放。其實java語言與class文件具有非排他性,兩者之間沒有必然的聯系(當然,普遍認為有聯系)。
2.不同的平台下虛擬機的細節實現不一樣,這就使得它解釋執行的class文件能夠適應不同的平台。
3.使用虛擬機會減少代碼的執行效率,要增強generalization(對不同平台的支持)就必須減少specilization(對某一平台的優化),魚與熊掌不可兼得的。
-----------------------PS分割線---------------------------
PS:如果你對java的原理更感興趣的話,關於更多的講解可以看看Bill Venners的《深入Java虛擬機》,很有用處,雖然只是講到java 1.2,但是基本原理都差不多的。
PS PS:class文件的開頭部分都是一個稱作魔數的段,其內容為0xCAFEBABE。
『肆』 java是解釋性編程語言嗎
java compile 只是把source編譯成jvm可辨識的中間代碼,程序運行時,jvm再把代碼根據不同的cpu,不同的os,解釋成相應的機器碼。所以java能跨平台
『伍』 Java解釋語言怎麼用
這東西叫Annotation(註解),寫起來和一般java類沒太大區別,給你篇文章。
http://blog.csdn.net/rainlight/article/details/611863
『陸』 JAVA是解釋型語言還是編譯型語言
有些答案對JAVA的理解還停留在上古時代或者教科書里。其實,現在用編譯型、解釋型來分類編程語言已經有點力不從心了。JAVA的第一道工序是javac編譯,當然目標文件是BYTECODE。後續可能有三種處理方式:1. 運行時,BYTECODE由JVM逐條解釋執行,2. 運行時,部分代碼可能由JIT翻譯為目標機器指令(以method為翻譯單位,還會保存起來,第二次執行就不用翻譯了)直接執行;3. RTSJ。繼JAVAC之後執行AOT二次編譯,生成靜態的目標平台代碼(典型的就是IBM WEBSHPERE REAL TIME)。有的時候,可能是以上三種方式同時在使用。至少,1和2是同時使用的,3需要程序員手工指定。所以討論語言得更細化一點了,強類型的、弱類型的,靜態的、動態的,GC-based的、手工管理內存的,有沒有VM...
『柒』 java是編譯型語言還是解釋型語言
概念:
編譯型語言:把做好的源程序全部編譯成二進制代碼的可運行程序。然後,可直接運行這個程序。
解釋型語言:把做好的源程序翻譯一句,然後執行一句,直至結束!
區別:
編譯型語言,執行速度快、效率高;依賴編譯器、跨平台性差些。如C、C++、Delphi、 Pascal,Fortran。
解釋型語言,執行速度慢、效率低;依賴解釋器、跨平台性好。如Java、Basic.
通俗的講,編譯語言是在編譯後可以直接運行,而解釋語言的執行需要一個解釋環境。
java很特殊,java程序也需要編譯,但是沒有直接編譯稱為機器語言,而是編譯稱為位元組碼,然後用解釋方式執行位元組碼。
JIT:
首先採用編譯形式生成某種中介代碼(Java bytecode/MSIL),然後在運行時將其(通常以函數或Block為單位)最終轉換成機器碼,然後執行,轉化的機器碼可以被cache,以提高重復執行的效率
JAVA的第一道工序是javac編譯,當然目標文件是BYTECODE。後續可能有三種處理方式:
1. 運行時,BYTECODE由JVM逐條解釋執行,
2. 運行時,部分代碼可能由JIT翻譯為目標機器指令(以method為翻譯單位,還會保存起來,第二次執行就不用翻譯了)直接執行;
3. RTSJ。繼JAVAC之後執行AOT二次編譯,生成靜態的目標平台代碼(典型的就是IBM WEBSHPERE REAL TIME)。
『捌』 JAVA語言是解釋型還是編譯型語言
java的編譯器先將其編譯為class文件,也就是位元組碼;然後將位元組碼交由jvm(java虛擬機)解釋執行;
所以很多地方都說「java是一種半編譯、半解釋執行」的語言;
近來(其實也不是很"近")Oracle的(以前是Sun的)HotSpot VM採用了jit compile(just in time compilation)技術,將運行頻率很高的位元組碼直接編譯為機器指令執行以提高性能, 所以當位元組碼被jit編譯為機器碼的時候,要說它是編譯執行的也可以...
不過總體來講,java的編譯結果是被jvm「解釋執行」的,所以這么說也能說通,而其實這個「是編譯還是解釋」這個概念在這里已經有點模糊了,理解它的過程就行了,不必下一個「精確」的定義;
而我自己仍然贊成「java是編譯型語言」的說法,因為「編譯」其本質就是「把一個相對高級的語言轉換為另一個相對低級的語言」,而由java -> class文件的編譯已經滿足了這個特徵; 而後面你要說jvm是「解釋執行」的,那其實硬體對於機器碼又何嘗不是「解釋執行」呢?
『玖』 為什麼java是解釋型語言
需要虛擬機在實時解釋java的位元組碼來運行。
JVM虛擬機不是直接運行所在硬體架構的指令集比如x86.
編譯語言必須把源碼編譯成硬體的指令集,java不是,所以java是解釋的。
『拾』 為什麼說Java是一種解釋性語言
你們抄老師是讓你這樣回答的.
1.java是由java源代碼編譯成位元組碼存放在
.class文件中的.
而執行時,是由java虛擬機(jvm)讀取位元組碼文件翻譯並執行的.
所以java是解釋性的
像這樣答,老師肯定說,嗯,不錯.就是這個意思.