JPHP是一个面向Java虚拟机的PHP实现,支持PHP(5.3+)的很多特性。JPHP负责将PHP源代码编译为JVM字节码,使其能够运行在JVM上,这一点和JRuby、Jython等实现类似。它支持JDK 1.6及以上版本。该项目发起于去年10月。
\JPHP无意替代Zend PHP引擎或Facebook 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性能的第一次尝试,到底效果如何,我们拭目以待。感兴趣的读者可以下载并动手尝试一下。
\\\感谢孙镜涛对本文的审校。
\给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。
1289

被折叠的 条评论
为什么被折叠?



