技术趣味史-Java 各个版本的特性

从 1995 年开始算起,Java 已经走过了20多个年头,也发布了十余个大版本,了解一下 Java 的不同版本的特性,以便在日常的开发中更好的使用。

《Java语言的身世》(没看的小伙伴可以去看看)中,我们已经知道 Java 是 1995 年宣布诞生的,但这个版本的 Java 更像是一个 Beta 版本,也即是测试版本。

软件开发中的版本号修饰词小知识:
alpha:内部版本
beta:测试版本
rc:正式版本
lts:长期稳定版

Java 0

1996 年 Sun 公司才发布第一个正式的 Java 版本(rc版本),JDK1.0,开发版本代号 Oak(橡树),以 Oak 命名版本代号,想必也是为了纪念 詹姆斯·高斯林 办公室外的那棵橡树吧。当时互联网也才刚刚开始,JDK 虽然只有几兆(现在 Java 已达 100 多兆),但是受限于网速下载也很慢。在这种情况下,当时仍有多家操作系统厂商使用 Java,也有上万个网页使用 Java 技术制作,这足以说明 Java 在当时的流行性。

Java 1

1997 年 Sun 公司又发布 JDK1.1(可以看作是 Java1),并召开了 JavaOne 会议,据说当时参会者人数达一万人,创当时同类会议之最,下面是这个版本新增的功能。

  • 1、重新编写了用于桌面软件开发的 AWT 库(因为上个版本的 AWT 是 Java 最弱的组件,之前的库对于不同操作系统的界面抽象太简单,各个平台并不能兼容,这也不符合 Java 承诺的 “write once,run anywhere”)。

  • 2、加入了内部类。

  • 3、支持 JavaBeans ,使得 Java 对象可以被序列化成二进制,这样传输和保存就很方便啦!(JavaBeans,Java 豆,难道是受咖啡豆的启发?)

  • 4、JDBC,让 Java 可以连数据库,不过还需要数据库开发自家的数据库驱动才可以。

  • 5、RMI 远程方法调用,本地代码调用不在本地的方法,但需要遵守相关的通信协议。

  • 6、支持不能在代码运行时修改的反射(这时的反射功能还很弱~,对反射不懂的小伙伴可以看这篇文章《Java进阶-反射》),如在代码运行时才读取文件中的配置信息,对后面代码的运行产生影响。

  • 7、一家名叫 Symantec 的公司为 Java 开发编写的即时编译器(提前编译代码,增强代码真正执行时的性能,后来很多语言都是这样做的)。

  • 8、支持国际化和Unicode编码,为 Java 的国际化打下基础。

Java 2

1998 年 Sun 公司发布 J2SE1.2(不在用 jdk 命名版本了),版本代号 Playground(这里翻译过来不是操场,而是竞技场,暗示 Java 要大干一场),次年(1999),Sun 公司一口气发布了三个版本的 Java,标准版(J2SE,后来改名为 JavaSE)、企业版(J2EE,后来改名为 JavaEE)、微型版(J2ME,后来改名为 JavaME),主要增加的新功能如下:

  • 1、strictfp 关键字,可以保证在不同平台上的浮点数计算都是一样的。

  • 2、Swing 组件,可以看作是 AWT 增强版的桌面软件开发库。

  • 3、Sun 公司自己开发的即时编译器

  • 4、Java plug-in,Java 相关的插件,如支持 Applet 程序的浏览器插件。

  • 5、Java IDL,为 Java 和其他语言互通打下基础。

  • 6、Collections 框架(这个应该熟悉了)Java 中复杂的数据类型。

Java 3

2000 年 Sun 公司发布 J2SE1.3(可以看作是 Java3),版本代号 Kestrel(美洲红隼,一种鸟),主要改变如下:

  • 1、Sun 公开的 HotSpot JVM,经典的 Java 虚拟机。JVM 绝对是 Java 语言最大的贡献,一些新型语言(如 Scala、Groovy、Kotlin 等,可以说它们都是 Java 这个大家族的一员)也是基于 JVM 平台的。

  • 2、为遵循 CORVA 标准而修改了 RMI(大家都按标准来,以后也好学习和使用)。

  • 3、Java Platform Debugger Architecture,用于 Java 调式的平台。

  • 4、JavaSound API,编写音频处理的函数库。

  • 5、Synthetic proxy,Java 代理的基础(对代理不懂的小伙伴可以看这篇文章《Java进阶-动态代理》)。

Java 4

Java语言的相关组织和规范(其他语言也有类似的组织):
JCP:(Java Community Process)由世界上各个为 Java 发展操心的人士组成的社区,参与定义 Java 新特性和新版本制定标准的组织(作为唯一的中国代表阿里巴巴就是 JCP 的执行委员之一,阿里的 Java,腾讯的 C++ 都不是吹的)。
JSR:(Java Specification Requests)Java 语言规范请求文档,你可以对 Java 提出新的要求,然后 Java 相关的组织投票决定是否通过,通过后就将这个要求写入 JSR 中,并且最终给出一个开源的实现。
JEP:(Java Enhancement Proposal),Java 增强建议,收集大家对于 JDK 的建议,起草增强 Java 哪些功能的方案,为 JDK 新版本发布及相关工作指定路线。

2002 年 Sun 公司发布了在 JCP(Java Community Process) 的标准下开发的J2SE1.4(可以看作是 Java4),版本代号 Merlin(灰背隼,也是一种鸟),这个版本可以说是 Java 走向成熟的标志,主要的新特性如下:

  • 1、支持正则表达式

  • 2、asset 关键字,写测试代码用。

  • 3、异常链,低级异常包装后再抛出,也方便开发人员调试。

  • 4、支持网络 IPV6 标准。

  • 5、NIO,非阻塞的 IO,优化 Java 的 IO 读取。

  • 6、日志 API。

  • 7、XML 解析器和 XSLT 转换器

  • 8、集成安全和加密扩展组件(JCE, JSSE, JAAS)。

  • 9、Java Web Start 技术,直接从浏览器中启动 Java 平台(感觉有点吊~)。

  • 10、Preference API,在 java.util.prefs 包下(软件设置中的 preference 选项,大家肯定都见过,中文翻译过来就是首选项,用户自定义的软件设置会被保存,这个 API 就是干这个事的)。

Java 5

2004 年 Sun 公司发布 J2SE5(没错,Sun 公司又改名字了),版本代号 Tiger,这个版本的 Java 语言新功能如下:

  • 1、泛型

  • 2、Metadata,元数据,描述数据的数据。

  • 3、自动装箱和拆箱,也就是基本数据类型(如 int)和它的包装类型(如 Integer)自动帮你转换(其实背后是相关的方法帮你做了转换工作)。

  • 4、枚举

  • 5、可变参数,一个函数可以传入数量不固定的参数值。

  • 6、增强版的 for 循环

  • 7、改进了 Java 的内存模型,提供了 java.util.concurrent 并发包。

Java 6

2006 年 Sun 公司发布 JavaSE6(不要抱怨又改名字了,因为马上就要见不到 Sun 公司了),版本代号 Mustang(野马),也是个经典版本,直到现在也有很多人在(讲个笑话,现在 Java8 的使用者,绝大多数都是用着 Java8 写着 Java 6 的代码,其实我也是,逃~),这个版本的 Java 主 要改变如下:

  • 1、提供动态语言支持。

  • 2、提供编译 API,即 Java 程序可以调用 Java 编译器的 API。

  • 3、Swing 库的一些改进

  • 4、JVM 的优化

  • 5、微型 HTTP 服务器 API 等。

这个版本的 Java 更多是对之前版本功能的优化,增强了用户的可用性和修复了一些漏洞,所以直到现在也有很多项目在使用(给项目用的Java版本升个级可能会有意想不到的的问题,所以保持原样就好了,运维大哥要溜了溜了~)。

Java 7

20011 年,这时候 Oracle 已经把 Sun 公司收购了(2009 年后 Java 就是 Oracle 的人了),Oracle 发布 JavaSE7,新增的功能如下:

1、放宽 switch 的使用,我们可以在 switch 中使用字符串啦,而在这个版本之前,只能使用字符和数字。

2、try-resource-with 语句,帮助我们自动化管理资源,如打开文件,对文件操作结束后,JVM 可以自动帮我们关闭文件资源,当然前提是你要用 try-resource-with 语句。

3、加入了类型推断功能,比如你之前版本使用泛型类型时这样写 ArrayList<User> userList= new ArrayList<User>();,这个版本只需要这样写 ArrayList<User> userList= new ArrayList<>();,也即是后面一个尖括号内的类型,JVM 帮我们自动类型判断补全了。

4、简化了可变参数的使用

5、支持二进制整数,在硬件开发中,二进制数更常用,方便人查看。

6、支持带下划线的数值,如 int a = 100000000;,0 太多不便于人阅读,这个版本支持这样写 int a = 100_000_000,这样就对数值一目了然了吧。

7、异常处理支持多个 catch 语句

8、NIO 库的一些改进,增加多重文件的支持、文件原始数据和符号链接。

9、其他(更多是进一步的优化)。。。

Java 8

2014 年,JavaSE8 发布,这个版本包含了之前本想在 JavaSE7 加入的,但由于时间仓促延迟发布的一些功能。

1、Lambda 表达式,简化代码(这个后面会专门写一篇文章介绍)。

2、注解功能的增强

3、新的时间和日期 API,在这之前 Java 的时间和日期库被投票为最难用的 API 之一,所以这个版本就改进了。

4、JavaFX,一种用在桌面开发领域的技术(也是和其他公司竞争,这个让我们拭目以待吧)。

5、静态链接 JNI 程序库(这个做安卓开发的同学应该熟悉)。

6、其他。。。

Java 9

2017 年,Oracle 发布 JavaSE9(这个版本的功能早在 2011 年的 JavaOne 大会中就讨论了),这个版本目前也还在更新中,一些新功能就简要介绍一下。

1、模块化(这点也是向其他语言学习的,如 JavaScript)。

2、Java Shell(这点也是向其他语言学习的,如 Python),在这之前总有人说 Java 太麻烦,写个 Hello Word 都要新建个类,有时候测试个几行的代码都不方便,Java Shell 推出后,Java 开发者不用眼馋其他语言的 Shell 了,你可以向下面图中这样写 Java 的 Hello Word 了(我的电脑上装了 Java 6、7、8、9、10 ,准备集齐七个版本召唤 Java 神龙,txtx~)。

3、即时编译功能的增强

4、XML Catalogs ,XML 文件自动校验。

5、一些还在开发路上的功能。。。

JavaShell.png

至于 Java10 和 Java11 就不在这里说了,毕竟 Java9 还没开发完呢(偷个懒~)。

从上面 Java 的版本发展,可以看到 Java 逐渐成长的过程,Java 也在向其他语言学习。直到现在 Java 也仍然具有很强的生命力,那些鼓吹 Java 已死的人肯定是有别有用心(这里就不点名某些培训机构了),还有一些担心未来 Java 会收费的,要知道 JDK 可不止 Oracle 一家的,开源的 OpenJDK (Oracle 的 JDK 开发者都亲口说 OpenJDK 的代码基本上就是 Oracle JDK 的源码)和其他厂家免费的 JDK 都可以用,所以这点大可不必担心,Java 的未来还是一片光明的。

套用 《满城尽是黄金甲》 中周润发对周杰伦说的一句话,我 Java 给你的才是你的,我 Java 不给你,你不能抢

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容

  • 姓名:周君会 学号:17011210526 转载自: http://www.jianshu.com/p/...
    lotus儿阅读 1,934评论 1 9
  • 早晨,捧着两束花站在市立医院南院区的门口,等待堵在寨子红绿灯的车,主干道的马路牙子上,赶上上班的人流穿梭,赶上南北...
    smile丝唛小主阅读 385评论 0 0
  • 第七条命 你得交给各种检查 当老师,永远有应付不完的检查。 检查分两部分,一部分是学校内部的检查:备课笔记检查、教...
    叶小秋123阅读 289评论 1 6