1、專注的領域不同
java是純面向對象開發,功能強大,分支眾多,沒有java不能做的軟體。C/S也好B/S也好。從功能上講,沒有語言可以和java相比。但其優勢也是其劣勢,具體參考後面的瓶頸解釋。
PHP屬於後起之秀,吸收了java和c以及perl等語言優點,專注互聯網領域。在WEB領域中PHP擁有得天獨厚的優勢,WEB領域沒有語言可以和PHP相比。
2、資料庫訪問上不同
Java通過JDBC來訪問資料庫,通過不同的資料庫廠商提供的資料庫驅動方便地訪問資料庫。訪問資料庫的介面比較統一。
PHP對於不同的資料庫採用不同的資料庫訪問介面,所以資料庫訪問代碼的通用性不強。例如:用Java開發的Web應用從MySQL資料庫轉到Oracle資料庫只需要做很少的修改。而PHP則需要做大量的修改工作。
3、系統技術架構上不同
Java語言有著完備的MVC框架,包括視圖層、業務控制層和持久層,在Spring框架中,我們可以通過IOC和AOP降低編碼過程中的高耦合,也就是說Java中的這些框架可以讓開發者有更廣闊的空間去設計科學合理的架構,也體現著Java多層架構的特點。
相比Java而言,PHP留給開發者的空間並不多,但PHP近些年也在改進,迎合電子商務的需要,引入MVC設計模式,但成熟性和穩定性上與Java還是有著不小的差距。不得不提的是PHP可兼容MySQL開發,這使得在考慮成本因素的前提下,PHP變得小而精,收到了一些中小型網站的青睞。
4、安全性上不同
在同是開源和跨平台的java面前,php丟掉了很多的優勢,在代碼的安全性上尤為突出。
php的開發程序在別人拿到代碼後,可以很容易的進行修改。而java開發的程序由於無法看到完整的源代碼,只能看到一些編譯好的類文件,所以安全性較高。
5、開發成本上的不同
PHP最經典的組合就是:PHP + MySQL + Apache。非常適合開發中小型的Web應用,開發的速度比較快。而且所有的軟體都是開源免費的,可以減少投入。
Java的Web應用伺服器有免費Tomcat、JBoss等,如果需要更好的商業化的服務有:Web Sphere和 Web lo
⑵ JAVA的翻譯過程為什麼稱為半編譯半解釋
這個說法不正確,Java的源碼會先編譯為中間語言(.class文件),真正運行時會按需編譯為本地代碼(native code)再執行
⑶ 是不是依靠虛擬機運行的編程語言,就是解釋式語言
你好,這么說基本上是對的。
虛擬機這個詞因為Java而名聲大噪,Java每次運行都需要經過虛擬機的解釋,所以被稱作解釋型語言。當然,它被解釋之前,已經被編譯為class文件了,因而也有人稱Java為半編譯、半解釋的語言。
解釋型語言一般需要個中間構件來「翻譯」它,這個部件可以是虛擬機,也可以是專門的解釋器,但總之,它與編譯型語言的最大區別在於:編譯型在運行前就編譯好了,比如C語言程序,運行前就編譯成了exe文件。但是解釋型語言是運行一次解釋一次,比如Java,每次運行都需要虛擬機重新解釋。
⑷ 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)。
⑸ 計算機高級語言裡面的編譯型和解釋型有什麼區別
答案選b啊
沒有匯編這個過程,匯編是一種語言,不是過程
高級程序語言有兩種:先編譯後執行,和邊邊解釋邊執行(當然還有半解釋半編譯的),無非就是解釋或邊以
比如:basic就是解釋的,兒c/c++
都是編譯的
⑹ 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...
⑺ c#跟c語言有什麼區別
原理上的區別:
c#和java類似,c#是一門半編譯型半解釋型語言,意思是:
A.cs源代碼文件被編譯器編譯(編譯、鏈接)成A.exe(A.obj、A.exe)文件,而文件A.exe中存放的並不是某一款真實CPU(比如intel的x86處理器、AMD的處理器)的機器指令,而存放的是可以一種虛擬處理器(即虛擬機,類似於java虛擬機,這里指的不是像vmware那樣的虛擬機)的機器指令。當雙擊A.exe時,實際上系統是,讓該虛擬機來解釋A.exe中的指令,虛擬機將A.exe中的指令解釋為當前真實CPU上的指令,並將解釋後的指令在真實cpu上運行,以讓A.exe運行。
從A.cs轉化成A.exe是編譯的過程,而虛擬機解釋A.exe並在真實CPU上執行指令是解釋的過程。
而C語言是一門純粹的編譯型語言,A.c被編譯器編譯成A.exe,而A.exe直接在真實CPU上運行,沒有解釋的過程。
語法上的區別:
c#語法實際上類似於java,也就是說處處都是引用類型(其實就是c語言中的指針,但不需要寫星號)。
C語言除了指針類型,還有結構體。結構體的存在,就導致傳參數時對象復制了。而C#中傳參數時不會復制對象。
當然了c#是面向對象的,c語言是面向過程的。
⑻ 編譯型語言和解釋型語言的區別是什麼
編譯型語言和解釋型語言的區別是翻譯的時間點不同。
編譯型語言:編譯型語言在執行之前要先經過編譯過程,編譯成為一個可執行的機器語言的文件,比如exe。
因為翻譯只做一遍,以後都不需要翻譯,所以執行效率高。
解釋型語言:解釋性語言編寫的程序不進行預先編譯,以文本方式存儲程序代碼。
執行時才翻譯執行程序每執行一次就要翻譯一遍。
編譯型語言和解釋型語言的詳細介紹:
對於編譯型語言,開發完成以後需要將所有的源代碼都轉換成可執行程序,比如Windows下的.exe文件,可執行程序裡麵包含的就是機器碼。只要我們擁有可執行程序,就可以隨時運行,不用再重新編譯了,也就是「一次編譯,無限次運行」。
在運行的時候,我們只需要編譯生成的可執行程序,不再需要源代碼和編譯器了,所以說編譯型語言可以脫離開發環境運行。
編譯型語言一般是不能跨平台的,也就是不能在不同的操作系統之間隨意切換。
對於解釋型語言,每次執行程序都需要一邊轉換一邊執行,用到哪些源代碼就將哪些源代碼轉換成機器碼,用不到的不進行任何處理。
每次執行程序時可能使用不同的功能,這個時候需要轉換的源代碼也不一樣。
因為每次執行程序都需要重新轉換源代碼,所以解釋型語言的執行效率天生就低於編譯型語言,甚至存在數量級的差距。
計算機的一些底層功能,或者關鍵演算法,一般都使用C/C++實現,只有在應用層面(比如網站開發、批處理、小工具等)才會使用解釋型語言。
⑼ 關於「編譯型語言」和「解釋性語言」的區別
1、程序控制權不同:
對於解釋性語言而言,程序運行時的控制權在解釋器(jre,.net)而不再用於程序。編譯型語言對於編譯器而言,運行時的控制權在用戶程序。
2、運行速度不同:
一些網頁腳本,伺服器腳本以及輔助開發介面這樣的對速度要求不高,對不同系統的兼容性有一定要求的程序則通常使用解釋性語言,如Java、JavaScript、VBScript、Perl、Python、Ruby、Matlab等等。
編譯語言由於程序執行速度快,同等條件下對系統的要求比較低,因此像開發操作系統、大型應用程序、資料庫系統等時都採用它,像C/C++,Pascal/Object Pascal(Delphi)等都是編譯型語言。
3、移植性不同:
解釋型語言,例如Java語言,Java程序首先通過編譯器編譯成class文件,如果在Windows平台上運行,則通過Windows平台上的Java虛擬機(VM)進行解釋。如果運行在Linux平台上,則通過Linux平台上的Java虛擬機進行解釋執行。
所以說能跨平台,前提是平台上必須要有相匹配的Java虛擬機。如果沒有Java虛擬機,則不能進行跨平台。
編譯型語言,例如C語言,用C語言開發程序後,需要通過編譯器把程序編譯成機器語言(即計算機可以識別的二進制文件,因為不同的操作系統識別的二進制文件是不同的),所以C語言程序進行移植後,需要重新編譯(如Windows編譯成ext文件,Linux編譯成erp文件)。
⑽ JAVA的翻譯過程為什麼稱為半編譯半解釋
其實用解釋來說更好點,畢竟從SRC->位元組碼,真正編譯的只是一部分固定的東西,而對SRC的編譯大多是個解釋的過程