AI 概述
1. Java 的历史语言特性2.1 面向对象2.1.1 汇编语言2.1.2 程序语言2.1.3 面向对象语言2.2 跨平台性2.3 标准化2.4 异常处理2.5 动态类加载2.6 自动垃圾回收机制3. Java 的版本历史4. 名词解释5. 学习基础6. 小结 1. Java 的历史 1995 年 5 月 23 日,Sun Microsystems 公司宣布 Java 语言诞生, 当时使...
目录
文章目录隐藏
  1. 1. Java 的历史
  2. 语言特性
  3. 3. Java 的版本历史
  4. 4. 名词解释
  5. 5. 学习基础
  6. 6. 小结

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)。这是一个具有 “历史性意义” 的改变。

语言特性

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 是特定于平台的。如下图所示:

Java 简介

每一个平台都需要一个 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。

以上关于01. Java 简介的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 01. Java 简介

发表回复