PHP中的组件都是短暂,非持久化的。假如是复杂应用体系,我们需要提供中间层组件(像java beans/EJB)或者企业级的提供缓存,连接池或商业逻辑给PHP组件生成的页面。例如解析xml文件就是一个比较耗资源的工作,需要缓存;连接数据库也是个比较耗资源的工作,所以需要能够重用。标准的PHP XML和DB抽象层都是比较没效率的,因为它们都不能通过一个中间层来实现缓存和连接池。
即使是一些小任务,也可能需要用到Java Class或Java类库,例如需要跨平台地生成Word,Excel或PDF文档。
PHP,PHP/Java Bridge和php代码可以打包成标准的J2EE档案包格式,用户可以方便地布置到一个J2EE应用服务器或servlet引擎中去。用户不需要安装PHP,而且从他们的角度来说,他们看不到这些用jsp,servlet和PHP生成的页面有什么区别。由于Bridge答应PHP和J2EE间的session共享,开发者可以一步步地把基于JSP的程序和PHP集成起来。
上面是说为什么PHP需要Java。而对于Java程序员来说,PHP和PHP/Java Bridge也可能是有用的。 现在有许多基于JSP模板系统的技术如jakarta Struts及更新一代技术Java Server Faces。JSP和自定义标签库有很多缺陷,把它们整合在一起去建立一个面向对象的WEB Framework暴露了这些问题。即使JSF的作者也承认了这样的系统是有严重缺陷的,并推荐像tapestry或facelets 这样用Java类定义组件并通过他们的ID来绑定到XML/Html模板中。PHP/Java Bridge version 3.0可以嵌入PHP代码到JSF Framework中,这样用户界面设计师集中精力在设计HTML模板,而程序员可以用PHP建立原型,并使用已有的开发框架。现在不少大型站点就在前端使用PHP,而核心使用Java来构建系统。
PHP/Java Bridge添加了下面这些原始类型和函数到PHP中,以使PHP可以方便地访问Java对象。在表格1中可以看到数据类型的分布情况。
new Java("CLASSNAME"): References and instanciates the class CLASSNAME. After script execution the referenced classes may be garbage collected.
java_require("JAR1;JAR2"): Makes additional libraries available to the current script. JAR can either be a "http:", "FTP:", "file:" or a "jar:" location. On "Security Enhanced linux" (please see the README) the location must be tagged with a lib_t security context.
新闻热点
疑难解答