基于智能手机的Java源码云编译技术实现

2021-03-24 15:04周挺朱飞燕
科学与生活 2021年29期
关键词:服务器端代码客户端

周挺 朱飞燕

摘要:设计实现了一款能够在智能手机端编写Java代码的APP工具,并采用语音输入编程指令方式进行编程,然后通过远程云端服务器架设编译环境,对手机端编写的Java代码进行在线编译,解决了手机编写编译Java代码困难的问题。

关键词:Java语言;云编译;

0、引言

随着智能手机的发展,基于手机平台的Java语言编译工具也出现在应用市场中,目前智能手机应用市场中,主流的能够进行Java编程的App都是基于本地进行源代码的编译的,主要是将openjdk中有关编译java工程项目的编码移殖到安卓应用,java编译器手机软件大全支持加上jar格式的lib文件,而且将编译后的程序流程dex化,便于在安卓系统机器设备上运行。这样如果编译较复杂的Java程序就会增加手机端App编译负担,如果能够实现手机端编写代码,再发送给远程服务器进行编译,并把计算结果返回给手机端显示,就会大大减轻手机客户端的工作量。

1、关键技术

实现远程编译java程序需要涉及到手机端和服务器端的详细设计。

(1)手机端设计

手机端App设计主要围绕编程环境的设计,为了达到界面设计美观,优化编程结构,解决手机虚拟键盘输入程序代码太慢的弱点,我们的Java编程手机端采用语音输入Java编程指令,能让程序员快速实现代码编写目标,语音识别模块运用讯飞语音识别模块,采用后台数据库设计指令和语音识别Java指令结果的匹配工作。手机端编写好的Java程序发送给服务器进行远程在线编译,并把结果返回给手机端显示。

(2)服务器端设计

服务器端采用基于Web架构的MVC模式,我们采用JSP技术,通过Servlet接收客户端发过来的Java程序代码,并以.java文件格式保存在服务器的本地存储器指定文件目录下,关键代码如下:

String jtext=newString(request.getParameter("JavaContent").getBytes("iso8859-1"),"GBK");

String jname=new String(request.getParameter("JavaName").getBytes("iso8859-1"),"GBK");

System.out.println("接收到的数据为:"+jtext);

//把传递进来的字符串写入.java文件

saveAsFileWriter(jtext,jname);

要想把保存在服务器指定位置的.java文件再编译成.class文件,并获取程序的运行结果,我们需要准备以下几个工作。

首先,要在服务器上安装JDK环境,并配置好环境变量。下载好JDK工具包后进行默认安装,安装完毕后,需要到服务器的高级系统设置中去设置环境变量。具体设置内容如下:

<1>新建JAVA_HOME变量

变量名:JAVA_HOME

变量值:填写JDK安装目录(我的是 D:\Program Files (x86)\Java\jdk1. 8.0_181)

<2>找到Path变量进行编辑,没有的话就新建一个

变量名:Path

变量值: ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

<3>新建CLASSPATH变量

变量名:CLASSPATH

变量值: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

其次,我们采用java中的RunTime.getRuntime().exec()实现调用服务器命令来编译.java文件。关键代码如下:

try {

BufferedReader br;

Process p=Runtime.getRuntime().exec("cmd /c set CLASSPATH=D:\\ && javac -encoding UTF-8 D:\\"+jname+".java && java "+jname);

Thread.sleep(2000);//延遲1秒

if(p.exitValue()!=0) {

br = new BufferedReader(new InputStreamReader(p.getErrorStream(),"GBK"));

}else {

br = new BufferedReader(new InputStreamReader(p.getInputStream(),"GBK"));

}

String line = null;

sb=new StringBuffer();

while ((line = br.readLine()) != null)

sb.append(line+"\n");

p.waitFor();

p.destroy();

}catch(Throwable t) {

t.printStackTrace();

}

response.setCharacterEncoding("GBK");

response.getWriter().append(sb.toString());

}

服务器的最后一步是将编译后的结果以可读格式(例如HTML)发送回手机客户端。让手机客户端进行在线显示。如下图所示:

2、总结

总的来说,采用远程云编译技术可以大大减少手机客户端编译的压力和缺陷,加速了智能手机编程工具的应用,有利于初学者应用移动平台在线学习Java语言的基础知识能力和实际的动手能力。

基金项目:西安航空职业技术学院自然科学类科研项目:“语音编程教学软件研究与设计”(课题编号:19XHZK-022)

猜你喜欢
服务器端代码客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
虚拟专用网络访问保护机制研究
新闻客户端差异化发展策略
基于Qt的安全即时通讯软件服务器端设计
神秘的代码
基于Qt的网络聊天软件服务器端设计
一周机构净增(减)仓股前20名
重要股东二级市场增、减持明细
一种基于Java的IM即时通讯软件的设计与实现
近期连续上涨7天以上的股