精华内容
下载资源
问答
  • 上篇我们对Java平台体系有了一个全面的了解,下面先简单介绍Java发展历史,然后在整个的发展史的基础上,抽取几个关注点的时间线,分别介绍各JDK版本的新特性、JVM发展、以及Java技术的应用发展

    Java发展:各版本JDK新特性 JVM发展 Java技术应用发展

        

           上篇《Java平台体系:组成结构 运行机制 JRE/JDK/OpenJDK Java SE/ EE/ ME Java优点》我们对Java平台体系有了一个全面的了解。

           下面先简单介绍Java发展历史,然后在整个的发展史的基础上,抽取几个关注点的时间线,分别介绍各JDK版本的新特性、JVM发展、以及Java技术的应用发展。

    1、Java发展历史简介

           1995年5月23日,互联网兴起,Oak改名为Java,Java语言诞生,提出"一次编译,到处运行";

           1996年1月23日,第一个JDK--JDK1.0诞生,技术代表:纯解释执行的Java虚拟机(Sun Classic VM)、Applet、AWT等;

           1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入Java技术;

           1996年9月,约8.3万个网页应用了Java技术来制作;

           1997年2月19日,JDK1.1发布,技术代表:JAR文件格式、JDBC、JavaBeans、RMI,Java重要语法:内部类(Inter Class)和反射(Reflection)等;

           1997年9月,JavaDeveloperConnection社区成员超过十万;

           1998年2月,JDK1.1被下载超过2,000,000次;

           1998年12月4日,JDK1.2发布,拆分三个版本:标准版(J2SE)、企业版(J2EE)和微型版(J2ME),技术代表:EJB、Java Plug-in、Java IDL、Swing等,JVM内置JIT,Java语法/API:strictft关键字、Collections集合类等;

           1999年4月27日,HotSpot虚拟机发布,作为JDK1.2附加程序;

           2000年5月8日,JDK1.3发布,内置默认HotSpot虚拟机,改进主要在一些类库:JNDI、RMI、Timer API、Java 2D API等;

           2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机;

           2002年2月13日,JDK1.4发布,走向成熟的版本,发布新特性:正则表达式、异常链、NIO、日志类、XML解析器和XSTL转换器等;    

           2004年9月30日,JDK1.5(JDK5,公开版本号)发布,java语法新特性:自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环(foreach循环)等,Java API加入:java.util.concurrent并发包等,改进JVM内存模型(JMM);

           2006年11月13日,SUN开源JDK为OpenJDK,两者代码基本相同;

           2006年12月11日,JDK6发布,J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME,改进:提供动态语言支持(内置JS引擎)、提供编译API和微型HTTP服务器API等,JVM改进:锁与同步、垃圾收集、类加载等算法;

           2009年4月7日Google App Engine开始支持Java;

           2009年04月20日,Oracle74亿美元收购Sun。取得java的版权;

           2011年7月28日,Oracle发布JDK7的正式版,主要改进:提供新的G1收集器,加强对非Java语言的调用支持、升级加载类架构等;

           2014年3月18日,Oracle发布JDK8的正式版,主要改进:支持Lambda表达式和虚拟扩展方法、新的日期和时间API、提供Nashhorn JavaScript引擎、提高安全性;

            2017年发布java9.0的正式版(预计)…

    2、各JDK版本的新特性

    2-1、JDK5(JDK1.5)--2004年9月30日

    语言新特性:

    1、自动装箱与拆箱;

    2、枚举;

    3、静态导入;

    4、可变长参数;

    5、内省;

    6、泛型;

    7、动态注解;

    8、遍历循环(foreach循环);

    9、Java API加入:java.util.concurrent并发包;

    10、改进JVM内存模型(JMM)、自适应垃圾收集配置等;

    2-2、JDK6--2006年12月11日

    1、Web服务元数据;

    2.、提供脚本语言/动态语言支持(内置JS引擎);

    3、JTable的排序和过滤;

    4、更简单,更强大的JAX-WS;

    5、轻量级Http Server;

    6、嵌入式数据库 Derby;

    7、JVM改进:锁与同步、并发垃圾收集、类加载等算法;

    2-3、JDK7--2011年7月28日

    语言改进:

    1、switch支持使用字符串;

    2、运用List<String> tempList = new ArrayList<>(); 即泛型实例化类型自动推断;

    3、语法上支持集合,而不一定是数组;

    4、新增一些取环境信息的工具方法;

    5、Boolean类型反转,空指针安全,参与位运算;

    6、两个char间的equals;

    7、安全的加减乘除;

    8、map集合支持并发请求,且可以写成 Map map = {name:"xxx",age:18};

    JVM改进:

    9、提供新的G1收集器;

    10、加强对动态的调用支持;

    11、更严格的类文件检查;

    核心基础(core)改进:

    12、升级加载类架构;

    13、并发和集合更新;

    IO改进:

    14、提供全面的new I/O APIs(NIO.2)

    更多请参考:《Java SE 7 Features and Enhancements》《JDK 7 Features》

    2-4、JDK8--2014年3月18日

    语言改进:

    1、允许在接口中有默认方法实现;

    2、支持Lambda表达式 & 虚拟扩展方法;

    3、内置函数式接口;

    4、支持方法和构造函数引用;

    5、提供Nashhorn JavaScript引擎,允许在Java程序中嵌入JS代码

    核心改进:

    6、新的日期和时间API;

    7、支持多重Annotations注解;

    VM改进:

    8、减少指定字段上的缓存争用;

    9、移除Permanent Generation(永久代);

    10、移除一些很少使用的垃圾回收器组合等;

    更多请参考:《What's New in JDK 8》《JDK 8 Features》

    2-5、JDK9—2017年(预计)

    1、JDK、源码模块化;

    2.、简化进程API;

    3、轻量级 JSON API;

    4、新的 HotSpot 构建系统;

    5、改善锁争用机制;

    6、代码分段缓存;

    7、智能Java编译, 第二阶段;

    8、HTTP 2.0客户端;

    更多请参考:《JDK 9》

    3、JVM的发展

           我们知道现在JDK1.4后只有HotSpot作为官方提供的JVM,下面我们看下这个局面是怎么产生的。

    1、Sun Classic VM

    第一款商用JVM;

    JDK1.0/JDK1.1只内置Classic VM,JDK1.2/JDK1.3与HotSpot并存,JDK1.2默认使用Classic VM,JDK1.3默认使用HotSpot,JDK1.4抛弃Classic VM;

    本身只解释执行,JIT编译器需要外挂,且解释器与编译器不能同时配合工作;

    内存模型:基于handler的对象查找方式;

    执行效率低;

    2、Sun Exact VM

    只发布JDK1.2的Solaris平台版本;

    被HopSpot取代;

    热点代码探测、两级即时编译器、编译器与解释器结合;

    内存模型:准确式内存管理(Exact Memory Management);

    执行性能较好;

    3、Sun HotSpot VM

    目前使用最广泛的JVM;

    1997年Sun收购获得;

    JDK1.2/JDK1.3与HotSpot并存,JDK1.2默认使用Classic VM,JDK1.3默认使用HotSpot,JDK1.4后只有HotSpot;

    热点代码探测、两级即时编译器、编译器与解释器结合;

    内存模型:准确式内存管理(Exact Memory Management);

    未来结合JRockit VM;

    更多HotSpot发展变化情况请参考:《Java Virtual Machine Technology》

    4、BEA JRockit VM

    号称"世界上最快的JVM";

    专注服务器硬件与服务端应用;

    没有解释器,只有即时编译器编译执行;

     垃圾回收器和MissionControl服务套件比较优秀;

    被Oracle收购,与HopSpot结合;

    5、其他

    IBM J9 VM:与HotSpot一样为多用途虚拟机,主要应用IBM自己产品;

    Azul VM:在HotSpot基础上改进,专有硬件平台Vege上运行;

     Liquid VM:JRockit VM的虚拟化版本,自带操作系统;

    Apache Harmony:不仅仅是JVM,是一个开源的Java程序运行平台,使用自己的Java类库;

    Dalvik VM:android平台虚拟机,运行class转化的dex文件,使用寄存器架构,而不是JVM常见的栈架构;

    Microsoft JVM:主要在浏览器运行Java早期的Applets程序,1997年被Sun控告而终止;

    4、Java技术的应用发展

    1、AWT/Swing/SWT

            开发GUI、C/S桌面程序,响应较慢,现在很少应用;

    2、Applet

            开发浏览器中运行的网页小程序,需要用户安装JRE插件,响应也慢,现在基本不用;

    3、Servlet

            开发服务器端运行的程序,构建了"接收请求--调用servlet程序处理--返回响应"基本模型,属于Java EE重要规范,Tomcat, Jetty, WebLogic , Websphere, JBoss都是实现了Servlet规范的Servlet容器,可以运行Servlet程序;

    4、JSP(JavaServer Pages)

            可以在HTML页面中编写Java,没有JPS,Servlet只能用代码一行一行构建响应;

    5、MVC

            利用SSH/SSM等一些第三框架,编写Java程序只需要关注业务逻辑的处理;

    6、Android

            开发移动平台应用程序,提供了专为移动平台优化的SDK、以及Dalvik VM;

    等等...

     

     

    上面我们对Java发展有了一个全面的认识,后面我们还将全面深入的学习了解Java……

     

     

    【参考资料】

    1、Oracle Java官网相关文档:http://www.oracle.com/technetwork/cn/java/index.html

    2、Java官方站点:https://www.java.com/zh_CN

    3、JVM HotSpot说明:http://www.oracle.com/technetwork/cn/java/javase/tech/index-jsp-136373-zhs.html

    4、《深入理解Java虚拟机》

    展开全文
  • Java发展历程

    万次阅读 多人点赞 2019-06-30 19:35:22
    1991年4月,Sun公司成立了Green项目小组,专攻智能家电的嵌入式控制系统。...这个计划的产品就是Java语言的前身:Oak(橡树)。Oak当时在消费品市场上并不算成功,但随着1995年互联网潮流的兴起,Oak迅速找到了...

    Sun公司

    1991年4月,Sun公司成立了Green项目小组,专攻智能家电的嵌入式控制系统。由James Gosling博士领导的绿色计划(Green Project)开始启动,此计划的目的是开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构。这个计划的产品就是Java语言的前身:Oak(橡树)。Oak当时在消费品市场上并不算成功,但随着1995年互联网潮流的兴起,Oak迅速找到了最适合自己发展的市场定位并蜕变成为Java语言。

    1995年5月23日,Oak语言改名为Java,并且在SunWorld大会上正式发布Java 1.0版本。Java语言第一次提出了“Write Once,Run Anywhere”的口号。

    1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入Java技术。同年9月,已有大约8.3万个网页应用了Java技术来制作。在1996年5月底,Sun公司于美国旧金山举行了首届JavaOne大会,从此JavaOne成为全世界数百万Java语言开发者每年一度的技术盛会。

    1998年12月8日,Java 2企业平台J2EE发布 (J2EE1.2)

    1999年4月27日,HotSpot虚拟机发布,HotSpot最初由一家名为“Longview Technologies”的小公司开发,因为HotSpot的优异表现,这家公司在1997年被Sun公司收购了。HotSpot虚拟机发布时是作为JDK 1.2的附加程序提供的,后来它成为了JDK 1.3及之后所有版本的Sun JDK的默认虚拟机。

    1999年6月,发布Java的三个版本:J2SE、J2EE、J2ME

    2005年6月,Java SE6.0发布,J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME

    Oracle公司

    2009年4月20日,Oracle公司宣布正式以74亿美元的价格收购Sun公司,Java商标从此正式归Oracle所有(Java语言本身并不属于哪间公司所有,它由JCP组织进行管理,尽管JCP主要是由Sun公司或者说Oracle公司所领导的)。由于此前Oracle公司已经收购了另外一家大型的中间件企业BEA公司,在完成对Sun公司的收购之后,Oracle公司分别从BEA和Sun中取得了目前三大商业虚拟机的其中两个:JRockit和HotSpot,Oracle公司宣布在未来1~2年的时间内,将把这两个优秀的虚拟机互相取长补短,最终合二为一。可以预见在不久的将来,Java虚拟机技术将会产生相当巨大的变化。

    2011年7月28日,Oracle公司发布Java SE 1.7

    2014年3月18日,Oracle公司发表Java SE 1.8,代表性技术包括:Lambda表达式、函数式接口、方法引用和构造器调用、Stream API、接口中的默认方法和静态方法、Optional 类、新时间日期API等

    2017年9月21日,JDK 1.9发布,代表性技术包括:Java 平台级模块系统,Linking,JShell (交互式 Java REPL),改进的 Javadoc,改进的 Stream API,集合工厂方法,私有接口方法,HTTP/2,多版本兼容 JAR。

    2018年3月14日,JDK 1.10发布。

    展开全文
  • 一、Java发展史 二、Java虚拟机(部分) 2.1 Sun Classic VM 2.2 Sun Exact VM 2.3 Sun HotSpot VM 2.4 BEA JRockit VM 2.5 BEA Liquid VM 2.6IBM J9 VM 2.7 Azul VM 2.8 Microsoft JVM 三、总结 一、Java...

    目录

    一、Java发展史

    二、Java虚拟机(部分)

    2.1 Sun Classic VM

    2.2 Sun Exact VM

    2.3 Sun HotSpot VM

    2.4 BEA JRockit VM

    2.5 BEA Liquid VM

    2.6 IBM J9 VM

    2.7 Azul VM

    2.8 Microsoft JVM

    三、总结


    一、Java发展史

    • 1991年4月,James Gosling博士领导绿色计划(Green Project),产品为Java语言的前身:Oak(橡树)。
    • 1995年5月23日,Oak语言改名为Java,并且在SunWorld大会上正式发布Java1.0版本,第一次提出了“Write Once, Run Anywhere”的口号。
    • 1996年1月23日,JDK1.0发布,Java语言有了第一个正式版本的运行环境。JDK1.0提供了一个纯解释执行的Java虚拟机实现(Sun Classic VM)。
    • 1996年5月底,Sun公司于美国旧金山举行了首届JavaOne大会。
    • 1998年12月4日,JDK发布了里程碑式的版本JDK1.2,工程代号Playground(竞技场),这个版本中把Java技术体系拆分为三个方向:J2SE、J2EE和J2ME。在这个版本中,Java虚拟机第一次内置了JIT编译器。
    • 1999年4月27日,HotSpot虚拟机(其由Longview Technologies公司开发,该公司于1997年被Sun公司收购)发布。
    • 2000年5月8日,JDK1.3发布。
    • 2002年2月13日,JDK1.4发布。发布了很多新的技术特性:正则表达式、NIO、日志类等等。
    • 2004年9月30日,JDK1.5发布。加入了自动装箱、泛型、动态注解、枚举等等。
    • 2006年12月11日,JDK1.6发布。放弃了J2EE、J2SE、J2ME的命名方式,启用Java SE 6、Java EE 6、Java ME 6的命名方式。
    • 2009年2月19日,JDK1.7发布。
    • 2009年4月20日,Oracle公司宣布以74亿美元的价格收购Sun公司。

    二、Java虚拟机(部分)

    2.1 Sun Classic VM

    世界上第一款商用Java虚拟机,于1996年1月23日JDK1.0发布时提供。这款虚拟机只能以纯解释器方式来执行Java代码,如果要使用JIT编译器,必须进行外挂。但是如果外挂了JIT,那么JIT编译器就完全接管了虚拟机执行系统,解释器便不再工作了。

    由于解释器和编译器不能配合工作,这就意味着如果要使用编译器执行,那编译器就不得不对每一个方法、每一行代码都进行编译,而无论它们执行的频率是否具有编译的价值。基于程序响应时间的压力,这些编译器不敢应用编译耗时稍高的优化技术,因此这个阶段的虚拟机即使使用了JIT编译器输出本地代码,执行效率也和传统的C/C++程序有很大差距,“Java语言很慢”的形象就是在这个时候开始在用户中心树立起来的。

    由于GC之后对象可能会被移动位置,也没有明确信息表明内存中哪些数据是reference,所以需要使用句柄来保持reference的稳定,采用基于handler的对象查找方式。

    2.2 Sun Exact VM

    它的执行系统已经具备现代高性能虚拟机的雏形,比如两级即时编译器、编译器与解释器混合工作模式等。Exact VM因它使用准确式内存管理(Exact Memory Management)得名,即虚拟机可以知道内存中某个位置的数据具体是什么类型。比如内存中有一个32位的整数123456,它到底是一个reference类型只想123456的内存地址,还是一个数值为123456的整数,虚拟机有能力分辨出来,这样才能在GC时准确判断堆上的数据是否还可以被使用。

    由于使用了准确式内存管理,就可以抛弃之前Classic VM基于handler的对象查找方式,这样每次定位对象都少了一次间接查找的开销,提升执行性能。

    2.3 Sun HotSpot VM

    目前使用范围最广的Java虚拟机,本由Longview Technologies公司设计,该公司与1997年被Sun公司收购。HotSpot指的就是热点代码探测技术:可以通过执行计数器找出最具有编译价值的代码,然后通知JIT编译器以方法为单位进行编译。

    2.4 BEA JRockit VM

    BEA公司在2002年从Appeal Vitrual Machines公司收购的虚拟机,由于专注于服务器端应用,所以不太关注程序启动速度,所以JROckit内部不包含解析器实现,全部代码都靠即时编译器编译后执行。

    2.5 BEA Liquid VM

    即现在的JRockit VE(Virtural Edition),它是由BEA公司开发的,可以直接运行在自家Hypervisor系统上的JRockit VM的虚拟化版本。其不需要操作系统的支持,或者说它自身实现了一个专用操作系统的必要功能,如文件系统、网络支持等。由虚拟机越过操作系统直接操作硬件可以获得很多好处,比如线程调度时,不需要再进行内核态/用户态的切换等。

    2.6 IBM J9 VM

    IBM公司主力发展的虚拟机,最初由IBM Ottawa实验室一个名为SmallTalk的虚拟机扩展而来,它是一款设计上从服务端到桌面应用再到嵌入式都全面考虑的多用途虚拟机。

    2.7 Azul VM

    Azul Systems公司在HotSpot基础上进行大量改进的虚拟机,运行于Azul Systems公司的专有硬件Vega系统上。在2010年,Azul Systems公司开始从硬件转向软件,发布了自己的Zing JVM,可以在通用x86平台上提供接近于Vega系统的特性。

    2.8 Microsoft JVM

    微软公司为了在IE3中支持Java Applets应用而开发的自己的虚拟机,虽然其只有Windows平台的版本,却是当时Windows下性能最好的Java虚拟机。1997年10月,Sun公司以侵犯商标、不正当竞争等罪名控告微软,最终微软除了赔偿大量金额外,还承诺终止其Java虚拟机的发展。  

    三、总结

    本章主要介绍了Java技术体系的过去、现在以及未来的一些发展趋势,介绍了一些虚拟机的背景和发展轨迹,另外还介绍了如何自己来独立编译一个OpenJDK7。

    展开全文
  • Java发展(历史)轨迹历史变迁

    万次阅读 2017-02-23 10:41:11
    J2SE\J2ME\J2EE,Java的起源Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。Java语言是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由当时任职太阳微系统的詹姆斯·高斯林...

    这篇文章简要的概括了Java的发展历程,请耐心看完以下两端内容,作为Javapapers的一部分,我希望记录并保存这一珍贵的时间线。这些历史信息搜集自网络,并且无法核实。我将尽可能提供准确的信息,如果你在下面的时间线中找到任何错误,请给我发邮件。

    Java的标准划分

    Java 的版本演进到Java 2,根据不同层面的应用进行了细化,Java 2平台被分为三种版本,版本及其说明见

    版本描述其它
    J2EE—企业版,适用于服务器,目前已成为企业运算、电子商务等领域的热门技术Enterprise Edition
    J2SEJava 2 Standard Edition—标准版,适用于一般的计算机,开发PC机上的应用软件
    J2MEJava 2 Micro Edition—微型版,适用于手持设备,进行应用开发,如手机游戏、名片管理等



    Java的发展历史,为什么叫咖啡

        Java平台和语言最开始只是SUN公司在1990年12月开始研究的一个内部项目。SUN公司的一个叫做帕特里克·诺顿的工程师被自己开发的C和C语言编译器搞得焦头烂额,因为其中的API极其难用。帕特里克决定改用NeXT,同时他也获得了研究公司的一个叫做“Stealth 计划”的项目的机会。
        “Stealth 计划”后来改名为“Green计划”,JGosling(詹姆斯·高斯林)和麦克·舍林丹也加入了帕特里克的工作小组。他们和其他几个工程师一起在加利福尼亚州门罗帕克市沙丘路的一个小工作室里面研究开发新技术,瞄准下一代智能家电(如微波炉)的程序设计,SUN公司预料未来科技将在家用电器领域大显身手。团队最初考虑使用C 语言,但是很多成员包括SUN的首席科学家比尔·乔伊,发现C 和可用的API在某些方面存在很大问题。
        工作小组使用的是内嵌类型平台,可以用的资源极其有限。很多成员发现C 太复杂以至很多开发者经常错误使用。他们发现C 缺少垃圾回收系统,还有可移植的安全性、分布程序设计、和多线程功能。最后,他们想要一种易于移植到各种设备上的平台。
        根据可用的资金,比尔·乔伊决定开发一种集C语言和Mesa语言搭成的新语言,在一份报告上,乔伊把它叫做“未来”,他提议SUN公司的工程师应该在C 的基础上,开发一种面向对象的环境。最初,高斯林试图修改和扩展C 的功能,他自己称这种新语言为C –,但是后来他放弃了。他将要创造出一种全新的语言,被他命名为“Oak”(橡树),以他的办公室外的树而命名。
    就像很多开发新技术的秘密的工程一样,工作小组没日没夜地工作到了1992年的夏天,他们能够演示新平台的一部分了,包括Green操作系统,Oak的程序设计语言,类库,和其硬件。最初的尝试是面向一种类PDA设备,被命名为Star7,这种设备有鲜艳的图形界面和被称为“Duke”的智能代理来帮助用户。1992年12月3日,这台设备进行了展示。
        同年11月,Green计划被转化成了“FirstPerson有限公司”,一个SUN公司的全资子公司,团队也被重新安排到了帕洛阿尔托。FirstPerson团队对建造一种高度互动的设备感兴趣,当时代华纳发布了一个关于电视机顶盒的征求提议书时(Request for proposal),FirstPerson改变了他们的目标,作为对征求意见书的响应,提出了一个机顶盒平台的提议。但是有线电视业界觉得FirstPerson的平台给予用户过多地控制权,因此FirstPerson的投标败给了SGI。与3DO公司的另外一笔关于机顶盒的交易也没有成功,由于他们的平台不能在电视工业产生任何效益,公司再并回SUN公司。
        JAVA应用1994年6、7月间,在经历了一场历时三天的头脑风暴的讨论之后,约翰·盖吉、詹姆斯·高斯林、比尔·乔伊、帕特里克·诺顿、韦恩·罗斯因和埃里克·斯库米,团队决定再一次改变了努力的目标,这次他们决定将该技术应用于万维网。他们认为随着Mosaic浏览器的到来,因特网正在向同样的高度互动的远景演变,而这一远景正是他们在有线电视网中看到的。作为原型,帕特里克·诺顿写了一个小型万维网浏览器,WebRunner,后来改名为HotJava。同年,Oak改名为Java。商标搜索显示,Oak已被一家显卡制造商注册,因此团队找到了一个新名字。这个名字是在很多成员常去的本地咖啡馆中杜撰出来的。名字是不是首字母缩写还不清楚,很大程度上来说不是。虽然有人声称是开发人员名字的组合:James Gosling(詹姆斯·高斯林)Arthur Van Hoff(阿瑟·凡·霍夫)Andy Bechtolsheim(安迪·贝克托克姆),或“Just Another Vague Acronym”(只是另外一个含糊的缩写)。还有一种比较可信的说法是这个名字是出于对咖啡的喜爱,所以以Java咖啡来命名。类文件的前四个字节如果用十六进制阅读的话,分别为CA FE BA BE,就会拼出两个单词“CAFE BABE”(咖啡宝贝)。
        1994年10月,HotJava和Java平台为公司高层进行演示。1994年,Java 1.0a版本已经可以提供下载,但是Java和HotJava浏览器的第一次公开发布却是在1995年5月23日SunWorld大会上进行的。SUN公司的科学指导约翰·盖吉宣告Java技术。这个发布是与网景公司的执行副总裁马克·安德森的惊人发布一起进行的,宣布网景将在其浏览器中包含对Java的支持。1996年1月,升阳公司成立了Java业务集团,专门开发Java技术。


    Java的发展历史

        历史上JAVA发生了什么事件?经历了些什么?
    

      Java:由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。Java语言是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由当时任职太阳微系统的詹姆斯·高斯林(James Gosling)等人于1990年代初开发,它最初被命名为Oak。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

      Java从第一个版本诞生到现在已经有十九年的时间了。时间若白驹过隙,转瞬即逝。弹指间19年过去了,在下图所展示的时间线中,我们看到JDK已经发展到了1.8版。在这19年里还诞生了无数和Java相关的产品、技术和标准。现在让我们走入时间隧道,从孕育Java语言的时代开始,回顾一下Java的发展轨迹和历史变迁。

      1991年4月,由James Gosling博士领导的绿色计划(Green Project)开始启动,此计划的目的是开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构。这个计划的产品就是Java语言的前身:Oak(橡树)。Oak当时在消费品市场上并不算成功,但随着1995年互联网潮流的兴起,Oak迅速找到了最适合自己发展的市场定位并蜕变成为Java语言。

      1992年3月,由于Oak已被用作另一种已存在的编程语言名称,因此必须选一个新的名字——它就是Java,灵感来源于咖啡。

      1993年2月,电视机顶盒,FirstPerson试图从时代华纳获得一个电视机顶盒交互系统的一揽子订单。在那时,由于绿色计划不是很成功,随即失去了时代华纳的订单。于是开发的重心从家庭消费电子产品转到了电视盒机顶盒的相关平台上。
      
      1995年5月23日,Oak语言改名为Java,并且在SunWorld大会上正式发布Java 1.0版本。Java语言第一次提出了“Write Once,Run Anywhere”的口号。

      1996年1月23日,JDK 1.0发布,Java语言有了第一个正式版本的运行环境。JDK 1.0提供了一个纯解释执行的Java虚拟机实现(Sun Classic VM)。JDK 1.0版本的代表技术包括:Java虚拟机、Applet、AWT等。

      1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入Java技术。同年9月,已有大约8.3万个网页应用了Java技术来制作。在1996年5月底,Sun公司于美国旧金山举行了首届JavaOne大会,从此JavaOne成为全世界数百万Java语言开发者每年一度的技术盛会。

      1997年2月19日,Sun公司发布了JDK 1.1,Java技术的一些最基础的支撑点(如JDBC等)都是在JDK 1.1版本中发布的,JDK 1.1版的技术代表有:JAR文件格式、JDBC、JavaBeans、RMI。Java语法也有了一定的发展,如内部类(Inner Class)和反射(Reflection)都是在这个时候出现的。

      直到1999年4月8日,JDK 1.1一共发布了1.1.0~1.1.8九个版本。从1.1.4之后,每个JDK版本都有一个自己的名字(工程代号),分别为:JDK 1.1.4 - Sparkler(宝石)、JDK 1.1.5 - Pumpkin(南瓜)、JDK 1.1.6 - Abigail(阿比盖尔,女子名)、JDK 1.1.7 - Brutus(布鲁图,古罗马政治家和将军)和JDK 1.1.8 – Chelsea(切尔西,城市名)。

      1998年12月4日,JDK迎来了一个里程碑式的版本JDK 1.2,工程代号为Playground(竞技场),Sun在这个版本中把Java技术体系拆分为3个方向,分别是面向桌面应用开发的J2SE(Java 2 Platform, Standard Edition)、面向企业级开发的J2EE(Java 2 Platform, Enterprise Edition)和面向手机等移动终端开发的J2ME(Java 2 Platform, Micro Edition)。在这个版本中出现的代表性技术非常多,如EJB、Java Plug-in、Java IDL、Swing等,并且这个版本中Java虚拟机第一次内置了JIT(Just In Time)编译器(JDK 1.2中曾并存过3个虚拟机,Classic VM、HotSpot VM和Exact VM,其中Exact VM只在Solaris平台出现过;后面两个虚拟机都是内置JIT编译器的,而之前版本所带的Classic VM只能以外挂的形式使用JIT编译器)。在语言和API级别上,Java添加了strictfp关键字与现在Java编码之中极为常用的一系列Collections集合类。

      在1999年3月和7月,分别有JDK 1.2.1和JDK 1.2.2两个小版本发布。

      1999年4月27日,HotSpot虚拟机发布,HotSpot最初由一家名为“Longview Technologies”的小公司开发,因为HotSpot的优异表现,这家公司在1997年被Sun公司收购了。HotSpot虚拟机发布时是作为JDK 1.2的附加程序提供的,后来它成为了JDK 1.3及之后所有版本的Sun JDK的默认虚拟机。

      2000年5月8日,工程代号为Kestrel(美洲红隼)的JDK 1.3发布,JDK 1.3相对于JDK 1.2的改进主要表现在一些类库上(如数学运算和新的Timer API等),JNDI服务从JDK 1.3开始被作为一项平台级服务提供(以前JNDI仅仅是一项扩展),使用CORBA IIOP来实现RMI的通信协议,等等。这个版本还对Java 2D做了很多改进,提供了大量新的Java 2D API,并且新添加了JavaSound类库。JDK 1.3有1个修正版本JDK 1.3.1,工程代号为Ladybird(瓢虫),于2001年5月17日发布。

      自从JDK 1.3开始,Sun维持了一个习惯:大约每隔两年发布一个JDK的主版本,以动物命名,期间发布的各个修正版本则以昆虫作为工程名称。

      2002年2月13日,JDK 1.4发布,工程代号为Merlin(灰背隼)。JDK 1.4是Java真正走向成熟的一个版本,Compaq、Fujitsu、SAS、Symbian、IBM等著名公司都有参与甚至实现自己独立的JDK 1.4。哪怕是在十多年后的今天,仍然有许多主流应用(Spring、Hibernate、Struts等)能直接运行在JDK 1.4之上,或者继续发布能运行在JDK 1.4上的版本。JDK 1.4同样发布了很多新的技术特性,如正则表达式、异常链、NIO、日志类、XML解析器和XSLT转换器等。

      JDK 1.4有两个后续修正版:

      2002年9月16日发布的工程代号为Grasshopper(蚱蜢)的JDK 1.4.1

      2003年6月26日发布的工程代号为Mantis(螳螂)的JDK 1.4.2。

      2002年前后还发生了一件与Java没有直接关系,但事实上对Java的发展进程影响很大的事件,那就是微软公司的.NET Framework发布了。这个无论是技术实现上还是目标用户上都与Java有很多相近之处的技术平台给Java带来了很多讨论、比较和竞争,.NET平台和Java平台之间声势浩大的孰优孰劣的论战到目前为止都在继续。

      2004年9月30日,JDK 1.5发布,工程代号Tiger(老虎)。从JDK 1.2以来,Java在语法层面上的变换一直很小,而JDK 1.5在Java语法易用性上做出了非常大的改进。例如,自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环(foreach循环)等语法特性都是在JDK 1.5中加入的。在虚拟机和API层面上,这个版本改进了Java的内存模型(Java Memory Model,JMM)、提供了java.util.concurrent并发包等。另外,JDK 1.5是官方声明可以支持Windows 9x平台的最后一个JDK版本。

      2006年12月11日,JDK 1.6发布,工程代号Mustang(野马)。在这个版本中,Sun终结了从JDK 1.2开始已经有8年历史的J2EE、J2SE、J2ME的命名方式,启用Java SE 6、Java EE 6、Java ME 6的命名方式。JDK 1.6的改进包括:提供动态语言支持(通过内置Mozilla Java Rhino引擎实现)、提供编译API和微型HTTP服务器API等。同时,这个版本对Java虚拟机内部做了大量改进,包括锁与同步、垃圾收集、类加载等方面的算法都有相当多的改动。

      在2006年11月13日的JavaOne大会上,Sun公司宣布最终会将Java开源,并在随后的一年多时间内,陆续将JDK的各个部分在GPL v2(GNU General Public License v2)协议下公开了源码,并建立了OpenJDK组织对这些源码进行独立管理。除了极少量的产权代码(Encumbered Code,这部分代码大多是Sun本身也无权限进行开源处理的)外,OpenJDK几乎包括了Sun JDK的全部代码,OpenJDK的质量主管曾经表示,在JDK 1.7中,Sun JDK和OpenJDK除了代码文件头的版权注释之外,代码基本上完全一样,所以OpenJDK 7与Sun JDK 1.7本质上就是同一套代码库开发的产品。

      JDK 1.6发布以后,由于代码复杂性的增加、JDK开源、开发JavaFX、经济危机及Sun收购案等原因,Sun在JDK发展以外的事情上耗费了很多资源,JDK的更新没有再维持两年发布一个主版本的发展速度。JDK 1.6到目前为止一共发布了37个Update版本,最新的版本为Java SE 6 Update 37,于2012年10月16日发布。

      2009年2月19日,工程代号为Dolphin(海豚)的JDK 1.7完成了其第一个里程碑版本。根据JDK 1.7的功能规划,一共设置了10个里程碑。最后一个里程碑版本原计划于2010年9月9日结束,但由于各种原因,JDK 1.7最终无法按计划完成。

      从JDK 1.7最开始的功能规划来看,它本应是一个包含许多重要改进的JDK版本,其中的Lambda项目(Lambda表达式、函数式编程)、Jigsaw项目(虚拟机模块化支持)、动态语言支持、GarbageFirst收集器和Coin项目(语言细节进化)等子项目对于Java业界都会产生深远的影响。在JDK 1.7开发期间,Sun公司由于相继在技术竞争和商业竞争中都陷入泥潭,公司的股票市值跌至仅有高峰时期的3%,已无力推动JDK 1.7的研发工作按正常计划进行。为了尽快结束JDK 1.7长期“跳票”的问题,Oracle公司收购Sun公司后不久便宣布将实行“B计划”,大幅裁剪了JDK 1.7预定目标,以便保证JDK 1.7的正式版能够于2011年7月28日准时发布。“B计划”把不能按时完成的Lambda项目、Jigsaw项目和Coin项目的部分改进延迟到JDK 1.8之中。最终,JDK 1.7的主要改进包括:提供新的G1收集器(G1在发布时依然处于Experimental状态,直至2012年4月的Update 4中才正式“转正”)、加强对非Java语言的调用支持(JSR-292,这项特性到目前为止依然没有完全实现定型)、升级类加载架构等。

      到目前为止,JDK 1.7已经发布了9个Update版本,最新的Java SE 7 Update 9于2012年10月16日发布。从Java SE 7 Update 4起,Oracle开始支持Mac OS X操作系统,并在Update 6中达到完全支持的程度,同时,在Update 6中还对ARM指令集架构提供了支持。至此,官方提供的JDK可以运行于Windows(不含Windows 9x)、Linux、Solaris和Mac OS平台上,支持ARM、x86、x64和Sparc指令集架构类型。

      2009年4月20日,Oracle公司宣布正式以74亿美元的价格收购Sun公司Java商标从此正式归Oracle所有(Java语言本身并不属于哪间公司所有,它由JCP组织进行管理,尽管JCP主要是由Sun公司或者说Oracle公司所领导的)。由于此前Oracle公司已经收购了另外一家大型的中间件企业BEA公司,在完成对Sun公司的收购之后,Oracle公司分别从BEA和Sun中取得了目前三大商业虚拟机的其中两个:JRockit和HotSpot,Oracle公司宣布在未来1~2年的时间内,将把这两个优秀的虚拟机互相取长补短,最终合二为一。可以预见在不久的将来,Java虚拟机技术将会产生相当巨大的变化。

      2011年7月28日,Oracle公司发布Java SE 1.7

      2014年3月18日,Oracle公司发表Java SE 1.8

      Java语言有下面一些特点 :简单、面向对象、分布式、解释执行、鲁棒、安全、体系结构中立、可移植、高性能、多线程以及动态性。

    最后来看张表格:

    版本描述
    1991年1月Sun公司成立了Green项目小组,专攻智能家电的嵌入式控制系统
    1991年2月放弃C++,开发新语言,命名为“Oak”
    1991年6月JamesGosling开发了Oak的解释器
    1992年1月Green完成了Green操作系统、Oak语言、类库等开发
    1992年11月Green计划转化成“FirstPerson”,一个Sun公司的全资母公司
    1993年2月获得时代华纳的电视机顶盒交互系统的订单,于是开发的重心从家庭消费电子产品转到了电视盒机顶盒的相关平台上。
    1994年6月FirstPerson公司倒闭,员工都合并到Sun公司。Liveoak计划启动了,目标是使用Oak语言设计出一个操作系统。
    1994年7月第一个Java语言的Web浏览器WebRunner(后来改名为HotJava),Oak更名为Java。
    1994年10月VanHoff编写的Java编译器用于Java语言
    1995年3月在SunWorld大会,Sun公司正式介绍了Java和HotJava。
    1996年1月JDK1.0发布
    1997年2月J2SE1.1发布
    1998年12月J2SE1.2发布
    1999年6月发布Java的三个版本:J2SE、J2EE、J2ME
    2000年5月J2SE1.3发布
    2001年9月J2EE1.3发布
    2002年2月J2SE1.4发布
    2004年9月J2SE1.5发布,将J2SE1.5改名JavaSE5.0
    2005年6月JavaSE6.0发布,J2EE更名为JavaEE,J2SE更名为JavaSE,J2ME更名为JavaME
    2006年12月JRE6.0发布
    2006年12月JavaSE6发布
    2009年12月JavaEE6发布
    2009年4月Oracle收购Sun
    2011年7月JavaSE7发布
    2014年3月JavaSE8发布
    展开全文
  • 常用的java应用服务器

    千次阅读 2014-04-30 11:40:31
    Java应用服务器很多,从功能上分为两类:WEB 应用服务器 Java EE 应用服务器。相对来说 Java EE 服务器的功能更加强大。 WEB 服务器  Tomcat 、Bejy Tiger 、Geronimo 、 Jetty 、Jonas 、Jrun 、Or
  • 常用的java应用服务器大概介绍

    万次阅读 2016-12-27 13:59:29
    何为应用服务器呢?它主要为应用程序提供运行环境,为组件... 应用服务器 Java EE 应用服务器。相对来说 Java EE 服务器的功能更加强大。 WEB 服务器 Tomcat 、Bejy Tiger 、Geronimo 、 Jetty 、Jonas 、Jru
  • Java桌面应用程序

    万次阅读 多人点赞 2017-04-13 15:27:47
    java桌面应用印象因为桌面程序运行在宿主机器上, 所以比如你运行java桌面程序,必然要安装java虚拟机, 也就是相当于在操作系统上再加一层抽象, 这与直接调用api的桌面程序效率相比,或多或少低一点。 因为...
  • JAVA应用服务器都有那些?

    千次阅读 2019-11-05 22:52:47
    从功能上看分为两种:web应用服务器和java EE服务器 web服务器 * Tomcat、Jetty、Orion、Resin、 Bejy Tiger、Geronimo、Jonas、Jrun java EE 服务器 TongWeb 、BES Application Server 、 Apusic Application ...
  • 首先探讨一下为什么要使用nginx:1、类似于apache+resin,nginx用于提供静态页面服务,比java服务器要强...2、nginx在配合java应用服务器时相比apache耦合度更低,所以它可以用相同的方式连上所有能支持http服务能力的j
  • Java发展简史

    万次阅读 2020-03-21 13:54:28
    Java是由Sun Microsystems公司(简称Sun公司)于1995 年 5 月推出的 Java程序设计语言和Java平台的总称。Java语言是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由当时任职太阳微系统的 詹姆斯 · 高斯林 ...
  • Java未来的应用前景

    千次阅读 2017-03-13 11:08:48
    Java未来的应用前景,从历史来看,Java技术自1995年问世以来,在我国的应用和开发也得到了迅速普及,总体来看,这些应用主要集中于企业应用开发。据有关单位调查显示,从开发领域的分布情况上看Web开发占了一半以上...
  • Java的热门应用有哪些

    千次阅读 2019-07-03 10:23:09
    随着互联网的发展,技术的更新迭代,Java作为目前流行的计算机编程语言之一,吸引了众多的IT爱好者。如果你是一个初学者,刚刚开始学习Java,你可能会想Java具体应用在哪些领域呢?接下来就让小编带你详细了解Java的...
  • 本文为大家全面解析当前时代Java和Java工程师的行业现状,市场发展及就业薪资等内容,帮你更好的了解行业趋势。 一、生活中,无处不在的Java 只要能够接触到互联网就离不开Java,我们大部分人看到的都是...
  • Java语言发展历史

    千次阅读 2020-12-09 09:41:43
    Java语言发展历史1 20世纪90年代 单片机器 家电设备 sun 绿色计划 詹姆斯-高斯林 C++ 1983年 不能跨平台 橡树 oak语言 1995年 Java问世。 1996年 Java1.0。 1999年 Java1.2发布(JAVA SE、JAVA EE、JAVA ME)。 … ...
  • Spring boot(0)一JAVA Web发展spring boo发展

    万次阅读 多人点赞 2015-04-17 11:18:37
    本书由 Wrox出版,介绍了当时 Java 企业应用程序开发的情况,并指出了 Java EE EJB 组件框架中的存在的一些主要缺陷。在这本书中,他提出了一个基于普通 Java依赖注入的更简单的解决方案。 在书中,他展示了...
  • 2021Java最新技术发展趋势

    千次阅读 2021-09-13 15:18:06
    当前,计算机网站和应用程序的世界已经变得非常依赖Java,以至于大多数网站和应用程序都需要在我们日常使用的设备上安装Java,以使它们正常运行。从具有互联网功能的手机到巨型高科技超级计算机,Java是最受欢迎的...
  • Java的由来 当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。那么Java到底有何神奇之处呢? Java语言其实最是诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个...
  • Java中BIO、NIOAIO的区别和应用场景

    万次阅读 多人点赞 2017-04-21 19:37:31
    最近一直在准备面试,为了使自己的Java水平更上一个档次,拜读了李林峰老师的《Netty权威指南》,了解了Java关于IO的发展和最新的技术,真是受益匪浅,现在把我总结的关于BIO、NIO和AIO的区别和应用场景概述一遍。...
  • Java EE发展

    千次阅读 2015-07-05 16:50:46
    前言  最近的这段时间一直在学习Java EE,刚刚完成了从0到1的蜕变,所以顺便整理一下我所... Java EE(Java Enterprise Edition)是一种企业级应用的软件架构,同时是一种思想,一套规范。 二.Java EE的发展
  • FineReport是一个纯Java软件,因此对于J2EE的项目,可以做到无缝集成。 报表服务器并非物理概念的服务器,而是以一个标准的J2EE应用的形式或者jar包的形式提交给程序。应用程序通过url来调用报表,或者通过开放的...
  • Java发展历史

    千次阅读 2018-07-31 10:06:20
    Java API类库中Java SE API子集和Java虚拟机两部分成为JRE,JRE是支持Java程序运行的标准环境   1.1 按照Java技术关注的重点业务来划分,Java体系分为四个平台: Java Card:支持小程序运行小内存的平台上。....
  • Java企业级应用架构

    千次阅读 2010-09-14 21:43:00
    Java企业级应用架构设计中的分布式结构大致可以分为单级结构、2级结构、3级结构N级结构。充分理解和应用分布式结构可以更好的理解当代网络计算的现状,设计出更优的企业级应用程序。 <br /> 长久以来...
  • java发展历史

    千次阅读 多人点赞 2018-03-04 22:22:05
    1995年5月23日,Java语言诞生...1996年9月,约8.3万个网页应用JAVA技术来制作 1997年2月18日,JDK1.1发布 1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录 1997年9月,JavaDevel...
  • JAVA 语言的发展简史

    万次阅读 2016-05-31 19:47:24
    JAVA 语言历史近二十年, 已发展成为人类计算机史上影响深远的编程语言. JAVA 语言所崇尚的开源、自由等精神, 吸引了全世界无数优秀的程序员. 事实是, 从人类有史以来, 从来没有一门编程语言能吸引这么多的...
  • Java语言的发展简史

    万次阅读 多人点赞 2018-06-23 20:19:57
    【前言】  我们经常会听到,要想学好...本小菜接触并且用java进行开发,为了更好的掌握这本编程语言,小菜也从它的发展史开始学习。 【内容】  下面由小菜给大家简单介绍一下java发展历程:  Java语言的诞...
  • java详细学习路线及路线图

    万次阅读 多人点赞 2018-05-20 16:15:02
    java详细路线: ... 本文将告诉你学习Java需要达到的30个目标,学习过程中...Java发展到现在,按应用来分主要分为三大块:J2SE,J2MEJ2EE。 这三块相互补充,应用范围不同。 J2SE就是Java2的标准版,主要用于...
  • Java语言发展简史

    千次阅读 2017-05-31 14:27:07
    java语言的发展简史 1990年末,Sun公司准备为下一代智能家电(电视机,微波炉,电话)编写一个通用的控制系统。该团队最初考虑使用c++语言,很多成员包括sun的首席科学家Bill Joy,发现c++语言在某些方面(复杂,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 320,106
精华内容 128,042
关键字:

java的应用和发展

java 订阅