其实,我不确定Quercus是否可以被认定为一门JVM语言;其次Quercus这个东东分开源版与商业版,开源版只能解释执行、而商业版能编译成Java字节码。

但我知道国内,阿里巴巴很早就在使用它,当然,他主要是把它作为一个前端页面的模版引擎,提供给用户自定义商铺样式时数据调用。

这也是一种典型的使用场景。

为什么PHP(包括流行的很多语言)不被接受为一种企业级的开发语言,个人以为正是我们用的最顺手的“动态数据类型”,企业级的应用需要数据有很强的可靠性、一致性,Java这样的强类型、编译性语言,能从开发测试阶段提供尽可能高的错误检出率,而很多人在用PHP开发的阶段就屏蔽/不关注系统错误提示,只要一个功能能走通就ok。

而Java发展这么多年,已经有了足够甚至说太多的各种框架、库,可用于企业级开发,在JVM环境使用PHP,可以提高业务前端的开发效率,而底层使用Java的这些框架、库,确保数据的一致性、可靠性,并且可以使用Java很多技术和特性。

这个东东,我关注了很久,但无奈小团队,没有环境来完成相关实践的检验。

以下是翻译的其官方站点上的介绍,网上有很多翻译的,但可能没有遵循原文的逻辑:

Quercus是Caucho公司纯采用Java开发的一个PHP5引擎,基于开源授权协议GPL发布。Quercus自带很多个PHP模块和扩展如PDF、PDO、MySQL和JSON。Quercus使得可以将Java服务与PHP程序紧密集成,不费吹灰之力在PHP脚本中调用Java服务如JMS、Grails。

通过Quercus,PHP应用程序自动具备了使用了Java应用服务器的优秀特性,如连接池、集群化会话(clustered sessions)等。

Quercus实现了PHP 5语言标准,并且PHP扩展的开发不断完成,包括APC, iconv, GD, gettext, JSON, MySQL, Oracle, PDF, and Postgres。很多流行的PHP程序在Quercus中可以和在PHP解释器运行的只好不差。这是一份不断增加的PHP软件清单:DokuWiki, Drupal, Gallery2, Joomla, Mambo, Mantis, MediaWiki, Phorum, phpBB, phpMyAdmin, PHP-Nuke, Wordpress and XOOPS。

Quercus代表在Web应用与Web服务领域,Java与PHP相互整合的一种新的混合式思路。PHP应用开发过程中,可以选择使用Java的库及技术如JMS, EJB, SOA 框架, Hibernate, 与 Spring。这可能带来一些革新性的可能性,因为:

1) PHP代码被解释/编译成Java;

2)Quercus和它的库用Java编写;

这种架构使得PHP应用程序与Java库直接进行“对话”,因为都在同一个程序层(译注:这里是针对php的一个扩展php bridge)。为促进这种新的Java/PHP架构,Quercus提供了API及接口将Java库暴露给PHP使用。

官方提供了Quercus .war文件可以在Java应用服务器上运行,这样,它其实可以在Resin之外运行(译注:Caucho公司主要是提供Resin服务器的),该文件包含Quercus解释器与PHP库。

这里是一些参考资源:

比较偏门的JVM语言Quercus - PHP on JVM的更多相关文章

  1. 对QT的理解——能在公司里不做Java,不做很偏门的产品,不使用偏门的语言,还有钱挣,要有感恩的心

    我的理解: QT做应用软件可以很强大,界面足够漂亮(最有意思的是QSS,让我刮目相看),应该是足够了.同时QT也提供了源码,不过超级复杂,难以理解,所以还是无法深入底层.另外它提供了一个额外的好处,就 ...

  2. 谈谈html中一些比较"偏门"的知识(map&area;iframe;label)

    说明:这里所说的"偏门"只是相对于本人而言,记录在此,加深印象.也希望有需要的朋友能获得些许收获! 1.空元素(void):没有内容的元素. 常见的有:<br>,< ...

  3. [转载] 详述三种现代JVM语言--Groovy,Scala和Clojure

    转载自http://www.tuicool.com/articles/jYzuAv和http://www.importnew.com/1537.html 在我与Martin Fowler曾经合作呈现的 ...

  4. element-项目用到偏门方法~

    开发项目的时候,组件库的使用有时会为我们节省开发时间,提高开发效率,但组件库样式有时与我们的设计图出入很大,还有的方法也很偏门,主要官方文档有时候对于一些方法和属性介绍的也比较少,以下是我在工作中总结 ...

  5. 谈谈CSS中一些比较"偏门"的小知识

    前面我写了:谈谈html中一些比较"偏门"的知识,现在这篇(主要)想谈谈个人所见的CSS一些小知识点,加深印象:同时也希望有需要的人能有收获! 1.常见的浏览器内核: 以IE为代表 ...

  6. JVM笔记 -- Java跨平台和JVM跨语言

    学习JVM的重要性 从上层应用程序到底层操作系统,到底有哪些东西? 平时开发的应用程序主要基于各种框架,譬如Spring,SpringMVC,Mybatis,而各种框架又是基于Java API来实现的 ...

  7. 04.从0实现一个JVM语言系列之语义分析器-Semantic

    从0实现JVM语言之语义分析-Semantic 源码github, 如果这个系列文章对您有帮助, 希望获得您的一个star 本节相关语义分析package地址 致亲爱的读者: 个人的文字组织和写文章的 ...

  8. 03.从0实现一个JVM语言系列之语法分析器-Parser-03月01日更新

    从0实现JVM语言之语法分析器-Parser 相较于之前有较大更新, 老朋友们可以复盘或者针对bug留言, 我会看到之后答复您! 源码github仓库, 如果这个系列文章对你有帮助, 希望获得你的一个 ...

  9. 02.从0实现一个JVM语言之词法分析器-Lexer-03月02日更新

    从0实现JVM语言之词法分析器-Lexer 本次有较大幅度更新, 老读者如果对前面的一些bug, 错误有疑问可以复盘或者留言. 源码github仓库, 如果这个系列文章对你有帮助, 希望获得你的一个s ...

随机推荐

  1. pod 出错备忘

    pod install #输出信息 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems ...

  2. idea启动tomcat失败,1099端口被占用

    今天遇到一个问题,当使用idea启动一个tomat服务的时候,报错:不能连接本地1099端口. /Users/liqiu/soft/develop/apache-tomcat-/bin/catalin ...

  3. cocos2d ios 环境搭建

    一.下载cocos2d-x http://cocos2d-x.org/projects/cocos2d-x/wiki/Download cocos2d-x-2.1.4.zip @ June.18, 2 ...

  4. STM32 SPI DMA 的使用

    一是想总结一下SPI总线的特点与注意点,二是总结一下SPI DMA的使用 一.SPI信号线说明 通常SPI通过4个引脚与外部器件相连: MISO:主设备输入/从设备输出引脚.该引脚在从模式下发送数据, ...

  5. 实现快速迭代的引擎设计 - Capcom RE Engine的架构与实现

    [译]实现快速迭代的引擎设计 - Capcom RE Engine的架构与实现 ken hu· 6 天前 原文(日文):ラピッドイテレーションを実現するゲームエンジンの設計 CEDEC2016上的一个 ...

  6. 安装cvxpy遇到的问题与解决方案(ubuntu14.10,python 2.7.8)

    应该说,cvxpy的安装说明是很棒的,一步一步非常清楚,www.cvxpy.org/en/latest/install/index.html 可是,我照着做完之后,还是不能import cvxpy,不 ...

  7. 自制Console线(已测试CISCO3560可用)

    D9的顺序是5口在上,4口在下.从右到左分别是1-5,6-9. 5 4 3 2 1 o o o o o o o o o 9 8 7 6 用万用表量出D9的口的对应颜色.然后按照下面的表.把颜色填写上. ...

  8. PHP实现简单的监控nginx日志文件功能

    此功能是为了实现,定时监控nginx生成的日志数据,并将新增的数据提交到一个接口(比如大数据的接口,让大数据来进行分析) define("MAX_SHOW", 8192*5); / ...

  9. 类或方法名后加<>

    声明类型为泛型. 说明传递的参数为泛型,而不仅仅是一种类型. public void aa<T>(T a) { Console.WriteLine(a); } 调用时可写: this.aa ...

  10. [Git] 快速签出与更新所有远程分支.md

    git-fetch 命令从远程仓库复制 heads 和 tags 信息到本地,保存在临时文件 .git/FETCH_HEAD 中以备 git-merge 命令使用. 你可以使用 git fetch 命 ...