热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么要在Java项目中使用Quercus

2019独角兽企业重金招聘Python工程师标准Quercus是一种联合使用Java技术和PHP编写Web服务和应用程序的技术,其PHP支持由Java实现。这种

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

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



推荐阅读
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
author-avatar
黄勋佩淑青宜合
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有