J2SE:怀胎
Java的历史可以追溯到1991年4月,Sun公司的James Gosling领导的绿色计划(Green Project)开始着力发展一种分布式系统结构,使其能够在各种消费性电子产品上运行,他们使用了C/C++/Oak语言。由于多种原因,绿色计划逐渐陷于停滞状态。
直至 1994年下半年,由于Internet的迅猛发展和环球信息网的快速增长,第一个全球信息网络浏览器Mosaic诞生了;此时,工业界对适合在网络异构环境下使用的语言有一种非常急迫的需求;Games Gosling决定改变绿色计划的发展方向,他们对Oak进行了小规模的改造,就这样,Java在1995年的3月23日诞生了!Java的诞生标志着互联网时代的开始,它能够被应用在全球信息网络的平台上编写互动性及强的Applet程序,而1995年的Applet无疑能给人们无穷的视觉和脑力震荡。
但没有相应的开发库而只靠Java语言来进行开发肯定是困难重重,所以Sun公司在1996年的1月23日发布了JDK 1.0来帮助开发人员的开发。JDK包括两大部分:运行环境和开发工具。紧跟着,Sun公司在1997年2月18日发布了JDK 1.1。JDK1.1相对于旧版本最大的改进,是推出了JIT(Just-In-Time)编译器,另外一个改进是AWT 1.1。
在JDK 1.1时代,Java平台分为PersonalJava与EmbeddedJava,前者比较适用于运算资源和内存丰富的设备,而资源有限者适用于后者。这样的分类明显不符合时代发展的潮流,所以,Java平台处处蕴藏着新的翻天覆地的革命……
J2SE1.2:诞生
JDK 1.2在1998年12月4日的隆重发布,标志着Java2平台的诞生。Java 2的J2SE 1.2时代是一个大变革时代,它进行了如下的三大革命:
● 市场推广革命
Sun公司在Java 1.2版以后将JDK 1.2改名为J2SDK,将Java改名为Java 2。在1999年Sun公司还将Java 2平台分为三大块:J2SE,J2EE,J2ME。这次市场推广革命顺应了网络急速发展的潮流,对Java 2平台的发展起到了很好的催化剂的作用。
● API供应标准革命
而随着供应商的不同,Java的API分为三大类:
Java Core API:由Sun公司制定的基本的API,所有的Java平台都应该提供。
Java Optional API:由Sun公司制定的扩充API,Java平台可以有选择地提供。
特殊API:由特殊厂商或者组织提供的API。
● API制定过程的革命
如果你有需求不能通过遵循标准的API来实现,可以向JCP提出制定新的API的请求,经过审核,你的请求可能被通过或者驳回;如果是被通过,则开始进入制定该API的程序。
J2SE 1.2时代进行的这些革命形成的制度一直沿用到现在,对Java技术的发展形成了深远的影响。
除了上述的三大革命,Java 2还支持并新增了许多新特性,最受追捧的当属Swing库。Swing是轻量级的API,它不但有各式各样先进的组件,而且连组件风格都可抽换。Swing出现之后,大家很快地就不太使用AWT了。Java 2还废弃了一些API,最重要的莫过于Thread类中对suspend(),resume()和stop()等方法的废弃。由于JDK 1.1的集合类库中的Vector类和HashTable类都考虑了同步,在平常的使用中影响效率,所以Java 2专门添加了对应的非同步类,并完善了集合类库。
J2SE1.3:拓广
Java 2平台推出后,得到了市场的强烈反响,所以,在2000年5月8日推出的J2SE 1.3对J2SE 1.2的改进,主要是对各种已有API的加强和对新API的拓展。
数字运算:加入了java.lang.StrictMath,方便我们的一般的数字运算。
新的Timer API:相信大家对其中的java.util.Timer和java.util.TimerTask一定不陌生。
Collections包:加入了一些新的API,方便我们的使用。
虚拟机停止钩子:J2SE 1.3还加入了一个强大的功能,那就是虚拟机停止钩子(Virtual Machine Shutdown Hooks),这个功能使得我们能够在虚拟机停止时完成我们自己的操作,比如关闭网络连接或者保存会话状态或者清除临时文件等等。
DNS服务:在JNDI接口方面,加入了一个DNS服务的实现。
Jini实现:J2SE 1.3包含了一个Jini实现,这使得我们可以方便地把诸如打印机、摄像机和磁盘驱动设备插入现有网络中,并且能自动搜索已在网上的设备可以提供的服务并享用这些服务。
XML支持:由于计算机网络和XML技术的快速发展, J2SE 1.3在Optional API中引入了Java API for XML包。
HotSpot虚拟机:J2SE 1.3引入了HotSpot虚拟机。在Solaris版的JDK 1.3中,已经不支持传统的虚拟机,而Windows版的JDK 1.3同时支持传统虚拟机和HotSpot虚拟机。
从上面的分析可以看出,J2SE 1.3主要是对J2SE 1.2查漏补缺和拓展新的API。从应用领域方面考虑,J2SE 1.3已经涵盖了数据库、WEB、多媒体、网络、电话、影像、加解密、图形等等大部分的信息技术领域。
在这个时期Java 2还有一个重要活动就是推出SCSL(Sun社区源代码许可)许可协议。Sun公司开放源代码项目的“女1号”Danese Cooper在1999年加入公司,负责Sun(包括Java)和开放源代码社区之间的协调工作。Sun一直尽可能在赢利和开放源代码之间寻求更好的平衡。
Java的大行其道引起了Microsoft的警惕并直接导致了.Net的产生,这同时也宣布了Java作为独一无二的Internet平台地位的结束。这两个对手在较量中相互学习,现在在技术架构上的目标上已趋相同。
J2SE 1.4:快速
J2SE 1.4平台的推出发生在2002年2月13日,由于此前在Java平台和.NET平台间发生了规模浩大的孰优孰劣的论战,而论战中,Java平台最大的缺点就是性能问题,所以J2SE 1.4平台把性能的改善放在了最重要的位置。
HotSpot虚拟机:HotSpot虚拟机能够很大程度上提高性能,所以J2SE 1.4已经不支持传统的虚拟机。现在,启动应用程序应该通过-client或者-server选项来启动。
锁机制:由于旧版的HotSpot虚拟机的锁机制会导制严重的性能和功能问题,J2SE 1.4已经改写了该锁机制。
安全API:JCE、JSSE和JAAS这三大安全API从optional API移到了core API中。这样,J2SE 1.4的安全域(SecureRandom)实现可以利用操作系统提供的安全机制,以便缩短应用程序的启动时间。
RandomAccess标记接口:加入了RandomAccess标记接口,如果一个List实现了该接口,则表示它支持快速的随机访问,这样可以提高List访问的速度。
LinkedHashMap:加入了LinkedHashMap,这是一个插入排序的Map实现,但它的运行速度和HashMap一样快。
反射:很多产品中都要使用反射(Reflection)机制,但大家知道,反射是相当耗时的,所以,J2SE 1.4中重写了java.lang.reflect.Field、java.lang.reflect.Method.invoke()、java.lang.reflect.Constructor.newInstance()和Class.newInstance()等方法,使得我们利用反射也能写出高性能的应用程序。
64位计算:J2SE 1.4支持64位计算。
新的I/O API:J2SE 1.4在API层面最大的变动,就是它更新了原有的java.io包,以及加入了一组更有效率更多功能的New I/O API。
断言和日志处理:J2SE 1.4版本在Java语言层面上加入了断言(assert关键字),在API层面上加入日志处理API,这些为程序的调试提供了强有力的支持。
从上面的分析可以看出,Java 2平台在经过数年的发展后,已经比较成熟稳定,J2SE 1.4主要是对平台的性能进行较多的考虑和修改。在分布式程序方面,1.4版比1.3版的运行效率提高了一半以上;而在客户端程序方面,1.4版比1.3版的效率提高了1/3。
J2SE 1.4版是J2SE第一个参与了 Java共同体过程(JCP)的J2SE版本。 像Borland、Compaq、Fujitsu、 SAS、 Symbian、 IBM这样的公司,和Sun一起定义并发展了J2SE 1.4规范。在开放、良好的文档编撰与管理的过程中,形成了一个高质量的、代表了Java共同体的多样性的规范。
J2SE5.0:易用
在2004年十月J2SE 5.0发布的时候,Sun公司这样解释这次版本名称不是J2SE 1.5而是J2SE 5.0的原因:“从Java诞生至今已有9年时间,而从有J2SE算起也有5个年头了;在这样的背境下,将该版本号从1.5改为5.0可以更好的反映出新版的J2SE的成熟度、稳定性、可伸缩性、安全性。”
J2SE的这次变更之重大和意义之深远,的确也值得我们为之把版本号变换到J2SE 5.0。我们再看看Sun公司网站对J2SE 5.0的features描述:“通过增强Java平台的力量,允许开发者更容易地使用,Java编程语言的这些改进将吸引大量各种Java开发者”,这是“Java技术发展历程的一个重要里程碑” 。从这个描述我们可以看出,J2SE 5.0最大的目标是通过提供易用性而吸引各种开发者(当然包括以前的C/C++开发者) ,而它对以前版本的修改并不仅仅是API的升级,而且包括对Java语言层面的改进,被誉为是”自Java问世以来的最大一次语言标准变化”。
访问环境变量
最初的Java语言有一个访问环境变量的方法System.getenv(),但因为Java宣称的”Write Once,Run AnyWhere”特性,所以在JDK 1.0中去掉了这个能够访问平台专有信息的方法。在J2SE 5.0中,它又来了,并有所扩充。由此可见J2SE 5.0对编程方便性的重视程度。
泛型
J2SE 5.0提供了强大的泛型机制,让程序员可以减少代码重复,这个变化应该可以吸引小部分的C#开发人员吧。
增强的for循环:为了克服普通for循环的代码臃肿特点,J2SE 5.0提供了增强的for循环,我们现在可以这样写一个for循环:
public void printAll(Collection coll)
{
for(String str : coll)
{
System.out.println(str);
}
}
怎么样?是不是简单了很多?
自动的装箱/拆箱
可变参数数目J2SE 5.0开始支持Varargs(不固定自变量个数),J2SE 5.0中还加入了以前抛弃的枚举和C风格的格式化输出,这应该是为了吸引以前的C开发者吧。毕竟,在C开发中枚举和格式化输出用的是太多了。
并发
J2SE 5.0中加入了java.util.concurrent包,并向集合框架中加入了Queue接口,J2SE 5.0还为各种集合提供了并发情况下的实现。
Properties类增强
由于XML的普及性应用,J2SE 5.0为java.util.Properties类加入了从XML文件中装载属性和把属性值存储到XML文件中的方法。
Annotation功能
J2SE 5.0提供了注解(annotation)/元数据(metadata)功能,相信以后的大部分应用产品都将充分利用它的注解而实现产品的各种特性。
其它J2SE 5.0还在多线程(并发机制)、安全、国际化、UI等方面进行了大规模的变更,使得我们能够更方便地进行Java开发。
其实,上面的这些变更,并不是我们程序员非要不可的内容。我们完全可以通过自己的办法来达到这些变更实现的功能。但J2SE 5.0的目标就是让我们程序员能够更加方便地进行开发,所以,我们在基于J2SE 5.0开发时,应该能够明显的体会到它的易用性。
展望
时至今日,J2SE已经发展为一个覆盖面广、效率高、易用性强的技术平台(见如下的J2SE API体系结构图),但Java并没有停止前进的脚步。Mustang版本的J2SE正在紧锣密鼓的开发当中,按以前的惯例,每两年会发布一个全新的J2SE版本,所以Mustang开发版对应的J2SE 6.0发布版将在2006年完成。
2005年5月23日是Java技术十周年庆典日,在这十年的发展中,Java平台吸引了四百万开发者,在网络计算遍及全球的今天,更是有17.5亿台设备使用了Java技术。作为Java技术的基础,J2SE的功绩不可掩没,我们期望J2SE伴随Java平台一路走好!
分享到:
相关推荐
- 计算机语言经历了从机器语言、汇编语言到高级语言的演变,其中,Java 作为一种跨平台的纯面向对象语言,在第三代语言的基础上发展而来,具有里程碑式的意义。 - Java 由 Sun Microsystems 在1995年发布,最初为 ...
### Java的起源与发展 #### 1. Java的背景与重要性 Java作为一种现代编程语言,其发展历程和背景具有重要意义。本书《J2SE5参考大全》开篇即介绍了Java的起源,强调了Java如何成为一门重要的编程语言。通过回顾...
2. **Java的发展史与体系** 自JDK 1.0发布以来,Java经历了一系列版本迭代,包括JDK 1.2(更名为Java 2),直至现在的JDK 8、JDK 11等。Java体系分为J2SE(标准版)、J2ME(微型版)和J2EE(企业版),分别对应桌面...
然而,由于现代浏览器逐渐弃用Java插件,applets的使用已经减少,但理解其工作原理对于了解Web应用程序的历史和演变是有益的。 **五、Javadoc与CHM帮助文件** Javadoc是Java的官方文档生成工具,用于创建API文档。...
如今,Java已成为全球最受欢迎的编程语言之一,广泛应用于云计算、大数据、物联网等多个领域,其发展史是一部技术创新与市场需求相互作用的历史。 总之,Java的发展历程是一个不断进化、适应新技术和市场需求的过程...
Java语言发展史是一个深入探讨Java编程语言从诞生到如今演进历程的主题。Java,由James Gosling在1995年在Sun Microsystems公司领导开发,最初被设计为一种嵌入式设备上的编程语言,但其跨平台、面向对象的特性使其...
总之,Java从1995年诞生至今,经历了从简单的Applet编程到涵盖广泛的企业级应用的演变。其稳定性和跨平台性使其成为全球最广泛使用的编程语言之一,伴随着技术的进步,Java的未来仍然充满无限可能。
Java,一种广泛使用的编程语言,自1995年发布以来,经历了许多重大的演变和改进。这个名为“java发展历程2”的压缩包文件,很显然旨在揭示Java从诞生到现在的关键历程和重要变革。让我们一起探索Java语言的发展脉络...
为了回答这些问题并达成我们的目标,即全面理解Java的设计初衷及其多年来的演变,我们需从其起源讲起。 #### Java的历史 ##### Java的开端 Java最初的构想源于1991年,当时由詹姆斯·高斯林(James Gosling)领导...
JavaSE_柴林燕_阶段11主要涵盖了Java语言的基础知识和历史发展,以及Java语言在业界的地位。Java作为一种广泛使用的编程语言,尤其在应用软件领域,与.NET平台相抗衡。TIOBE指数反映了Java的流行程度,是衡量开发者...
2004年9月30日18:00PM,代号为“Tiger”,J2SE1.5发布,成为Java语言发展史上的又一里程碑。 Java的发展继续加速,2005年6月,JavaOne大会召开,SUN公司公开Java SE 6;2006年12月,SUN公司发布JRE6.0,代号为...
这一版本是Java发展史上的一个重要里程碑,因为它首次将Java划分为J2SE、J2EE和J2ME三个不同的技术领域。同年,SUN公司也将Java更名为Java 2,进一步推动了Java在国内的应用和发展。 - **2000年**:发布JDK 1.3。 - ...
Java的发展历程可以通过其版本演变看出。从JDK 1.1.4到Java SE 8,每个版本都有独特的代号和发布时间,体现了Java的持续改进和技术升级。这些版本不仅修复了问题,还引入了新特性和功能,如J2SE 1.2引入了JDBC和...
后来,Oak在市场竞争中失利,但在互联网发展浪潮中找到了新的机遇,最终演变为Java,并在1995年正式发布。Java的成功在于其简洁的语法、自动内存管理以及跨平台的能力,使其迅速成为互联网时代的主流编程语言。
Java基础入门篇主要涵盖了一系列关于Java编程语言的基础知识,包括JVM(Java虚拟机)、Java开发环境的搭建、Java的历史、特点、程序类型、垃圾收集器、J2SE的下载和安装,以及环境变量的配置和测试。此外,还会介绍...
- **2004年**:J2SE 1.5发布,这是Java发展史上的一个重要里程碑,为了强调其重要性,它被重新命名为Java SE 5.0。 - **2005年**:Sun Microsystems宣布了新的Java版本命名体系,取消了数字“2”,将J2EE更名为Java ...
Java 的发展历史可以从1991年的GREEN项目开始,该项目旨在通过电子邮件控制家用电器,最初计划使用C++开发,但后来选择了更简单的OAK平台,即Java的前身。在与NetScape的竞争中失败后,SUN转向浏览器技术,推出了...