在Java编程中,源代码和目标代码是不可避免的话题。源代码是开发人员编写的,包含自然语言和计算机语言。这些代码是可读的,并且可以通过编译器将其转换为二进制的目标代码。
目标代码看起来像一堆数字和符号,这些内容是计算机可以直接执行的。这些代码是在计算机上运行的,同时也可以交给其他开发人员或者用户。但是,在Java中,源码和目标代码这些概念已经过时,被一些新的概念所取代。
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }
上面的代码是一个简单的Java程序。在传统的Java编程模型中,这个代码编译后会生成一个包含机器代码的目标文件。这个目标文件可以被直接运行。但是,这种方式有一些缺点:
- 目标代码对于人来说是不可读的。
- 目标代码只能在一定的环境中运行。
- 目标代码不可移植。
因为以上这些问题,Java引入了虚拟机(JVM)的概念,使Java在编译阶段生成的不再是目标代码,而是类文件(class files),类文件包含了可执行的字节码(bytecode),这些字节码是编译好的Java代码。
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }
当Java代码编译为类文件后,由JVM来执行该代码。JVM将字节码加载到内存中,然后解释字节码来执行代码,因此它不需要在编译时生成目标代码。
在JVM中,一个运行的Java程序被称为Java应用程序,同样也可以被称为Java进程。这个进程是由JVM来启动和管理的。Java应用程序在JVM中运行,哪怕是在不同的操作系统平台上,也具有可移植性。
总而言之,Java语言的源代码和目标代码的概念已经被类文件和虚拟机所取代。使用Java开发程序时,我们只需要关注类文件和虚拟机,这些可以帮助我们编写可移植且可执行的Java程序。