Java的起源与发展历程

发表时间: 2023-11-28 15:02

编者按

小伙伴们是不是经常有这样那样的疑惑:

  • 什么是Java?
  • 我如何自学Java?
  • 零基础小白能学吗?

大家心中的疑惑会随着我们的系列文章得到答案!从本讲开始我们将发系列文章全面讲述Java,职创未来技术小编帮助大家从小白逐步成为合格的Java工程师。

本讲提要

  1. Java概述
  2. Java发展史
  3. Java SE简介
  4. Java主要特征
  5. 总结

Java概述

SUN公司的James Gosling(詹姆斯高斯林)及其领导的团队于1991年,耗时18个月,研发出了一款全新的编程语言Oak(橡树)。Oak语言是Java的前身,SUN公司最初的设计动机是为了使Oak语言成为平台独立语言,并期望该语言应用于面向消费电子类产品;可是,事与愿违,糟糕的市场表现使得Oak语言难以得到有效推广。

互联网在20世纪90年代后得到快速发展,SUN公司看到了Oak语言在互联网上巨大的应用价值;SUN公司在1995年5月将Oak语言更名为Java语言,重新推向市场。随着互联网的发展及应用,目前,Java是几乎所有类型的网络应用程序的基础,也是开发和提交嵌入式和移动应用程序、游戏、基于web的内容和企业软件的全球标准。另外,全球有超过900万的Java开发者。根据Oracle公司(收购了SUN公司)的最新的统计数据显示,从笔记电脑到数据中心,从游戏控制到科学超级计算机,从手机到互联网,Java几乎无处不在,包括以下方面:

  • 97%的企业桌面运行Java
  • 美国有89%的桌面(或者计算机)运行Java
  • 全球有超过900万的Java开发人员
  • Java是开发人员的头号选择
  • 排名第一的部署平台
  • 超过30亿部移动电话运行Java
  • 100%的蓝光播放器附带了Java
  • 超过50亿张Java卡在使用
  • 1.25亿台TV设备运行Java
  • 全球前5的原始设备制造商都提供了Java ME

目前,Java分为三个体系,包括了:

  • JavaSE(Java2 Platform Standard Edition),Java平台标准版,适用于桌面级应用程序的开发。
  • JavaEE(Java2 Platform Enterprise Edition),Java平台企业版,适用于服务器应用程序及服务的开发。
  • JavaME(Java 2 Platform Micro Edition),Java平台微型版,适用于小型设备和智能卡应用程序的开发。

另外,JavaSE是Java的基础和核心,也是JavaME和JavaEE编程的基础。历史上,JavaSE称为J2SE,JavaEE称为J2EE, JavaME称为J2ME;SUN公司在2005年6月的JavaOne大会上发布了Java SE6。同时,SUN公司对Java的各种版本进行了更名,取消了原有命名中的数字“2”,因此,J2SE更名为JavaSE,J2EE更名为JavaEE,J2ME更名为JavaME。

Java发展史

本章节从Java语言诞生开始,按照时间脉络梳理Java发展历史及重要里程碑事件:

  • 1995年5月23日,SUN公司正式向市场推出Java语言
  • 1996年1月,SUN公司推出Java JDK1.0版本
  • 1996年4月,世界上十位主流操作系统供应商宣布将在其产品中集成Java技术
  • 1997年2月18日,SUN公司发布Java JDK1.1版本
  • 1997年4月2日,SUN公司举办JavaOne大会,参会人员超过了万人,创造当年全世界最大规模会议的世界纪录
  • 1997年9月,JavaDeveloperConnection社区会员人员超过了十万人
  • 1998年2月,Java JDK1.1版本在全世界的下载量超过了两百万次
  • 1998年12月8日,SUN公司发布面向服务端软件及服务开发的J2EE版本
  • 1999年6月,SUN公司发布了三个版本,即J2SE,J2EE和J2ME
  • 2000年5月,SUN公司先后发布了Java JDK1.3和JDK1.4版本
  • 2004年9月30,SUN公司发布了具有里程碑意义的Java JDK1.5版本,为了彰显该版本的重要性,公司将其更名为JavaSE 5.0
  • 2005年6月,SUN公司在JavaOne大会上发布了JavaSE 6.0版本,同时,对Jav各个版本进行更名,取消了命名中的数字“2”,J2SE更名为JavaSE,J2EE更名为JavaEE,J2ME更名为JavaME
  • 2006年12月,SUN公司发布了JRE 6.0版本
  • 2009年4月20日,Oracle(甲骨文)公司宣布,以七十四亿美元的价格收购了SUN公司,并获得Java的所有权
  • 2011年7月28日,Oracle公司发布了Java 7.0版本
  • 2014年3月18日,Oracle公司发布了JavaSE 8版本
  • 2017年9月21日,Oracle公司发布了JavaSE 9版本
  • 2018年3月21日,Oracle公司发布了JavaSE 10版本
  • 2018年9月25日,Oracle公司发布了JavaSE 11版本
  • 2019年3月20日,Oracle公司发布了JavaSE 12版本
  • 2019年9月17日,Oracle公司发布了JavaSE 13版本
  • 2020年3月17日,Oracle公司发布了JavaSE 14版本
  • 2020年9月15日,Oracle公司发布了JavaSE 15版本
  • 2021年3月16日,Oracle公司发布了JavaSE 16版本
  • 2021年9月14日,Oracle公司发布了JavaSE 17版本
  • 2022年3月22日,Oracle公司发布了JavaSE 18版本
  • 2022年9月20日,Oracle公司发布了JavaSE 19版本

Java历史上发布的版本纪录可以查询Oracle的Java JDK发布记录,链接:
https://www.oracle.com/java/technologies/javase/jdk-relnotes-index.html。

Java SE简介

Java Platform Standard Edtion,简称Java SE,它包括了两个部分组成:

  • Java Develop Kit,简称JDK。
  • Java Runtime Environment,简称JRE。

Java SE平台架构如图1-1所示:


JDK

JDK是Java语言的软件开发包,它是Java开发的核心,包括了Java语言、Java工具、Java运行环境;没有JDK的话,无法编译Java源代码。

JDK的基础组件包括了以下部分:

  • javac:Java编辑器,功能是将源代码转换成字节码
  • jar:Java打包工具,功能是将相关的类文件打包成一个文件
  • javadoc:Java文档生成器,功能是从源代码注释中提取文档
  • jdb:Java debugger,也就是Java的调试工具,功能是调试、查错Java应用程序
  • java:功能是运行编译后的java程序(.class后缀的)
  • appletviewer:Java程序浏览器,功能是执行HTML文件上的Java小程序
  • Javah:功能是产生可以调用Java过程的C语言过程,或者建立能被Java程序调用的C语言过程的头文件
  • Javap:Java反汇编器,功能是显示编译类文件中的可访问工功能和数据,同时,显示字节码含义
  • Jconsole:Java控制台,功能对Java进行系统调试和监控

JRE

Java Runtime Environment,简称JRE,可以实现在操作系统上运行Java应用程序;JRE包括两部分:

  • Java Runtime Environment,可以运行、测试和传输Java应用程序的Java平台
  • Java Plug-in,Applet和Java Web Start(简称JWS),可以使得在浏览器中运行Java应用程序

JRE包括了Java虚拟机、Java核心类库及支持头文件。目前,JRE自带的基础类库主要是JRE/lib/rt.jar,它包括了Java SE的所有类库。

Java主要特性

  • 语言简单

Java语言起源于C和C++语言,但是丢弃了C++语言中比较晦涩、难以让人理解的许多特性;另外,Java语言放弃了C和C++语言中指针,保留了引用。同时,Java支持自动分配和回收内存空间的机制,程序员在开发时不必自行管理程序内存空间。因此,Java语言让大多数程序员轻松上手。

  • 面向对象的语言

Java是一种纯面向对象的语言,它提供了类、接口和继承等诸多面向对象的特性,同时,全面支持动态绑定的过程。为了便于理解和使用,Java语言只支持类之间的单向继承,而接口之间却支持多继承方式;另外,Java语言通过关键之implements支持类与接口之间的实现机制。

  • 健壮性的语言

Java 的强类型机制、异常处理、垃圾的自动收集等是 Java 程序健壮性的重要保证。对指针的丢弃是 Java 的明智选择。Java 的安全检查机制使得 Java 更具健壮性。

  • 安全性的语言

Java通常被用在网络环境中,为此,Java 提供了一个安全机制以防恶意代码的攻击。除了Java 语言具有的许多安全特性以外,Java 对通过网络下载的类具有一个安全防范机制(类 ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类 SecurityManager)让 Java 应用设置安全哨兵。

  • 体系结构中立的语言

Java 程序(后缀为 java 的文件)在 Java 平台上被编译为体系结构中立的字节码格式(后缀为 class 的文件),然后可以在实现这个 Java 平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。

  • 可移植的语言

这种可移植性来源于体系结构中立性,另外,Java 还严格规定了各个基本数据类型的长度。Java 系统本身也具有很强的可移植性,Java 编译器基于Java 实现的,Java 的运行环境使用ANSI C 实现的。

  • 解释性的语言

Java 程序在 Java 平台上被编译为字节码格式,然后可以在实现这个 Java 平台的任何系统中运行。在运行时,Java 平台中的 Java 解释器对这些字节码进行解释执行,执行过程中需要的类在连接阶段被载入到运行环境中。

  • 高性能的语言

与那些解释型的高级脚本语言相比,Java 的确是高性能的。事实上,Java 的运行速度随着 JIT(Just-In-Time)编译器技术的发展越来越接近于 C++。

  • 全面支持多线程

在 Java 语言中,线程是一种特殊的对象,它必须由 Thread 类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为 Thread(Runnable) 构造子类,将一个实现了 Runnable 接口的对象包装成一个线程,其二,从 Thread 类派生出子类并重写 run 方法,使用该子类创建的对象即为线程。值得注意的是 Thread 类已经实现了 Runnable 接口,因此,任何一个线程均有它的 run 方法,而 run 方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java 语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为 synchronized)。

动态的语言

Java 语言的设计目标之一是适应于动态变化的环境。Java 程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java 中的类有一个运行时刻的表示,能进行运行时刻的类型检查。

总结

本讲是Java基础课程1讲,重点了解了一下什么是Java语言及其发展历史、特点等。从第2讲开始,我们正式开启Java编程之旅!


零基础学Java,就来武汉职创未来!

职创未来,创造未来,成就未来!

加关注,不迷路!

更多请访问:www.whccf.cn