速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

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

关注

评论

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

夜莺短信告警教程

巴辉特

夜莺监控 夜莺Nightingale 夜莺短信告警

项目经理如何向客户更好地汇报项目情况

Hi-CodeCaptain

项目管理 软件测试 精准测试 代码覆盖率 质量内建

活动回顾丨云原生开源开发者沙龙·杭州站回放 & PPT 下载

阿里巴巴云原生

阿里云 云原生

2024最新Spring全家桶进阶笔记全网首次开源

了不起的程序猿

Java spring 微服务 架构师 Spring全家桶

面基超快乐!和鲸社区亮相 PyCon China 2024 社区展

ModelWhale

Python 数据挖掘 机器学习 深度学习 数据库

《可观测性体系建设100问》第二章—可观测性技术应用正式发布!实战应用,深化理解

博睿数据

InfluxDB vs TDengine :2025 年了,谁家用的数据库还不能高效读缓存?

TDengine

数据库 tdengine 时序数据库

为什么现在Java面试基本都要考察底层源码内容?

开心学Java

高并发 jdk源码 架构师 java面试 Java多线程

揭秘1688阿里巴巴API接口:解锁商品评论与描述详情图的深度探索之旅

代码忍者

API 接口 pinduoduo API

Java程序员如何进一步学习netty?

了不起的程序猿

Java Netty 架构师 java编程

星闪与Wi-Fi 7一相逢,便点亮智家无数

脑极体

AI

法行宝爱企查AI形象上线,AI版“职场搭子”度律度秘替你打工

科技热闻

从微软 SSAS 到国产替代,这家企业终于松了一口气

Kyligence

阿里巴巴热卖商品推荐API接口的获取与应用

科普小能手

阿里巴巴 电商 API API 接口 阿里巴巴数据采集

如何通过ETLCloud做企业级数据集成

RestCloud

数据分析 ETL 数据集成 企业数据集成

ERP系统实施的难点不是系统本身,而是企业的人与管理

积木链小链

企业管理 ERP 中小企业

TDengine vs InfluxDB:谁的“流式计算”功能是真的?

TDengine

数据库 tdengine 时序数据库

集团总部与分公司组网:选择MPLS还是SD-WAN?

Ogcloud

SD-WAN 企业组网 企业网络 SD-WAN组网 SD-WAN服务商

TiDB 关联子查询及半连接的优化实践

PingCAP

数据库 #TiDB

MPC2024明道云伙伴大会圆满结束

明道云

实战丨证券 HTAP 混合业务场景的难点问题应对

PingCAP

数据库 #TiDB

HarmonyOS 5.0应用开发——装饰器的使用

高心星

huawei HarmonyOS HarmonyOS NEXT

体育赛事直播系统二次开发指南,助力平台提高竞争力

软件开发-梦幻运营部

模型输出可保存为数据集、支持配置社区活动作为课程作业|ModelWhale 版本更新

ModelWhale

Python 人工智能 数据分析 元数据

用例图如何在线制作?10个用例图模板案例推荐!

职场工具箱

效率工具 UML 用例图 在线白板 绘图软件

进军东南亚!Coremail泰国分公司启航

科技热闻

局域网企业网盘:主流的8大厂商产品对比

爱吃小舅的鱼

如何设计一个高并发系统?

开心学Java

Java 程序员 高并发 架构师 架构师设计

工业 5.0 时代的数字孪生:迈向高效和可持续的智能工厂

Altair RapidMiner

工业 制造业 数字孪生 仿真 altair

TikTok直播网络要求是什么?

Ogcloud

TikTok tiktok直播 tiktok直播专线 tiktok直播网络 tiktok直播加速

华中科技大学鲲鹏昇腾科教创新孵化中心揭牌,产学研合作再结硕果

Geek_2d6073

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