转 PHP在JVM上的实现JPHP

简介: 前两天还在想,像Quercus只封装了PHP在Java上的Web接口,有没有实现了完整的JVM语言特性的东东,这不,来了。 JPHP是一个面向Java虚拟机的PHP实现,支持PHP(5.3+)的很多特性。

前两天还在想,像Quercus只封装了PHP在Java上的Web接口,有没有实现了完整的JVM语言特性的东东,这不,来了。

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性能的第一次尝试,到底效果如何,我们拭目以待。感兴趣的读者可以下载并动手尝试一下

 

写GUI:

<?php
namespace {

    use php\lang\System;
    use php\lang\Thread;
    use php\swing\SwingUtilities;
    use php\swing\UIForm;
    use php\swing\UIManager;
    use php\swing\UIProgress;

    UIManager::setLookAndFeel(UIManager::getSystemLookAndFeel());

    SwingUtilities::invokeLater(function(){
        $form = new UIForm();
        $form->size = [500, 500];
        $form->moveToCenter();
        $form->visible = true;

        $p = new UIProgress();
        $p->size = [300, 40];
        $p->position = [100, 100];
        $p->value = 50;
        $form->add($p);

        $form->on('windowClosing', function(){
            System::halt(0);
        });
    });
}

 

目录
相关文章
|
存储 算法 PHP
唯一ID生成原理与PHP实现-雪花算法
唯一ID生成原理与PHP实现-雪花算法
676 0
唯一ID生成原理与PHP实现-雪花算法
|
缓存 移动开发 NoSQL
php结合redis实现高并发下的抢购、秒杀功能的实例
php结合redis实现高并发下的抢购、秒杀功能的实例
271 0
|
PHP
github与gitee代码自动同步到服务器实现PHP项目自动部署webhooks
github与gitee代码自动同步到服务器实现PHP项目自动部署webhooks
527 0
github与gitee代码自动同步到服务器实现PHP项目自动部署webhooks
|
网络协议 Linux 网络安全
php实现websocket实时消息推送
php实现websocket实时消息推送
552 0
php实现websocket实时消息推送
|
PHP
php实现数字格式化,数字每三位加逗号的功能函数169856420=&gt;169,856,420
php实现数字格式化,数字每三位加逗号的功能函数169856420=&gt;169,856,420
221 0
|
PHP
PHP实现Workerman实例 高性能PHP Socket即时通讯框架
PHP实现Workerman实例 高性能PHP Socket即时通讯框架
440 0
|
消息中间件 PHP Windows
PHP实现php-amqplib/php-amqplib实例RabbitMq
PHP实现php-amqplib/php-amqplib实例RabbitMq
308 0
|
XML 移动开发 JSON
PHP使用yansongda/pay实现支付宝和微信的支付
PHP使用yansongda/pay实现支付宝和微信的支付
1104 0
|
NoSQL PHP Redis
PHP结合redis实现点赞功能
PHP结合redis实现点赞功能
154 0
|
消息中间件 缓存 JSON
PHP实现think-queue介绍
PHP实现think-queue介绍
439 0