驱使计算机语言革新的因素有两个:程序设计技术的改进和计算环境的改变。Java也不例外。在大量继承C和C++的基础之上,Java还增加了反应当前程序设计技术状态的功能与精华。针对在线环境的蓬勃发展(Internet),Java为高度的分布式体系结构提供了流水线程序设计的功能。
Java是1991年由Sun Microsystems(曾经2000亿美元全球市值第一,google市值第二但是只有300多亿美元,而同期的苹果公司市值只有不到100亿美元。当今苹果公司万亿市值也是全球第一唯一万亿市值的上市公司)公司的James Gosling(大家更喜欢叫他高司令)、Patrick Naughton、Chris Warth、Ed Frank和Mike Sheridan共同构想的成果。这门语言最初名为“Oak”,于1995年更名为“Java”,多少有些让人吃惊的是,设计Java的最初动力并不是源于Internet,而是为了开发一种独立于平台的语言,使其能够用于创建内嵌于不同家电设备(如烤箱、微波炉和遥控器等)的软件。虽然不同类型的CPU都可以用作控制器,但是麻烦在于多数的计算机语言都是针对特定的目标而设计的,例如C++。
虽然任何类型的CPU或许都能编译C++程序,然而这需要CPU具有完整的C++编译器。而开发编译器的成本很高,并且很耗时。为了找到更好的解决方法,Gosling和其他人尝试开发一种可移植的跨平台语言,使该语言生成的代码可以在不同环境下的不同CPU上运行。这一努力最终导致Java的诞生。
大概就在即将设计出Java细节的时候,另一个对Java的成型有更重要影响的因素出现了。第二个动力就是World Wide Web。如果Web没有在Java即将成型的时候问世,那么Java可能会成为对消费类电子产品的程序设计而言有用但却晦涩的语言。然而随着Web的出现,以及Web对可移植程序的需求,Java被推倒了计算机语言设计的前台。
大多数程序员在工作不久就了解到可移植程序既令人期待,也让人难以捉摸。虽然在有了程序设计学科时就有了对创建高效可移植(平台独立)程序的需要,但还是让位于其它一些更为迫切的问题。Internet和Web的出现使原有的可移植性问题重新摆上了桌面。因为,Internet毕竟是由许多类型的计算机、操作系统和CPU组成的多样化的分布式空间。
曾经恼人心绪,却没那么重要的问题也就成为了亟待解决的问题。到了1993年,Java设计团队的成员发现,在创建嵌入式控制器时经常遇到的可移植性问题同样也出现在创建的Internet代码中。了解到这一点后,Java的重点从消费类电子产品转移到了Internet程序设计。因此,尽管开发独立于体系结构的程序设计语言的初衷提供了起初的星星之火,然而却是Internet最终促成了Java的燎原之势。