1.1 Java概述
1.1.1 Java的由来与发展
Java是一种高级计算机语言,它是由Sun公司(2009年4月20日被Oracle公司收购,2010年完成合并)于1995年5月推出的一种用来编写跨平台应用软件、完全面向对象的程序设计语言。Java语言简单易用、安全可靠,自从问世以后,受到了市场的大力追捧。在PC、移动设备、家用电器等领域,Java技术无处不在。
Sun公司在1995年推出Java语言以后,吸引了编程世界的广泛关注。那么,Java到底有什么魔力呢?1990年末,Sun公司预测嵌入式系统将会在家电领域大显身手,于是在1991年6月启动了“Green计划”,由詹姆斯·高斯林(James Gosling)、迈克·谢里丹(Mike Sheridan)等人带领的开发团队负责,准备开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构,以便于人们与家用电器进行信息交流与控制。因为家用电器的计算处理能力和内存都非常有限,所以要求语言必须非常小且能够生成非常紧凑的代码,这样才能在这样的环境中执行。另外,不同的家用电器使用的CPU不同,因此要求该语言必须是跨平台的。开发团队最初考虑使用C++语言,但是C++太过复杂,以致很多开发者经常错误使用,而且项目面向的是嵌入式平台,可用的系统资源十分有限,所以Sun公司创始人之一的比尔·乔伊(Bill Joy)决定开发一种新语言,他提议在C++的基础上开发一种面向对象的环境。Java便由此而问世,詹姆斯•高斯林最初将其命名为Oak(橡树)。遗憾的是,当时由于这门语言只能为家用电器提供一个通用环境,且受到诸多因素的限制,Oak语言没有得到迅速推广。1994年夏天,随着Innernet的迅猛发展,浏览器的出现,枯燥乏味的信息文档已经不满足人们的需求,这给Oak语言带来了新的生机。詹姆斯·高斯林立刻意识到这是一个机会,于是对Oak进行了小规模的改造。之后,开发团队的其他成员完成了第一个基于Oak语言的网页浏览器WebRunner,从而让浏览器具有了在网页中执行内嵌代码的能力,可以创造含有动态内容的网页。1995年,Sun公司将Oak更名为Java,并将其直接发布在互联网上,免费开源给大家使用,获得了广大开发人员的青睐。之后,Java开始走红,成为一门广为人知的编程语言,被用于开发Web应用程序。
Java一开始具有吸引力,是因为Java程序可以在Web浏览器中运行,随着Internet普及和迅猛发展,以及Web技术的不断更新,Java语言与时俱进、推陈出新,使Java语言在现在社会经济发展和科学研究中,占据了越来越重要的地位。在最流行的语言流行指数Tiobe,RedMonk和PyPL中均长期排名前三,且多年是Tiobe排行榜中排名第一的语言。从手机软件到企业级应用、从无人驾驶汽车到线上支付、从Minecraft(我的世界)游戏娱乐到火星探测器太空探索,Java语言的使用场景非常广泛。现在,Java广泛应用于开发服务器端的应用程序,截止到2021年,Java开发占据了服务器端后台开发80%以上的市场份额。
Java语言目前主要应用于如下领域:
- 移动端安卓系统。目前手机的Android系统和IOS系统占据了市场的主导地位,在Android系统中大多数应用都是用Java编写的,所以想做好Android系统的程序员,拥有好的Java功底是很重要的。
- 服务器端应用程序。Java语言具有优秀的可移植性和安全性,银行、交通、石油、电力等大型领域信息化系统都选择用Java进行开发。
- 云计算和大数据领域。随着云计算技术的发展,越来越多的企业考虑将其应用部署在Java平台上。大数据技术是近些年最热门的新兴技术,其主流框架都离不开Java平台。总之,无论是公共云、私有云、大数据开发,Java都是目前最适合的选择。
从Java编程语言本身角度来讲,其严谨的结构,易懂的语法加上简易的编写为其之后的发展及革新提供了良好的保障。
注意:Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。
1.1.2 Java语言的特点
Java语言是一门跨平台的适用于移动端、服务器领域、分布式环境的面向对象程序设计语言,它之所以能从众多编程语言中脱颖而出,成为最流行的服务端开发语言之一,是因为具备如下显著特点:
- 简单易学。Java语言虽然衍生于C++,但是删除了许多使用频率低、不易理解和容易混淆的功能,比如指针、运算符重载、多继承等。这样做可以使Java程序直接访问内存地址,保证程序更高的安全性,并提供了自动的垃圾回收机制GC,程序员不必再担忧内存管理问题。
- 面向对象。Java是一种以对象为中心,以消息为驱动的面向对象的语言,它提供了类、接口和继承等,不支持类之间的多继承,但是支持接口之间的多继承,并支持类和接口之间的实现机制。
- 平台无关性。Java语言是平台无关的语言,源文件(后缀为.java的文件)通过Java编译器生成一种体系结构中立性的目标文件格式(后缀为.class的文件),依赖Java虚拟机(JVM)在目标计算机系统中实现了平台无关性,JVM是Java平台无关的基础。平台无关性是确保程序可移植的最重要部分,Java还严格规定了各个基本数据类型的长度,Java编译器是用Java语言实现的,Java的运行环境是用ANSIC实现的,使Java系统本身具有很强的可移植性。
- 支持多线程。线程是比进程更小的执行单位,很多操作系统都把线程视为基本的执行单位。Java支持多线程编程,可以实现并发处理多个任务,互不干涉,不会由于某一任务处于等待状态而影响了其他任务的执行,可以提高程序执行效率。
- 支持网络编程。Java就是为网络而设计的语言,完全支持互联网的所有功能。Java通过系统类库支持TCP/IP协议、UDP协议、HTTP协议等,用户可以通过URL地址在网络上很方便的访问Web对象,实现与Web对象的信息交互。
- 健壮性。Java语言是一门强类型语言,它在编译和运行时进行大量的类型检查,防止不匹配的数据类型的发生,并且具备了异常处理、强类型机制、GC自动回收等特性,保证了程序的稳定、健壮。
- 安全性。Java语言设计的目的是用于网络/分布式运算环境,因此Java语言非常注重安全性,以防遭到恶意程序的攻击。Java语言除了丢弃指针来保证内存使用安全以外,它通过自己的安全机制防止了恶意程序对本地系统的破坏,主要通过字节码校验器检查、限制从网络加载的类只能访问特定文件系统等,保证了Java成为了安全的编程语言。
- 分布式计算。Java语言可以开发分布式计算的程序,具有强大的、使用简单的联网能力。它提供了很多可以用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等,使应用程序可以象访问本地文件系统那样用URL访问远程对象。
想一想:你了解哪些语言?Java语言在众多编程中脱颖而出的原因有哪些?
1.2 Java开发环境搭建
1.2.1 JDK简介
Java开发工具包(JavaSE Development Kits,简称JDK)是一套独立程序构成的集合,用于开发和测试Java程序,是Java程序开发的首要工具。
JDK由Java API、Java工具和Java基础的类库等组成,其核心是Java API,API(Application Programming Interface,应用程序编程接口)是Java提供的供编程人员使用的标准类库,开发人员可以用这些类库中的类来实现Java程序的各种功能,从而免去自行设计很多常用类的繁重工作,极大地提高开发效率。另外,Java API还包括一些重要的语言结构以及基本图形、网络和文件I/O等。
本书中使用的是JDK15版本,与之前的版本相比,JDK 15 为用户提供了14项主要的增强(JEP),同时新增了1个孵化器模块、3个预览功能、2个不推荐使用的功能,并删除了2个淘汰的功能。
知识点拨:增强(JEP)、孵化器模块(Incubator)和预览特性(Preview)的具体含义:
增强:英文全称为JDK Enhancement Proposals ,简称 JEP,是JDK 增强建议,主要包括新增特性和改进提案。
孵化器:实际上就是实验版,主要从Java社区收集意见、反馈,稳定性差,后期可能有比较大的变动,称之为尚未定稿的API/工具。
预览特性:规格已经成型,实现基本确定,但是最终未定稿,这些特性,还可能被移除,但可能性比较小,一般都会定下来。
1.2.2 下载和安装JDK
编写Java程序,首先要下载JDK安装程序,读者可以直接从Oracle公司的官方网站下载。
通过浏览器打开Oracle官网(
http://www.oracle.com/technetwork/java/javase/ downloads/index.html),根据提示进入下