Chinaunix首页 | 论坛 | 博客
  • 博客访问: 168214
  • 博文数量: 56
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 650
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-12 10:39
文章分类

全部博文(56)

文章存档

2009年(1)

2008年(55)

我的朋友
最近访客

分类: Java

2008-04-08 13:13:35


Java的应用已越来越具规模,更重要的是它影响着一代又一代的程序员。

Java的版本发展纪要:

发布日期

JDK版本号

版本名称 版本中文名 Java 版本名称

影响事件

1995-02-23


    Java 诞生

Java 诞生

1996-01-23

JDK1.0

     

10个最主要的操作系统供应商申明将在其产品中支持 Java 技术

1997-02-18

JDK1.1

     

推出了 JIT 编译器

1997-09-12

JDK 1.1.4

Sparkler 宝石  


1997-12-13

JDK 1.1.5

Pumpkin 南瓜  


1998-04-24

JDK 1.1.6

Abigail 阿比盖尔--女子名  


1998-09-28

JDK 1.1.7

Brutus 布鲁图--古罗马政治家和将军  


1999-04-08

JDK 1.1.8

Chelsea 切尔西--城市名  


1998-12-04

J2SE1.2
JDK1.2 随即改称为 J2SE1.2

Playground 运动场 Java2 平台的诞生

JDK1.1 下载量超过 200 万次, JDK1.2 (称 Java2 )发布, JFC/Swing 技术发布, JFC/Swing 被下载了 50 多万次 , J2SE1.2的发布,标志着 Java2 平台的诞生

1999-03-30

J2SE 1.2.1

none  


1999-07-08

J2SE 1.2.2

Cricket 蟋蟀  


1999年


    Sun 公司推出了以 Java2 平台为核心的 J2EE 、 J2SE 和 J2ME 三大平台

JSP/Servler 技术诞生

2000-05-08

J2SE 1.3

Kestrel 美洲红隼  

对 J2SE1.2 的加强与扩展;

2001-05-17

J2SE 1.3.1

Ladybird 瓢虫  


2001年

J2EE 1.3

     

Nokia 公司宣布到 2003 年将出售 1 亿部支持 Java 的手机。

2002-02-13

J2SE 1.4

Merlin 灰背隼  

大幅提高了执行速度。 J2EE SDK 的下载量达到 200 万次。

2002-09-16

J2SE 1.4.1

grasshopper 蚱蜢  


2003-06-26

J2SE 1.4.2

Mantis 螳螂  


2003年


     

5.5 亿台桌面机上运行 Java 程序, 75% 的开发人员将 Java 作为首要开发工具。

2004-09-29

J2SE 5.0 (1.5.0)

Tiger 老虎 改为 J2SE5.0

这是 Java 语言在发展史上的又一里程碑事件。为了表示这个版本的重要性, J2SE 1.5 更名为 J2SE 5.0 ,此版本反映了 J2SE 的成熟、稳定性、可伸缩性和安全性。


J2SE 5.1 (1.5.1)

Dragonfly 蜻蜓 据说被合并至JavaSE6.0


2005年





JavaOne 大会召开, Sun 公司公开 Java SE6 。此时, Java 的各种版本被更名,取消其中的数字“ 2 ” ; J2SE 更名为 Java SE , J2EE 更名为 Java EE , J2ME 更名为 Java ME 。

2006-12-11

JavaSE6.0 (1.6.0)

Mustang 野马


未发布

J2SE 7.0

Dolphin 海豚


从JDK1.2.2开始,主要版本(如1.3,1.4,5.0)都是以鸟类或哺乳动物来命名的. 而它们的bug修正版本(如1.2.2,1.3.1,1.4.2)都是以昆虫命名的.
如有错缺,有待更正。




==========================================================
J2SE的发展史介绍,供了解参考
                                      

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来实现,可以向 提出制定新的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平台能够得到广泛的应用,还应归功于这个时期的一些优秀书籍,比如著名的<>(卷一和卷二),该书随着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 coll){     for(String str : coll){    System.out.println(str);}    }


怎么样?是不是简单了很多?
自动的装箱/拆箱 我们以前手工的做装箱(Boxing)/拆箱(unBoxing)操作时,是不是很烦?放心,J2SE5.0提供了自动的装箱/拆箱操作,我们现在可以写如下的代码:
   
public void boxing(int i)    {        ArrayList list=new ArrayList();        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平台一路走好!

                                                                       <网络转载文章>

==========================================================
Java语言-发展方向

    1.Java嵌入技术领域
      –Java嵌入技术是基于Java应用嵌入设备的技术
      –SUN陆续推出了EmbeddedJava、PersonlJava、JavaPhone、JavaTV等嵌入技术
      –Java嵌入应用领域有智能卡、专用游戏机、手持设备、Web电话、PDA、交互式数字电视、打印机、无线通讯、门禁控制、医学监视器、自动提款机等分布式计算环境

    2.基于CORBA的Java分布式应用
      –Internet商务日益重要,对于商业交易管理安全性、标准化技术要求比较高
      –Java RMI(远程方法调用)建立纯粹的分布式对象应用比较困难,但是建立Java的CORBA(Common Object Request Broker Architesture)应用更为复杂
      –CORBA有两全其美的选择:一是充分利用已有代码,保护投资;二是充分发挥Java的编程优势
      –RMI和Java技术更向OMG(Object Management Group)标准靠拢,SUN已经宣布Java事务服务(JTS,Java Transaction Services)将建立在OMG的对象事务服务(OTS,Object Transaction Services)基础之上

    3.Java企业级解决方案
      –企业计算是Java  1998年提出的主要技术主题
      –SUN公司宣布EJB(Enterprise JavaBean)的规范,掀起企业高端计算的开发热潮,IBM、NOVELL等公司积极跟进,表明Java正在稳步走向企业高端计算领域
      –EJB为企业提供全面的信息管理、基于知识的企业运作解决方案、基于服务器的服务功能
      –EJB并不是一个产品,而是Java服务器端服务框架的规范

      J2ee和J2me才是Java的强项,用JAVA开发的东西多了,但由于JAVA编译时比较慢,
      写桌面应用小程序时,都用C/C++,用java好慢啊,而且没有jvm还没法执行。
      开发企业级的应用,手机软件,中间件,等等了,都是用JAVA,它的移值性好,安全性高。
      如,Oracle8、9版本的企业管理界面就是java写,作的不错。永中office,就是java做的......

                                                                       <网络转载文章>




阅读(605) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~