2019独角兽企业重金招聘Python工程师标准>>>

Quercus是一种联合使用Java 技术和PHP 编写Web 服务和应用程序的技术,其PHP支持由Java实现。这种奇怪的在Java中写php的组合到底有何妙用?本文在此做一些总结。

这些是摘来的观点:

http://www.ibm.com/developerworks/cn/web/wa-quercus/

  • 能够使用 Java 技术以及 Spring、Hibernate 和 SOA 等框架
  • Quercus 在 Resin 应用服务器之上运行,利用了负载平衡、代理缓存等 Resin 特性
  • 易于开发:PHP 库在 Java 中实现,这使它们更快速、更稳定、更易于使用。开发人员不必担心基于 C 语言的 PHP 实现中出现的分段(segmentation)错误和 C 指针溢出。
  • 可伸缩性:作为一个基于 Java 的实现,Quercus 在 Resin 和 Apache Tomcat 等应用服务器之上运行。这样,它就可以利用应用服务器提供的所有特性,如连接池、分布式会话等。
  • 国际化:由于 Quercus 是一个 PHP 的 Java 实现,它本身就支持 16 位 Unicode 字符串和函数。

http://book.51cto.com/art/201105/264611.htm

  • Quercus 能把PHP 和Java 结合起来,Java 用于后台的数据库查询、存储。而PHP 作为最前端的页面展示,将具有良好的用户体验。

http://www.54chen.com/php-tech/quercus-notes-php-java-mixed-projects.html

  • 创业公司参与项目的人口众多、背景不一,目前市场上的主流方向为php与java,很多时候java工程师恨铁不成钢,php工程师也无可奈何。于是便有了此文,讲述如何使用quercus创建php java混合型项目。

下面是我实践后,对为何要用Quercus的主要出发点:

  • 出于团队技能考虑

如上文54chen那样情况。 此外还得说句,由于Java界各类技术百花齐放,使用各种技术组合构成的项目也就随之千变万化。通俗点如SSH,不通俗情况引入个随便什么库,改起来就费事了。当项目已经主要由Java技术构成,但并非所有参与者都熟悉Java和各种java技术组合,引入Quercus可以更好的各展所长。毕竟,精通Java不容易,但用php能做事就容易许多。

  • 为了维持项目。

如项目设计不合理或缺乏文档,或不再维护更新,使得纯使用Java进行开发有较大障碍。

项目维护到期,或维护不包括后续开发,或早期建设者跑路,或缺乏文档,或写程序不带注释……这些事情对各种语言都可能会存在,对Java项目而言,尤其严重。此时就有可能重写部分实现,既然如此,多条路吧。

  • 部署

Java部署有些费时费力。直接传php文件和在线改php文件何等畅快!我有一个项目,其所在机房网速不佳,数次传输了错误的class文件导致网站出错,换成php感觉好多了。小调整直接在线改php,不用整个编译。

  • 想使用PHP的东西

人们说Quercus可以用Spring,但是我想说的是,如果主要目的是要用Java的东西,直接在Java用不就得了吗?用Quercus的一大好处是,php的web流行框架和产品非常丰富,工具库也很多。敏捷的框架比比皆是。偶尔为了和原系统一致调用Java的东西是需要的,Quercus最主要的意义是能够在Java项目使用php的东西,且调用很方便。drupal,wordpress之类,java里是没有同样流行度产品的。

  • 想更敏捷地开发,快速地调整产品

引入php可以方便快捷地解决一些需求且不用太了解原实现。例如大众需求,查询数据库然后输出点数据,就不用去寻找那些前人写的DAO和Entity,不用先写一个类继承前人写的接口,直接写php查了输出就好。(如果有兴趣优化这过程,还可以用连接池之类)还有模板,Freemarker之类的确是有用的,但是,要看半天其独特语法,写错一点就直接崩出一堆错误,就很扫兴了。PHP的模板系统又多又容易实现又容易看懂。人们喜欢说,用Java做后端,用PHP做页面展示不是没有道理。

  • 为了方便Java+PHP

其实上面那些理由,主要是对于Java+php的考虑。那么为什么不使用其他方案呢? 我个人建议是有时间都试试的,网上介绍过数种。Quercus,官网有一定文档(注意主要页面没及时更新,尤其request问题),有bugtrack,能够谷歌到一些资料,并且最主要的时候实践起来方便,只要下载来放tomcat或者直接弄个resin就好,非常适合我这种动手能力不强的懒人呵呵。而且,其实它比介绍(老版本介绍没更新)的要强许多。在安好后,可以查看到其支持的扩展和函数非常多,可以说大半个php都支持了。

  • 最关键的一点:DRY

你写了多少相似的代码了?在学习Java之初,你可能战战兢兢地对Java一切面向对象的天条不敢越雷池一步,可能对get和set饶有兴致,可能对一层又一层的设计推崇备至。但是终于有一天,你发现这些你会了,重复整没什么意思也无人喝彩,很多时候却欲罢不能。又或许,你在apache在nginx里写php已经年累月,还想玩玩别的。这时,Quercus就提供了新的可能,借用魔兽世界里一句话,有好玩的了。

今后,我将进一步分享关于使用Quercus的经验。

转载于:https://my.oschina.net/meikaiyuan/blog/126302

为什么要在Java项目中使用Quercus相关推荐

  1. java小游戏项目的php_在Java项目中使用PHP类

    有可能以某种方式在Java项目中使用Zend附带的一些PHP类吗?我想总有办法,但是怎么样? 解决方法: 问题你应该先问问自己 首先你应该问自己一些问题,这可以帮助你使用给你最好的答案(因为编程很多次 ...

  2. Mac笔记本中是用Idea开发工具在Java项目中调用python脚本遇到的环境变量问题解决...

    问题描述: mac笔记本本身会自带几个python版本,比如python2.7版本,我没有改动mac默认的python版本,只是安装了python3.7版本. 使用Pycharm开发Python项目没 ...

  3. java聊天室小程序论文_在Java项目中利用continue与break制作一个聊天室小程序

    在Java项目中利用continue与break制作一个聊天室小程序 发布时间:2020-12-08 16:03:27 来源:亿速云 阅读:98 作者:Leah 在Java项目中利用continue与 ...

  4. java项目怎么定义异常_在Java项目中如何实现自定义异常

    在Java项目中如何实现自定义异常 发布时间:2020-11-11 15:41:32 来源:亿速云 阅读:77 作者:Leah 这篇文章将为大家详细讲解有关在Java项目中如何实现自定义异常,文章内容 ...

  5. XML在JAVA项目中的作用

    java项目中,xml文件一般都是用来存储一些配置信息 一般的编程, 多数用来存储配置信息 . 拿JDBC来说,可以把数据库连接字符串写到xml,如果要修改数据源,只需要改xml就可以了,没必要再去重 ...

  6. Redis学习笔记之二 :在Java项目中使用Redis

    成功配置redis之后,便来学习使用redis.首先了解下redis的数据类型. Redis的数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set( ...

  7. redis java驱动_Redis学习笔记之二 :在Java项目中使用Redis

    成功配置redis之后,便来学习使用redis.首先了解下redis的数据类型. Redis的数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set( ...

  8. Ant在Java项目中的使用(一眼就看会)

    参考:http://www.cnblogs.com/zhengqiang/p/5557155.html Ant是跨平台的构建工具,它可以实现项目的自动构建和部署等功能.在本文中,主要让读者熟悉怎样将A ...

  9. 在Java项目中整合Scala

    Scala是一个运行在Java JVM上的面向对象的语言.它支持函数编程,在语法上比Java更加灵活,同时通过Akka库,Scala支持强大的基于Actor的多线程编程.具有这些优势,使得我最近很想在 ...

最新文章

  1. 回归算法 - 线性回归求解 θ(最大似然估计求解)
  2. Java的从业方向是什么?好找工作吗?
  3. [Leetcode总结] 102.二叉树的层序遍历
  4. PostgreSQL数据库、表空间、角色及用户
  5. 提升体验-支持Chrome Custom Tabs
  6. 测试驱动javascript开发 -- 4.测试驱动开发过程(下)
  7. 如何将 ipynb 发布到 blog 中(html, markdown格式)
  8. 如何处理Java注释
  9. IEEE EDGE 2020论文:Astraea — 以优雅的方式在边缘部署AI服务
  10. oracle的存储设置默认参数,oracle初始化参数设置
  11. C++字符串完全指引之一(Win32 字符编码)
  12. 华为手机助手上架流程_2019年各大安卓应用商店上架经验,含流程,物料,方法,建议收藏...
  13. 第 10 章 数组和指针
  14. SQL中的模糊范围查询特殊符号应用
  15. Flask中那些特殊的装饰器
  16. 微信小程序内链微信公众号的方法
  17. utf-8编码引起js输出中文乱码的解决办法
  18. php all函数,PHP 函数 preg_match_all()
  19. HttpMessageConvert
  20. char*转换为jstring

热门文章

  1. 湖北三职没有计算机一级证,2021湖北省考报名:应届毕业生没发毕业证怎么填写毕业证编号...
  2. linux安装 msf,centos安装msf
  3. 最佳iOS设备管理器imazing 2.16.9官网Mac/Windows下载电脑版怎么下载安装
  4. 读书笔记-3--人月神话(Mythical Man-Month)
  5. 企业生产经营相关英文及缩写之(4)--质量/体系
  6. 【科普一下】量子密码就是量子通信?
  7. 网络虚拟化NVP(1)
  8. android studio线性布局做计算器,Android studio设计简易计算器
  9. Python读写Excel表格,就是这么简单粗暴又好用
  10. 【labview】基于Labview的齿轮传动测控系统设计与研究