日期:2014-05-17  浏览次数:20515 次

Java+PHP整合=混血新宠儿

我见过最佳的实践方式也是很多人经常体验过的那就是淘宝(Taobao),请看这个URL地址:http://www.taobao.com/go/chn/in/thermal_underwear.php?TBG=14153.14.13&ad_id=&am_id=&cm_id=14002141798b906ee3fc&pm_id= ,你看见了什么?一个卖保暖内衣的网页?No,不完全是,是一个PHP的页面。

从我的小道消息知道淘宝(阿里公司)是中国最大的电子商务网站,并且核心业务是采用Java技术构建的,他们怎么用PHP?一点都不奇怪,他们不仅仅采用REST概念,还采用了Java+PHP的方式 。虽然不能100%知道淘宝是怎么运用PHP和Java协作的,但是我们可以通过eBay对外的资料看出这些大型网站是如何运用Java和其他语言共同协作的,如图所示:

http://www.javabloger.com/images/article_pic/php_and_java/ebay-1.png

查看大图请点击这里

流言飞语中,我们常常听到ASP是运行起来最快的语言,遗憾的是ASP对Linux/Unix友好程度差到极点,对于Web应用开发而言,PHP和 Java相比无论是部署还是开发 PHP都比Java/Jsp简单,在某些方面PHP的运行效率不比Jsp差 , 参见一位网友写的《JSP与PHP详细性能测试》 。从这篇文章的测试中我们能看出2种语言各有千秋。

在听听Php和Java程序员在说什么?
Php程序员:用直观,快速,简单的方式解决问题,注重于结果。
Java程序员:注重积累和重用,注重于过程,有时过度设计。

如果能把PHP和Java结合起来将是一件很美好的事情,Java用于后台的数据库查询、存储。而PHP作为最前端的页面展示,用户体验上应该是很不错的。所以现在有一个解决方式出来了,就是 Quercus (Refer )。原理如图所示:


/img/2012/12/22/1535263183.gif

图中展示了一个页面,通过该页面,用户可以执行一些操作(增/删/改/查),能看出HTTP 请求被 Apache+Tomcat 接收。web.xml 中的配置定义了解析 php 文件的 QuercusServlet 对象。这个对象是一个 Java servlet,它提供与 Quercus 库的接口。在这个样例应用程序中,在 php 文件中实例化的一个 PDO 对象通过 MySQL 连接器实例化与 MySQL 数据库的连接。PDO(PHP Data Object,PHP 数据对象)以一种统一的方式提供数据库访问,包括预处理语句等高级特性。

你有兴趣的话还可以去看看 Quercus提供的一个HelloWorld 的例子 ,这样你会更明白具体是怎么一回事。其实在实践中并只是上述说的这样,还可以采用php+Java+SOAP或者自定义xml传输协议的方式。

Quercus 在Java+PHP 的方案中更重要的是可以进行分布式计算,让PHP+Java的混合方案 在大型应用中可以更好体验他的伸缩性,如图所示:
/UpLoads/images/php/20140517051435943503.png