一:简单的命令
我们先从javac(编译器)命令开始,javac命令是将源代码编程成class字节码文件,因为我们的JVM虚拟机是执行class字节码文件的,不是执行源代码,JVM虚拟机是不认识源代码的。
public class Helloworld{
public static void main(String[] args) {
System.out.println("hello world");
}
}
上面是一段简单的java源代码,我们需要使用javac命令将其编程成字节码文件,才能运行,如下图:
![](https://img.haomeiwen.com/i1094787/7a5bf326ad76534e.jpg)
执行之后,当前目录下会多出一个Helloworld.class文件,这就是字节码文件,如下图:
![](https://img.haomeiwen.com/i1094787/44bea9284ac2f057.jpg)
如果想运行,那么可以使用java命令来执行class字节码文件:
![](https://img.haomeiwen.com/i1094787/55b12ba9794a650f.jpg)
执行结束后,在控制台,输出hello world字符串。另外,需要注意,并不是每个字节码都能得到执行,只有含有main方法的class文件才能执行,因为,main方法是java程序的入口。
二: 怎样理解字节码
计算机只认识0和1。这意味着任何语言编写的程序最终都需要经过编译器编译成机器码才能被计算机执行。所以,我们所编写的程序在不同的平台上运行前都要经过重新编译才能被执行。 而Java刚诞生的时候曾经提过一个非常著名的宣传口号: "一次编写,到处运行"。
Write Once, Run Anywhere.
为了实现该目的,Sun公司以及其他虚拟机提供商发布了许多可以运行在不同平台上的JVM虚拟机,而这些虚拟机都拥有一个共同的功能,那就是可以载入和执行同一种与平台无关的字节码(ByteCode)。 于是,我们的源代码不再必须根据不同平台翻译成0和1,而是间接翻译成字节码,储存字节码的文件再交由运行于不同平台上的JVM虚拟机去读取执行,从而实现一次编写,到处运行的目的。 如今,JVM也不再只支持Java,由此衍生出了许多基于JVM的编程语言,如Groovy, Scala, Koltin等等。
![](https://img.haomeiwen.com/i1094787/dc8ba6726cfc6268.png)
网友评论