1.1进入Java世界
Java编程语言是在网络泰斗James Gosling和Bill Joy的指导下由Sun公司开发的,其目标是要将其设计为一种与机器无关的编程语言,不仅能够做到足够的安全从而在网络上“畅行无阻”,而且功能要非常强大,从而足以替换本地可执行代码。Java可以解决这里提出的问题,而且有助于我们着手构建所需的新型应用。
最开始的时候,对于Java的热情几乎都倾注于它能够为Web构建一种称为applet的嵌入式应用。但是在早期,用Java编写的applet和其他客户端GUI应用很有限。如今,Java拥有了Swing,这是所有语言中用于构建图形用户界面的最为复杂的工具包之一。这一发展使得Java得以成为开发传统客户端应用软件的一个流行平台。
更为重要的是,Java也成为了Web应用和Web服务的主流平台。这些应用程序所使用的技术包括Java Servlet API、Java Web Services,以及众多流行的开源或商业的Java应用程序服务器和框架。Java的可移植性和速度,使其成为现代分布式应用的首选平台。运行在开源Linux平台上的Java服务器,已经深入当今商业和金融行业的核心。
本书将向你展示如何使用Java来完成实际的编程任务。在后续的各章中,我们将依次介绍所有内容,从文本处理到网络,使用Swing构建富客户端GUI程序,以及轻量级的Web应用程序和服务等。
1.1.1 Java的起源
Java的最初思想是在1990年由Sun Microsystems公司的创办人和首席研究员Bill Joy提出来的。在当时,Sun只在小型工作站市场上享有相当小的份额,而Microsoft公司则在基于Intel的PC主流领域占据着主导地位。Sun公司错过了PC革命的浪潮,Joy回到了科罗拉多州的Aspen开始进行深入研究。他致力于用简单的软件来完成复杂的工作,并创建了一个名为Sun Aspen Smallworks的软件。
在Aspen工作的最初几个程序员当中,James Gosling后来被称为Java之父。Gosling在20世纪80年代早期开发了一个用自己名字命名的软件Gosling Emacs,这是流行编辑器Emacs的第一个用C语言编写并在Unix下运行的的版本。Gosling Emacs开始变得相当流行,但是不久被一个免费的版本GNU Emacs所取代,后者是由Emacs的最初设计者所编写的。那时,Gosling已经转而设计Sun公司的NeWS窗口系统,在1987年这个系统主要是为了与X Window系统争夺对UNIX GUI桌面系统的控制。尽管一些人认为NeWS较X Window更好,但是NeWS最后却不得不败北,这是因为Sun独占了NeWs的所有权,而且没有公开其源代码,而X Window的主要开发者则组建了X Window联盟并采取了和Sun相反的策略。
通过设计NeWS,Gosling认识到,将与网络有关的窗口GUI同描述性语言相集成有着何等的威力。另外Sun也意识到Internet编程群体最终对专有标准都将不予认同,而不论它多么优秀。正是NeWS的失败,促使Gosling萌生了Java卓越的授权许可机制的思想。Gosling把得到的宝贵经验带到了Bill Joy的最初的Apsen项目中。在1992年,这个项目导致了Sun的子公司FirstPerson公司的成立。该公司的任务就是领导Sun进入消费电子领域。
FirstPerson小组主要致力于信息应用软件的开发,如蜂窝电话和个人数字助理(PDA)软件等。其目标是通过廉价的红外线和传统的基于数据包(packet)的网络来传输信息并实现实时应用程序。内存和带宽的限制使得只能使用小而高效的代码,而应用的本质又要求代码必须做到安全而健壮。Gosling和小组成员最初尝试用C++ 来编写,不过很快他们就被这种复杂、笨拙而且不安全的语言搞得一头雾水。他们决定从头做起,重新编写一个语言,Gosling将这种语言戏称为“C++ minus minus”。
Apple Newton的推出,表明当时还不是PDA面市的时机,因而Sun将FirstPerson的目标转向到交互式TV(ITV)上。设计ITV机顶盒所选用的编程语言即为Java的雏形,称作Oak。尽管这种语言很优雅,也能提供安全的交互性,但是Oak依然不能挽救ITV的失败,消费者根本就不需要它,不久Sun也放弃了这个项目。
此时,Joy和Gosling聚在一起为他们的语言确定新的战略。到了1993年,随着人们对Internet兴趣的爆炸式增长,特别是对Web的关注简直无可比拟,这就提供了一个新的机遇。Oak是一种小型的、健壮的、体系结构独立而且面向对象的语言。而且当时恰逢急需一种适用广泛而且支持网络的编程语言。Sun很快调整了重心,仅对Oak稍加改动,即成为了后来的Java。
1.1.2 成长
说Java就像野火一样蔓延开来并不过分。甚至在还未公布其第一个正式版本之前,尽管当时Java还不能算是一个产品,几乎所有重要的厂商就都已在迫不及待地追赶着Java潮流了。获得Java授权的公司包括Microsoft、Intel、IBM以及几乎所有主要的硬件和软件厂商。但这并不意味着一切将一帆风顺。即使有如此众多的支持,在最初的几年里,Java仍然经历了很多挫折和阵痛。
由于Sun和Microsoft之间就Java的发布及其在Internet Explorer中的使用而争论不休,这就阻碍了Java在Windows这一世界上最通用的操作系统上的部署。Microsoft对于Java的态度也成为一个更激烈的行业诉讼的焦点,甚至超过了Microsoft与反垄断相关的法律诉讼,而Microsoft在法庭上的陈述则表示了协商努力的结果是:这个软件巨头力图通过在其Java版本中引入不兼容性以削弱Java的发展势头。与此同时,Microsoft还推出了它自己的类Java语言,称为C#(C-sharp),以此作为其.NET项目的一部分。C#自身已经发展成为一种很好的语言,近年来甚至有比Java更多的创新。
但是Java继续在广泛的平台上扩展。在开始了解Java体系结构的时候,你将看到,Java大多数激动人心之处源自于Java应用运行所在的自包含虚拟机环境。Java得到了精心设计,从而使得这一支持性的架构可以针对现有计算机平台而使用软件实现,也可以采用定制硬件来实现。Java的硬件实现用于一些智能卡和其他嵌入式系统中。你甚至可以购买其中嵌入了Java解释器的“可穿戴”设备,例如,戒指和狗牌。Java的软件实现则可供所有现代计算机平台使用,甚至下沿到便携计算机设备。如今,Java平台的一个分支成为Google的Android操作系统的基础,而Android已经安装到上百万台的手机和其他移动设备上。
2010年,Oracle收购了Sun Microsystems并且成为Java语言的管理者。在Oracle刚开始其任期的不平凡的日子里,Oracle要求Google停止在Android中使用Java语言,但最终失败了。2011年7月,Oracle发布了Java SE 7,这是一个重要的Java发布版本。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。