[转]J2SE发展演变史

2024-01-14 11:18
文章标签 发展 j2se 演变史

本文主要是介绍[转]J2SE发展演变史,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

J2SE 发展演变史 (作者: HongSoft Will )(《程序员》)

1.J2SE
:怀胎

   Java 的历史可以追溯到 1991 4 月, Sun 公司的 James Gosling 领导的绿色计划 (Green Project) 开始着力发展一种分布式系统结构,使其能够在各种消费性电子产品上运行,他们使用了 C/C++/Oak 语言。由于电子产品种类繁多,运行环境各不相同,使得用这些语言进行开发的软件必须为不同的电子产品而专门设计,所以项目组疲于奔命,消费性电子产品软件环境的发展无法达到预期的目标,绿色计划也陷于停滞状态。
  直至 1994 年下半年,由于 Internet 的迅猛发展和环球信息网 WWW 的快速增长,第一个全球信息网络浏览器 Mosaic 诞生了;此时,工 业界 对适合在网络异构环境下使用的语言有一种非常急迫的需求; Games Gosling 决定改变绿色计划的发展方向,他们对 Oak 进行了小规模的改造,就这样, Java 1995 年的 3 23 诞生了! Java 的诞生标志着 互联网 时代的开始,它能够被应用在全球信息网络的平台上编写互动性及强的 Applet 程序,而 1995 年的 Applet 无疑能给人们无穷的视觉和脑力震荡。

  但没有相应的开发库而只靠 Java 语言来进行开发肯定是困难重重,所以 Sun 公司在 1996 年的 1 23 发布了 JDK1.0 来帮助开发人员的开发。 JDK 包括两大部分:运行环境和开发工具。而运行环境包括五大部分:核心 API ,集成 API ,用户界面 API ,发布技术, Java 虚拟机 (JVM) Java 能够在信息网络时代快速发展,得益于它独特的组成结构,它并不直接被编译成所在平台的机器语言然后执行,而是先被编译成字节码,然后才到装有 JVM 硬件 上运行,所以它能够跨平台运行;而且,不是一定要使用 Java 语言来写程序才能编译成 Java 字节码,我们用 C/C++/JavaScript 等语言来写程序也可以编译出 JVM 要求的字节码文件。在这个时期,人们使用最多的 Java API 无疑地就是 AWT ,因为 JDK 1.0 时只有 AWT 称得上是一组完整的 Framework ,其它 Java API 都比较偏向个别的 class

  紧跟着, Sun 公司在 1997 2 18 发布了 JDK1.1 JDK1.1 相对于旧版本最大的改进,是推出了 JIT(Just-In-Time) 编译器。传统的 JVM 收到一道字节码指令后,解释成机器码,马上执行该机器码,然后丢掉该机器码,再接收下一道字节码指令 …… 即便是以前执行过的字节码指令,依然需要重新解释成机器码才能执行。而 JIT 编译器会把常执行的部分先解释好放在内存,以后再次执行该指令时,不用再解释,直接从内存中取出机器码就可以执行了,这样提高了不少的效率。

  在 JDK1.1 时代, Java 平台分为 PersonalJava EmbeddedJava ,前者比较适用于运算资源和内存丰富的设备,而资源有限者适用于后者。这样的分类明显不符合时代发展的潮流,所以, Java 平台处处蕴藏着新的翻天覆地的革命 ……
2.J2SE1.2 :诞生

   JDK1.2 1998 12 4 的隆重发布,标志着 Java2 平台的诞生。 Java2 J2SE1.2 时代是一个大变革时代,它进行了如下的三大革命:
   * 市场推广革命
  在 Java1.0 或者 1.1 中,称 API 库为 JDK ,但为了方便市场推广, Sun 公司在 Java1.2 版以后将 JDK1.2 改名为 J2SDK ,将 Java 改名为 Java 2 。在 99 Sun 公司还将 Java2 平台分为三大块: J2SE J2EE J2ME 。这次市场推广革命顺应了网络急速发展的潮流,对 Java2 平台的发展起到了很好的催化剂的作用。

   * API 供应标准革命
  而随着供应商的不同, Java API 分为三大类:
   Java Core API :由 Sun 公司制定的基本的 API ,所有的 Java 平台都应该提供。这就是我们平常所说的 Java 核心类库。
   Java Optional API :由 Sun 公司制定的扩充 API Java 平台可以有选择地提供。比如, JFC 以前是 Sun JDK 的功能扩展,不是 Java 的公共规范。 Java2 平台则包含了 JFC 技术 , 不需要再扩展了。
特殊 API :由特殊厂商或者组织提供的 API 。比如,美国法律对出口中国的加解密算法的安全强度有一定的限制, Java 平台中不能包括一些安全强度较高的加密解密算法,所以部分其它国家的公司,如加拿大的 BouncyCastle 公司等,可以提供一些自己的安全 API

   * API 制定过程的革命
  如果你有需求不能通过遵循标准的 API 来实现 , 可以向 www.jcp.org 提出制定新的 API 的请求 , 经过审核 , 你的请求可能被通过或者驳回 ; 如果是被通过 , 则开始进入制定该 API 的程序。

   J2SE1.2 时代进行的这些革命形成的制度一直沿用到现在 , Java 技术的发展形成了深远的影响。

  除了上述的三大革命, Java2 还支持并新增了许多新特性,最受追捧的当属 Swing 库。 Swing 是轻量级 API ,它不但有各式各样先进的组件,而且连组件风格都可抽换。 Swing 出现之后,大家很快地就不太使用 AWT 了。但请不要以为 Swing 是用来取代 AWT 的,其实 Swing 是架构在 AWT 之上的, Swing 的出现只是减少程序员直接使用 AWT 的机会,而不会让 AWT 消失。 Java2 还废弃了一些 API ,最重要的莫过于 Thread 类中对 suspend(),resume() stop() 等方法的废弃。由于 JDK1.1 的集合类库中的 Vector 类和 HashTable 类都考虑了同步,在平常的使用中影响效率,所以 Java2 专门添加了对应的非同步类,并完善了集合类库。

   Java2 平台能够得到广泛的应用,还应归功于这个时期的一些优秀书籍,比如著名的 <<Core Java2>> (卷一和卷二),该书随着 JDK 版本的变化已经出到第六版。
3. J2SE1.3 :拓广

   Java2 平台推出后,得到了市场的强烈反响,所以,在 2000 5 8 推出的 J2SE1.3 J2SE1.2 的改进,主要是对各种已有 API 的加强和对新 API 的拓展。

  数字运算: 加入了 java.lang.StrictMath, 方便我们的一般的数字运算。

  新的 Timer API :相信大家对其中的 java.util.Timer java.util.TimerTask 一定不陌生。

   Collections 包:加入了一些新的 API ,方便我们的使用。

  虚拟机停止钩子: J2SE1.3 还加入了一个强大的功能,那就是虚拟机停止钩子 (Virtual Machine Shutdown Hooks) ,这个功能使得我们能够在虚拟机停止时完成我们自己的操作,比如关闭网络连接或者保存会话状态或者清除临时文件等等。

   DNS 服务:在 JNDI 接口方面,加入了一个 DNS 服务的实现。

   Jini 实现: J2SE1.3 包含了一个 Jini 实现,这使得我们可以方便地把诸如打印机、摄像机和磁盘 驱动 设备插入现有网络中,并且能自动搜索已在网上的设备可以提供的服务并享用这些服务。

   XML 支持:由于计算机网络和 XML 技术的快速发展, J2SE1.3 Optional API 中引入了 Java API for XML 包。

   HotSpot 虚拟机: J2SE1.3 引入了 HotSpot 虚拟机。在 solaris 版的 JDK1.3 中,已经不支持传统的虚拟机,而 Windows 版的 JDK1.3 同时支持传统虚拟机和 HotSpot 虚拟机。

  从上面的分析可以看出, J2SE1.3 主要是对 J2SE1.2 查漏补缺和拓展新的 API 。从应用领域方面考虑, J2SE1.3 已经涵盖了 数据库 Web 、多媒体、网络、电话、影像、加解密、图形等等大部分的信息技术领域。

  在这个时期 Java2 还有一个重要活动就是推出 SCSL(Sun 社区源代码许可 ) 许可协议。 Sun 公司开放源代码项目的 1 ”Danese Cooper 1999 年加入公司,负责 Sun (包括 Java )和开放源代码社区之间的协调工作。 Sun 一直尽可能在赢利和开放源代码之间寻求更好的平衡。

  在 J2SE1.3 时代, Java2 平台得到了充分的发展,各大应用 服务器 在这个时代渐渐成熟并被广泛采纳,而 Java2 相关的培训和书籍更是如火如荼,《 Thinking in Java 》当属不得不推荐的一本。
4. J2SE1.4 :快速

   J2SE1.4 平台的推出发生在 2002 2 13 ,由于此前在 Java 平台和 .net 平台间发生了规模浩大的孰优孰劣的论战,而论战中, Java 平台最大的缺点就是性能问题,所以 J2SE1.4 平台把性能的改善放在了最重要的位置。

   HotSpot 虚拟机: HotSpot 虚拟机能够很大程度上提高性能,所以 J2SE1.4 已经不支持传统的虚拟机。现在,启动应用程序应该通过 -client 或者 -server 选项来启动,如果你还是通过 -classic 选项来启动,会收到这样的错误提示: ”Error Classic VM no longer supported
锁机制: 由于旧版的 HotSpot 虚拟机的锁机制会导制严重的性能和功能问题, J2SE1.4 已经改写了该锁机制。

  安全 API Java Cryptography Extension(JCE),Java Secure Socket Extension(JSSE) Java Authentication and Authorization(JAAS) 这三大安全 API optional API 移到了 core API 中。这样, J2SE1.4 的安全域 (SecureRandom) 实现可以利用 操作系统 提供的安全机制,以便缩短应用程序的启动时间。同时从 optional API 移到 core API 的功能还有 XML 处理 API JDBC2.0 API

   RandomAccess 标记接口: 加入了 RandomAccess 标记接口,如果一个 List 实现了该接口,则表示它支持快速的随机访问,这样可以提高 List 访问的速度。

   LinkedHashMap 加入了 LinkedHashMap ,这是一个插入排序的 Map 实现,但它的运行速度和 HashMap 一样快。

  反射: 很多产品中都要使用反射 (Reflection) 机制,但大家知道,反射是相当耗时的,所以, J2SE1.4 中重写了 java.lang.reflect.Field java.lang.reflect.Method.invoke() java.lang.reflect.Constructor.newInstance() Class.newInstance() 等方法,使得我们利用反射也能写出高性能的应用程序。

   64 位计算: J2SE1.4 支持 64 位计算。 64 位支持使 J2SE1.4 可以使用超过几百 GB 的内存,而以前的版本仅可以使用 4G 以内的内存。内存使用的扩大可以提高程序的运行效率。

  新的 I/O API J2SE1.4 API 层面最大的变动,就是它更新了原有的 java.io 包,以及加入了一组更有效率更多功能的新的 I/O API 。旧的 I/O 处理是以串流 (stream) 的方式来存取的,以字节为单位,而新的 I/O 处理是以块 (block) 的方式来存取的。一个块可能包含了 512 字节,而磁盘的存取本就是一个块一个块来进行的,所以新的 I/O 处理方式对于底层底数据存取更自然更有效率。
  断言和日志处理: J2SE1.4 版本在 Java 语言层面上加入了断言( assert 关键字),在 API 层面上加入日志处理 API ,这些为程序的调试提供了强有力的支持

  从上面的分析可以看出, Java 2 平台在经过数年的发展后,已经比较成熟稳定, J2SE1.4 主要是对平台的性能进行较多的考虑和修改。在分布式程序方面, 1.4 版比 1.3 版的运行效率提高了一半以上;而在客户端程序方面, 1.4 版比 1.3 版的效率提高了 1/3 。当然 , 除了考虑运行效率, J2SE1.4 还有其它方面的改进,如推出了一个全新的运行 Java 应用程序的方法 Java Web Start ,该方法克服了 Java Applet 的安全性限制的问题和 Java Application 的软件发布难的问题,并结合了上面两种方法的好处,为 Java 软件客户提供了非常友好的使用体验。

   J2SE1.4 版是 J2SE 第一个参与了 Java 共同体过程 (JCP) J2SE 版本。 Borland Compaq Fujitsu SAS Symbian IBM 这样的公司,和 Sun 一起定义并发展了 J2SE 1.4 规范。在开放、良好的文档编撰与管理的过程中,形成了一个高质量的、代表了 Java 共同体的多样性的规范。 J2SE1.4 Specification Lead Doug Kramer Doug Kramer 是优秀的 Java 开发人员和著名的教育培训专家,他同时还是 J2SE1.4.2 Specification Lead J2SE1.5 JVM Specification Lead
5. J2SE5.0: 易用

  在 2004 年十月 J2SE5.0 发布的时候, SUN 公司这样解释这次版本名称不是 J2SE1.5 而是 J2SE5.0 的原因: Java 诞生至今已有 9 年时间,而从有 J2SE 算起也有 5 个年头了;在这样的背境下,将该版本号从 1.5 改为 5.0 可以更好的反映出新版的 J2SE 的成熟度、稳定性、可伸缩性、安全性。
   J2SE 的这次变更之重大和意义之深远,的确也值得我们为之把版本号变换到 J2SE5.0 。我们再看看 Sun 公司网站对 J2SE5.0 features 描述: 通过增强 Java 平台的力量,允许开发者更容易地使用, Java 编程语言的这些改进将吸引大量各种 Java 开发者 ,这是 “Java 技术发展历程的一个重要里程碑 。从这个描述我们可以看出, J2SE5.0 最大的目标是通过提供易用性而吸引各种开发者 ( 当然包括以前的 C/C++ 开发者 ) ,而它对以前版本的修改并不仅仅是 API 的升级,而且包括对 Java 语言层面的改进。

  访问环境变量: 最初的 Java 语言有一个访问环境变量的方法 System.getenv() ,但因为 Java 宣称的 ”Write Once,Run AnyWhere” 特性,所以在 JDK1.0 中去掉了这个能够访问平台专有信息的方法。在 J2SE5.0 中,它又来了,并有所扩充。由此可见 J2SE5.0 对编程方便性的重视程度。

  泛型 J2SE5.0 提供了强大的泛型机制,让程序员可以减少代码重复,这个变化应该可以吸引小部分的 C# 开发人员吧。

  增强的 for 循环 为了克服普通 for 循环的代码臃肿特点, J2SE5.0 提供了增强的 for 循环,我们现在可以这样写一个 for 循环:
public void printAll(Collection<String> coll)
{
     for(String str : coll)
{
     System.out.println(str);
}
}

  怎么样?是不是简单了很多?

  自动的装箱 / 拆箱 我们以前手工的做装箱 (Boxing)/ 拆箱 (unBoxing) 操作时,是不是很烦 ? 放心, J2SE5.0 提供了自动的装箱 / 拆箱操作,我们现在可以写如下的代码:
public void boxing(int i)
{
   ArrayList<Integer> list=new ArrayList<Integer>();
   list.add(0,i);
   System.out.println(“i
的值是 ”+list.get(0));
}
可变参数数目 J2SE5.0 开始支持 Varargs( 不固定自变量个数 ) J2SE5.0 中还加入了以前抛弃的枚举和 C 风格的格式化输出,这应该是为了吸引以前的 C 开发者吧。毕竟 , C 开发中枚举和格式化输出用的是太多了。

  并发 J2SE5.0 中加入了 Java.util.concurrent 包,并向集合框架中加入了 Queue 接口, J2SE5.0 还为各种集合提供了并发情况下的实现。

   Properties 类增强 由于 XML 的普及性应用, J2SE5.0 java.util.Properties 类加入了从 XML 文件中装载属性和把属性值存储到 XML 文件中的方法。

   Annotation 功能 J2SE5.0 提供了注解 (annotation)/ 元数据( metadata )功能,相信以后的大部分应用产品都将充分利用它的注解而实现产品的各种特性。

  其它 J2SE5.0 还在多线程(并发机制)、安全、国际化、 UI 等方面进行了大规模的变更,使得我们能够更方便地进行 Java 开发。

  其实,上面的这些变更,并不是我们程序员非要不可的内容。我们完全可以通过自己的办法来达到这些变更实现的功能。但 J2SE5.0 的目标就是让我们程序员能够更加方便地进行开发,所以,我们在基于 J2SE5.0 开发时,应该能够明显的体会到它的易用性。

6.
展望

  时至今日, J2SE 已经发展为一个覆盖面广、效率高、易用性强的技术平台,但 Java 并没有停止前进的脚步。 Mustang 版本的 J2SE 正在紧锣密鼓的开发当中,按以前的惯例,每两年会发布一个全新的 J2SE 版本,所以 Mustang 开发版对应的 J2SE6.0 发布版将在 2006 年完成。

   J2SE6.0 Specification Lead Sun 公司老资格的开发者 Mark Reinhold ,我们在 J2SE1.2 中就能看到他的影子。 Mark Reinhold 曾经是 NIO( 新的 I/O 处理 ) API Specification Lead ,现在是 Sun J2SE 架构师与总工程师。 Mark Reinhold 透露说, J2SE6.0 将更易于管理,可以给外部的管理软件提供更多信息。它可以让调试软件在程序运行的时候进行检查,而不是在运行之前,这样更容易找到问题所在。他说, J2SE6.0 将会更好地和图形用户界面集成,包括微软即将发布的 Windows 版本 Longhorn

   2005 3 23 Java 技术十周年庆典日,在这十年的发展中, Java 平台吸引了四百万开发者,在网络计算遍及全球的今天,更是有 17.5 亿台设备使用了 Java 技术。作为 Java 技术的基础, J2SE 的功绩不可掩没,我们期望 J2SE 伴随 Java 平台一路走好!

 

这篇关于[转]J2SE发展演变史的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/604974

相关文章

从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展

【科技明说 | 科技热点关注】 2024戴尔科技峰会在8月如期举行,虽然因事未能抵达现场参加,我只是观看了网上在线直播,也未能采访到DTF现场重要与会者,但是通过数十年对戴尔的跟踪与观察,我觉得2024戴尔科技峰会给业界传递了6大重要信号。不妨简单聊聊:从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展? 1)退出中国的谣言不攻自破。 之前有不良媒体宣扬戴尔将退出中国的谣言,随着2

【IT】软件行业发展的前瞻性和希望的广度

我说一下我对程序应用的一个看法就是 我其实个人不太建议自动驾驶技术的发展因为这个东西它说到底还是什么那么一点安全隐患 ,虽然我们平常考虑用同时实行各种各样的高级的自动作用, 但是自动驾驶可能是个特例,其实我个人觉得程序可以在以下方面发展 1.医学(包括诊断 治疗 手术等)因为现在也有很多的疾病是医学还没有能力去解决的 ,2.国防 有的时候因为国家安全真的非常重要的,因为我们每个人

JAVA初级掌握的J2SE知识(二)和Java核心的API

/** 这篇文章送给所有学习java的同学,请大家检验一下自己,不要自满,你们正在学习java的路上,你们要加油,蜕变是个痛苦的过程,忍受过后,才会蜕变! */ Java的核心API是非常庞大的,这给开发者来说带来了很大的方便,经常人有评论,java让程序员变傻。 但是一些内容我认为是必须掌握的,否则不可以熟练运用java,也不会使用就很难办了。 1、java.lang包下的80%以上的类

JAVA初级掌握的J2SE知识(一)

时常看到一些人说掌握了Java,但是让他们用Java做一个实际的项目可能又困难重重,在这里,笔者根据自己的一点理解斗胆提出自己的一些对掌握Java这个说法的标准,当然对于新手,也可以提供一个需要学习哪些内容的参考。另外这个标准仅限于J2SE部分,J2EE部分的内容有时间再另说。 1、语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道

系统架构的发展历程之模块化与组件化

模块化开发方法 模块化开发方法是指把一个待开发的软件分解成若干个小的而且简单的部分,采用对复杂事物分而治之的经典原则。模块化开发方法涉及的主要问题是模块设计的规则,即系统如何分解成模块。而每一模块都可独立开发与测试,最后再组装成一个完整软件。对一个规约进行分解,以得到模块系统结构的方法有数据结构设计法、功能分解法、数据流设计和面向对象的设计等。将系统分解成模块时,应该遵循以下规则: (1)最高模

《中国全屋智能行业发展现状与投资前景研究分析报告》

报告导读:本报告从国际全屋智能发展、国内全屋智能政策环境及发展、研发动态、供需情况、重点生产企业、存在的问题及对策等多方面多角度阐述了全屋智能市场的发展,并在此基础上对全屋智能的发展前景做出了科学的预测,最后对全屋智能投资潜力进行了分析。  订购链接:https://www.yxresearch.com/ 第一章全屋智能行业概念界定及发展环境剖析 第一节全屋智能行业相关概念界定 一、智能家

RNN发展(RNN/LSTM/GRU/GNMT/transformer/RWKV)

RNN到GRU参考: https://blog.csdn.net/weixin_36378508/article/details/115101779 tRANSFORMERS参考: seq2seq到attention到transformer理解 GNMT 2016年9月 谷歌,基于神经网络的翻译系统(GNMT),并宣称GNMT在多个主要语言对的翻译中将翻译误差降低了55%-85%以上, G

操作系统发展流程

各个阶段操作系统的发展反映了计算技术的演进和应用场景的变化。下面详细列出这些阶段的操作系统的特点、优点和缺点: 1. 手工操作 特点 早期计算机没有操作系统,用户通过手动输入指令控制计算机。用户直接与硬件交互,依赖打孔卡、纸带等输入输出设备。 优点 用户可以直接控制计算机硬件,灵活性高。 缺点 效率低,手动操作耗时且容易出错。无法同时处理多个任务,计算机利用率低。需要用户对硬件和操作

小琳AI课堂:大模型的发展历程:从创新到挑战

大家好,这里是小琳AI课堂。今天我们来聊聊大模型的发展历程,这是一段充满创新与挑战的故事。🚀 让我们追溯到20世纪50年代,那时计算机科学和人工智能还处于萌芽阶段。 早期探索(1950s-1970s) 早期探索是大模型发展历程中的一个关键时期,它标志着人工智能作为一门学科的诞生。这个时期,计算机科学和人工智能还处于起步阶段,科学家们充满好奇地探索如何让机器模仿人类智能。这一阶段的探索不仅奠定

2020年SEO行业发展变化和趋势分析!

一、搜索引擎算法发展轨迹 第一阶段:人工目录(1997年-2001年“雅虎早期搜索模式”); 第二阶段:文本分析(2001年-2004年“以关键词和背景颜色一样,堆积大量关键词,就会有非常好的排名; 第三阶段:链接分析(2004年-2009年“以反向链接为核心算法的阶段”),这时行业内有句话是内容为王,外链为皇; 第四阶段:智能分析(2009年-现在“以满足用户人性化需求的用户浏览行为分析