jphp

JAVA源码 2025-08-21

jphp PHP的实现

jphp是使用Java VM的PHP的新实现。它支持PHP语言(7.1+)的许多功能。

它如何工作? jphp是像javac这样的编译器,它将PHP源编译到JVM字节码,然后可以在Java VM上执行结果。

  • 官方网站: jphp .develnext.org
  • 很棒的jphp

在生产中

我们为Game MakerScirra Construct等初学者开发了新的IDE。它基于jphp ,Javafx,Java 8,Gradle,并允许为Linux,Windows和Mac创建桌面游戏和应用程序(将来也许是Android和其他平台)。项目名称是DevelNext (https://githu*b.c*o*m/jphp-group/develnext-ide),该项目的当前状态和版本是beta。该项目尚未以英文为基础。

目标

jphp不是Zend PHP引擎或Facebook HHVM的替代品。我们不打算为jphp实施Zend运行时库(例如Curl,Prce等)。

我们的项目始于2013年10月。有几个原因:

  1. 能够在PHP中使用Java库(自己的扩展 +其他)
  2. 用更好的运行时库替换Zend PHP的丑陋运行时库。
  3. 不仅在网络上使用PHP语言
  4. 多线程,例如Java和C#。
  5. Unicode字符串(对UTF-8,UTF-16的全部支持)。
  6. 在PHP语言上创建GUI Android和桌面应用程序。

特征

  • PHP 7.1+(以及PHP 7.2、7.3、7.4的许多语言特征)。
  • JIT(〜2.5倍〜2.5倍,PHP 5.6,〜1.1倍,php 7.0快,比PHP 7.4慢13%,长凳)。
  • 使用PHP代码中的Java库和类。
  • 字符串的Unicode(UTF-16,例如Java)
  • 线程,插座,环境体系结构(例如Runkit Zend扩展程序中的沙盒对象)。
  • GUI(Javafx或SWT)
  • 用于类和功能的嵌入式缓存系统
  • 用于课程和功能的可选热加载
  • Android OS上使用的能力: jphp -ANDROID

jphp来自PHP 7.2的哪些支持?

  • 除RFC以外的所有功能:参数类型加宽

jphp来自PHP 7.3的哪些支持?

  • 除RFC以外的所有功能:灵活的Heredoc和Nowdoc语法

jphp来自PHP 7.4的哪些支持?

  • 打字属性2.0(部分不支持参考)
  • 弱参考
  • 箭头功能2.0(+多行语法)
  • 允许从__ToString()中抛出异常
  • 无效分配操作员
  • numeric_literal_separator
  • 在阵列表达式中传播操作员

自己的扩展

  • 标准库 - 自己的运行时标准库
  • HTTP服务器( +Web插座 +多线程)
  • GUI(Javafx或SWT)
  • git(基于JGIT)
  • JSOUP-用于以jQuery风格解析HTML。
  • SQL(支持MySQL,PostgreSQL,SQLite,Firebird)。
  • SSH-用于使用SSH协议。
  • YAML-用于解析和形成YAML。
  • 压缩 - 用于使用TAR,GZ,BZ2,LZ4,ZIP档案。
  • httpclient -HTTP客户端具有承诺。
  • SEMVER-用于SEMVER标准中的解析版本。
  • 邮件 - 用于通过SMTP服务器发送电子邮件。
  • MongoDB- Mongo DB 3.0+的驱动程序。

文档

  • 您可以在此处找到最新的API文档: jphp -Runtime/api -docs
  • Wiki在这里:阅读

入门(Hello World)

  1. 安装jphp软件包管理器(JPPM),如何安装。
  2. INIT新项目(JPPM软件包)具有默认值:
jppm init
  1. 在控制台jppm start中运行。

您将在控制台中看到Hello World ,此程序的来源将在src/index.php中。

  1. (可选)更新旧项目的jphp版本:
jppm update jphp -core

如何运行基准?

jphp ./gradlew bench // via php php -f bench/src/bench.php">
 // via jphp
./gradlew bench

// via php
php -f bench/src/bench.php

从来源构建快照

使用gradle install来构建和安装jphp模块和库中的Mavel本地存储库。之后,您可以在项目中使用jphp作为Maven依赖性。

org.develnext. jphp : jphp -:-SNAPSHOT

下载源码

通过命令行克隆项目:

git clone https://github.com/jphp-group/jphp.git