写点什么

让 PHP 跑在 JVM 上——JPHP

2014 年 3 月 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(比 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 )关注我们,并与我们的编辑和其他读者朋友交流。

2014 年 3 月 26 日 20:574195
用户头像
臧秀涛 极客邦科技技术会议负责人

发布了 300 篇内容, 共 114.2 次阅读, 收获喜欢 21 次。

关注

评论

发布
暂无评论
发现更多内容

第二次作业总结

朱月俊

做一个有原则的码农可好?

Dawn

极客大学架构师训练营

第二周作业

武鹏

小师妹学JVM之:GC的垃圾回收算法

程序那些事

JVM 「Java 25周年」 小师妹 JIT GC

品软件架构原则模式之美

老姜

架构师训练营-第二章-依赖倒置原则&接口隔离原则

而立

极客大学架构师训练营

ARTS打卡Week 04

teoking

ios LeetCode ARTS 打卡计划

千万不能让程序员给娃娃取名字

码农神说

程序员

Week 02 学习总结

卧石漾溪

极客大学架构师训练营

什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?

朱月俊

哪些框架是遵循依赖倒置原则的?

朱月俊

第二次作业

朱月俊

依赖倒置和案例

王锟

这也太拧巴了吧?结局意想不到

非著名程序员

程序员 程序人生 提升认知

架构师训练营第二章课后作业

叮叮董董

基本的面向对象原则(Basic OO principles)

旭东(Frank)

编程思维 极客大学架构师训练营

架构师训练营第二章总结

叮叮董董

第二周学习总结

武鹏

架构师训练营 - 第二周 - 学习总结

韩挺

用接口隔离原则优化 Cache 类的设计

朱月俊

架构师训练营第二周

小树林

给行动找个理由

Neco.W

行动派 决策

架构师训练营二期作业

老姜

数据库周刊28│开发者最喜爱的数据库是什么?阿里云脱口秀聊程序员转型;MySQL update误操作;PG流复制踩坑;PG异机归档;MySQL架构选型;Oracle技能表;Oracle文件损坏处理……

墨天轮

数据库

618你的系统顶住了么?系统发生重大灾难难道只能“删库跑路”?

夜来妖

一个包子铺看懂 I/O 模型演变

小眼睛聊技术

Java 程序员 架构 后端 nio

架构师训练营 - 第二周 - 作业

韩挺

产品视角看推荐算法

峰池

人工智能 算法 产品经理 推荐算法

架构师训练营 - 第二周架构师实现自己架构的主要手段

zcj

极客大学架构师训练营

老大吩咐的可重入分布式锁,终于完美的实现了!!!

楼下小黑哥

Java redis 分布式锁

为什么坐车会晕车呢

石云升

生活,随想 日常思考 晕车

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

让PHP跑在JVM上——JPHP-InfoQ