Java面向对象思想与程序设计
上QQ阅读APP看书,第一时间看更新

1.1 Java语言简介

Java语言受到广大程序员的欢迎有多方面的原因。首先源于它是面向对象的语言,而面向对象的语言是目前的主流语言。其次,在众多面向对象语言中,Java语言自身的许多特点使其脱颖而出。最后,必须指出的是互联网在全球范围的普及应用为Java语言提供了一个非常大的舞台,使其获得很大的成功。

1.1.1 Java语言的产生

在介绍Java语言之前,我们先说说程序,然后再说说程序设计语言(简称语言)。

用过计算机的人都知道,使用计算机可以做很多事情:上网、玩游戏、收发电子邮件、播放音乐、下载文件资料等,简直数不胜数。但你想过没有,这些事情是如何完成的?谁来替你做的?答案是:程序!是人们预先编写的程序,存储在计算机里,等着你来调用它。你对计算机发号施令,计算机里预先存储的程序接受你的命令,为你做事。

图1-1展示的是几个常见的应用。你计算机上的应用图标数量远不止于此吧!

图1-1 几个常见应用

浏览器程序帮助你在网上冲浪,游戏程序让你陶醉其中,邮件收发程序为你和朋友架起互通信息的桥梁……总之,你依赖程序在计算机上做事。

那么程序怎么写呢?很显然,你需要学习程序设计语言。就像你要写作文,你首先得学会一门语言,比如汉语、英语或俄语。

Java就是这样一门程序设计语言,而且是一门目前很受欢迎的获得广泛应用的程序设计语言。

1991年,为了研究计算机在家电产品中的嵌入式应用,Sun公司的James Gosling等人组成名为Green的项目组。他们于1992年设计出Oak语言。由于当时缺乏硬件支持,Oak没有市场化。

1995年,由于互联网的蓬勃发展,人们迫切需要一种适用于网络编程的、小型的、跨平台的语言,Oak因此重获生机。它以Java为名正式面世。此后,Java深受程序员和用户欢迎,至今仍是开发各种基于Web应用程序的首选语言。据TIOBE2018年1月的调查数据可知, Java市场占有率高达14.215%,长期独占鳌头。Java的成绩,得益于其固有的优点,尤其是2014年推出的最新版Java8引入了函数式编程的新特性,使其进一步扩大了其在程序设计语言领域的领先优势。图1-2所示为2018年1月Java所占市场份额和排序。

1.1.2 Java语言的版本变迁

Java语言有3个主版本:标准版(Java Standard Edition)、企业版(Java Enterprise Edition)、微型版(Java Micro Edition)。其可以分别简称为Java SE、Java EE、Java ME。其中Java SE是核心语言,Java EE用于企业应用开发,而Java ME用于移动设备的应用开发。

我们提到Java一般有两种含义:一是指Java语言,就是Java SE;二是指Java技术,就是以Java SE为核心语言进行扩展的所有相关开发技术的综合。这样的综合体有哪些内容,我们会在1.4节展开说明。

图1-2 Java市场份额(2018年1月)

本书讲解的Java SE,就是Java语言,书中将介绍它的语法细节和应用编程方法。

Java SE的版本标识从最初的JDK1.0到目前最新的JDK1.8,技术不断更新,不断进步,使得Java语言能永葆活力。注意:这里的JDK(Java Development Kit)是Java开发工具的意思。

Java随着版本升级,有许多次名称的改变。例如,从JDK1.5之后,按照主版本号来命名,即JDK5,因此,目前的JDK8是指JDK1.8。也有人喜欢说Java SDK8,这是Java Software Development Kit1.8的简称。SDK除了可以包含JDK,还包含辅助开发的文档、范例和工具集等,所以JDK是Java SDK的子集。

另外,历史上曾经有过,直到今天仍不乏有人在用的J2SE/J2EE/J2ME,其实是由于JDK1.2版很优秀,为了区分Java 2平台和之前的JDK而进行的命名。在2005年6月推出JDK1.6时,J2SE/J2EE/J2ME统一改称为Java SE/Java EE/Java ME了。

拓展知识

TIOBE语言排行榜

TIOBE表示热忱和认真,同时也是Oscar Wilde(奥斯卡·王尔德)在19世纪末写的一部喜剧的名字。使用TIOBE作为社区的名称,也表示了社区的创立者对软件客户、软件供应商和同行的重视以及诚挚的专业态度。

TIOBE每天为世界范围的客户实时检查超过9亿3400万行软件代码。

TIOBE开发语言排行榜每月更新一次,依据的指数由世界范围内的资深软件工程师和第三方供应商提供,排行结果可反映当前业内程序开发语言的流行和使用程度。开发者可根据排行榜检查自己的编程技能能否跟上趋势,是否有必要作出战略改变,以及是否要学习新的编程语言。

建议读者关注这个排行榜,既可以对比语言功能及特色,使开发语言的选择更有见地,同时也可了解软件人才市场的需求。

1.1.3 Java语言特点

Java语言具有许多独特之处,它既区别于传统的面向过程语言,也不同于其他的面向对象语言。读者刚开始接触 Java时,对这些特点可能很难有深入的理解,但是,随着学习的深入,理解会不断加深。

1.简单易学

Java语言的语法与C/C++有很多相似的地方,例如数据类型、运算符、表达式和语句。对比一下关键字列表就可以发现这种相似性。有C基础的读者,可以将C与Java的语法做详细对比,找出相同、相似和不同点,通过对比法来提高学习效率,同时也有利于快速辨析清楚两种语言的语法规则和用法的许多细微区别,这就是格物致知的道理。

2.解释式

高级语言的工作方式有两种:编译式和解释式。

编译式语言如C、C++、Pascal等,它们对源程序先进行编译,生成可执行文件(.exe)。可执行文件可直接由操作系统(Operating System)来执行。在使用集成开发环境IDE (Integrated Developing Environment)时,可以从IDE的菜单查看编译命令,或者到项目工作目录下查看,了解exe文件的生成方式。

Java语言的工作方式如图1-3(c)所示,它不同于图1-3(a)和图1-3(b)。图1-3(a)是编译式语言工作过程,(b)是解释式语言工作过程,Java语言的工作方式介于编译式和解释式中间,是一种混合形式,有人把它称为伪编译(pseudo compile),但它本质上还是解释式语言。因为它虽然生成了中间代码,即字节码文件(.class),但这个文件并不能像.exe文件那样可由操作系统直接执行,而是用Java虚拟机(Java Virtual Machine, JVM)解释执行。

图1-3 高级语言的工作方式

3.安全性

Java语言通过若干安全机制来确保其安全性。这些机制包括通过关键字控制代码可见性、不支持指针类型、访问控制的沙箱(sandbox)机制和数字签名机制、安全策略机制、字节代码校验机制、安全代码发布、异常处理机制等。

4.面向对象

Java语言是一种面向对象的程序设计语言。面向对象思想使人们分析问题和解决问题时,更接近人类固有的思维模式,更自然顺畅了。用面向对象程序语言(OOPL)编程,也更安全高效了。

5.平台无关

Java源文件经编译生成与计算机指令无关的字节代码,这些字节代码不依赖于任何硬件平台和操作系统。当Java程序运行时,需要由一个解释程序对生成的字节代码进行解释执行。这体现了Java语言的平台无关性,使得Java程序可以在任何平台上运行,如MS-DOS、Windows、Unix等,因此具有很强的可移植性。这就实现了Java“编写一次,到处运行”(write once,run anywhere)的目标。

6.多线程

Java语言支持多线程,多线程机制使得一个Java程序能够同时处理多项任务。类似操作系统支持多进程并发执行的情况,多进程使计算机能够同时执行多个任务,例如游戏的动感画面与美妙音乐同在、从网上下载文件和执行本地用户程序并行不悖等,大家都有切身感受。线程可以看作是更小的进程。Java提供了实现多线程程序的类和接口,使用它们,可以编写实现并发执行的多线程程序。

7.动态性

C语言的基本程序模块是函数。程序执行过程中所调用的函数,其代码已静态地加载到内存中。Java的类是程序构成的模块,Java程序执行时所需要调用的类是在运行时动态地加载到内存中的,这使得Java程序运行所需的内存开销小。这也是它可以被用于许多嵌入式系统和部署在许多微小型智能设备上的原因。Java还可以利用反射机制动态地维护程序和类,而C/C++不经代码修改和重新编译就无法做到这一点。

此外,Java语言还具有网络适用性、可移植性、类库丰富、高性能等特点。