jvm之管中窥豹

1.       产生:java1995323日诞生。Java的诞生标志着互联网时代的开始,它能够被应用在全球信息网络的平台上编写互动性及强的Applet程序,而1995年的Applet无疑能给人们无穷的视觉和脑力震荡。

2.       Sun公司在1996年的123日发布了JDK1.0来帮助开发人员的开发。JDK包括两大部分:运行环境和开发工具。而运行环境包括五大部分:核心API,集成API,用户界面API,发布技术,Java虚拟机(JVM)。在jdk1.0中只有awt可以称之为完整的framework,其他的都比较偏向于个别class

注:此时的jdk是是编译->执行->再编译->再执行的模式。即:收到执行指令,马上执行该机器码,然后丢掉该机器码,再接收下一道字节码指令……即便是以前执行过的字节码指令,依然需要重新解释成机器码才能执行

3.       1997218日发布了JDK1.1JDK1.1相对于旧版本最大的改进,是推出了JIT(Just-In-Time)编译器。即:先将java文件编译成class文件,保存起来,下次再收到执行改文件的命令的时候直接执行,不需要再编译。也即:一次编译,多次使用。

注:在JDK1.1时代,Java平台分为PersonalJavaEmbeddedJava,前者比较适用于运算资源和内存丰富的设备,而资源有限者适用于后者。

4.       JDK1.21998124日的隆重发布,标志着Java2平台的诞生。Java2J2SE1.2时代是一个大变革时代,它进行了如下的三大革命:

a)         市场推广革命
Java1.0或者1.1中,称API库为JDK,但为了方便市场推广,Sun公司在Java1.2版以后将JDK1.2改名为J2SDK,将Java改名为Java 2。在99Sun公司还将Java2平台分为三大块:J2SEJ2EEJ2ME

b)        API供应标准革命
而随着供应商的不同,JavaAPI分为三大类:
Java Core API
:由Sun公司制定的基本的API,所有的Java平台都应该提供。这就是我们平常所说的Java核心类库。

     Java Optional API:由Sun公司制定的扩充APIJava平台可以有选择地提供。比如, JFC以前是SunJDK的功能扩展,不是Java的公共规范。Java2平台则包含了JFC技术,不需要再扩展了。
   
特殊API:由特殊厂商或者组织提供的API。比如,美国法律对出口中国的加解密算法的安全强度有一定的限制,Java平台中不能包括一些安全强度较高的加密解密算法,所以部分其它国家的公司,如加拿大的BouncyCastle公司等,可以提供一些自己的安全API

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

注:jdk1.2的新特性:

增加了Swing库,Java2 还废弃了一些API,最重要的莫过于Thread类中对suspend(),resume()stop()等方法的废弃。由于JDK1.1的集合类库中的Vector类和HashTable类都考虑了同步,在平常的使用中影响效率,所以Java2专门添加了对应的非同步类,并完善了集合类库。

5.       200058日推出的J2SE1.3J2SE1.2的改进,主要是对各种已有API的加强和对新API的拓展。J2SE1.3主要是对J2SE1.2查漏补缺和拓展新的API。从应用领域方面考虑,J2SE1.3已经涵盖了数据库、WEB、多媒体、网络、电话、影像、加解密、图形等等大部分的信息技术领域。主要拓展:

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

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

c)         Collections包:加入了一些新的API

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

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

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

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

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

6.       J2SE1.4平台的推出发生在2002213日,J2SE1.4主要是解决性能问题

a)         增加了锁机制:由于旧版的HotSpot虚拟机的锁机制会导制严重的性能和功能问题,J2SE1.4已经改写了该锁机制。

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

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

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

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

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

g)        新的I/O API J2SE1.4API层面最大的变动,就是它更新了原有的java.io包,以及加入了一组更有效率更多功能的新的I/O API。旧的I/O处理是以串流(stream)的方式来存取的,以字节为单位,而新的I/O处理是以块(block)的方式来存取的。一个块可能包含了512字节,而磁盘的存取本就是一个块一个块来进行的,所以新的I/O处理方式对于底层底数据存取更自然更有效率。

h)        断言和日志处理: J2SE1.4版本在Java语言层面上加入了断言(assert关键字),在API层面上加入日志处理API,这些为程序的调试提供了强有力的支持

7.       2004年十月J2SE5.0发布的时候,SUN公司这样解释这次版本名称不是J2SE1.5而是J2SE5.0的原因:Java诞生至今已有9年时间,而从有J2SE算起也有5个年头了;在这样的背境下,将该版本号从1.5改为5.0可以更好的反映出新版的J2SE的成熟度、稳定性、可伸缩性、安全性。”jdk5.0强调的是易用性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值