写点什么

让 PHP 跑在 JVM 上——JPHP

  • 2014-03-26
  • 本文字数:825 字

    阅读完需:约 3 分钟

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-03-26 20:575388
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

《华为数据之道》读书笔记:第1章 数据驱动的企业数字化转型

方志

数据中台 数据湖 数据治理

anyRTC uni-app 跨平台SDK 发布!总有一款适合你!

anyRTC开发者

uni-app 音视频 WebRTC RTC

区块链能修复企业云计算吗?

CECBC

区块链 云计算

Java踩坑记系列之线程池

Java老k

Java 线程池

DocView 现在支持自定义 Markdown 模版了!

程序员小航

markdown IDEA idea插件 文档生成

软件测试流程

测试人生路

软件测试

训练营第五周作业

爱码士

训练营

从资源管理角度认识K8S

LorraineLiu

Kubernetes 云原生 k8s k8s入门

怎么做好一场分享或者培训

fq

贞炸了!上线之后,消息收不到了!

楼下小黑哥

Java RocketMQ MQ

训练营第5周学习总结

爱码士

训练营

重点人员管控系统开发,情报研判系统搭建

t13823115967

重点人员管控系统开发 情报研判系统搭建

聊聊在国企当程序员的这三年,这样的生活真的是你想要的吗?

Java架构师迁哥

2020年10月公有云性能评测:盛大云-华东蝉联冠军,腾讯云-北京无缘前三

博睿数据

云计算 腾讯云 ucloud 公有云 评测

OpenKruise:阿里巴巴 双11 全链路应用的云原生部署基座

阿里巴巴云原生

Kubernetes 运维 云原生 中间件 存储

面试官都爱问的ThreadLocal

执墨

ThreadLocal 哈希表 弱引用

架构师训练营第 1 期第 10 周作业

业哥

OAuth 2.0授权框架详解

程序那些事

OAuth 2.0 程序那些事 Oauth 授权框架 安全框架

探秘RocketMQ源码【1】——Producer视角看事务消息

阿里云金融线TAM SRE专家服务团队

开源 RocketMQ 中间件 消息中间件

大整数算法

落曦

阿里P8熬夜完成这两份800页Java面试核心知识原理+框架

Java~~~

Java 程序员 面试 编程语言 架构师

前端如何实现一键截图功能?

徐小夕

Java 大前端 React

区块链司法可信存证,版权维护应用落地

t13823115967

区块链司法可信存证 版权维护应用落地

年轻人你不讲武德,自己偷着学习!spring Security五套「源码级」笔记哪里来的?我也要!

Java架构追梦

Java 源码 架构 面试 spring security

linux开发各种I/O操作简析,以及select、poll、epoll机制的对比

良知犹存

linux开发

基于ELK的日志平台介绍

Rayzh

ELK 日志系统

2021年全球公有云终端用户支出将增长18% ;EMNLP 2020最佳论文:无声语音的数字发声

京东科技开发者

程序人生

新思科技:ISO/SAE 21434标准即将发布 你准备好了吗?

InfoQ_434670063458

新思科技 汽车软件安全

今年最火的 Golang 云原生开源项目,可能就是它了!

阿里巴巴云原生

开源 Kubernetes 云原生 Go 语言

架构师训练营第 1 期 -week9

习习

利用区块链数字化人民币,中国有望从追随者变为新秩序的领导者

CECBC

区块链 数字人民币

让PHP跑在JVM上——JPHP_PHP_臧秀涛_InfoQ精选文章