Java编译型语言还是解释型语言
轉自:http://blog.csdn.net/xxb2008/article/details/7924676
JAVA是解釋型語言還是編譯型語言
Under?J2SE?| 三月 10th, 2010
1 comment
?
JAVA是解釋型語言還是編譯型語言
概念:
- 編譯型語言:把做好的源程序全部編譯成二進制代碼的可運行程序。然后,可直接運行這個程序。
- 解釋型語言:把做好的源程序翻譯一句,然后執行一句,直至結束!
?
區別:
- 編譯型語言,執行速度快、效率高;依賴編譯器、跨平臺性差些。如C、C++、Delphi、Pascal,Fortran。
- 解釋型語言,執行速度慢、效率低;依賴解釋器、跨平臺性好。如Java、Basic.
?
通俗的講,編譯語言是在編譯后可以直接運行,而解釋語言的執行需要一個解釋環境。
?java很特殊,java程序也需要編譯,但是沒有直接編譯稱為機器語言,而是編譯稱為字節碼,然后用解釋方式執行字節碼。
JIT:
- 首先采用編譯形式生成某種中介代碼(Java bytecode/MSIL),然后在運行時將其(通常以函數或Block為單位)最終轉換成機器碼,然后執行,轉化的機器碼可以被cache,以提高重復執行的效率
動態語言和靜態語言
Under?J2SE?| 三月 10th, 2010
No comment
?
1.動態語言Dynamically?Typed?Language
例如:ECMAScript(JavaScript)、Ruby、Python、VBScript、php
也叫動態類型定義語言
與靜態類型定義相反,一種在執行期間才去發現數據類型的語言,
動態語言是指程序在運行時可以改變其結構:新的函數可以被引進,已有的函數可以被刪除等在結構上的變化。
動態語言的類型檢查是在運行時做的。
它的優點是方便閱讀,不需要寫非常多的類型相關的代碼;
缺點是不方便調試,命名不規范時會造成讀不懂,不利于理解等。
目前java平臺下的動態語言有Groovy、nice、BeanShell、Jython、JRuby、Rhino(JavaScript)、 Jacl(TCL)、Bistro(SmallTalk)、Kawa(Lisp/Schema),真是越來越多了。java下這么多的動態語言建議選擇 Groovy,感覺血統較為正宗,兼容Java的語法,java程序員學習起來較為容易,上手較快。
2.靜態語言Statically?Typed?Language
例如:C、C++、Java
也叫靜態類型定義語言。即一種在編譯時,數據類型是固定的語言。大多數靜態類型定義語言強制這一點,它要求你在使用所有變量之前要聲明它們的數據類型。
在使用數據之前,我們必須首先定義數據類型,這些數據類型包括int ,float,double等等。就相當于在使用它們之前,首先要為它們分配好內存空間。
靜態類型語言的主要優點在于其結構非常規范,便于調試,方便類型安全;
缺點是為此需要寫更多的類型相關代碼,導致不便于閱讀、不清晰明了。
3.強類型定義語言
一種總是強制類型定義的語言。Java和Python是強制類型定義的。如果你有一個整數,如果不顯示地進行轉換,你不能將其視為一個字符串
4.弱類型定義語言
一種類型可以被忽略的語言,與強類型定義相反。VBScript是弱類型定義
的。在VBScript中,可以將字符串 ’12′ 和整數 3 進行連接得到字符串 ’123′,
然后可以把它看成整數 123,而不需要顯示轉換。
5.腳本語言
腳本語言代表一套與系統程序設計語言不同的協定。
它們犧牲執行速度和與系統程序設計語言相關的類型長度而提供更高的編程創作力和軟件重用。
腳本語言更適合在聯系復雜的應用程序中進行膠著。
為了簡化連接組件的工作,腳本語言被設計為無類型的,腳本語言一般是面向字符的,因為字符為許多不同的事物提供了一致的描述。
事實上,腳本語言都是動態語言,而動態語言都是解釋型語言,不管它們是不是面向對象。
總結
以上是生活随笔為你收集整理的Java编译型语言还是解释型语言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【编程之美】24点游戏
- 下一篇: 快速排序及优化