1.2 Java语言概述
视频精讲:光盘\video\01\Java语言概述.swf
Java是当今流行的新兴网络编程语言,它的诸多特性给程序设计人员带来了一种崭新的编程体验。
1.2.1 Java的家谱
1.诞生
Java诞生于1990年12月,是由美国Sun Microsystems公司的Patrick Naughton和James Gosling领导的一组工程师设计的,当时主要目的是为了在电视、烤面包箱等家用消费类电子产品上使用,以便消费者能够方便操作这些电子产品。这个项目在Sun公司中被称为Green(绿色项目),而这种语言最初被称为Oak,后改称为Java。
2.与C、C++联系
Java与著名的C、C++语言有着某些联系,Java的语法是从C继承来的。这样处理的好处是显而易见的:许多编程人员都非常熟悉C/C++语法,这就使得C/C++编程人员可以很容易地转到Java。反之,Java编程人员也可以轻松地学习C/C++。不过,不要误以为Java是C++的增强版,它与C++既不向上兼容,也不向下兼容。
3.热度
Java被美国的著名杂志PC Magazine评为1995年十大优秀科技产品之一。目前,Java在业界可以说是“炙手可热”。许多公司纷纷表示支持Java语言,并购买了Java的使用权,例如Microsoft、IBM、Netscape、Apple等,我们可以列出一长串业界巨头的名字。连微软公司的比尔·盖茨都将Java称之为“长期以来最卓越的程序设计语言”。而越来越多的、大量用Java编写的商业软件产品更是证明了Java目前在业界的热度!
4.版本
Java更新速度比较快,其更新路线如图1-3所示。
图1-3 Java更新路线图
J2SE(Java 2 Standard Edition)1.5发布是Java语言发展史上的一个里程碑事件。为了表示这个版本的重要性,J2SE 1.5更名为J2SE 5.0。随后在2005年6月召开的JavaOne大会上,新的Java版本已经更名,取消了其中的数字2。
1.2.2 Java语言的特点
Java是一种简单而容易学习的计算机语言。Java语言去掉了C语言中不容易理解和掌握的部分,如指针操作、运算符重载等,降低了学习难度。Java的基本语法与C语言基本一致,因此对学过C语言的人来说感觉很容易入门。另一方面,Java语言对计算机的硬件环境要求很低,Java程序可以在内存很小的计算机上运行。
Java充分利用了当代软件技术的最新成果,下面简要介绍一下Java语言的几个重要特点。
1.面向对象
Java是面向对象程序设计语言。面向对象程序设计追求现实世界与计算机世界的近似和直接模拟,也就是说尽量将现实世界中的事物直接反映到软件系统中去。例如,在现实世界中的人类中有张三、李四、王二麻子,那么在计算机世界就有“人”类和“人”的实例对象“张三”、“李四”、“王二麻子”。面向对象技术成为20世纪90年代以后计算机领域中开发软件的主流技术。我们将在第5章介绍面向对象程序设计。
2.平台无关性
Java源程序代码在编译前以文本格式保存,这些文件可以任何平台上创建。因此Java在源码级上是平台无关的。
Java程序可以在各种平台上运行,例如Windows、UNIX、Linux、Macintosh等。
3.安全稳定性
● 安全性:一切对内存的访问都是通过称为对象的“实例变量”来实现的,从而有效防止用户使用特洛伊木马等手段访问对象的私有成员,保护你的隐私数据;Java字节码在传输过程中使用了公开密钥的加密机制,而在运行环境方面则提供了多达四级的安全性保障机制,极大地保证了安全性问题。
● 稳定性:Java不支持指针,避免了指针操作的错误;Java语言提供了内存管理功能,内置了自动搜索并处理“内存垃圾”的机制,有效地避免了内存问题;Java不但在编译时检查代码,而且在运行时也检查代码,从而保证了程序的可靠执行。
4.多线程支持
传统程序设计语言的程序同一时刻只能进行单任务操作,效率非常低。想想看,你在浏览照片的时候却不能下载美国大片是什么滋味?应互联网技术而生的Java语言很好地解决了这个问题。多线程编程允许应用程序同时执行多个任务,这有利于程序的高效运行。例如在Java程序中,我们可以创建一个线程来浏览照片,创建另一个线程在后台下载美国大片。Java提供了易于使用的多线程机制,为满足高度交互性要求的网络编程提供了良好的解决方法。
5.动态性和分布式
这个世界变化很快,Java的设计能够适应于不断变化的外部环境。Java语言的基本组成单元是类,在运行中Java的类是动态装载的,只要Java在分布式系统中动态地维护应用程序和支持类库间一致性,就可以避免像类库升级这一类问题。
至于分布式,想想你手中的银行卡是不是可以全国各地通行,这需要银行系统的分布式处理能力。Java提供的类库支持对TCP/IP协议处理,也可以通过URL地址访问网络上其他的对象,是一门非常适合分布式环境的编程语言。
真功夫 入行提示
不要被上文中面向对象、字节码、多线程等之类的名词术语所吓倒。目前而言,你只需要“不求甚解”,对这些基本概念有所了解就可以了。
1.2.3 Java虚拟机
Java虚拟机(Java Virtual Machine,JVM)在Java语言中扮演着很重要的角色,你可以将JVM看做一台存在于真实计算机上的虚拟计算机,该虚拟计算机的作用是保证真实计算机能够运行Java程序。图1-4为Java程序运行环境中的JVM。
图1-4 Java运行环境中的JVM
Java源程序被编译成针对Java虚拟机JVM的字节码,JVM再将字节码转化成特定机器的机器码以便来解释执行这种代码。JVM就像一个翻译官,忠实地执行将Java语言翻译成不同机器都能够“听懂”的机器代码的工作。那么,为什么要这样处理呢?
我们知道计算机只能“理解”机器语言,因此计算机一般都配置了语言翻译程序,也就是说使计算机能够“明白”某种语言的程序。按翻译方式不同,语言翻译程序可以分为解释型翻译程序和编译型翻译程序。解释型翻译程序在语言程序翻译时,往往是读入一句源程序,再翻译一句,然后执行一句,这样反反复复直到最终完成,例如Basic语言。翻译型编译程序也叫编译程序,它在翻译语言程序时,先将整个源程序加工翻译成机器语言的目标程序,然后再交给计算机执行,例如C、C++、Pascal等。显然,语言翻译程序及由翻译程序产生的目标程序都与操作系统和计算机硬件高度相关的。我们知道,不同种类计算机的目标程序(机器语言)是不同的,例如工业计算机和我们面前的PC就有差别。这就意味着PC上能正确运行的程序不一定能在工业计算机上正确运行,这就是程序的可移植性问题。
为了提高程序的可移植性,人们提出了虚拟机的概念。虚拟机好似通用的计算机,无论什么程序都“通吃”,但本身没有实际的硬件。有了虚拟机以后,编译程序首先把语言程序翻译成虚拟机代码,然后由虚拟机运行支持系统把虚拟机代码转换成对应计算机的机器码,如上面的图1-4所示。