2012-09-16 45 views
0

通过使用JRE或其他运行时环境,是否可以在Web服务器(如Apache或Nginx)上编译Java代码? 具体来说,我想要一个可以接受用户输入(Java代码)的Web应用程序,并且当用户点击运行时,它会将Java编译为Java Byte代码并显示结果,就像Eclipse一样。
这种技术是否存在? 这是否违背了编译语言的逻辑? 谢谢您提前预约。 Amicably, James是否可以在Web服务器上编译Java?

回答

4

运行Apache的服务器还需要一个JDK。您可以轻松将输入写入文件,编译它,运行它,并将结果显示给用户。这可以通过在Tomcat中运行的CGI脚本或Java EE应用程序或类似程序完成。一个JDK将是必需的,一个JRE是不够的。

尽管如此,请考虑潜在的安全风险。根据程序的实际情况,这可能会导致您的计算机或其他计算机出现问题。

+1

只是在这里支持博安对安全的评论。用户编写的代码将在您的服务器上运行。他可以访问文件,进行系统调用等。可以通过在Java中使用安全管理器并限制java进程来加强这一点,但除非您真的知道自己在做什么,否则不要这样做。 – sstendal

+0

太棒了,明白了。谢谢。但是,无论何时发送到服务器的编译请求,是否可以在VM中运行Java代码? –

1

当然这是可能的。但是您需要一个JDK和一些服务器端脚本(PHP,Ruby,Python,Java ...),它将源代码作为输入并调用Java编译器来编译代码。
你必须考虑的是安全问题。然后每个用户都可以上传代码,这些代码将在服务器上执行。所以你必须确保代码在沙箱中运行。

1

有几个网站这样做。我用过的一个是http://www.ideone.com

您可以使用JDK和各种脚本重现此操作,也可以从头编写自己的编译器。无论哪种方式,您都需要某种编译器来实际编译代码。

相关问题