java是由james gosling,patrick naughton,chris warth,ed frank和mike sheridan于1991年在sun microsystems公司设计出来的。开发第一个版本花了18个月。该语言开始名叫“oak”,于1995年更名为“java”。从1992 的秋天oak问世到1995的春天公开发布java
语言,许多人对java的设计和改进做出了贡献。bill joy,arthur van hoff,jonathan payne,frank yellin和tim lindholm是主要的贡献者,正是他们的贡献使最初原型得以成熟。
说起来多少有些令人吃惊,java的最初推动力并不是因特网!而是源于对独立于平台(也就是体系结构中立)语言的需要,这种语言可创建能够嵌入微波炉、遥控器等各种家用电器设备的软件。用作控制器的cpu芯片是多种多样的,但c和c++以及其他绝大多数语言的缺点是只能对特定目标进行编译。尽管为任何类型的cpu芯片编译c++程序是可能的,但这样做需要一个完整的以该cpu为目标的c++编译器,而创建编译器是一项既耗资巨大又耗时较长的工作。因此需要一种简单且经济的解决方案。为了找到这样一种方案,gosling和其他人开始一起致力于开发一种可移植、跨平台的语言,该语言能够生成运行于不同环境、不同cpu芯片上的代码。他们的努力最终促成了java的诞生。
在java的一些细节被设计出来的同时,第二个并且也是最重要的因素出现了,该因素将对java的未来起着至关重要的作用。这第二个因素当然就是万维网(www)。如果万维网(www)的成型和java的实现不是同时发生的话,那么java可能保持它有用、但默默无闻的用于电子消费品编程语言的状态。然而,随着万维网的出现,java被推到计算机语言设计的最前沿,因为万维网也需要可移植的程序。绝大多数程序员在涉足编程领域时就知道可移植的程序像他们的理想一样难以捉摸。
尽管人们对高效的、可移植的(独立于平台)编程方式的追寻几乎和编程历史一样久远,但它总是让位于其他的更为紧迫的问题。此外,因为计算机业被intel,macintosh和unix这3个竞争对手垄断,大多数程序员都在其中的某个领域内长期工作,所以对可移植语言的需求就不是那么迫切。但是,随着因特网和web的出现,关于可移植性语言的旧问题又被提了出来。毕竟,因特网由不同的、分布式的系统组成,其中包括各种类型的计算机、操作系统和cpu。尽管许多类型的平台都可以与因特网连接,但用户仍希望他们能够运行同样的程序。曾经是一个令人烦恼却无需优先考虑的问题现在变成了急需解决的问题。
1993年,java设计小组的成员发现他们在编制嵌入式控制器代码时经常遇到的可移植性问题,在编制因特网代码的过程中也出现了。事实上,开始被设计为解决小范围问题的java语言同样可以被用在大范围的因特网上。这个认识使他们将java的重心由电子消费品转移到internet编程。因此,中立体系结构编程语言的需要是促使java诞生的源动力,而internet却最终导致了java的成功。
正如前面提到的,java的大部分特性是从c和c++中继承的。java设计人员之所以故意这么做,主要是因为他们觉得,在新语言中使用熟悉的c语法及模仿c++面向对象的特性,将使他们的语言对经验丰富的c/c++程序员有更大的吸引力。除了表面类似外,其他一些促使c和c++成功的因素也帮了java的忙。首先,java的设计、测试、精炼由真正从事编程工作的人员完成,它根植于设计它的人员的需要和经验,因而也是一个程序员自己的语言。
其次,java是紧密结合的且逻辑上是协调一致的。最后,除了那些internet环境强加的约束以外,java给了编程人员完全的控制权。如果你程序编的好,你编写的程序就能反映出这一点。相反,如果你的编程手法拙劣,也能在你的程序中反映出来。换一种说法,java并不是训练新手的语言,而是供专业编程人员使用的语言。
由于java和c++之间的相似性,容易使人将java简单地想象为“c++的版本”。但其实这是一种误解。java在实践和理论上都与c++有重要的不同点。尽管java受到c++的影响,但它并不是c++的增强版。例如,java与c++既不向上兼容,也不向下兼容。当然,java与c++的相似之处也是很多的,如果你是一个c++程序员,你会感觉到对java非常熟悉。另外一点是:java并不是用来取代c++的,设计java是为了解决某些特定的问题,而设计c++是为了解决另外一类完全不同的问题。两者将长时间共存。
正如本章开始提到的,计算机语言的革新靠两个因素驱动:对计算环境改变的适应和编程艺术的进步。环境的变化促使java这种独立于平台的语言注定成为internet上的分布式编程语言。同时,java也改变了人们的编程方式,特别是java对c++使用的面向对象范例进行的增强和完善。所以,java不是孤立存在的一种语言,而是计算机语言多年来的演变结果。仅这个事实就足以证明java在计算机语言历史上的地位。java对internet编程的影响就如同c对系统编程的影响一样:革命的力量将改变世界。
语言,许多人对java的设计和改进做出了贡献。bill joy,arthur van hoff,jonathan payne,frank yellin和tim lindholm是主要的贡献者,正是他们的贡献使最初原型得以成熟。
说起来多少有些令人吃惊,java的最初推动力并不是因特网!而是源于对独立于平台(也就是体系结构中立)语言的需要,这种语言可创建能够嵌入微波炉、遥控器等各种家用电器设备的软件。用作控制器的cpu芯片是多种多样的,但c和c++以及其他绝大多数语言的缺点是只能对特定目标进行编译。尽管为任何类型的cpu芯片编译c++程序是可能的,但这样做需要一个完整的以该cpu为目标的c++编译器,而创建编译器是一项既耗资巨大又耗时较长的工作。因此需要一种简单且经济的解决方案。为了找到这样一种方案,gosling和其他人开始一起致力于开发一种可移植、跨平台的语言,该语言能够生成运行于不同环境、不同cpu芯片上的代码。他们的努力最终促成了java的诞生。
在java的一些细节被设计出来的同时,第二个并且也是最重要的因素出现了,该因素将对java的未来起着至关重要的作用。这第二个因素当然就是万维网(www)。如果万维网(www)的成型和java的实现不是同时发生的话,那么java可能保持它有用、但默默无闻的用于电子消费品编程语言的状态。然而,随着万维网的出现,java被推到计算机语言设计的最前沿,因为万维网也需要可移植的程序。绝大多数程序员在涉足编程领域时就知道可移植的程序像他们的理想一样难以捉摸。
尽管人们对高效的、可移植的(独立于平台)编程方式的追寻几乎和编程历史一样久远,但它总是让位于其他的更为紧迫的问题。此外,因为计算机业被intel,macintosh和unix这3个竞争对手垄断,大多数程序员都在其中的某个领域内长期工作,所以对可移植语言的需求就不是那么迫切。但是,随着因特网和web的出现,关于可移植性语言的旧问题又被提了出来。毕竟,因特网由不同的、分布式的系统组成,其中包括各种类型的计算机、操作系统和cpu。尽管许多类型的平台都可以与因特网连接,但用户仍希望他们能够运行同样的程序。曾经是一个令人烦恼却无需优先考虑的问题现在变成了急需解决的问题。
1993年,java设计小组的成员发现他们在编制嵌入式控制器代码时经常遇到的可移植性问题,在编制因特网代码的过程中也出现了。事实上,开始被设计为解决小范围问题的java语言同样可以被用在大范围的因特网上。这个认识使他们将java的重心由电子消费品转移到internet编程。因此,中立体系结构编程语言的需要是促使java诞生的源动力,而internet却最终导致了java的成功。
正如前面提到的,java的大部分特性是从c和c++中继承的。java设计人员之所以故意这么做,主要是因为他们觉得,在新语言中使用熟悉的c语法及模仿c++面向对象的特性,将使他们的语言对经验丰富的c/c++程序员有更大的吸引力。除了表面类似外,其他一些促使c和c++成功的因素也帮了java的忙。首先,java的设计、测试、精炼由真正从事编程工作的人员完成,它根植于设计它的人员的需要和经验,因而也是一个程序员自己的语言。
其次,java是紧密结合的且逻辑上是协调一致的。最后,除了那些internet环境强加的约束以外,java给了编程人员完全的控制权。如果你程序编的好,你编写的程序就能反映出这一点。相反,如果你的编程手法拙劣,也能在你的程序中反映出来。换一种说法,java并不是训练新手的语言,而是供专业编程人员使用的语言。
由于java和c++之间的相似性,容易使人将java简单地想象为“c++的版本”。但其实这是一种误解。java在实践和理论上都与c++有重要的不同点。尽管java受到c++的影响,但它并不是c++的增强版。例如,java与c++既不向上兼容,也不向下兼容。当然,java与c++的相似之处也是很多的,如果你是一个c++程序员,你会感觉到对java非常熟悉。另外一点是:java并不是用来取代c++的,设计java是为了解决某些特定的问题,而设计c++是为了解决另外一类完全不同的问题。两者将长时间共存。
正如本章开始提到的,计算机语言的革新靠两个因素驱动:对计算环境改变的适应和编程艺术的进步。环境的变化促使java这种独立于平台的语言注定成为internet上的分布式编程语言。同时,java也改变了人们的编程方式,特别是java对c++使用的面向对象范例进行的增强和完善。所以,java不是孤立存在的一种语言,而是计算机语言多年来的演变结果。仅这个事实就足以证明java在计算机语言历史上的地位。java对internet编程的影响就如同c对系统编程的影响一样:革命的力量将改变世界。
闽公网安备 35060202000074号