第二章:Java 系统框架及特性

时至今日,Java 已经诞生了 21 年,在这 21 年间,Java 从最初的 JDK 1.0 到现在的 JDK 1.8,可以说,现在的 Java 已经很完善了。同任何一门技术一样,一个完善技术必须有一个很好的底层框架支持,那么 Java 的底层框架是什么呢?为什么会有这样的框架,或者说这样的框架有什么好处?

一、Java 框架

image
上图就是 Java 整体的框架图。

Java 框架图将不同模块用不同的颜色区分开,由此可知:Java 由八部分组成。从底层到顶层,依次是:
- JVM
- lang and util Base Libraries
- Other Base Libraries
- Integration Libraries
- User Interface Toolkies
- Deployment
- Tool & Tool APIs
- Java Language

下面对各组成模块一一介绍:

JVM

Java 虚拟机,是一台计算机上由软件或者硬件模拟的计算机,是实现跨平台的核心构件。

Java 的工作原理是:先编译,后解释执行。首先通过 Java 编译器将 Java 源文件(后缀名为 .java)编译成字节码文件(后缀名为 .class),其次再通过 JVM 中的解释器将其解释成机器指令。Java 语言的核心理念是:Write Once,Run Anywhere,正是靠此实现的。

其实将“跨平台”的特性赋予 JVM,本身就有问题,因为 Java 编译器本身也是“跨平台”的,不同平台使用的 Java 编译器也是不同的。也许是因为 JVM 离机器本身更近。

lang and util Base Libraries

这一层主要是 Java 开发中常用的工具类,例如:Math,Collections等。

Other Base Libraries

同上一层一样,也是开发中常用的支持库,例如:Date & Time,Input/Output等。

Integration Libraries

这一层主要是集成库,例如:JDBC,主要用于链接数据库。

User Interface Toolkies

这一层主要是界面相关的 API。

Deployment

这一层主要是应用程序部署相关的工具和 API 。

Tool & Tool APIs

这一层主要是一些命令行开发工具,例如:Javac(Java 编译器) 。

Java Language

最顶层就是 Java 语言。Java 语言和 Java API 最大的区别就是:Java 语言更像是英语中的单词和句子,而 Java API 则是英语中的语法,前者包含后者。

二、Javac/Java/JVM/JRE/JDK 之间关系

Javac

此处的 Javac 对应的是 Java 体系中的编译器,它在 JRE 之外,JDK 之中,JDK 正是比 JRE 多了一些此类的命令行工具。

Java

此处的 Java 对应的是 Java 体系中的解释器,它在 JVM 之中。Java 跨平台特性的核心组件是 JVM,而 JVM 的核心组件是 Java 解释器,正是 Java 解释器将编译之后的 *.class 文件翻译成了机器指令。

JVM

Java 虚拟机,实现 Java 跨平台特性的核心组件。位于 JRE 之中。

JRE

Java 程序运行的最小支持环境。

JDK

Java 程序开发环境,不仅包含了 JRE 的所有内容,而且还包含一些与开发相关的命令行工具。

具体关系图如下:
iamge

三、Java 特性

可移植性

Java 的核心理念之一就是:Write Once,Run anywhere。

对于一个程序员来说,写出来的程序如果不需要做任何更改就可以在多个平台上运行,是多么美好的一件事啊!Java 已经几乎做到了,虽然在有些情况下需要做少许的更改,但是这又有什么呢,没有什么天生就是完美的,Java 也还处于成长期,相信在不久的将来,或许真的可以实现不做任何更改就可以在多个平台上运行呢,后面事,谁知道呢,让我们拭目以待吧!

面向对象

Java 的另一核心理念就是:一切都是对象。

记得刚开始学习 Java 程序的时候,听老师说:“在 Java 的世界里,一切都是对象”。当时并不理解什么意思,下课后,还专门向老师请教了一番。但由于之前没有接触过此类编程语言,所以老师说的东西,在几天之后,我就原模原样的还给他了。

后来有一天出去玩,坐在车上,突然开窍了:原来 Java 语言正是现实世界的浓缩,它里面的每一个对象正对应着生活中的每一样东西。 例如我们需要建一座房子。首先,我们应该有房子这个对象;其次,我们根据房子的特点及属性,向房子对象中添加相应的构件,如瓦片,砖块,而这其中的瓦片和砖块又是一个个对象,它们是由更小的对象构件组成,于是一层层往下走,直到走到你现在拥有的对象。假如,你当前拥有的是瓦片对象,那么反推,你就可以得到最终的房子对象了。当你调用对象的方法时,其实是在向对象发送一个消息,让它帮你做事。

健壮性

Java 语言在编译时,会做一些检查处理,对于一些明显的语法错误,会毫不留情的“铲除”。

当然,Java 好的特性不止这些,要不然怎么会吸引那么多的程序爱好者呢!

猜你喜欢

转载自blog.csdn.net/zjh_1110120/article/details/53176068