java的編譯器先將其編譯為class文件,也就是位元組碼;然後將位元組碼交由jvm(java虛擬機)解釋執行, 所以很多地方都說「java是一種半編譯、半解釋執行」的語言
⑵ java語言是解釋型語言還是編譯型的
於常見的解釋執行語言不同,它既是編譯型也是解釋型:編譯就是把源文件編譯成.class文件,解釋就是虛擬機通過解釋.class文件完成對.class文件的執行。
⑶ java是解釋型語言還是編譯型語言
有人說Java是編譯型的。因為所有的Java代碼都是要編譯的,.java不經過編譯就無法執行。 也有人說Java是解釋型的。因為java代碼編譯後不能直接運行,它是解釋運行在JVM上的,所以它是解釋型的。對於C和C++,它們經過一次編譯之後,可以由操作系統直接執行,所以它們是編譯型語言。而Java不一樣,它首先由編譯器編譯成.class(位元組碼)文件,然後在通過JVM從.class文件中讀一行解釋執行一行,所以它是解釋型的語言。也正是由於java對於多種不同的操作系統有不同的JVM,所以實現了真正意義上的跨平台。(1)Java語言的編譯-->解釋-->運行過程 (2)JVM到這里,大家應該也都明白了。最後給出編譯型語言和解釋型語言的定義。
定義:編譯型語言:把做好的源程序全部編譯成二進制代碼的可運行程序。然後,可直接運行這個程序。
解釋型語言:把做好的源程序翻譯一句,然後執行一句,直至結束!特點:編譯型語言,執行速度快、效率高;依靠編譯器、跨平台性差。
解釋型語言,執行速度慢、效率低;依靠解釋器、跨平台性好。
舉例:編譯型的語言包括:C、C++、Delphi、Pascal、Fortran
解釋型的語言包括:Java、Basic、javascript
⑷ 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的理解還停留在上古時代或者教科書里。其實,現在用編譯型、解釋型來分類編程語言已經有點力不從心了。JAVA的第一道工序是javac編譯,當然目標文件是BYTECODE。後續可能有三種處理方式:1. 運行時,BYTECODE由JVM逐條解釋執行,2. 運行時,部分代碼可能由JIT翻譯為目標機器指令(以method為翻譯單位,還會保存起來,第二次執行就不用翻譯了)直接執行;3. RTSJ。繼JAVAC之後執行AOT二次編譯,生成靜態的目標平台代碼(典型的就是IBM WEBSHPERE REAL TIME)。有的時候,可能是以上三種方式同時在使用。至少,1和2是同時使用的,3需要程序員手工指定。所以討論語言得更細化一點了,強類型的、弱類型的,靜態的、動態的,GC-based的、手工管理內存的,有沒有VM...
⑺ Java是解釋型還是編譯型
它既不屬於傳統的編譯型語言也不屬於解釋型語言。它是先編譯成.CLASS位元組碼文件,然後再利用虛擬機解釋執行的.可以說先編譯後解釋吧。
⑻ Java 是編譯型語言還是解釋型語言
高級計算機語言主要有兩種類型:編譯和解釋。
這是一個跨平台的java,並可在任何地方運行:跨平台的java是基於JVM。Java虛擬機是由軟體或硬體模擬的計算機程序,java,計算機所有的.class文件是運行在JVM,即JVM *。只有Java類文件,以適應不同的操作系統,讓操作系統的安裝按照不同只要JVM的類型,然後程序無論哪個操作系統的JVM可以糾正窗口/其他...... JVM的Unix / JVM的實現因此,如果沒有JVM,就不能跨平台。
⑼ 編譯型和解釋型的區別&Java從編譯到執行的過程
編譯執行:
編譯執行是一種計算機語言的執行方式。由編譯程序將目標代碼一次性編譯成目標程序,再由機器運行目標程序(效率高於解釋執行)
解釋執行:
使用解釋執行的程序我們一般稱為解釋程序。它將源語言直接作為源程序輸入,解釋執行解釋一句後就提交計算機執行一句,並不形成目標程序。解釋執行不依賴於平台。
Java從編譯到執行的過程: