1. Java 的历史
1995 年 5 月 23 日,Sun Microsystems
公司发表 Java 语言诞生,过后应用 Java 的总人数还不到 30 人,可能包含 Java 语言之父 詹姆斯·高斯林
在内的大多数联结创始人都无奈料想,Java 在将来的二十年间,竟然会给互联网乃至咱们的生存带来如此深远的影响。
目前 Java 提供以下三个版本:
- Java Platform, Enterprise Edition(Java EE:Java 平台企业版);
- Java Platform, Standard Edition(Java SE:Java 平台标准版);
- Java Platform, Micro Edition(Java ME:Java 平台微型版)。
2006 年,SUN 公司在 JavaOne 大会上,发表在 GNU 通用公共协定(GPL)的构架下向开源世界奉献 Java 平台,这次凋谢的 Java 版本包含了其标准版(Standard)、微型版(Micro)以及企业版(Enterprise)。这是一个具备“历史性意义”的扭转。
2. 语言个性
Java 语言的诞生,从新定义了 面向对象编程(OOP)
。Java 语言的创立之初,就定下了以下几个指标:
- 简略易学,并且面向对象;
- 必须强壮且平安;
- 解脱平台的依赖性;
- 高性能执行;
- 必须是可解释的,多线程的,动静的。
2.1 面向对象
面向对象(Object Oriented)指的是一种编程办法。面向对象的次要思维是:围绕着咱们所操纵的“事物”(即对象)来设计软件。计算机硬件的倒退为软件技术的倒退提供了更好的土壤,为了让大型软件我的项目易于治理,升高开发和保护的老本,面向对象技术也就应运而生。为了理解面向对象技术的诞生起因,咱们上面来介绍几种比拟具备代表性的软件技术。
2.1.1 汇编语言
汇编语言是软件技术的开始,这种语言与机器语言十分靠近,并且能够很容易地转换为可执行代码。应用汇编语言的程序员,必须理解计算机的具体体系结构能力编写程序。
2.1.2 程序语言
在汇编语言之后,开发了高级语言,能够应用语言的编译器(如 gcc
)将高级程序代码转换为机器指令。这样程序员无需再深刻理解计算机硬件的体系结构。为了进步代码的可复用性并最大水平地缩小 GOTO 指令的应用,引入了 面向过程
技术。尽管简化了软件流程管制的创立和保护,然而漠视了数据的组织。调试和保护许多全局变量的程序,变成了程序员的一场噩梦。
2.1.3 面向对象语言
在面向对象的语言中,数据被抽象地封装在对象中。特定于对象中的数据只能通过该对象来进行拜访。这样,程序就成为了对象之间的一系列交互。Java 语言就是一个纯面向对象的语言。
2.2 跨平台性
咱们兴许经常听到一句口号 ——“一次编译,到处执行(write once, run anywhere.)”,这里说的就是 Java 的 跨平台性,咱们首先来看下在 c
或 c++
中,代码是如何在不同平台运行的:
在 c
或 c++
中,咱们首先要将源代码文件编译为机器代码文件,而后再去执行它。这个过程中,机器代码文件必须在为其编译的平台能力执行(这里的平台指的是 Windows、Linux、Mac OS 等),也就是说,咱们的代码如果心愿在多个平台执行,那就必须屡次编译程序。这不仅给程序员带来了繁琐的开发步骤(代码稍做变更就要从新编译整个程序),也给程序带来了更大的破绽危险。当代码曾经编译为可执行文件时,这个可执行文件不能动静更改,此时须要更改代码从新编译,以替换旧的可执行文件。
咱们来看看 Java
是如何做的吧:
Java 的思维是,将代码编译为 两头语言
,两头语言是 字节码,解释器是 Java 虚拟机(JVM
)。字节码文件能够通用,JVM 是特定于平台的。如下图所示:
每一个平台都须要一个 JVM
,这里 JVM
是实现“到处执行”的要害前提 ,所以,在 Java 中,咱们 只须要生成一个字节码文件,就能够保障咱们编写的程序在任何平台都能运行了。
2.3 标准化
在 Java
中,提供了大量的标准化库,这保障了咱们应用对立的接口对程序进行管制。
2.4 异样解决
异样解决的老形式是:让每个函数返回一个错误代码,调用者会查看其返回的内容,这样就导致了代码中到处都是错误码的校验,从而让源码变得难以浏览。
在异样解决的新形式中,函数或办法不再返回错误码,而是以抛出异样的形式来进行异样解决,在 Java 中能够应用 catch
关键字来捕捉在 try
语句块中所产生的异样。这样咱们无需频繁通过定义错误代码的形式解决异样,代码可读性大大提高。
2.5 动静类加载
在 Java 中,如果在执行阶段不须要某个类,那么这个类就不会被编译为字节码。在网络编程中,这个个性十分罕用。当咱们不晓得将执行什么代码时,程序能够从文件系统或远端服务器加载类。
2.6 主动垃圾回收机制
在惯例语言(例如 C 和 C++)中,程序员必须确保已调配的内存被开释。避免造成 内存透露 的麻烦。
内存资源或缓冲区具备特定的操作模式以获得最佳性能。一旦缓冲区中充斥了数据,就须要在不再应用其内容之后将其革除。如果程序员遗记革除其代码中的内容,则内存很容易过载。Java 应用 主动垃圾收集器 来治理对象生命周期中的内存。程序员确定何时创建对象,一旦不再应用对象,Java 运行时将负责复原内存。一旦没有了对对象的援用,则垃圾回收器将主动开释无法访问的内存。
主动垃圾回收机制,让应用 Java 编写的代码更加强壮,升高了内存透露和溢出的危险。程序员惟一须要留神的是对象创立的速度。如果应用程序创建对象的速度超过了垃圾收集器开释对象的速度,则可能导致内存相干问题。
3. Java 的版本历史
Java 的次要发行版本及其发行日期如下:
- JDK 1.0(1996 年 1 月 23 日)
- JDK 1.1(1996 年 2 月 19 日)
- J2SE 1.2(1998 年 12 月 8 日)
- J2SE 1.3(2000 年 5 月 8 日)
- J2SE 1.4(2002 年 2 月 6 日)
- J2SE 5.0(2004 年 9 月 30 日)
- Java SE 6(2006 年 12 月 11 日)
- Java SE 7(2011 年 7 月 28 日)
- Java SE 8(2014 年 3 月 18 日)
- Java SE 9(2017 年 9 月 21 日)
- Java SE 10(2018 年 3 月 20 日)
- Java SE 11(2018 年 9 月 25 日)
- Java SE 12(2019 年 3 月 19 日)
- Java SE 13(2019 年 9 月 17 日)
- Java SE 14(2020 年 3 月 17 日)
- Java SE 15(2020 年 9 月 15 日)
- Java SE 16(2021 年 3 月 16 日)
4. 名词解释
咱们将在后续具体介绍如何在不同平台上装置 Java,在装置 Java 之前,咱们须要了解两个名词,JDK 和 JRE:
- JRE:Java Runtime Environment(Java 运行时环境)
- JDK:Java Development Kit(Java 开发工具包)
以上两个名词是 Java 平台的两大重要软件,他们别离能够帮忙用户 运行 和开发 Java 程序,JDK 是 JRE 的 超集,蕴含 JRE 的所有内容,以及开发小程序和应用程序所需的工具,例如编译器和调试器。
简略来说,咱们如果想要利用 Java 语言去开发应用程序,就要在咱们的电脑上装置 JDK。本教程应用最新版本的 Java 16
。
5. 学习根底
学习本教程,最好有肯定的计算机基础知识,相熟计算机软件的下载、装置等。当然,如果你没有任何基础知识也不用放心,本教程会尽量应用通俗易懂的语言来解说知识点。
6. 小结
在大多数人看来,Java 语言曾经十分完满,然而,Java 语言并非没有缺点,Java 语言短少硬件特定的数据类型,也没有可能指向任意地址的指针或编程办法之类的性能。只管这些性能有可能被程序员误用或滥用,但不得不抵赖它们是弱小的工具。
在本节中,咱们对 Java 语言的历史以及次要个性有了一个初步的理解,小伙伴们是不是曾经急不可待,要更加深刻理解 Java 了呢?那么在下一大节,咱们将理解如何在本人的电脑上装置 Java。
微信公众号