讓PHP跑在JVM上——JPHP

jopen 10年前發布 | 19K 次閱讀 JPHP PHP開發

JPHP是一個面向Java虛擬機的PHP實現,支持PHP(5.3+)的很多特性。JPHP負責將PHP源代碼編譯為JVM字節碼,使其能夠運行在JVM上,這一點和JRuby、Jython等實現類似。它支持JDK 1.6及以上版本。該項目發起于去年10月。

JPHP無意替代Zend PHP引擎或非死book HHVM(HHVM的思路是將PHP編譯為一種中間字節碼,再通過JIT將字節碼編譯為x64機器碼)。出于以下原因,設計者不打算為JPHP實現Zend運行時庫(如Curl、PRCE等):

  • 能夠在PHP中使用Java類庫
  • 通過JIT和JVM提升性能
  • 使用更好的運行時庫替換Zend PHP丑陋的運行時庫
  • 將PHP語言的使用范圍擴充到Web之外
  • JVM對Unicode字符串和線程支持更好

JPHP有如下功能:

  • JIT(比PHP 5.4快2-10倍)
  • 優化器(優化常量表達式、內聯函數等)
  • 可以在PHP代碼中使用Java的類庫和類
  • Unicode字符串(類似Java中的UTF-16)
  • 線程、套接字
  • 環境架構(類似runkit zend擴展中的沙盒對象)
  • 支持GUI,基于Swing實現而且有所改進,提供了更為靈活的布局
  • 面向類和函數的內嵌緩存系統
  • 面向類和函數的可選熱更新(Optional Hot Reloading)機制

語言方面的特性包括:

  • 完全支持PHP 5.2+(包括OOP)
  • 閉包(PHP 5.3),在閉包中自動綁定$this(PHP 5.4)
  • 完全支持命名空間(PHP 5.3)
  • 類的spl自動加載(PHP 5.3)
  • Iterators、ArrayAccess和Serializable
  • 類、數組和callable的類型約束(PHP 5.4)
  • 數組短語法(PHP 5.4)
  • 針對循環引用的GC(PHP 5.3)

更多特性可以查看該項目的README文件。

此外,JPHP還提供了一些PHP不支持的特性,比如在__toString方法中可以使用異常、對標量的類型約束等。

JPHP并非改進PHP性能的第一次嘗試,到底效果如何,我們拭目以待。感興趣的讀者可以下載并動手嘗試一下。

來自:http://www.infoq.com/cn/news/2014/03/jphp

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!