基于Web开发技术实现PHP调用Java类研究
2018-03-26余杨奎
余杨奎
摘要:
在“互联网+”时代,Web开发技术日新月异,平台开发不再依靠同一种Web开发技术,跨平台调用数据也屡见不鲜。为提高PHP的跨平台性和扩展性,通过PHP和Java桥接技术,真正实现Web三层架构。针对PHP和Java在技术引用上存在互补的特点,利用phpJavabridge桥接方式,使用PHP程序调用jar里的Java类以判断Java版本、服务器操作系统以及操作系统版本,同时使用PHP程序调用自定义jar类的Reducefloat方法,完成减法运算。将两种技术有效结合起来,使通过PHP开发新接口程序需要调用Java方法时,可以减少对原有服务端程序的修改,为PHP开发技术的跨平台性和扩展性提供了技术论证。
关键词:
PHP;环境变量;自定义类;桥接
DOIDOI:10.11907/rjdk.172532
中图分类号:TP319
文献标识码:A文章编号文章编号:16727800(2018)003012103
英文摘要Abstract:“Internet +” times, change rapidly of Web development technology,platform development no longer rely on the same kind of Web development technology, It is often seen that called cross platform data. In order to improve the scalability and PHP cross platform, through PHP and Java bridging PHP technology, realize the three layer structure of Web for PHP and Java, there is a complementary characteristic in the technology reference, using phpJavabridge bridge, using the PHP program called jars Java class to determine the Java version, the server operating system and operating system version. The Reducefloat method also use a custom jar class called PHP program, complete the subtraction operation. The two techniques are effectively combined, through the development of new PHP interface program to call the Java method, can be reduced to the original server program changes, provide technical demonstration of cross platform and scalability of PHP development technology.
英文關键词Key Words:PHP;environment variables; custom classes; bridges
0引言
PHP是一种专业的开放性网站开发语言,其语言风格和C语言类似[1]。PHP在Web开发中占据着重要地位,通常PHP开发环境会提供一个Web的应用程序框架,如Thinkphp、FDF框架等。在框架开发的基础上,采用MVC模式,对Web进行了模型、控制器及视图的分离,提高了程序开发效率。因此,PHP深受Web开发者的喜爱。
PHP作为一种动态脚本语言,简单易学,初学者容易上手,在Web开发方面具有独特优势,如开放源代码、跨平台性强、开发效率高,但它在企业级应用中运用并不广泛,大型企业应用的市场占有率不高。Java是一种成熟的开发平台,在项目开发技术上,企业级应用首选Java技术,但基于Java的Web开发技术,比如JSP、HTTP Servlet[2]等,结构相对复杂,要求程序员技术全面,不利于初学者快速进行Web应用开发。
在Web应用开发中,经常会遇到不同Web开发技术需要进行数据对接。企业在市场定位时,基于安全性考虑选择了Java技术,并在Java技术开发以及数据设计上投入了大量资金,但由于各种原因导致Java开发人才流失时,PHP程序相对简单、容易上手,可采用PHP程序调用Java方法。Java在结构设计上更加安全,因此银行系统都是采用Java技术开发。当第三方公司需要接入银行系统时,涉及的报文需要进行加密、解密以及数字签名等数据交互。
“信融天下互联网金融P2P网贷系统”基于PHP框架开发,按照银监会监管要求,从会员资金安全方面考虑,互联网金融P2P网贷系统需要进行银行存管,这就意味着信融天下互联网金融P2P网贷系统需要对接银行存管系统。对接银行存管发送的Java数据报,摒弃原有的PHP系统,重新使用Java技术开发,在功能和配置上,必定会浪费更多人力、物力和财力资源。笔者在开发过程中发现,可以通过桥接技术,生成银行系统需要的报文发送给银行方处理,并且可以处理银行端返回的报文,生成自身需要的报文格式。
PHP和Java在技术引用上存在很大互补性,将两种开发技术结合起来,各取所长,可以避免很多人力财力浪费。同时,广播电视大学正在向开放大学转型,开放大学作为一种新型大学,同时也是一个体系和一个平台,即社会各方资源的协同学习型平台。利用php-Java-bridge桥接方式,完成PHP程序调用jar里的Java类或自定义方法,在开放大学转型中实现平台建设也有着重要意义。
1研究现状及目的、方法
1.1研究现状
国内也有很多学者对PHP和Java虚拟机对接进行了研究,李文兵、朱可[3]提出WebSphere sMash框架,可以让基于PHP开发的Web应用程序运行在JVM上,提高PHP与Java的互联互通能力;邓红梅[4]在PHP和Java虚拟机之间通过嵌入式连接,在不影响Java原本运行效率的基础上,提高PHP的运行效率,实现数据资源共享;肖文鹏[5]在Linux环境下安装和配置PHP的Java扩展模块,利用PHP的Java扩展模块在PHP脚本中创建并调用Java对象;劳建成、蒋迁谦[6]在PHP和Java之间,选择使用应用层HTTP协议和PHP实现客户端和服务端的数据交互消息;李岚[7]提出了Linux下使用PHP程序调用JDK类可行的解决方案。
1.2研究目的
在前人研究的基础上,笔者通过技术创新,利用phpJavabridge实现PHP中调用Java平台封装在jar包里的class类和方法,将PHP和Java进行无缝对接,给广大PHP程序员全新的体验。该方法结合PHP开发语言的特点,大大提高了Web开发者的工作效率。
1.3实验方法
本文首先通过文献研究法,了解PHP与Java互联互通技术的应用,然后再根据《信融天下互联网金融P2P网贷系统》开发案例进行实证研究,实现PHP程序调用Java类。
2phpJavabridge安装与配置
考虑学习的便利性,选择使用Windows 7操作系统、IIS 7.0配置Web服务器。
2.1IIS安装配置
安装好IIS后,对应用程序池进行设置。
2.2PHP安装
为方便配置PHP,选择使用护卫神·PHP套件,在网站配置目录下使用phpinfo()指令,运行查看PHP配置结果。
2.3Java环境安装与环境变量配置
选用jdk8u121windowsx64配置Java环境,安装完成后配置环境变量步骤如下:
(1)新建系统变量。在“新建系统变量”对话框中,“变量名”输入“JAVA_HOME”,在“变量值”输入JDK的安装路径。
(2)设置PATH变量。单击“编辑”按钮,在“变量值”文本框添加“%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;”或者“%JAVA_HOME%\bin;”。
(3)设置CLASSPATH 变量。选擇“编辑”,在“变量值”开始的地方添加内容:“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;”。
(4)测试环境变量配置。通过CMD命令输入“JAVAC”,查看输出结果,判断是否配置成功[8]。
2.4phpjavabridge配置
(1)下载JavaBridge.jar,在搭建Web应用程序服务器时,作为PHP与Java桥接的应用程序包,放置在Java安装目录jre1.8.0_121\lib\ext目录下。
(2)解压JavaBridge.jar,放置在配置好的Web服务器根目录下。其中JavaBridge\METAINF\java目录下有一个名为Java.inc的文件,在该文件里,提供了PHP程序语言调用Java类的方法。
(3)双击JavaBridge.jar启动桥接接口,这里8080是常用端口,也可以设置为其它端口。
3PHP调用JDK中的Java类
header("Contenttype:text/html;charset=utf8");//设置编码格式,避免出现乱码
require_once("/JavaBridge/java/Java.inc");
MYMsystem = new Java( 'java.lang.System' );
echo "Java版本是:".MYMsystem>getProperty('java.version')."
";
echo "操作系统是:".MYMsystem>getProperty('os.name')."
";
echo "操作系统版本是:".MYMsystem>getProperty('os.version');
浏览器运行返回结果如下:Java版本是1.8.0_121,操作系统是Windows Server 2008 R2,操作系统版本是6.1。
4自定义Java方法调用
4.1自定义Java类
自定义Java类并打包成testjava.jar存放到JDK安装目录的ext目录下。需注意的是,每次增加或修改jar,都需要重新启动JavaBridge。
public class testjava {
public String name = "";
public void setname (String name){
this.name = name;
}
public String getname (){
return this.name;
}
public float Reducefloat(float num1, float num2){
return num1 num2;
}
}
4.2使用php文件调用自定义Java类
require_once("/JavaBridge/java/Java.inc");//引用PHP语言调用
MYMtestjava = new java("testjava"); //产生实例“testjava”是Java的jar包名
MYMtestjava >setname ("php调用Java的自定义方法!");//后面使用PHP程序语句对Java类中的方法进行调用
echo "使用PHP方法调用自定义的testjava类里的getname方法,返回:".MYMtestjava>getname ()."
";
echo "使用PHP方法调用自定义的testjava类里的Reducefloat方法,返回:".MYMtestjava> Reducefloat (15,9);
浏览器运行返回结果如下:
使用PHP方法调用自定义的testjava类里的getname方法,返回:php调用Java的自定义方法。
使用PHP方法调用自定义的testjava类里的Reducefloat方法,返回:6。
5结果分析
通过以上实验结果得出结论,使用PHP开发语言可以对JDK中的Java类以及自定义的Java类进行调用,即利用桥接方式,用PHP语言调用jar包中的Java类和自定义方法。Sun公司的白皮书[9]比较了PHP、Java Servlet等技术的功能,结论是PHP可以满足短期目标,具有可移植性,而Java Servlet具有平台无关性等优点,本实验可以作为文献[9]的一个补充,从技术角度对PHP和Java两种开发语言进行桥接。
6结语
使用phpjavabridge实现PHP调用Java类的技术,有利于PHP程序的扩展。从安全性角度看,可以真正实现Web应用的三层架构。特别是企业在Java上投入大量资金的情况下,需要使用PHP进行扩展,只要利用好phpjavabridge技术,可以大大节约开发成本。同时,在开放大学转型之际,对构建社会各方资源的协同学习型平台具有一定参考价值。
参考文献参考文献:
[1]梁广浩.搭建框架快速开发微信公众平台功能[J].大众科技,2015(10):134137,155.
[2]JASON HUNTER,WILLIAM CRAWFORD.Java Servlet programming[M].USA:OReilly,2001:4377.
[3]李文兵,朱可.帶给PHP和Java世界的双赢[J].程序员,2009(9):106107.
[4]邓红梅.基于Java技术的PHP编译器的设计与开发方式刍议[J].网络安全技术与应用,2014(4):33,36.
[5]肖文鹏.珠联璧合PHP与JAVA的结合[J].中文信息,2002(10):7475,78.
[6]劳建成,蒋迁谦.基于PHP和Java的消息中间件的实现原理研究[J].无线互联科技,2017(2):102103.
[7]李岚.基于BASE64编码的电子支付系统安全性分析[J].微计算机信息,2006(73):178179,221.
[8]JDK安装与环境变量配置.[EB/OL].http://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html.
[9]Sun Microsystems.Comparing methods for server side dynamic content white paper[M].USA:Sun Microsystems Press,2000:5157.
责任编辑(责任编辑:黄健)