java是解釋型語言嗎
1. 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。
2. java是解釋性編程語言嗎
java compile 只是把source編譯成jvm可辨識的中間代碼,程序運行時,jvm再把代碼根據不同的cpu,不同的os,解釋成相應的機器碼。所以java能跨平台
3. 為什麼java是解釋型語言
所謂編譯型是能生成一種機器能直接運行的代碼,就象C++
解釋型的是就只有源代回碼,不進行編答譯,直接用解釋器來執行。
Java編譯成的class文件被設計為能在某種機器上能直接運行,如果真的能有這樣的機器,就能直接運行class文件,而.class就是該機器上能直接運行的文件類型。
就象windows上的exe,如果想在windows上運行其他操作系統上的程序,就要一個模擬器,也就是虛擬機, Java也是一樣的。
所以我還是覺得Java應該是編譯型的。
4. 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...
5. Java 是編譯型語言還是解釋型語言
1.編譯型語言在程序執行之前,有一個單獨的編譯過程,將程序翻譯成機器語言,以後執行這個程序的時候,就不用再進行翻譯了。
2.解釋型語言,是在運行的時候將程序翻譯成機器語言,所以運行速度相對於編譯型語言要慢。
3.C/C++ 等都是編譯型語言,而Java,C#等都是解釋型語言。
4.雖然Java程序在運行之前也有一個編譯過程,但是並不是將程序編譯成機器語言,而是將它編譯成位元組碼(可以理解為一個中間語言)。
在運行的時候,由JVM將位元組碼再翻譯成機器語言。
5.腳本語言一般都有相應的腳本引擎來解釋執行。 他們一般需要解釋器才能運行。JAVASCRIPT,ASP,PHP,PERL,Nuva都是腳本語言。C/C++編譯、鏈接後,可形成獨立執行的exe文件。
6. java語言是解釋型語言還是編譯型的
它既不屬於傳統的編譯型語言也不屬於解釋型語言.
它是先編譯成.CLASS位元組碼文件,然後再利用虛擬機解釋執行的.可以說先編譯後解釋吧.
7. JAVA語言是解釋型還是編譯型語言
java的編譯器先將其編譯為class文件,也就是位元組碼;然後將位元組碼交由jvm(java虛擬機)解釋執行;
所以很多地方都說「java是一種半編譯、半解釋執行」的語言;
近來(其實也不是很"近")Oracle的(以前是Sun的)HotSpot VM採用了jit compile(just in time compilation)技術,將運行頻率很高的位元組碼直接編譯為機器指令執行以提高性能, 所以當位元組碼被jit編譯為機器碼的時候,要說它是編譯執行的也可以...
不過總體來講,java的編譯結果是被jvm「解釋執行」的,所以這么說也能說通,而其實這個「是編譯還是解釋」這個概念在這里已經有點模糊了,理解它的過程就行了,不必下一個「精確」的定義;
而我自己仍然贊成「java是編譯型語言」的說法,因為「編譯」其本質就是「把一個相對高級的語言轉換為另一個相對低級的語言」,而由java -> class文件的編譯已經滿足了這個特徵; 而後面你要說jvm是「解釋執行」的,那其實硬體對於機器碼又何嘗不是「解釋執行」呢?
8. Java是解釋型語言還是編譯型語言
java的編譯器先將其編譯為class文件,也就是位元組碼;然後將位元組碼交由jvm(java虛擬機)解釋執行, 所以很多地方都說「java是一種半編譯、半解釋執行」的語言
9. 為什麼java是解釋型語言
需要虛擬機在實時解釋java的位元組碼來運行。
JVM虛擬機不是直接運行所在硬體架構的指令集比如x86.
編譯語言必須把源碼編譯成硬體的指令集,java不是,所以java是解釋的。
10. 為什麼說Java是一種解釋性語言
你們抄老師是讓你這樣回答的.
1.java是由java源代碼編譯成位元組碼存放在
.class文件中的.
而執行時,是由java虛擬機(jvm)讀取位元組碼文件翻譯並執行的.
所以java是解釋性的
像這樣答,老師肯定說,嗯,不錯.就是這個意思.