JVM如何在内部工作

时间:2017-07-05 13:51:51

标签: java security

ALL,

在工作中,我们有一个用JAVA编写的软件。它运作良好。在几个来源中,我们有这样的陈述:

import x.y.z

我们使用

没有源文件
import x.y.*

最近我们从软件保障团队进行了扫描,他们发现了一些不足之处。

一个例子是:

The code is using MD5 encryption algorithm.

我们的代码甚至不会导入连接到MD5的类,更不用说使用它了。

所以,我的问题是:

如果我有Foo类的导入,JVM是否真的从JAR /库中提取所有内容?

谢谢。

2 个答案:

答案 0 :(得分:2)

  

如果我有Foo类的导入,JVM是否真的从JAR /库中提取所有内容?

没有。 JVM只会加载运行时所需的类

但是,如果您的班级A使用库类L1,而班级L1使用其他库类L2,那么 {{将加载1}}和L1。因此,您无法仅通过查看类L2语句来确定是否使用了MD5。 (还有其他原因......)

确定实际使用的类的一种方法是使用命令行选项import启动JVM。这将显示有关每个已加载类的信息,包括库类。

答案 1 :(得分:1)

首先,java编译器将源代码编译为字节代码。在运行时,Java虚拟机(JVM)解释此字节代码并生成机器代码,该代码将由运行java程序的机器直接执行。

访问JVM,JRE和JDK https://javatutorialdetails.blogspot.com/2017/10/java-tutorial-in-details-step-by-step.html

的优秀教程