当前位置:  开发笔记 > 编程语言 > 正文

java内存中编译

如何解决《java内存中编译》经验,为你挑选了2个好方法。

如何在运行时从String生成字节码(Byte []),而不使用"javac"进程或类似的东西?是否有一种简单的方式来调用编译器?

后来补充:

我选择接受最符合情况的解决方案.我的应用程序是一个仍处于设计草图阶段的业余爱好项目,现在是考虑插入新技术的最佳时机.另外,因为那个应该帮助我的人是一个JavaScript开发人员,在这种情况下,使用JavaScript解释器而不是存根编译器+ classLoader的想法似乎更吸引我.这个问题的其他(未被接受的)答案是提供信息的,据我所知,非常好地回答我的问题,所以谢谢,但我要去尝试Rhino :)



1> Tom Hawtin -..:

JDK6有一个Java编译器API.但是,它不一定非常容易使用.

一个快速谷歌拉起这个示例用法.



2> MBCook..:

我认为你最好的投篮将是Janino.这将允许您在运行时编译代码并从程序的其余部分调用它.我们在一些系统中使用它来让我们动态更新某些类.

这不是免费的.它运行良好,但每次加载一个新类(或类的版本)时它都使用permgen空间,因此如果你有一个(真的)长时间运行的进程(或者加载了很多新类的东西),你最终会耗尽内存但是你可以改变JVM中的permgen空间量,以便在遇到问题时将障碍移开.

Janino实际上是一个编译器,但如果你需要在那个级别运行,你可以看到它如何注入字节码.您可能需要最终制作类加载器或使用Tom Hawtin建议的Java编译器API.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有