jphp PHP的实现
jphp是使用Java VM的PHP的新实现。它支持PHP语言(7.1+)的许多功能。
它如何工作? jphp是像javac这样的编译器,它将PHP源编译到JVM字节码,然后可以在Java VM上执行结果。
- 官方网站: jphp .develnext.org
- 很棒的jphp
在生产中
我们为Game Maker或Scirra 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月。有几个原因:
- 能够在PHP中使用Java库(自己的扩展 +其他)
- 用更好的运行时库替换Zend PHP的丑陋运行时库。
- 不仅在网络上使用PHP语言
- 多线程,例如Java和C#。
- Unicode字符串(对UTF-8,UTF-16的全部支持)。
- 在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)
- 安装jphp软件包管理器(JPPM),如何安装。
- INIT新项目(JPPM软件包)具有默认值:
jppm init
- 在控制台
jppm start中运行。
您将在控制台中看到Hello World ,此程序的来源将在src/index.php中。
- (可选)更新旧项目的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 -<module>:<version>-SNAPSHOT
