只有少数几种编程语言对程序设计带来过根本性的影响。其中,Java的影响由于迅速和广泛而格外突出。可以毫不夸张的说,1995年Sun公司发布的Java1.0给计算机程序设计领域带来了一场变革。这场变革迅速地把Web转变了一个高度交互的环境,也给计算机语言的设计设置了一个新标准。

多年以来,Java不断地发展、演化和修订。和其他语言加入新功能的动作迟缓不同,Java一直站在计算机程序设计语言的前沿,部分原因是变革的文化,部分原因是它所面对的变化。Java已经做过或大或小的多次升级。

第一次主要的升级是1.1版,这次升级比较大,加入了很多新的库元素,修订了处理事件的方式,重新配置了1.0版本的库中的许多功能。

第二个主要的版本是Java2,它代表Java的第二代,标志着Java的“现代化”的到来。Java2第一个发布的版本号是1.2。Java2在第一次发布时使用1.2版本号看上去有些奇怪,原因在于该版本号最初是指Java库的内部版本号,后来就泛指整个版本号了。Java2被Sun公司重新包装为J2SE(Java 2 Platform Standard Edition,请大家读作J-two-SE,而不是J-2-SE),并且开始把版本号应用于该产品。

在J2SE后的下一个版本是J2SE 1.3,它是Java 2版本首次较大的升级。它增强了一些已有的功能。

之后的J2SE 1.4版本进一步增强了Java。该版本包括一些重要的新功能,如链式异常、基于通道的I/O(NIO)以及assert关键字。

在J2SE 1.4版本之后的下一个版本是J2SE 5,他是Java的第二次变革。以前的几次Java升级提供的改进虽然重要,但是是增量式的,而J2SE 5却从该语言的作用域、功能和范围等方面提供了根本性的改进。为了帮助理解J2SE 5的修改程度,下面列出了J2SE 5中的一些主要的新增功能:

●  泛型

●  自动装箱/自动拆箱

●  枚举

●  增强型for-each形式的for循环

●  可变长度实参(varargs)

●  静态导入

●  注解(annotation)

这些条目都是重要的升级,每一条都代表了Java语言的一处重要改进。其中,泛型、增强型for循环和可变长度实参引入了新的语法元素;自动装箱和自动拆箱修改了语法规则;注解增加了一种全新的编程注解方法。

这些新功能的重要性反应在使用的版本号“5”上,从版本号的变化方式看,这一版本的Java应该是1.5。由于新功能和变革如此之多,常规的版本号升级(从1.4到1.5)已经无法标识实际的变化,因此Sun决定使用版本号5,以强调发生了重要改进。因此,当前的版本叫做J2SE 5,开发工具包叫做JDK 5。但是,为了保持和以前的一致性,Sun决定使用1.5作为内部版本号,也叫做开发版本号。J2SE 5中的“5”叫做产品版本号。

J2SE 5之后发布的升级版本是Java SE 6,Sun再次决定修改Java平台的名称,把“2”从版本号中删除了。因此,Java平台现在的名称是Java SE,官方产品名称是Java Platform Standard Edition 6,对应的Java开发工具包叫做JDK 6。和J2SE 5一样,Java SE 6中的“6”是指产品的版本号,内部的开发版本号是1.6。

Java SE 6建立在J2SE 5的基础之上,做了进一步的增强和改进。Java SE 6并没有对Java语言本身添加较大的功能,而是增强了API库,添加了多个新包,改进了运行时环境。它在漫长的生命周期内经历了一些更新,添加了一些升级功能。总之,Java SE 6进一步巩固了J2SE 5建立的领先地位。在国内,J2SE 5以及Java SE 6是使用最多的版本。

Java SE 6之后发布的升级版本是Java SE 7,对应的Java开发工具包叫做JDK 7,内部版本号是1.7。Java SE 7是Oracle收购(2009年4月20日仅仅以74亿美元收购,在Sun被收购后仅仅一年James Gosling便从Oracle离职了)Sun Microsystems之后发布的第一个主版本。Java SE 7包含许多新功能,对语言和API库做了许多增强。Java SE 7添加的最重要的功能是在Project Coin中开发的那些功能。Project Coin的目的是确保把对Java语言所做的很多小改动包含到JDK 7中,其中包括:

●  使用String控制switch语句。

●  二进制整形字面值。

●  在数值字面值中使用下划线。

●  新增一种叫做try-with-resources的try语句,支持自动资源管理。

●  构造泛型实例时,通过菱形运算符使用类型推断。

●  增强了异常处理,可以使用单个catch捕获两个或更多个异常(多重捕获),并且对重新抛出的异常可以进行更好的类型检查。

可以看到,虽然Project Coin中的功能被视为小改动,但是“小”这个词实在不能体现它们所带来的好处。特别是,try-with-resources语句对大量代码的编写方式会产生深远的影响。

之后Oracle推出了Java SE 8,这也是目前国内使用的最新的版本(仅仅是少数公司,大部分公司还在使用Java SE 8之前的版本),Java SE 8对应的开发工具包是JDK 8,内部的开发版本号是1.8。JDK 8表示这是对Java语言的一次重大升级(其实这些升级应该在Java SE 7时便完成的,但是当时Sun公司被Oracle收购,延误了开发,所以在Java SE 7中没有包含这些升级),因为本次升级包含了一种意义深远的新语言功能:lambda表达式。lambda表达式的影响深远:不但改变了概念化的编程方式,而且改变了Java代码的编写方式。使用lambda表达式,可以简化并减少创建某个结构所需的源代码量。lambda表达式有助于确保Java成为用户所期望的充满活力且敏捷的语言。从JDK 8开始,通过接口还可以为指定的方法定义默认实现。总之,Java SE 8这一主要版本扩展了Java语言的功能,并且改变了Java代码的编写方式,带来的影响足够深远,在未来几年后将体现出来(注意,是未来几年后,而不是当前)。

在Java SE 8之后,Oracle公司又相继推出了Java SE 9以及Java SE 10版本,预计2018年9月份推出Java SE 11。但是Java SE 8作为一个LTS版本(长期支持版,将有三年的维护期,直到下一个LTS版本发布,按照Oracle目前的计划,下一个LTS版本是Java SE 11)依然是目前最好的选择,而Java SE 9、Java SE 10将作为功能性更新版本,维护周期只有6个月的时间。所以不建议大家使用。而且在Java SE 9中增加的新特性可能因为一些原因在Java SE 10或Java SE 11中就被移除了,所以也不建议大家学习最新版本的新特性,还是以学习稳定版本为主要目标。

IT兄弟连 Java语法教程 Java的发展历程的更多相关文章

  1. IT兄弟连 Java语法教程 Java平台的版本划分

    自从Sun公司推出Java以来,就力图使之无所不能.Java发展至今,按应用范围划分为3个版本,即Java SE.Java EE和Java ME,也就是SunOne(Open Net Environm ...

  2. IT兄弟连 Java语法教程 Java语言入门 典面试题

    1.请说明JVM.JRE和JDK是什么?它们有什么关系? JVM是Java虚拟机,Java Virtual Machine的缩写,是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实 ...

  3. IT兄弟连 Java语法教程 Java开发环境 JVM、JRE、JDK

    要想开发Java程序,就需要知道什么是JVM.JRE以及JDK.JVM是运行Java程序的核心,JRE是支持Java程序运行的环境,而JDK是Java开发的核心,下面我们分别具体介绍它们以及它们之间的 ...

  4. IT兄弟连 Java语法教程 Java语言的其他特性

    Java语言中除了非常重要的跨平台特性外,还有如下几个关键特性: ●  语法简单易学 Java语言的语法简单明了,容易掌握,而且是纯面向对象(OOP)的语言,Java语言的简单性主要体现在以下几个方面 ...

  5. IT兄弟连 Java语法教程 Java语言背景

    驱使计算机语言革新的因素有两个:程序设计技术的改进和计算环境的改变.Java也不例外.在大量继承C和C++的基础之上,Java还增加了反应当前程序设计技术状态的功能与精华.针对在线环境的蓬勃发展(In ...

  6. IT兄弟连 Java语法教程 Java开发环境 配置Java环境变量

    在安装完JDK后,我们需要配置系统的环境变量,否则在控制台中使用JDK为我们提供的工具时将出现如图12所示的错误信息. 图12  未配置环境变量时执行java命令提示的错误信息 当出现这样的提示信息时 ...

  7. IT兄弟连 Java语法教程 Java开发环境 安装JDK

    因为我们要开发Java程序,所以必须在我们的计算机中安装Sun(Oracle)公司提供给我们的JDK.目前最新版本的JDK是JDK 10,但是我们以学习JDK 8为主,所以我们要安装的版本是JDK 8 ...

  8. IT兄弟连 Java语法教程 Java语言的跨平台特性

    什么是平台 Java是可以跨平台的编程语言,那么首先我们需要知道什么是平台,通常我们把CPU与操作系统的整体称为平台. CPU大家都知道,是计算机的大脑,它既负责思维运算,又负责计算机中各种零部件的命 ...

  9. IT兄弟连 Java语法教程 Java语法基础 经典面试题

    1.Java语言中有几种基本类型?分别是什么?请详细说明每种类型的范围以及所占的空间大小? Java语言中有8中基本类型,分别是代表整形的byte.short.int和long,代表浮点型的float ...

随机推荐

  1. 简析.NET Core 以及与 .NET Framework的关系

    简析.NET Core 以及与 .NET Framework的关系 一 .NET 的 Framework 们 二 .NET Core的到来 1. Runtime 2. Unified BCL 3. W ...

  2. Android 开机动画启动过程详解

    Android 开机会出现3个画面: 1. Linux 系统启动,出现Linux小企鹅画面(reboot)(Android 1.5及以上版本已经取消加载图片): 2. Android平台启动初始化,出 ...

  3. 如何高效使用和管理Bitmap--图片缓存管理模块的设计与实现

    转载请注明 ☞ http://blog.csdn.net/leverage_1229 上周为360全景项目引入了图片缓存模块.因为是在Android4.0平台以上运作,出于惯性,都会在设计之前查阅相关 ...

  4. InstallShield 12 制作安装包

    目  录 一. 二. 三. (一) 打开project... 2 (二) project助手页面... 3 1.Application Information:程序信息... 4 2.Installa ...

  5. 【转】sublime text 3 显示空格和Tab

    因为sublime text3确实太好用了所以也用它写代码了,可是在Python3第一步把preferences.sublime-setting-Default里面的"draw_white_ ...

  6. ZooKeeper之(四)配置与命令

    4.1 配置文件 ZooKeeper安装好之后,在安装目录的conf文件夹下可以找到一个名为"zoo_sample.cfg"的文件,是ZooKeeper配置文件的模板. ZooKe ...

  7. spark2.2.1安装、pycharm连接spark配置

    一.单机版本Spark安装 Win10下安装Spark2.2.1 1. 工具准备 JDK 8u161 with NetBeans 8.2: http://www.oracle.com/technetw ...

  8. mysql5.5 五种日期

    mysql(5.5)所支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: 日期时间类型 占用空间 日期格式 最小值 最大值 零值表示  D ...

  9. 官宣 ! 52abp_Pro版本低调上线

    上线了 官宣!官宣!官宣! 重要的事情说三次. 是的,你没有看错 https://www.52abp.com/ 的官方企业模板:52abp-pro已经正式上线. 至此52abp.com的官方网站就算告 ...

  10. springboot学习(一):创建项目

    package com.glory.demo.Controller; import org.springframework.stereotype.Controller; import org.spri ...