1、Java语言的历史

  我们从Java语言的诞生说起。

  1991年,Sun公司在一个叫做James Gosling的人带领下,成立了一个项目组,名字叫做"Green"。当时这个项目组成立的时候,是计划开发一种能够运行在消费性电子设备上的编程语言。这种设备的特点是:1、运算能力和运算空间非常有限;2、不通的厂商设计产品时会使用完全不同的CPU,因此会有完全不同的架构。为了解决这个问题,当时Green希望设计出一种具有非常优秀的"跨平台"特性的语言。

  Green项目组的程序员都有着很深厚的Unix下C++编程的背景。事实上,从某个意义上说,Java语言脱胎于C++,在很多基础语法方面,有很多跟C++类似的地方。当然C++语言中有很多让人觉得复杂并且难于掌握的特性,而Sun公司在设计Java语言的时候,把这些特性都摒弃了,而增加了很多优秀的新特性。这些内容随着我们学习的深入会慢慢为大家展开。

  1992年,Green项目组最初的产品诞生。这个产品一开始被James Gosling称之为"Oak",可能是因为他很喜欢他办公室外面的那颗橡树吧......但是,Sun公司的同事发现,Oak已经是另一个计算机语言的名字了。于是,经过讨论,把Oak语言改名为Java语言。

  然而,起初Java语言的发展并不是一帆丰顺的。在1994年之前,Java语言的优秀特性并没有一个充分发挥的舞台。然而随着时代的进步,一切都开始变得不同了:互联网开始兴起了,由于网络互联互通的需求,因此在多个平台上面运行同样的程序成了一个非常有挑战性但是又非常有意义和价值的东西。Gosling察觉到了Java语言发展的机会,并把Java语言由一种在消费设备上运行语言,修改成为了一种能够在互联网上运行的语言。由于Java语言天生具有跨平台的特性,Gosling认为这种特性能够非常好的与互联网结合。这个转折也拉开了Java语言的序幕......

  1995年5月23日,在SunWorld会议上,Sun公司对外正式展示了Java语言。我们通常把这一天称之为Java语言的诞生之日。

  1996年,Java语言发布了第一个正式的版本:1.0版本。这时,Java语言能够编写的程序称之为Applet。这种Applet只能在集成了Java环境的游览器中运行。当时主要为浏览器增加各种动态效果,用来美化页面和增强用户与浏览器的交互。应当说,1.0版本并不能算成功,这个版本非常的不成熟。很快1.1版本发布。这个版本修正了1.0版本中大量的bug,并完善了1.0版本中很多缺失的部分。然而,与1.0版本一样,1.1版本同样具有非常大的局限性。

  Java发展到1998年有了比较大的变化。1998年12月,Java1.2版本发布。Sun公司对这个版本的Java做了非常大的结构调整,原来的体系几乎推到重来。为了表明这是一个非常重大的更新,Sun公司把Java1.2版本称之为Java 2 Platform,用来表示这是一个全新的Java平台。

  与此同时,Sun公司还把Java 2 Platform进行了细分。对1.0和1.1扩展之后的部分称之为"标准版",也就是所谓的"Java 2 Standard Edition",简称"J2SE"。标准版可以用来写Applet,也可以脱离浏览器进行编程,独立运行的程序(Application)。这些都是对于一个语言来说,比较基础和比较标准的模块。除了标准版之外,Java2还包括"企业版"(J2EE)和"微型版"(J2ME)。企业版主要提供了服务端编程的功能,而微型版主要提供了在一些资源限制的平台上(例如手机)运行的Java的功能。

  在此博客中,我们不会涉及企业版和微型版。需要注意的是J2SE是学习其他两个版本的基础,是学习Java语言的第一门课程。

  之后Java语言发布了1.3和1.4版本。这两个版本主要修正了bug,并完善了Java的类库,但是并没有对Java语言进行什么革命性的变化。因此,这两个版本依然是属于Java2平台的范畴。此时,Java语言进入了真正的成熟期,逐渐成为了世界排名第一的语言。大量的企业应用采用了Java语言来开发服务器端软件。

  2004年,Java推出了一个新的版本。这个版本是1.1之后。Java第一次对语言的基础类库做出重大改进的版本。一开始,这个版本称之为1.5,后来,Sun公司为了表明这个版本具有非常强大的功能,把这个版本称之为5.0。这也意味着,这个版本与原来的Java2平台相比有着很多不同的地方,因此现在Java 2 Platform已经逐渐成为了历史,而原来的三个平台:J2SE、J2ME、J2EE也被改名成为了Java SE、Java ME、Java EE。

  2006年底,Java发布了6.0版本。这个版本修正了很多5.0版本中的bug,改善了性能并增强了类库。

  那么,Java语言到底究竟有什么魔力呢?能够在众多语言中脱颖而出,成为世界第一大语言呢?主要源于下面一些语言特性:

  1、纯面向对象

  相对于另一种面向对象语言C++,Java语言是一种非常纯粹的面向对象的语言。对于C++而言,写程序除了可以使用面向对象的方式之外,还可以采用面向过程、面向模板等多种方式。而相对,Java只能采用面向对象的方式进行编程。

  2、简单性VS复杂

  由于Java语言相对于C++来说是一种纯粹的面向对象的语言,因此Java语言在理解和学习方面都要比C++语言简单。Java的简单性,指的是Java语言的这种特点:1、Java语言本身的特点非常简单,没有复杂的和晦涩的语法细节。2、Java语言倾向于让程序员能够简洁清晰的完成任务。

  而Java语言同时也是复杂的,体现在:1、虽然Java语言本身非常简单,但是它有大量强大而扎实的类库,这些类库极大丰富了Java语言的特性。2、Java语言最主要的阵地是企业级应用,这种应用本身,由于涉及到多线程、分布式、数据库、网络等各种各样的领域,因此,需求非常复杂。为了应对这种复杂的需求,Java语言也提供了各种对应的特性,因此从这个角度来看,Java语言是复杂的。

  或许,我们可以拿一句英语来总结Java语言的简单和复杂:"Simple thing should be simple, Complex thing should be possible "。

  3、开发性

  Java语言是一种开放语言。这种开放集中体现在Sun公司已经对Java语言开源,任何人都可以读到Java语言的代码。Sun公司接受任何人提交的JSR,也就是说,任何程序员都可以对Java语言的未来的发展提出自己的开发和建议。Sun公司提供了Java语言的免费下载。

  现在,Java社区有大量开源的、免费的东西可供下载和使用,这在一定程度上也帮助了Java语言的发现和推广。

  4、跨平台性

  这是融入Java血液的一个机制,这个机制决定了,运行Java可以在各种平台上面,包括常见的桌面Windows系统,也包括企业级应用需要的Unix系统。这意味着Java语言既能够轻快的在桌面上运行,也能够扎实稳定的在企业级操作系统中运行。这种在不同平台下运行的能力是Java语言在企业级应用中有着深远的影响。