php和java有什麼區別

2020-07-16 10:06:05
PHP與Java的區別有:在執行機制上PHP是直接對文字程式碼進行解釋編譯而Java則先被編譯成位元組碼再在虛擬機器中進行二次編譯;在處理並行上,Java是採取單進程多執行緒的方式,PHP是多進程

(1)執行機制

Java程式碼被編譯成位元組碼後,會在虛擬機器裡由JIT進行二次編譯成為本地碼,據傳言其執行速度可以和C++相媲美,經過我自己測試,用Java實現一個簡單的Memcache協定的快取伺服器,在Java 1.6下執行,和memcache本身相比,同樣資料量的存取時間比大概是3:2,雖然有差距,但是比想象的要好很多。Java 1.7在JIT方面做了大量的改進,效能比Java 1.6還要好。

PHP是直接對文字程式碼進行解釋執行,即便有opcode快取技術,仍然有不可逾越的效能鴻溝。PHP的opcode類似於java的class位元組碼,仍是解釋執行。

(2)處理並行

Java在併行處理上採取單進程多執行緒的方式,web應用會隨著web server的啟動而啟動,而來自web 瀏覽器的請求將被分配給執行緒池內的閒置執行緒處理,也就是說當有請求到達的時候,進程是準備好的,執行緒是準備好的,Java要做的僅僅是業務邏輯處理了。

PHP在併行處理上時採取多進程的方式,在web server裡沒有物理的web應用概念,每個請求都相當於一個獨立的應用,而進程也隨著請求的到達才啟動,而隨著請求的結束而消亡。在Fast CGI環境下,有類似於執行緒池的進程池技術,對效能提高有很大的幫助。然而一方面web server和Fast cgi通訊仍需要通過socket,多出了一定的IO損耗,另一方面進程池內的進程間也很難進行通訊,所以在併行處理上仍然無法和Java相比。

(3)資料庫應用

Java可以採用資料庫連線池技術,節省下資料庫連線過程帶來的時間損失。

PHP沒有這個好處,原因來自上面的第二條。

在資料庫介面上java有JDBC,PHP有PDO,這兩個很類似。然而Java有非常多的ORM技術框架(如Hibernate)使資料庫操作變得異常簡單,而PHP的執行方式決定了它是ORM的禁區(當然也可以做ORM,只是做到什麼程度是由你對ORM帶來的效能損耗的忍受程度決定的)。

(4)快取技術

Java是單進程,很多快取可以直接在Java的heap中做,而無需借助外在的工具,當然也有很好的快取框架,比如Ehcache,因為沒有網路IO,所以效能非常高。

PHP多進程單執行緒決定了它只能借助外來的快取伺服器,比如Memcache.

(5)熱部署

Java的熱部署能力很弱,如果希望修個BUG而不停服是很難做到的。PHP天然熱部署。

(6)開發成本

一個好Java程式設計師所需的知識儲備更多,開發、偵錯所需的週期較長,好點的web server也都是收費的。PHP免費、web server也免費。

(7)安全性

這個要看你怎麼來定義安全性,如果是程式碼安全,java class反編譯很容易,這點上來說兩者差不多。Java有安全設定機制可保證一些「非法操作」無法執行,這點上來說PHP較弱。然而Java很容易因為一個BUG導致整個應用宕掉,PHP就安全的多。

以上就是php和java有什麼區別的詳細內容,更多請關注TW511.COM其它相關文章!