Java 发展简史:初生遇低谷,崛起于互联网

Java 发展简史:初生遇低谷,崛起于互联网

Java 起源与诞生

20世纪90年代,单片式计算机系统诞生,单片式计算机系统不仅廉价,而且功能强大,使用它可以大幅度提升消费性电子产品的智能化程度。

SUN公司为了抢占市场先机,在1991年成立了一个由詹姆斯·高斯林(James Gosling)领导,名为“Green”项目小组,目的是开发一种能够在各种消费性电子产品上运行的程序架构。

那么使用何种编程语言来设计,是项目小组头疼的事。当时C++较为有优势的,项目小组首先考虑的是采用它来编写程序,但C++过于复杂和庞大,再加上由于消费电子产品所采用的嵌入式处理器芯片的种类繁杂,需要让编写的程序跨平台运行,假如用C++编写的话对程序的跨平台运行不友好。

最后项目小组决定:既不用C++编写,也不开发全新的编程语言,而是对C++进行改造:去除了C++复杂的指针和内存管理,并结合嵌入式系统的实时性要求,最终在1992年,他们开发了一种名为“Oak”的面向对象语言。科当他们在向硬件生产商进行演示的时候,硬件生产商对此并不感冒,OaK语言因为缺乏硬件的支持而无法进入市场,从而被搁置一旁。1994年,项目小组看到了浏览器在未来的发展前景,于是决定将OaK应用于万维网。1995年,他们用OaK语言研发了一种能将小程序嵌入到网页中执行的技术——Applet,由于Applet不仅能嵌入网页,还可随同网页在网络上进行传输,这让无数的程序员看到了OaK这门语言,与此同时,OaK正式更名为Java。从此,Java在互联网的推动下火了。

Java的衍变

1996年1月,SUN公司推出了JDK1.0。在JDK1.0发布后,有很多程序员学习并运用Java来制作网页,JDK包括两大部分:开发工具和运行环境。

运行环境包括核心API、集成API、用户界面API、发布技术、Java虚拟机(JVM)。JDK1.0的发布,标志着Java成为一种独立的开发工具。在同年9月,约有8.3万个网页应用了Java技术来制作。

JDK1.0的代表性技术有:Java虚拟机、Applet、AWT等。

1997年2月,SUN公司紧接着推出了JDK 1.1,在推出后3周时间里,达到了近22万次的下载量。4月2日,首届Java One大会在美国旧金山召开,参加会议的人超过一万人,创造了当时全球同类会议规模最高的纪录。9月,Java Developer Connection社区成员超过10万,同年还有10个最主要的操作系统供应商正式声明将在他们的产品中使用Java。

JDK1.1的代表性技术有:JDBC、JavaBeans、RMI、JAR文件格式、Java语法中的内部类和反射。

1998年12月8日,JDK1.2——第二代Java平台的企业版J2EE发布。

1999年6月,Sun公司把Java体系分为三个方向:

J2ME(Java2 Micro Edition,Java2平台的微型版),应用于移动、无线及有限资源的环境;

J2SE(Java 2 Standard Edition,Java 2平台的标准版),应用于桌面环境;

J2EE(Java 2Enterprise Edition,Java 2平台的企业版),应用于基于Java的应用服务器。

随着供应商的不同,Java的API也分为三大类:

Java Core API:Java核心类库;

Java Optional API:对之前API的扩充;

特殊API:由特殊厂商或组织提供的API。

Java 2平台的发布,是Java发展过程中最重要的一个里程碑,标志着Java的应用开始普及。

JKD1.2的代表性技术有:Swing、Java IDL、EJB、Java Plug-in等,在API文档中,添加了strictfp关键字和Collections集合类。

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

2000年5月,JDK1.3、JDK1.4和J2SE1.3相继发布,J2SE1.3是对J2SE1.2的补充和扩展,从应用领域的角度分析,JavaSE1.3已经涵盖了数据库、WEB、网络、图形、多媒体、电话、影像等大部分的信息技术领域。

2002年2月26日,J2SE1.4发布。与J2SE1.3相比,多了近62%的类和接口。在这些新特性当中,还提供了广泛的XML支持、安全套接字(Socket)支持(通过SSL与TLS协议)、全新的I/OAPI、正则表达式、日志与断言。

2004年9月30日,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE 1.5更名为Java SE 5.0(内部版本号1.5.0)。Java SE 5.0包含了从1996年发布1.0版本以来的最重大的更新,其中包括泛型支持、基本类型的自动装箱、改进的循环、枚举类型、格式化I/O及可变参数。

2005年6月,在Java One大会上,Sun公司发布了Java SE 6。此时,Java的各种版本已经更名,已取消其中的数字2,如J2EE更名为JavaEE,J2SE更名为JavaSE,J2ME更名为JavaME。

2011年7月28日,收购Sun公司的Oracle发布了 Java SE 7,引入了二进制整数、支持字符串的switch语句、棱形语法、多异常捕抓、自动关闭资源的try语言等新特性。

2014年3月18日,Oracle公司发布Java SE8,这次版本升级为Java带来了全新的Lambda表达式、流式编程等大量新特性,这些新特性使得Java变得更加强大。

2017年9月22日,Oracle公司发布Java SE 9,这次版本升级强化了Java的模块化系统,让Java语言更轻量化,且采用了更高效、更智能的GI 垃圾回收器,并在核心类库上进行大量更新,可进一步简化编程。

2018 年 3 月 21 日,Java SE 10 发布,Java 10 版本带来了很多新特性,其中最备受广大开发者关注的莫过于局部变量类型推断。此外,还包垃圾收集器改善、GC 改进、性能提升、线程管控等新特性。

2018年9月26日,Java SE 11 发布。这是 Java 大版本周期变化后的第一个长期支持版本(LTS版本持续支持到2026年9月)。Java11 带来了 ZGC、Http Client 等重要特性,一共包含 17 个 JEP(JDK Enhancement Proposals,JDK 增强提案)。

2019年3月20日,Java SE 12 发布。Java 12是短期支持版本,可在下一个版本发布之前获得Oracle的商业支持。

2019年9月23日,Java SE 13发布,此版本中添加了“文本块”,文本块是一个多行字符串文字,避免对大多数转义序列的需要,以可预测的方式自动格式化字符串,并在需要时让开发人员控制格式。

Java历经千辛万苦,换来春暖花开

经过二十多年的版本更新,一步步的积累,造就了如今的Java。一览Java在更新历程中所新增的特性:

Java 1.0:

  • 虚拟机——Sun Classic VM
  • Java小应用程序——Applet
  • Java图形设计——AWT

Java 1.1:

  • Jar包——Jar
  • Java规范——JavaBeans
  • 连接数据库——JDBC(Java DataBase Connectivity)远程调用——RMI
  • 内部类——Inner Class
  • 反射——Reflection

Java 1.2:

  • 字符串常量做内存映射
  • 对打包的Java文件进行数字签名
  • 控制授权访问系统资源的策略工具
  • JDBC中引入可滚动结果集,BLOB,CLOB,批量更新和用户自定义类型
  • 在Applet中添加声音支持
  • 即时编译技术——JIT
  • 运行插件——Java Plug-In
  • J2EE规范——EJB
  • 平台对象请求代理体系结构——Java IDL
  • 集合——Collections

Java 1.3:

  • 数学运算
  • CORBA IIOP实现RMI的通信协议
  • Java 2D新特性
  • Jar文件索引
  • 时间——Timer API
  • 声音——Java Sound API

Java1.4:

  • 正则表达式
  • 异常链
  • XML解析器
  • XSLT转换器
  • XML处理
  • Java打印服务
  • JDBC高级——Java Web Start JDBC 3.0
  • 可以操作系统的高级功能——Preferences
  • 高级流——NIO
  • 日志功能——Logging
  • 图片流——Imgae I/O

Java1.5:

  • 自动装箱拆箱
  • 泛型
  • 元数据
  • 静态引入
  • 内省——Introspector
  • 枚举——enum
  • 可变长参数——Varargs
  • 高级虚幻——foreach
  • 内存模型——JMM
  • 并发包——concurrent

Java SE 6:

  • 命名方式变更
  • 脚本语言
  • 编译API和微型HTTP服务器API
  • 锁与同步
  • 垃圾收集
  • 类加载
  • Kerberos
  • LDAP
  • JDBC高级——JDBC 4.0
  • Java™ 编程语言编译器的接口——Java Compiler
  • 可插拔注解
  • 公钥基础设——Native PKI
  • 通用安全服务——Java GSS
  • web服务——Web Services

Java SE 7:

  • switch语句块中允许以字符串作为分支条件
  • 创建泛型对象时应用类型推断
  • try-with-resources
  • null值得自动处理
  • 数值类型可以用二进制字符串表示
  • 引入Java NIO.2开发包
  • 动态语言支持
  • 安全的加减乘除
  • Map集合支持并发请求

Java SE 8:

Java SE 8在Java更新的历史中是一个非常重要的版本,引入的函数式编程使得Java编程更为强大,较典型的有:

  • Java工具的操作增强
  • Unicode增强功能,包括对Unicode 6.2.0的支持
  • 并行阵列排序
  • 标准编码和解码Base64
  • 无符号算术支持
  • 新的并发
  • Lambda表达式
  • 方法参数反射Java XML技术增强功能
  • 虚拟机操作增强JSSE服务器中的SSL / TLS服务器名称指示(SNI)扩展支持
  • 支持AEAD算法……

Java SE 9、10……版本的不断更新,是对旧版本改良以及补充,越更新,越友好。

看今朝,Java 位居世界编程语言榜首,风光无限好。忆往昔,初生之时便陷入低谷,后借互联网之势拔地而起,J2SE攻占桌面、J2ME攻占手机、J2EE攻占服务器,Java三大强军也曾饱受岁月蹉跎,后浴火重生,最终投入Oracle怀抱,换得春暖花开。此情此景,悲之、喜之、感之、叹之,Java如今之风光,并非一日之功,望天下众程序员惜之、盼之。

Java已崛起,未来有可期

1、用发展的眼光看Java:API稳更新,复用性稳强化

Java的更新速度是很快的,每隔一段时间都会进行一次版本迭代,来适应新技术的发展趋势,学Java的程序员遍布全世界,很庆幸我也是茫茫Java程序员中的一员,近些年来很火热的大数据也是和Java息息相关。Java本身具有很大的开放性和可扩展性,再加上Java如此雄厚的历史背景,我相信一个语言只要不断发展,就很难会被时代淘汰。

2、用就业的眼光看Java:互联网的时代、人工智能的时代、5G+的时代,Java一直都在

随着网络的发展,如今Java已广泛应用于数据中心、PC、游戏、移动电话等行业,从近几年的招聘量上来看,对Java开发人员的需求量依旧很大,Java的学习依旧是主流,发展前景一片光明。我国信息化人才培养还处于发展阶段,导致社会实际需求人才基数远远大于信息化人才的培养基数,使得数以万计的中小企业急需全面系统掌握Java软件开发基础技能与知识的软件工程师。Java软件工程师就业前景良好,再加上Java软件工程师不仅IT专业企业需要,广大的非IT企业也需要,前景是较为乐观的。目前我所了解的有:1、Java企业级应用开发目前Java在许多行业的企业信息应用方面有很多,比如邮箱、物流、医疗、股票、OA、金融等信息系统。这些和目前的主流行业密切相关的,所以Java开发者的需求还是较大,待遇也是相当不错,工资水平与Java互联网方向的差不多,很容易在一些大型企业就业,只要你有恒心有毅力地学习,我想至少面临这么多选择时,你不会一无所用,机会总是会留给有准备的人。2、Java网站建设近些年来,网站建设业务一直呈现快速上升的势头,行业市场也是越来越大,很多新技术的应用使得企业网站建设更具魅力、更加强大。Java编程语言将使网站结构更紧密,访问更流畅,更能适应新的要求。虽然以目前的市场分析Java做网站成本太高,而且对硬件要求也比较高,中小企业大多都会选择使用PHP语言进行开发,但是在很多大型企业还是用Java语言的比较多,所以你依旧有机会,向大厂冲鸭。3、 Android开发Android是全球最大的智能手机操作系统,前几年Android发展快速,在国内的市场份额也是越来越高,但在快速兴起的小程序和H5的冲击下,导致Android原生开发门槛增高,公司对Android开发工程师的要求也提高了,这就要求学习Android的程序员们精于技术,优秀的Android开发工程师仍然存在不小的缺口,中、高级的Android工程师还是很受欢迎的。Android应用的主要开发语言就是Java,所以如果你技术很精,选择Android这个方向还是很不错的。4、Java游戏开发Java可用来编写游戏脚本,如Bean、Shell、Groovy等脚本语言可以方便、无缝的和Java语言进行交互,这些极大地促进Java游戏编程。当前国内游戏较为火热,很多热门电竞,所以国内游戏专业人才的需求一直都存在缺口。所以,好好努力去填补这些缺口吧,只要你有过人的技术,不愁没饭吃。

不忘初心,与Java同行

我是一名学Java的程序员,通过整理撰写本文,我又重新认识了Java。在我看来,Java的”火“并不是偶然的,有很多因素的积累而成。Java的发展进程值得考究,作为一名Java的忠实粉丝,Java的重要性不言而喻,相信不管是计算机专业还是非计算机专业的程序员也会感同身受。对我而言,其他Java程序员也是一样,因为对Java有着持久不衰的热爱,所以愿意不断追求专业追求卓越,而带着这份忠诚的热爱,我们不畏风雨,一路前行。不忘初心,方得始终,我愿以Java为马,诗酒趁年华!

参考:Java百度百科

原文地址:https://www.cnblogs.com/zyx110/p/12177463.html

时间: 2024-10-14 22:17:25

Java 发展简史:初生遇低谷,崛起于互联网的相关文章

1.3、Java发展简史

Java发展简史 版本 年份 语言新特性 类与接口的数量 1.0   1996 语言本身 211 1.1   1997 内部类    477 1.2 1998 strictfp修饰类 1524 1.3 2000 无 1840 1.4 2002 断言 2723 5.0 2004 泛类型.for each 可变元参数 自动装箱.元数据.枚举.静态导入 3279 6 2006 无 3793 7 2011 基于字符串的switch.钻石操作符 二进制字面量.异常处理改进 4024 8 2014 lamb

3.java发展简史

1991年,James Gosling在SUN(Stanford University Network)公司的工程师小组想要设计这样一种小型计算机语言.该语言主要用于像电视盒这样的消费类电子产品.另外,由于不同的厂商选择不同的CPU和操作系统,因此,要求该语言不能和特定的体系结构绑在一起,要求语言本身是中立的,也就是跨平台的.所以,将这个语言命名为“Green”,类似于绿色软件的意思.后来,改名为Oak,橡树的意思.改名后发现已经有一种语言叫这个名字了,再改名叫Java.Java语言发展到今天经

1.Java的发展简史

命名:1991年,Gosling自己起名叫Oak(橡树),后改成现在的java(咖啡). 1995年5月23日,Java语言诞生 . 1998年12月Java 1.2版本发布后三天,Sun公司将其名称改为:Java2标准版软件开发工具箱1.2版本(即J2SE); Sun销售部人员感觉增加小数点后面的数值并不足以体现1.2版本的重大改进,但是这是发布之后才意识到这个问题的,所以JDK的命名版本也一直延用小数代表版本的方式. 1999年6月,发布了三个版本:标准版(J2SE).企业版(J2EE)和微

[转] Java多线程发展简史

这篇文章,大部分内容,是周五我做的一个关于如何进行Java多线程编程的Knowledge Sharing的一个整理,我希望能对Java从第一个版本开始,在多线程编程方面的大事件和发展脉络有一个描述,并且提及一些在多线程编程方面常见的问 题.对于Java程序员来说,如果从历史的角度去了解一门语言一个特性的演进,或许能有不同收获. 引言 首先问这样一个问题,如果提到Java多线程编程,你会想到什么? ● volatile.synchronized关键字? ● 竞争和同步? ● 锁机制? ● 线程安全

***Java多线程发展简史

http://blog.jobbole.com/28297/ 本文来自四火的博客(@RayChase),由@_Zhijun 推荐 这篇文章,大部分内容,是周五我做的一个关于如何进行Java多线程编程的Knowledge Sharing的一个整理,我希望能对Java从第一个版本开始,在多线程编程方面的大事件和发展脉络有一个描述,并且提及一些在多线程编程方面常见的问题.对于Java程序员来说,如果从历史的角度去了解一门语言一个特性的演进,或许能有不同收获. 引言 首先问这样一个问题,如果提到Java

AI技术说:人工智能相关概念与发展简史

作者:个推大数据科学家朱金星 作为近几年的一大热词,人工智能一直是科技圈不可忽视的一大风口.随着智能硬件的迭代,智能家居产品逐步走进千家万户,语音识别.图像识别等AI相关技术也经历了阶梯式发展.如何看待人工智能的本质?人工智能的飞速发展又经历了哪些历程?本文就从技术角度为大家介绍人工智能领域经常提到的几大概念与AI发展简史. 一.人工智能相关概念1.人工智能(Artifical Intelligence, AI):就是让机器像人一样的智能.会思考,是机器学习.深度学习在实践中的应用.人工智能更适

计算工具的发展简史

现在我们所说的计算机,其全称是通用电子数字计算机,"通用"是指计算机可服务于多种用途,"电子"是指计算机是一种电子设备,"数字"是指在计算机内部一切信息均用0和1的编码来表示.计算机的出现是20世纪最卓越的成就之一,计算机的广泛应用极大地促进了生产力的发展. 自古以来,人类就在不断地发明和改进计算工具,从古老的"结绳记事",到算盘.计算尺.差分机,直到1946年第一台电子计算机诞生,计算工具经历了从简单到复杂.从低级到高级.从

Web前端发展简史

Web前端发展简史 有人说“前端开发”是IT界最容易被误解的岗位,这不是空穴来风.如果你还认为前端只是从美工那里拿到切图, JS和CSS一番乱炖,难搞的功能就去网上信手拈来,CtrlC + Ctrl V的话,那就正中了这份误解的下怀.经过十几年的发展,web前端早已脱离了原来边缘化的形态,扮演了移动互联网开发链条中最关键的角色,是应用或产品能否打动用户的踹门砖.那么什么是前端开发,其又包含了哪些内容? 前端开发的定义 从狭义的定义来看,“前端开发”是指围绕HTML.JavaScript.CSS这

jdk 1.7系列(一) JAVA IO 简史

JAVA IO简史                                                      Java之所以能够广泛流传,其强大.丰富.简明的类库功不可没,编程时要解决的大多数问题几乎都可以在其中找到支持.但经验丰富的Java开发人员都知道,在老版本的Java中,有些地方不是那么给力.曾经他们最崩溃的就是Java的输入/输出(I/O)API. JAVA 1.0到1.3 在Java早期版本(1.0 - 1.3)中没有完整的 I/O 支持.在开发时很可能面临以下问题: