前两天还在想,像Quercus只封装了PHP在Java上的Web接口,有没有 实现 了完整的JVM语言特性的东东,这不,来了。 JPHP是一个面向Java虚拟机的PHP 实现 ,支持PHP(5.3+)的很多特性。JPHP负责将PHP源代码编译为JVM字节码,使其能够运行在JVM上,这一点和JRuby
前两天还在想,像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等):
JPHP有如下功能:
语言方面的特性包括:
更多特性可以查看该项目的README文件。
此外,JPHP还提供了一些PHP不支持的特性,比如在__toString方法中可以使用异常、对标量的类型约束等。
JPHP并非改进PHP性能的第一次尝试,到底效果如何,我们拭目以待。感兴趣的读者可以下载并动手尝试一下
写GUI:
<span>php namespace { </span><span>use</span> php\lang\<span>System</span><span>; </span><span>use</span><span> php\lang\Thread; </span><span>use</span><span> php\swing\SwingUtilities; </span><span>use</span><span> php\swing\UIForm; </span><span>use</span><span> php\swing\UIManager; </span><span>use</span><span> php\swing\UIProgress; UIManager</span>::setLookAndFeel(UIManager::<span>getSystemLookAndFeel()); SwingUtilities</span>::invokeLater(<span>function</span><span>(){ </span><span>$form</span> = <span>new</span><span> UIForm(); </span><span>$form</span>->size = [500, 500<span>]; </span><span>$form</span>-><span>moveToCenter(); </span><span>$form</span>->visible = <span>true</span><span>; </span><span>$p</span> = <span>new</span><span> UIProgress(); </span><span>$p</span>->size = [300, 40<span>]; </span><span>$p</span>->position = [100, 100<span>]; </span><span>$p</span>->value = 50<span>; </span><span>$form</span>->add(<span>$p</span><span>); </span><span>$form</span>->on('windowClosing', <span>function</span><span>(){ </span><span>System</span>::halt(0<span>); }); }); }</span>