写点什么

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

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

关注

评论

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

Java Core「4」java.util.concurrent 包简介

Samson

学习笔记 5月月更 Java core

linux之curl命令

入门小站

Linux

vue响应式原理简述

达摩

Vue vue源码解读

虚谷未来CEO 唐佳娴:让虚拟人“灵” 动起来

阿里云弹性计算

XR 虚拟人

汇顶科技GR551x系列开发板已支持OpenHarmony

科技汇

通用池化框架实践之GenericKeyedObjectPool

FunTester

Kernel SIG直播:关于 Plugsched 调度器热升级 | 第 18 期

OpenAnolis小助手

Linux 直播 内核 sig 龙蜥大讲堂

微信视频号严查教育招生类账号:应该抵制恶意网络营销

石头IT视角

软件开发的核心原则

宇宙之一粟

软件设计原则 5月月更

1.2架构的定义(一)

凌晞

架构 架构设计

发布订阅模式和观察者模式【vue】

达摩

Vue 观察者模式 发布订阅

Linux环境编译动态库

Loken

音视频 5月月更

查看Docker容器的信息

程序员欣宸

Java 5月月更

小程序怎样一键转化成APP

Geek_99967b

小程序生态 小程序容器 小程序转app

P2P传输模式

工程师日月

计算机网络 5月月更

数据预处理利器 Amazon Glue DataBrew

亚马逊云科技 (Amazon Web Services)

数据 处理器

做一个能对标阿里云的前端APM工具

光毅

阿里云 性能优化 前端

vue + electronの文件读写

空城机

Electron 5月月更

开发者的福音 提前为你揭秘2022鲲鹏开发者创享日武汉站

Geek_2d6073

模块2-微信朋友圈高性能复杂度分析

Fan

架构实战营

一种基于事件驱动架构的 SAP 产品集成方案介绍

汪子熙

Kubernetes 云原生 SAP Kyma 5月月更

跨平台应用开发进阶(十四) :uni-app 实现IOS原生APP-本地打包集成极光推送(JG-JPUSH)详细教程

No Silver Bullet

uni-app App 5月月更 IOS原生 JG-JPUSH

土地市场分析,基于Python,基于Javascript,包含核心参数

梦想橡皮擦

5月月更

开发者玩转机器学习不能错过的15篇深度文章!

阿里云大数据AI技术

算法 数据处理 算法框架/工具 机器学习/深度学习 搜索推荐

在线文本删除空行工具

入门小站

工具

在线HTML转SQL工具

入门小站

工具

flask框架学习总结(四)【 文件上传,实现最小应用,路径变量,模板继承】

恒山其若陋兮

5月月更

什么!Sentinel流控规则可以这样玩?

牧小农

sentinel SpringCloud Alibaba

小程序如何实现一键转换成App

Geek_99967b

小程序容器 小程序转app

互联网公司实行目标管理(OKR)五点原则和基础

laofo

互联网 OKR 研发效能 快手 绩效考核

金融街资本携手索信达:助推金融行业数智化转型

索信达控股

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