admin 管理员组

文章数量: 887032


2024年1月11日发(作者:虚拟货币交易平台源码)

Program Design

程序设计•Java语言在线编译器的设计与实现文/谢伟增 金振乾务器进行交互,实现程序编写、编译及执行的摘

习要本文针对当前程序设计课程实验教学课时少,大部分集成开发环境对系统软硬件要求高,学生编程训练的时间和空间普遍不足的教学实际情况,分析了在线编译器的功能和应用场景,总结了现有的各种在线编译器在使用过程中的缺点,提出了新的在线编译器设计方式并予以实现。教学实践表明,该在线编译器可以为学生提供在线编辑、编译、检错等功能,实现随时随地编程、不限设备编程,能够成为程序设计课程教学实践的有力补充。全部过程。这样不仅避免了在客户端设备上安装和配置传统编译环境的麻烦,也摆脱了对客户端设备类型和性能的限制。基于这些优点,在线编译器的开发和应用得到不断地扩展。目前已有的在线编译器有多种不同的实现类型,各种类型也都存在一些不足,主要表现在:界面不简洁,支持编程语言种类少;传统的物理服务器在部署、资源分配、可靠性等的不足与限制;编写时无感应显示框,不能高亮显示代码等方面。因此,我们设计了一个基于Browser/Server模式的在线编译器,在前端页面实现了设备适配,允许用户通过各种网络终端设备访【关键词】Java 在线编译 程序设计 在线学问,在服务器端实现了源程序文档管理、后台编译和前后台信息交互的功能,提供稳定的多用户在线编译服务。各种程序设计课程是高校理工科类学生的必修课程。这些课程不仅使学生的逻辑分析能力、程序设计能力得到训练,还为后续的各种与编程有关的专业课程奠定了学习基础。目前学习程序设计最常用的方式是通过集成开发环境IDE。无论用户使用何种操作系统,都有支持该平台的集成开发环境平台可供使用。诸如Windows平台下有微软公司开发的Visual Studio,MacOS平台下有苹果公司开发的Xcode,另外还有一些跨平台开发环境如Eclipse、Apache NetBeans和IntelliJ IDEA等等。这些IDE集成了编辑、编译和调试等实用且强大的功能,适用于各种桌面环境,但是通常配置也比较复杂,而且往往还有版权方面的限制,使用成本较高。而另一方面,随着移动通信网络的迅猛发展,各种移动通信设备大量普及,无线网络全面覆盖,使得几乎人人都可以通过无线宽带网络随时联网,始终在线。如果把这个途径用于程序设计的实践学习,使学生能够通过智能手机、平板电脑等各种联网设备访问在线编译器平台,就能突破时间、空间的限制,以及软件、硬件方面的约束,充分利用“碎片”时间,通过浏览器访问在线编译器,完成程序的编辑、编译等任务。在线编译器通常使用浏览器/服务器的工作模式,将程序编译和运行的主要功能放在服务器端,客户端无需安装任何开发环境和编译器软件,直接通过浏览器打开Web页面与服1.2 服务器运行环境编译服务器是确保在线编译功能得以实现的核心环节,既要具备高度的稳定性和快速的反应能力,又要能够支持大量的并发连接,因此选择以高性能、高稳定性著称的Linux系统,各个主流发行版均可正常运行,如Debian,Ubuntu和CentOS等。应用软件方面,采用成熟的OpenJDK 8,Apache Tomcat 8.5,并使用Maria DB 10作为后台数据库,为提高并发能力,还提高了数据库连接池技术。该配置稳定可靠,成本低廉,性能较好。得益于这些软件的跨平台能力,同样的系统也可以运行在Windows平台上,提高了部署的便捷性。目前常用的Java语言动态编译的实现方案主要有:(1)使用JavaCompiler接口来实现Java源程序的动态编译。(2)通过StandardJavaFileManager类实现Java源程序动态编译。(3)从内存中动态编译Java程序。这些方式或者缺乏灵活性并效率较低,1.1 开发环境开发过程中所选择的集成开发环境为JetBrains公司的产品IntelliJ IDEA。作为目前最主流的Java集成开发环境之一,IntelliJ

IDEA具备强大的静态代码分析和人机工程学设计,能够显著提高开发人员的生产力,而且还有基于Apache 2.0开放式授权的社区版本可供使用。IntelliJ IDEA原生支持maven,可进行高级项目管理,实现快速开发。在开发环境中完成项目设计和调试以后,将其部署到服务器上就可以正常访问了。或者不符合系统需求,或者依赖于某个具体的Java类的版本和方法。因此我们采用了直接生成Runtime对象,并通过Runtime对象生成调用complie命令或run命令的相关进程,实现在服务器端编译和运行Java程序的核心功能。在调用complie命令或run命令时,先判断服务器端操作系统的类型,然后根据类型构建相应的编译命令行和运行命令行(命令行中还需包含需要执行的Java程序的代码路径及主类名称)。首先通过调用相关方法进行编译操作,编译过程如果发现错误则返回错误信息,如果编译成功则继续调用相关方法进行运行操作,并返回运行结果。核心代码如下所示:public String runCode() { String osType = perty(""); String result = ERROR;if (rCase().endsWith("linux")) { String complie = "javac " +

codesPath+ "/" + className + ".java"; String run = "java -classpath " +

codesPath + " " + className;result = runCodeWithLinux(complie);if (() == 0) {returnrunCodeWithLinux(run);在线编译器的应用把编译和运行放到服务器上进行,消除了在客户端设备上安装编译环境的需求。但是要实现在线编译,有两个核心问题必须要解决:一是如何把用户在网页上输入的源程序代码交给服务器进行编译执行;二是如何将程序的运行结果或编译错误信息在网页上输出。针对这些关键问题,我们采用了以下方式来解决。2.1 动态编译的实现方式2 关键技术1 开发和运行环境●基金项目:河南司法警官职业学院院级课题(2018-YB-06)。Electronic Technology & Software Engineering

电子技术与软件工程• 241


本文标签: 编译 实现 开发 环境 运行