最近在阅读《Java编程的逻辑》一书,受益良多,在此对作者(马俊昌)万分的感谢。
“读书其实不是读书,而是在书中读自己,在书中发现自己,在书中检查自己。”
——《Korte Verhandeling Van God, de Mensch En Deszelfs Welstand》皮特·蒙德里安
编程基础
计算机是一个机器,这个机器有CPU、内存、硬盘、输入/输出设备(这里不考虑显卡)组成。
计算机上跑着操作系统,如Windows、Linux、MacOS、Android,IOS等。
操作系统上运行着各种应用程序,如QQ,Word、浏览器等。
计算机看起来可以同时运行多个应用程序,但其实是操作系统不停的在多个应用程序之间切换交替运行。
每次切换时都要保存应用程序当前运行的状态,以便当下次切换到运行态时进行状态复原。
通过应用程序,能使我们能做很多事情,如聊天,查资料,听音乐等。
实质上,每个应用程序都是预先编译好的指令,通过这些指令来操作计算机中的设备和数据。
开发使用的编程语言,就是对这些指令的封装。
开发者使用编程语言,编写出各种程序,然后编译成计算机能识别的指令,间接的控制计算机中的设备和数据,实现任意想要的功能。
对于Java语言来说,从编写程序到执行的大概流程如下:
- 1、编写 .java 程序。
// HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
- 2、通过 javac 命令把 .java 程序文件编译成字节码文件( .class ),字节码文件中保存了Java虚拟机(JVM)可以识别的指令。
(⚠️ Java虚拟机(JVM)本质也是用 C 语言编写的一个程序,它拥有自己的字节码指令表。)
$ javac HelloWorld.java
$ ls
HelloWorld.class
- 3、通过 java 命令创建和初始化Java虚拟机(JVM),然后加载 java 命令后面指定的字节码文件。
加载完之后,Java虚拟机(JVM)会执行字节码文件中main函数对应的字节码指令。
(参考Java虚拟机的启动与程序的运行)
$ java HelloWorld
# 下面是main函数执行结果
Hello World
- 4、Java虚拟机(JVM)执行字节码文件,即把字节码解释成计算机可以处理的二进制数据,再调用操作系统的指令集(CPU实现这些指令的操作),把这些二进制数据解释给计算机的各种硬件。
上面的例子最终执行结果就是在命令窗口里输出“Hello World”。
(⚠️ 二进制中的0和1,分别代表电子元件的低压和高压状态,这两种状态也是电子元件最容易处理的状态)。