java - CodeCompiler - 从另一个 Java 程序编译和运行 Java 程序

标签 java

我们正在尝试构建一个 Java 代码编译器来创建在线编码测试。我们通过 REST API 将源代码发布到端点。接下来,我们针对测试文件编译和执行输出,然后将结果返回给客户端。

这里的挑战是我们正在为每个请求启动一个进程 javac - 编译代码java - 执行代码 这实际上需要 30MB RAM 和 600 毫秒过程。

这非常庞大,我们无法在八核和 16GB RAM 上处理 1000 个用户的负载。如果我们一次收到 200 个请求,它会产生 200 个进程,这很繁重并且其他请求在排队。

我们能想到的解决方案

  1. 不要每次都启动 javac,重用它,但如何重用(javac 在编译完成后自行终止)?
  2. javac 应该编译字符串输入而不是从文件。

我们很好奇在线编程竞赛平台是如何解决这些问题的?我们只针对 Java。非常感谢任何帮助。

https://www.journaldev.com/937/compile-run-java-program-another-java-program

最佳答案

自 Java 1.6 以来,Java 拥有一个编程 API,无需使用子进程即可访问 Java 编译器。作为起点,请参阅 documentation for the JavaCompiler class .

关于java - CodeCompiler - 从另一个 Java 程序编译和运行 Java 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52336220/

相关文章:

java - 亚马逊 MWS - getOrders

java - 为网络保留的位

java - 循环遍历 ConcurrentHashMap 的 ConcurrentHashMap

java - 如何将 jasper 报告从 xalan 切换到 saxon?

使用自定义收集器的 Java 8 分组?

java - Mockito 和嵌套方法调用

java - 如何在jni接口(interface)中将值放入字节数组

java - Shiro 中的纯密码和加密密码不匹配

java - 是否可以通过设计从 Redis 提供陈旧数据?

java - 关键的 gemfire 负载测试