到目前为止,我正在开发一个只支持JNI而不支持JVMTI的软件。但我不能清楚地区分为什么JVMTI实际上是有帮助的,以及如果它以前与JNI一起工作,那么JVMTI将添加什么,因为它们似乎在做一些相同的工作。
发布于 2013-05-06 05:03:21
顾名思义,Java服务于将本机代码集成到应用程序中。这意味着您可以从java代码中调用用C编写的函数。
现在,JVMTI不一定要向添加任何东西,因为它服务于完全不同的目的。它为分析器、调试器等工具提供了JVMTI代理和Java虚拟机之间的通信方式。它只使用JNI,但实际上并没有添加任何东西。
发布于 2014-05-07 21:28:26
Java 使应用程序能够使用由其他语言(例如,c/c++或汇编语言)实现的库。它为JVM供应商和应用程序开发人员提供了一个标准的VM接口。
JVMTI是的最低层。下图说明了这一点:http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html
Components Debugger Interfaces
/ |--------------|
/ | VM | <------- JVM TI
\ | back-end |
\ |--------------|
/ | <------- JDWP
\ |
|--------------|
| front-end |
|--------------| <------- JDI
| UI |
|--------------|简而言之,JVMTI只使用JNI。
https://stackoverflow.com/questions/15827236
复制相似问题