Java的发展史

     扩展:高司令 老骥伏枥,志在千里的 Java 之父

  计算机硬件发展的同时,软件始终伴随其步伐迅猛发展,就计算机的编程语言而言,也划分为三代。
   第一代:机器语言。每条指令用二进制编码,效率很低。
  第二代:汇编语言。用符号编程,和具体机器指令有关,效率不高。
  第三代:高级语言:如FORTRAN、COBOL、BASIC、PASCAL等都属于高级语言。

 

Java发展的时间表。 (版本号 名称 中文名 发布日期)
          JDK 1.1.4 Sparkler 宝石 1997-09-12
          JDK 1.1.5 Pumpkin 南瓜 1997-12-13
          JDK 1.1.6 Abigail 阿比盖尔--女子名 1998-04-24
          JDK 1.1.7 Brutus 布鲁图--古罗马政治家和将军 1998-09-28
          JDK 1.1.8 Chelsea 切尔西--城市名 1999-04-08
          J2SE 1.2 Playground 运动场 1998-12-04
          J2SE 1.2.1 none 无 1999-03-30
          J2SE 1.2.2 Cricket 蟋蟀 1999-07-08
          J2SE 1.3 Kestrel 美洲红隼 2000-05-08
          J2SE 1.3.1 Ladybird 瓢虫 2001-05-17
          J2SE 1.4.0 Merlin 灰背隼 2002-02-13
          J2SE 1.4.1 grasshopper 蚱蜢 2002-09-16
          J2SE 1.4.2 Mantis 螳螂 2003-06-26
          J2SE 5.0 (1.5.0) Tiger 老虎 2004-10
          J2SE 6.0 (Beta) Mustang 野马 2006-04

Java的版本发布历史:

1995年5月23日,Java语言诞生
1996年1月,第一个JDK-JDK1.0诞生
1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术
1996年9月,约8.3万个网页应用了JAVA技术来制作
1997年2月18日,JDK1.1发布
1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之纪录
1997年9月,JavaDeveloperConnection社区成员超过十万
1998年2月,JDK1.1被下载超过2,000,000次
1998年12月8日,JAVA2企业平台J2EE发布
1999年6月,SUN公司发布Java的三个版本:标准版、企业版和微型版(J2SE、J2EE、J2ME)
2000年5月8日,JDK1.3发布
2000年5月29日,JDK1.4发布
2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机
2001年9月24日,J2EE1.3发布
2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提升
2004年9月30日18:00PM,J2SE1.5发布,是Java语言的发展史上的又一里程碑事件。为了表示这个版本的重要性,J2SE1.5更名为J2SE5.0
2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名以取消其中的数字“2”:J2EE更名为Java EE, J2SE更名为Java SE,J2ME更名为Java ME。
2006年11月13日,SUN公司宣布Java全线采纳GNU General Public License Version 2,从而公开了Java的源代码。
2011年7月28日,Oracle正式发布Java 7。
JDK1.8......

2009~2010年,最终由于sun公司自己的原因,根据协议,甲骨文
将以每股9.5美元的价格收购Sun,交易总价值约为74亿美元,被
oracle公司收购。但java语言作为开源高级语言,被世界java程
序员不断的发展,一个语言的出生到结束,应该为社会,做了很大
贡献,我们值得尊敬。

 

Part 1. Java 发展简史

  • 起源:"Green" 项目

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

    SUN 公司为了抢占市场先机,在 1991 年成立了一个由詹姆斯·高斯林(James Gosling)领导,名为 “Green” 项目小组,目的是开发一种 能够在各种消费性电子产品上运行的程序架构主要是像 有线电视转换盒 这一类 处理能力和内存都很有限,并且 CPU 厂商又各不相同 的消费设备)。

    由于这些消费设备的处理能力和内存都有限,所以语言必须 非常小且能够生成非常紧凑的代码。另外,由于不同厂商会选择不同的 CPU,因此很重要的一点是这种语言 不应该与任何特定的体系结构绑定。代码短小、紧凑且与平台无关,这些要求促使开发团队设计出一个 可移植的语言,可以为虚拟机生成中间代码。

    不过,Sun 公司的人都有 UNIX 的应用背景。因此,所开发的语言以 C++ 为基础,而不是 Lisp/ Smalltalk 或 Pascal。不过,就像 Gosling 在专访中谈道:“毕竟,语言只是实现目标的工具,而不是目标本身。”

    Gosling 把这种语言称为 "Oak"(直译为橡树,大概是因为它非常喜欢自己办公室窗外的一颗橡树...)。后来 Sun 公司发现,Oak 是一种已有的计算机语言名字,于是 Gosling 和他的团队进行了一次头脑风暴,多次讨论后,从 Java/ DNA/ SILK/ RUBY 中决定使用 Java 来命名。事实证明这是一个很有灵感的选择。

  • 埋没:没人为 "Green" 项目买单

    1992 年,Green 项目发布了它的第一个产品,称之为 「* 7」。这个产品可以提供非常智能的远程控制。遗憾的是,Sun 公司对生产这个产品并不感兴趣。Green 项目组的人员必须找出其他的方法来讲他们的技术推向市场。

    然而,仍然没有任何一家标准消费品电子公司对此感兴趣。于是,Green 项目组投标了一个设计有线电视盒的项目,它能提供视频点播等新型有线服务,但他们没能拿到这个合同 (有趣的是,得到这个项目的公司的领导恰恰是开辟 Netscape 公司的 Jim Clark。Netscape 公司后来对 Java 的成功给予了很大的帮助。)

    Green 项目 (这时已经换了一个新名字 ———— "First Person 公司") 在 1993 年一整年以及 1994 年上半年,一直在苦苦寻找买家购买他们的技术。然而,一个也没有找到 (Partick Naughton ———— 项目组的创始人之一,也是完成了大多数营销工作的人,声称为了销售这项技术,已累计飞行了 300,000 英里)。

    1994 年 First Person 公司解散了。

  • 转机:Internet的壮大

    当这一切在 Sun 公司发生的时候,Internet 的万维网也在日渐发展壮大。万维网的关键是把超文本页面转换到屏幕上的浏览器。

    1994 年大多数人都在使用 Mosaic,这是一个 1993 年出自伊利诺斯大学超级计算中心的非商业化的 Web 浏览器( Mosaic 的一部分是由 Marc Andreessen 编写的。当时,他作为一名参加半工半读项目的本科生, 编写了这个软件,每小时的薪水只有 6.85 美元。他后来成了 Netscape 公司的创始人之一和技术总监, 可谓名利双收。)

    在接受 SunWorld 采访的时候,Gosling 说在 1994 年中期,Java 语言的开发者意识到: “我们能够建立一个相当酷的浏览器。在客户机/ 服务器主流模型中,浏览器恰好需要我们已经完成的一些工作:体系结构中立、实时、可靠、安全 ———— 这些在工作站环境并不太重要,所以,我们决定开发浏览器”

    实际的浏览器是由 Patrick Naughton 和 Jonathan Payne 开发的,并演变为 HotJava 浏览器。为了炫耀 Java 语言超强的能力,HotJava 浏览器采用 Java 编写。设计者让 HotJava 浏览器具有在网页中执行内嵌代码的能力。 这一 “技术证明” 在 1995 年 5 月 23 日的 SunWorld'95 上得到展示,同时引发了人们延续至今的对 Java 的狂热追逐。

    至此,这一场持续长达 20 多年的「Java 热」开始了。

  • Part 2. Java 与 Internet

    如果 Java 仅仅只是众多的程序设计语言中的一种,你可能就会问:为什么它如此重要呢?为什么它促使计算机编程语言向前迈进了革命性的一步?

    如果从传统的程序设计的角度看,问题的答案似乎不太明显。尽管 Java 对于解决传统的单机程序设计问题非常有用,但同样重要的事,它解决了在万维网(WWW)上的程序设计问题

    • Web 1.0 时代的程序设计问题
      在刚创造 Java 的年代(20 世纪 90 年代),整个互联网还处于 Web 1.0 的网络萌芽阶段

      问题一:网页没有交互

      Web 1.0 的网站是静态的。最初的互联网只有一种很简单的 单向过程:你 对某一个服务器发起一个请求,然后它 返回 给你一个 文件,你的机器(俗称客户端)上的 浏览器软件 根据本地机器的格式来 解读并展示 这个文件的内容。这期间没有任何的交互发生,因为最初的浏览器只是一个 "展示器",它甚至不能执行最简单的计算任务。(另一方面,它确是安全的,因为它在你的本地机器上不会执行任何程序,而这些程序可能包含 bug 和病毒)

      用户 只能访问 这些站点而不会对它们做出任何贡献。这就像你捧起书架中的一本书一样,它是一种 「只读」 模式的存在,如果你想与创造这本书的出版社也好,作者也好建立链接,只能通过其他的一些方式。(当时的网站也是主要是向消费者展示产品,从感兴趣的消费者那里收钱)

      1996 年苹果公司主页

      很快人们就不满足于只是从服务器传递回页面,人们希望实现完整的客户/ 服务器能力,使得客户可以将信息反馈给服务器,来完成例如:在服务器上进行数据查找,并将用户提供的新信息加到服务器中,服务器管理人员接受到新信息之后就下发订单的操作。

      问题二:响应缓慢

      早期的浏览器不仅没有交互,而且它还趋向于让服务器和 Internet 阻塞。因为在任何时候,只要 你需要完成 通过编程 才能实现的 任务,就必须将信息发挥到 服务器 去 处理。然而在互联网中,在任意时刻都有可能会有 成百上千 的客户向服务器发出请求,所以任何小的延迟都会产生重大的影响。

      为了解决这个问题,人们采用了各种不同的方法。首先,图形标准得到了加强,这使得在浏览器中可以播放质量更好的动画和视频。剩下的问题通过引入 在客户端浏览器中运行程序 的能力就可以解决,这被称为 「客户端编程」

      问题三:客户端编程平台各异

      大多数运行 Web 浏览器的机器都是能够执行大型任务的强有力的引擎。在使用原始的静态 HTML 方式的情况下,它们通常只是闲在那里,等着服务器送来下一个页面。

      客户端编程意味着 Web 浏览器能够用来执行任何它可以完成的工作,使得返回给用户的结果 更迅速 (不用全部的结果都等着服务器来运算),而且使得你的网站 更加具有交互性 (那些不需要使用服务器数据的操作可以完全在本地完成)

      但客户端编程的问题是:它与通常意义上的编程十分不同,参数几乎相同,而平台却不同。在 Web 浏览器中编程就像是使用一台功能受限的操作系统,而每一台功能还略微的有差别。最终,你不仅需要编写程序,还需要处理因为平台不同带来的兼容问题。

      小结

      因为「没有交互」和「访问缓慢」的问题,所以引入「客户端编程」,因为引入客户端编程,遇到「各种各样不仅仅是平台差异带来的问题」。

    • Java 的解决方案

      插件和脚本语言 "差点意思"

      在当时,客户端编程所迈出的最重要的一步就是 插件(plug-in) 的开发。通过这种方式,用户可以下载一段代码,并将其插入到浏览器中适当的位置,以此来为浏览器添加新的功能。

      插件又引发了浏览器 脚本语言(scripting language) 的开发。通过使用某种脚本语言,你可以将客户端程序的源代码直接嵌入到 HTML 页面中,解释这种语言的插件在 HTML 页面被显示时自动激活。(脚本语言可以解决客户端编程中遇到的百分之八十的问题) 脚本语言先天就相当易于理解,因为它们只是作为 HTML 页面一部分的简单文本,当服务器收到要获取该页面的请求时,它们可以被快速加载。此方法的缺点是代码会直接暴露给任何浏览(或窃取)的人,但是,通常不会使用脚本语言去做相当复杂的事情,所以这个缺点不会太严重。

      如果脚本语言可以解决客户端编程百分之八十的问题的话,那么剩下那百分之二十 (那才是真正难啃的骨头) 又该怎么办呢?

      Java 带来了 Applet

      Java 带着 Applet 及时出现。

      1995 年, Java 之父 James Gosling 和 Sun 公司科学办公室主任 John Gage 一起前往蒙特利,去参加一个 TED 会议,两人要在那里展示一个划时代的技术, 号称向能把枯燥的静态网页变得栩栩如生,美轮美奂。

      演示开始了,James Gosling 把鼠标指向了浏览器中的一个 3D 分子模型,来回地旋转它,台下的观众发出阵阵惊叹声,他们被镇住了,从没有人想到在浏览器中也能实现这么 “美轮美奂” 的效果 !

      Java 火了!

      这个演示所使用的技术就是 Applet。

      Applet 是只在 Web 浏览器中运行的小程序,它是作为网页的一部分而自动下载的 (就像是网站图片被自动下载一样)。当 Applet 被激活时,它变开始执行一个程序,这正是它优雅的地方:它提供了一种分发软件的方式,一旦用户需要客户端软件时,就自动从服务器把客户端软件分发给用户。

      用户获取最新版本的客户端软件时不会产生错误,而且也不需要很麻烦的重新安装过程 (有点像现在的小程序)。Java 的这种设计方式,使得程序员只需要创建单一的程序,而只要一台计算机有浏览器,且浏览器具有内置的 Java 解释器 (大部分机器都有),那么这个程序就可以自动在这台计算客户端尽可能地多做事情。例如,不必跨网络地发送一张请求表单来检查自己是否填写了错误的日期或者其他参数,客户端计算机就可以快速地标出错误数据。

      这不仅立即就获得了快速的响应能力,而且也降低了网络流量和服务器负载,从而不会使整个网络的速度慢下来。

      Java 对服务端编程的加持

      当提出对服务器的请求之后,会发生什么呢?大部分时间,请求只是要求「给我发送一个文件」,之后浏览器会以某种适当的形式解释这个文件,例如将其作为 HTML 页面、图片、Java applet 或脚本程序等来解释。

      更复杂的对服务器的请求通常涉及数据库,这可能会需要服务器端对请求到的数据进行一定的编排 (例如把数据嵌到一个表格之内) 来最终使其成为一个 HTML 文件发送给客户端 (当然,如果客户端具备更多的只能,你完全可以把原始数据发送给客户端让它自己进行编排工作..)。另一种常见的情形是:你注册账号或者提交订单,这对数据库数据造成了更改,而这些必须通过服务器端的某些代码进行处理,这就是所谓的 服务端编程

      Java 后来编写的被称为 Servlet 的程序 (及其衍生物 JSP),是许多开发网站的公司迁移到 Java 上的主要原因。尤其是因为凭借 Java 跨平台的特性 消除了处理具有不同能力的浏览器时所遇到的问题

      小结

      Java 凭借自身强大、安全、跨平台、国际化的特性,加上解决了当时客户端、服务端开发的诸多 "痛点",成功搭上 Internet 这列 "国际快车",一跃成为了时下 20 实际 90 年代中) 最热门的语言之一,并持续火热至今 (这跟 Java 自身不断地成熟有脱不开的关系)

    • Part 3. Hello Wrold!

      当我们集中注意力 学习一种新的编程语言 时,教程上的 第一个案例 就是如何 在计算机屏幕上显示短语 Hello,world! 也许这条短语最知名的来源是贝尔实验室的备忘录《C 语言编程——一份教程》。这份材料编写于 1974 年。不过在编写于 1972 年的 B 语言教程中,我们同样看到了这条短语的身影。

      Hello, World! 是一种伟大的教学方法。这是一项能够轻松完成的小任务,同时也代表着一种标准,体现出不同编程语言之间的重要差异。此外,这也是高级程序员在安装新环境测试一切是否正常的快速简便方法。(有时候,程序员们也会使用「hello world」运行时间来比较不同语言与环境的速度水平。) 也许更重要的是,Hello, world! 具有一种温暖而柔和的力量,对编程新人有着一种莫名的亲和力。

      「代码拥有无穷威力,而新的世界已经向你张开怀抱。」 ———— Chris Noessel,IBM 公司 AI 设计负责人

      public class Main {
      
          public static void main(String[] args) {
              System.out.println("Hello World!");
          }
      }

       

posted @ 2020-08-30 13:22  Rooker  阅读(1120)  评论(0编辑  收藏  举报