微信号:infoqchina

介绍:有内容的技术社区媒体

让PHP跑在JVM上——JPHP

2014-03-28 17:26 臧秀涛

‍‍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(比PHP5.4快2-10倍)

·优化器(优化常量表达式、内联函数等)

·可以在PHP代码中使用Java的类库和类

·Unicode字符串(类似Java中的UTF-16)

·线程、套接字

·环境架构(类似runkit zend扩展中的沙盒对象)

·支持GUI,基于Swing实现而且有所改进,提供了更为灵活的布局

·面向类和函数的内嵌缓存系统

·面向类和函数的可选热更新(Optional HotReloading)机制

 

语言方面的特性包括:

·完全支持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微信公众账号:infoqchina

1、回复“今日新闻”,查看今天更新的新闻;

2、回复“今日英文”,查看今天英文站的更新;

3、回复“文章 +关键词”,搜索关键词相关内容;

4、回复“QCon”,了解QCon大会相关信息;

5、回复“活动”,了解最近InfoQ组织的线下沙龙;

6、回复“架构师”,获取《架构师》下载地址;

7、回复“投稿”,了解投稿和加入编辑团队的流程。

***********************************


 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 时间黑客:寻找创造时间的程序大师! 多维度全解读:腾讯视频Live Music 如何占据在线演唱会的半壁江山的? 大数据下的个人隐私(你以为你没暴露自己?) 【长文章】张小龙内部讲座《通过微信谈产品》【下】 尚学堂合作企业专场招聘