第一章 初识Java
Java 简介
1.Java的发展历程
- Sun公司(已被Oracl收购)于1995年5月推出了Java程序设计语言和Java平台
2.Java基本特点
-
Java是一种程序设计语言,不是脚本语言
-
Java语言时高级语言(所谓高级语言就是独立于机器,面向过程或对象的语言,C++、python、C#也是高级语言,因为这些语言书写的代码越来越接近人类的自然语言)
-
Java是面向对象的,不是面向过程的,我们常知道的以C语言为代表的过程式编程语言就是以过程为中心,以算法为驱动
-
Java是平台无关的
- 用Java编写的应用程序,编译成字节码文件(.class)后,不用修改就能在不同的软/硬件平台上运行
- 得益于Java的虚拟机Jvm
-
Java的健壮性
- Java丢弃了指针
- Java的垃圾回收机制
- 在空闲时间以不定时的方式动态回收无任何引用的对象所占据的内存空间
3.Java体系
- Java SE 是Java的基础,也是Java的核心
- Java EE 是在SE基础之上发展起来的Java企业版
- Java ME 在发展之初的一个分支,用于一些嵌入式设备的程序开发,但现在逐渐没落
4.Java的工作原理
-
从源码到机器码的过程
-
.java
-
词汇和语法分析
-
-
分析源码的执行逻辑,并将其绘制成一个抽象的语法树
- 填写符号表
- 用一些符号来表示各个程序之间的关系,因为这些程序之间会彼此引用
- 注释处理
- 几乎所有的程序都包含程序和注释两部分,此阶段会对注释进行分析和归类
- 生成字节码(.class)
-
字节码被解释成机器码(机器所能看懂的语言)
- 在操作系统执行
-
JDK、JRE、JVM
- 从源码到字节码需要编译,在Java中,这个编译动作由JDK提供的javac命令完成
- JVM负责前文提到的解释并执行字节码
- API是应用程序接口的合集,可以理解为一些已经写好的、可以供我们直接使用的代码,通常以包的形式体现,比如java.io就是一个汇集了很多文件操作的包,而java.lang就是一个汇集了很多程序基础操作的包
-
字节码解释过程(在JVM中完成)
- 先经过JVM的类装载器
- 为执行程序寻找和装在所需要的类,就是把字节码文件装入到Java虚拟机中
- 字节码校验器
- 对字节码文件进行校验,保证代码的安全性
- 解释器
- 具体的平台并不认识字节码文件,最终起作用的还是这个最重要的解释器,它将字节码文件翻译成所在平台能识别的东西
- 在操作系统平台上运行
- 先经过JVM的类装载器
-
即时编译技术
- JVM可判断某段字节码是否属于使用频率较高的热点代码,如果是,就会将字节码文件转换出本地的机器码保存,以便下次直接执行机器码文件
-
垃圾回收机制
- Java虚拟机JVM提供了一个系统级线程(垃圾回收线程),它自动跟踪每块被分配出去的内存空间,自动释放被定义成垃圾的内存,减轻程序员的负担,这是Java虚拟机具有的一个显著优点
- GC、Garbage Collection
- 当对象不再被其他对象使用时,该对象就会成为一个等待被回收的垃圾对象
-
Java的跨平台机制(一次编译,处处运行)
- JVM并不是一台真实的机器,而是想象中的机器,通过模拟真是机器来运行Java程序
- 虽然是模拟出来的机器,JVM看起来同样有硬件,入处理器、堆栈、寄存器等,还具有相应的指令系统
- Java程序运行在这个 抽象的Java虚拟机上,是Java程序的运行环境,也是Java最具有吸引力的特性之一
- 对于Java而言,字节码文件并不是针对具体平台的,而是针对抽象的Java虚拟机的,在Java虚拟机上运行,在不同的平台上,会安装不同的Java虚拟机,这些不同的Java虚拟机屏蔽了各个不同平台的差异,也就是会把字节码解释成具体平台上的机器指令执行