[转]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

相关文章

乐鑫 Matter 技术体验日|快速落地 Matter 产品,引领智能家居生态新发展

随着 Matter 协议的推广和普及,智能家居行业正迎来新的发展机遇,众多厂商纷纷投身于 Matter 产品的研发与验证。然而,开发者普遍面临技术门槛高、认证流程繁琐、生产管理复杂等诸多挑战。  乐鑫信息科技 (688018.SH) 凭借深厚的研发实力与行业洞察力,推出了全面的 Matter 解决方案,包含基于乐鑫 SoC 的 Matter 硬件平台、基于开源 ESP-Matter SDK 的一

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

创新、引领、发展——SAMPE中国2024年会在京盛大开幕

绿树阴浓夏日长,在这个色彩缤纷的季节,SAMPE中国2024年会暨第十九届国际先进复合材料制品原材料、工装及工程应用展览会在中国国际展览中心(北京朝阳馆)隆重开幕。新老朋友共聚一堂,把酒话桑麻。 为期4天的国际学术会议以“先进复合材料,引领产业创新与可持续化发展”为主题,设立了34个主题分会场,其中包括了可持续化会场、国际大学生会场、中法复合材料制造技术峰会三个国际会场和女科技工作者委员会沙龙,

机器学习基础:与Python关系和未来发展

目录 初识Python Python的由来 自由软件运动 编译方式的演进 Python语言的特点 语法简单,易于理解 语法结构清晰,快速上手 丰富的第三方库 机器学习 监督学习 无监督学习 半监督学习         欢迎回到我们的神经网络与深度学习Tensorflow实战学习,本篇为人工智能学习第三篇文章。前面的文章中我们学习安装了Tensorflow-GPU,在本

关于对软件发展的看法

软件未来发展的潮流是web 所有需要联网的应用都可以放到web上来做,并且随着网速的提高和云计算的发展,在web客户端都将是很轻很轻的展示,而不需要太多的处理,更不需要安装程序(甚至在服务器端所有的程序都只有“一个”母本)。 应用在云上,存储在本地。 许多浏览器OS亦是印证。 云计算的成熟将会是web真正成为主流的分水岭。 还有很长的路要走。    Al

网易:从邮箱服务到多元化互联网业务的跨越式发展

网易,这个在中国互联网发展史上留下浓墨重彩一笔的名字,自1997年由丁磊先生创立以来,已经走过了二十余载的风雨历程。从最初的一家单纯的邮箱服务提供商,到如今涵盖游戏、电商、教育、音乐等多个领域的综合性互联网巨头,网易的成长轨迹不仅映射出中国互联网行业的蓬勃发展,也彰显了其自身不懈的创新精神和卓越的市场洞察力。 网易的起点并不显赫,却充满了创新的火花。在那个互联网刚刚起步的时代,网易邮箱凭借其

JQuery 概念、历史、发展、优势-JQuery开发教程

一、JQuery 框架简介 jQuery 是一个 轻量级 JavaScript 库。 jQuery 极大地简化了 JavaScript 编程。 jQuery 很容易学习。 jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(框架)于2006年1月由John Resig发布。jQuery设计的宗旨是“write Less,Do

双目立体视觉的发展

原文地址:双目立体视觉的发展 作者:machinevision 双目立体视觉是计算机视觉的一个重要 分支,即由不同位置的两台或者一台摄像机摄影测量学的传统设备标定法。利用至少17个参数描述 双目立体视觉是计算机视觉的一个重要分支,即由不同位置的两台或者一台摄像机摄影测量学的传统设备标 定法。利用至少17个参数描述摄像机与三维物体空间的结束关系,计算量非常大。 (2)直接线性变换性

计算机的发展简史

目录 1. 计算机的五代变化 2. 半导体存储器的发展 3. 微处理器的发展 4. 计算机的性能指标 总结         计算机的发展史是一部技术革新与应用拓展的壮丽篇章。自20世纪中叶以来,计算机经历了五代变革,每一代都带来了性能的飞跃和使用模式的变革。同时,半导体存储器和微处理器的发展为计算机技术的进步提供了强大的驱动力。本文将回顾计算机的发展历程,探讨半导体存储器

SGD,Momentum,AdaGrad,RMSProp,Adam等优化算法发展历程

各种优化算法层出不穷,看的眼花缭乱,如果不能理清楚其中他们的关系及发展历程,必然会记得很混乱及模糊        最开始做神经网络的时候大家更新参数的时候都是把所有数据计算一遍,求所以数据的平均梯度再进行参数调节,后来觉得这样太慢了,干脆就计算一条数据就调节一次,这就叫随机梯度下降了(SGD),随机两字的由来是因为每条数据可能调节的方向都不一样,下降的过程会很震荡。        这都是两个极