写点什么

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

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

关注

评论

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

毫秒级响应!清科优能应用 TDengine 建设虚拟电厂运营管理平台

TDengine

数据库 涛思数据 tdengine 时序数据库

spss统计软件:IBM SPSS Statistics 27 win/mac 中文激活版

你的猪会飞吗

Mac软件下载站 苹果电脑软件下载

AI+供应链丨一图读懂用友BIP供应链智能场景

用友BIP

🔥httpsok-v1.13.0支持nginx证书部署管理

物有本末

SSL证书 SSL域名 免费SSL证书 (SSL)/TLS

httpsok-v1.13.0支持七牛云证书自动部署

物有本末

七牛云存储 SSL证书 七牛云 免费SSL证书

涛思数据荣获北京市新技术新产品(服务)证书

TDengine

数据库 tdengine 时序数据库

有了MES、ERP,质量管理为什么还需要QMS?

万界星空科技

万界星空科技 QMS 质量管理系统 生产质量管理

Koupleless 内核系列 | 一台机器内 Koupleless 模块数量的极限在哪里?

SOFAStack

开源 云原生 开发 架构治理 软件应用架构

国企干部选拔合规| 数智化工具赋能国企优化干部选拔机制

用友BIP

TON: 引领区块链革命,有望成为下一个十亿级用户公链巨头

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

京东工业平台商品详情数据接口(vipmro.item_get)

tbapi

京东 京东工业品数据采集 京东工业平台数据采集 京东工业品商品详情数据

ITSM流程落地经验之问题管理

嘉为蓝鲸

ITSM 事件管理 问题管理

软件测试学习笔记丨软件测试流程体系

测试人

软件测试

数字疗法与心理健康应用的普及

心大陆多智能体

人工智能 AI 心理健康 数字心理

LeetCode题解:62. 不同路径,动态规划(空间O(n)),JavaScript,详细注释

Lee Chen

养猪大户必备!教你用ModelBox开发一个AI数猪应用

华为云开发者联盟

人工智能 华为云 华为云ModelArts 华为云开发者联盟 企业号2024年6月PK榜

TDengine 签约极氪汽车,建设新一代车联网云端基础平台

TDengine

数据库 tdengine 时序数据库

拼多多商品详情数据接口(Pinduoduo.item_get)

tbapi

拼多多 拼多多商品详情接口 拼多多数据

软件测试学习笔记丨测试平台开发 - 服务的配置

测试人

软件测试 自动化测试 测试开发 测试平台开发 测试平台

RN状态管理MobX使用

凌宇之蓝

React Native

【ASeeker】Android 源码捞针,服务接口扫描神器

iofomo

android 源码 Framework

LeetCode题解:2042. 检查句子中的数字是否递增,直接遍历,JavaScript,详细注释

Lee Chen

嘉为蓝鲸监控中心:助力大型金融企业实现各类监控场景全覆盖

嘉为蓝鲸

监控 可观测

某大型机场:告警全覆盖建设之路,引领业务持续性显著提升

嘉为蓝鲸

监控告警 可观测

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