基础知识
第1章 初识Java
1.1 Java简介
Java是一门高级的面向对象的程序设计语言。使用Java语言编写的程序是跨平台的,从PC机到手机,到处都运行着Java开发的程序和游戏。Java程序可以在任何计算机、操作系统以及支持Java的硬件设备上运行。
1.1.1 什么是Java语言
Java是1995由Sun公司推出的一门极富创造力的面向对象的程序设计语言,它是由有“Java之父”之称的Sun研究院院士詹姆斯·戈士林博士亲手设计而成的,正是他完成了Java技术的原始编译器和虚拟机。Java最初的名字是OAK,在1995年被重命名为Java,并正式发布。
Java是一种通过解释方式来执行的语言,其语法规则和C++类似。同时,Java也是一种跨平台的程序设计语言。用Java语言编写的程序,可以运行在任何平台和设备上,如跨域IBM个人电脑、MAC苹果计算机,各种微处理器硬件平台,以及Windows、UNIX、OS/2、MAC OS等系统平台,真正实现“一次编写,到处运行”。Java非常适用于企业网络和Internet环境,并且已成为Internet中最具影响力、最受欢迎的编程语言之一。
与目前常用的C++相比,Java语言简洁得多,而且提高了可靠性,除去了最大的程序错误根源,此外它还有较高的安全性,可以说,它是有史以来最为卓越的编程语言。
Java语言编写的程序即是编译型的,又是解释型的。程序代码经过编译之后转换为一种称为Java字节码的中间语言,Java虚拟机(JVM)将对字节码进行解释和运行。编译只进行一次,而解释在每次运行程序时都会进行。编译后的字节码采用一种针对JVM优化过的机器码形式保存,虚拟机将字节码解释为机器码,然后在计算机上运行。Java语言程序代码的编译和运行过程如图。
Java程序的编译和运行过程

1.1.2 Java的应用领域
借助Java,程序开发人员可以自由地使用现有的硬件和软件系统平台。这是因为Java是独立于平台的,它还可以应用于计算机之外的领域。Java程序可以在便携式计算机、电视、电话、手机和其他的大量电子设备上运行。Java的用途不胜枚举,它拥有无可比拟的能力,其节省的时间和费用也十分可观。Java的应用领域主要有以下方面:
-
桌面应用系统开发。
-
嵌入式系统开发。
-
电子商务应用。
-
企业级应用开发。
-
交互式系统开发。
-
多媒体系统开发。
-
分布式系统开发。
-
Web应用系统开发。
Java无处不在,它已经拥有几百万个用户,其发展速度要快于在它之前的任何一种计算机语言。Java能够给企业和最终用户带来数不尽的好处。Oracle公司董事长和首席执行官Larru Ellison说过:“Java正在进入企业、家庭和学校。它正在像Internet本身一样,成为一门普遍存在的技术。”
如果仔细观察,会发现Java就在我们身边。我们经常使用的Java开发工具Eclipse、NetBeans、JBuilder等,另外还有RSSOwl、Limewire、Azureus、CyberDuck、OpenOffice等优秀软件,都是使用Java编写的。此外,各手机厂商都为自己的产品提供了Java技术的支持,各平台上的Java程序和游戏多得数不胜数。
1.1.3 Java的版本
自Sun公司推出Java以来,就力图使之无所不能。Java发展至今,按应用范围分为3个版本,即JavaSE、Java EE和Java ME,也就是Sun ONE (Open Net Environment) 体系。本节将对Java的这3个版本分别进行介绍。
-
Java SE
Java SE是Java的标准版,主要用于桌面应用程序开发,同时也是Java的基础,它包含Java语言基础、JDBC(Java数据库连接性)操作、I/O(输入/输出)、网络通信、多线程等技术。Java SE的结构如图。
-
Java EE
Java EE是Java的企业版,主要用于开发企业级分布式的网络程序,如电子商务网站和ERP(企业资源规划)系统,其核心为EJB(企业Java组件模型)。Java EE的结构如图。
-
Java ME
Java ME主要应用于嵌入式系统开发,如掌上电脑、手机等移动通信电子设备,现在大部分手机厂商所生产的手机都支持Java技术。Java ME的结构1如图。
Java SE的结构

Java EE的结构

Java ME的结构

1.1.4 Java API文档
API的全程是Application Programming Interface,即应用程序编程接口,主要包括类的继承结构、成员变量、成员方法、构造方法、静态成员的描述信息和详细说明等内容。可以在 https://docs.oracle.com/en/java/javase/ 中找到对于版本的JDK API文档。
1.2 Java语言的特性
Java语言的作者们编写了具有广泛影响的Java白皮书,里面详细地介绍了他们的设计目标以及实现成果,还用简短的篇幅介绍了Java的语言特性。下面将对这些特性进行扼要的介绍。
1.2.1 面向对象
面向对象是Java语言的基础,也是Java语言的重要特性,它本身就是一种纯面向对象的程序设计语言。Java提倡万物皆对象,语法中不能在类外面定义单独的数据和函数,也就是说,Java语言最外部的数据类型是对象,所有元素都要通过类和对象来访问。
1.2.2 分布性
Java的分布性包括操作分布和数据分布,其中操作分布是指在多个不同的主机上布置相关操作,而数据分布是将数据分别存放在多个不同的主机上,这些主机是网络中的不同成员。Java可以凭借URL(统一资源定位符)对象访问网络对象,访问方式与访问本地系统相同。
1.2.3 可移植性
Java程序具有与体系结构无关的特性,可以非常方便地移植到网络上的不同计算机中。同时,Java的类库也实现了针对不同平台的接口,使得这些类库也可以被移植。
1.2.4 解释型
运行Java程序需要解释器。任何移植了Java解释器的计算机或其他设备都可以用Java字节码进行解释执行。字节码独立于平台,它本身携带了许多编译时的信息,使得连接过程更加简单,开发过程更加迅速,更具探索性。
1.2.5 安全性
Java语言删除了类C语言中的指针和内存释放等语法,有效的避免了用户对内存的非法操作。Java程序代码要经过代码校验、指针校验等很多测试步骤才能够运行,所以未经允许的Java程序不可能出现损害系统平台的行为,而且使用Java可以编写出防病毒和防修改的系统。
1.2.6 健壮性
Java语言的设计目标之一,是能编写出多方面的、可靠的应用程序。因此,Java会检查程序在编译和运行时的错误,并消除错误。类型检查能帮助用户检查出许多在开发早期出现的错误,集成开发工具(如 Eclipse、NetBeans、IDEA)的出现也使得编译和运行Java程序更加容易。
1.2.7 多线程
多线程机制能够使应用程序在同一时间并执行多项任务,而且相应的同步机制可以保证不同线程能够正确地共享数据。使用多线程,可以带来更好的交互能力和实时行为。
1.2.8 高性能
Java编译后的字节码是在解释器中运行的,所以它的速度较多数交互式应用程序提高了很多。另外,字节码可以在程序运行时被翻译成特定平台的机器指令,从而进一步提高运行速度。
1.2.9 动态
Java在很多方面比C和C++更能够适应开发环境,可以动态调整库中方法和增加变量,而客户端却不需要任何更改。在Java中进行动态调整是非常简单和直接的。