字节码检验器和Java编译器区别

都知道Java运行的两个过程Javac和Java命令,转换为二进制文件并运行。

学习jvm的时候,看到Java文件编译为javac文件后,需要通过字节码检验器进行验证。

我就产生了一个疑惑,那javac命令过程不需要验证码?

然后自己把helloworld的语法进行了更改

字节码检验器和Java编译器区别_第1张图片

很显然,javac命令也会有一个验证的过程,那么这个过程是什么呢?

通过百度查询,得到了一个结果。https://blog.51cto.com/u_16099203/6820282

javac命令只是对语法进行了验证,然后生成了二进制的字节码。

而Java程序是可以运行其他人的.class文件的,为了安全,Java又需要进行字节码验证,从而确定这个程序是安全的,这就是字节码检验器的工作。这是字节码验证机制的详细内容JAVA中的字节码验证机制 深入理解java字节码_killads的技术博客_51CTO博客

总而言之,Javac命令主要是对语法进行验证,而字节码验证还会从安全的角度再次验证,防止恶意程序的出现,这是不同的两个阶段

你可能感兴趣的:(java,开发语言,jvm)