都知道Java运行的两个过程Javac和Java命令,转换为二进制文件并运行。
学习jvm的时候,看到Java文件编译为javac文件后,需要通过字节码检验器进行验证。
我就产生了一个疑惑,那javac命令过程不需要验证码?
然后自己把helloworld的语法进行了更改
很显然,javac命令也会有一个验证的过程,那么这个过程是什么呢?
通过百度查询,得到了一个结果。https://blog.51cto.com/u_16099203/6820282
javac命令只是对语法进行了验证,然后生成了二进制的字节码。
而Java程序是可以运行其他人的.class文件的,为了安全,Java又需要进行字节码验证,从而确定这个程序是安全的,这就是字节码检验器的工作。这是字节码验证机制的详细内容JAVA中的字节码验证机制 深入理解java字节码_killads的技术博客_51CTO博客
总而言之,Javac命令主要是对语法进行验证,而字节码验证还会从安全的角度再次验证,防止恶意程序的出现,这是不同的两个阶段