【问题标题】:Is it possible to compile Java on a webserver?是否可以在网络服务器上编译 Java?
【发布时间】:2012-09-09 03:58:41
【问题描述】:

通过使用 JRE 或其他一些运行时环境,是否可以在 Apache 或 Nginx 等 Web 服务器上编译 Java 代码? 具体来说,我希望有一个可以接受用户输入(Java 代码)的 Web 应用程序,当用户点击运行时,它会将 Java 编译为 Java 字节代码并显示结果,就像 Eclipse 一样。
这种技术甚至存在吗? 这是否违背了编译语言的逻辑? 提前感谢您的时间。 友好地, 詹姆斯

【问题讨论】:

    标签: java apache nginx webserver


    【解决方案1】:

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

    不过,请考虑这样做的潜在安全风险。根据程序实际执行的操作,它可能会导致您的机器或其他机器出现问题。

    【讨论】:

    • 这里只是支持 Beau 关于安全性的评论。用户编写的代码将在您的服务器上运行。他可以访问文件、进行系统调用等。可以通过在 Java 中使用安全管理器并限制 Java 进程来加强这一点,但除非你真的知道自己在做什么,否则不要这样做。
    • 太棒了,明白了。谢谢。但是,每当向服务器发送编译请求时,是否可以在 VM 中运行 Java 代码?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        最近更新 更多