课程导言
【本课和同学们探讨Java语言的发展历程、以及开发运行Java程序必备的开发环境和运行环境。通过本课的学习,你将了解到Java语言的起源、版本的迭代及Java的开发及运行环境、常用的Java开发工具等内容。】
认识Jvav语言
首先认识一下Java语言的创始人詹姆斯●高斯林,然后再谈谈Java语言的发展轨迹和特点,最后说一说为什么要学习Java语言。
Java语言的创始人詹姆斯.高斯林
图1 詹姆斯.高斯林
图中这个和蔼可亲的大叔就是詹姆斯●高斯林,被人称为Java之父。他将JAVA语言比喻成:奉献给世人一杯热气腾腾、芬香四溢的咖啡。Java的logo也是一杯冒着热气的咖啡。咖啡是世界上比较流行的饮料,詹姆斯将JAVA语言比喻为一杯咖啡,可见他对JAVA语言将会流行世界是多么的自信。
Java语言的发展轨迹
Sun公司的詹姆斯●高斯林等人于90年代初开发了Java语言的雏形,最初被命名为Oak。Java随着互联网技术的应用得到了快速发展,逐渐成为重要的网络编程语言。Java从第一个版本发布到现在已经有28年的时间了,下图回顾了Java的发展轨迹和历史变迁。

图2 Java发展时间线
Java语言诞生于1994年,但可以溯源到1991年。1991年,在Sun公司工作的詹姆斯受命组织团队开发一个叫Oak的项目,目标设定在家用电器等小型系统的编程语言,來解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题,由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。就在Oak几近失败之时。在1994年詹姆斯—高斯林等人决定将该技术应用于互联网,将该语言改造为网络编程语言,这个语言就是Java语言的前身。

图 3 1991年詹姆斯受命组织开发OaK项目
语言改造后,OaK语言在互联网上得到很大的应用和发展,从一个默默无闻的小人物,突然变成了一个家喻户晓的大人物,而这时,发生了一件事情,促使詹姆斯对OaK语言改名。原来OaK名称已被一家显卡制造商注册,Oak这个名字不能再用了,詹姆斯于是在1995年将OaK更名为Java。
1996年是Java语言里程碑的一年,在这一年,Java开发人员熟悉的JDK 1.0发布了,Java语言有了第一个正式版本的运行环境。JDK 1.0版本包括Java虚拟机、网页应用小程序,可以嵌套在网页中运行,用户界面组件,通过用户界面组件可以开发窗口应用程序。

图4 1996年JDK1.0发布
1998年,对Java语言来说,又是一个里程碑。Java正式发布了J2SE 1.2,在这个版本中,Java技术体系拆分为3个方向,分别是面向桌面应用开发的J2SE、面向企业级开发的J2EE和面向手机等移动终端开发的J2ME。

图5 1998年J2SE1.2发布
2006年,对java来说,发生了两件大事。第一件大事是Sun公司宣布将Java代码开源,代码开源意味者Java开发者可以查看Java核心代码,了解JDK核心架构。第二件大事终结了从JDK 1.2开始已经有8年历史的J2EE、J2SE、J2ME的命名方式,启用Java SE 6、Java EE 6、Java ME 6的命名方式。

图6 2006年Java代码开源
2017年,Oracle公司正式发布了Java SE9版,为什么是Oracle公司,而不是Sun公司呢,因为Sun公司在2009年被Oracle以74亿美元的价格收购了。
2019年,Oracle公司正式发布了Java SE13版。
1、Java语言的特点
Java语言是世界上用的最多的编程语言,它是如何吸引了众多的开发者,同其它语言相比,它有哪些特点呢?
(1)平台无关性
Java语言的一个显著特点就是平台的无关性,即Java是可以跨平台的编程语言。要理解平台无关性的特点,首先要知道什么是平台,打开电脑我们用Windows系统,打开手机我们用安卓系统、一些大型网站会用到的Linux系统,这些系统都是平台。
平台无关性的意思就是用Java语言写的程序可以在任何平台上运行,如windows系统、安卓系统、Linux系统上运行。那么java是如何实现跨平台运行的呢?下图给出了Java程序从编写、编译到运行的过程流程图,从图中可以找到java跨平台的原理。

图7 Java平台无关性原理
我们用记事本、Eclipse等工具写好Java程序后,使用Java编译器将写好的Java代码文件编译成中间文件,中间文件的扩展名是class,当我们需要class文件在Windows系统上运行时,还得需要在Windows系统上安装一个Java虚拟机,由Java虚拟机解释class文件,并翻译成Windows运行代码。同样,如果我们需要class文件在Linux系统上运行,就需要在Linux系统上安装Java虚拟机,由Java虚拟机解释class文件,并翻译成Linux运行代码。在其它系统上也是如此。
(2)面向对象
Java是面向对象的语言,什么是面向对象呢?面向对象主要是针对面向过程开发来说的。
假如我们要开发一个学生管理系统,用面向过程来开发的话,可能会考虑该系统主要有哪些功能以及数据,功能可能包括学生信息、查询成绩、安排课程等;数据可能包括学生信息、课程信息,并通过数组、链表等数据结构来存储和组织这些数据。功能和数据确定后,通过编写函数实现功能并操作数据,其函数和数据是分离的。当系统的数据改变时,如在学生信息中增加学生的家庭信息,面向过程开发的麻烦就来了,得需要修改大量代码以适应数据的改变。
用面向对象来开发的话,可以把对象想象成现实世界中的事物,如人、动物、楼房、树木等。事物有属性和行为,例如人有姓名、年龄、性别等属性,也有跑步、骑自行车、吃饭等行为。如果要编写一个关于人的系统,可以把人的属性和行为看作一个整体并封装为一个Java类,这就是面向对象开发的概念。
用对象来考虑学生管理系统,自然会考虑到该系统由老师、学生、课程等对象组成。老师有姓名、专业、授课课程、所教班级、上课时间等属性,也有上课、查询和录入学生信息等行为;学生有学号、姓名、出生年月、所在班级等属性,也有查询成绩、查询课程等行为;课程有课程名称、课程编号、授课老师等属性,也有课程安排等行为。
面向对象把数据(对象属性)和功能(行为)封装到一个对象中,所有对数据(对象属性)的操作都封装在对象中,较好实现了数据封闭型原则。当数据(对象属性)改变时,不会影响到其它代码,易于系统的扩展和维护。而且,面向对象更接近于人的思维。

图8 面向对象更接近人的思维
(3)内存的自动管理
学过C语言开发的人,对内存的管理都很头痛。用Java语言可以不用考虑内存了。在生活中,我们希望有个袋子可以无限地装东西。在Java编程中,可以把内存看成袋子,不用担心袋子装不下东西,不用整理袋子,Java会自动整理,大大提高了我们的编程效率。

图9 内存的自动管理
2、学习Java语言的前景
对开发者来说,选择一门语言来学习,其实也要下很大决心的,毕竟要付出不少精力。在众多编程语言中,为什么要学习Java呢?
(1)世界上最受程序员欢迎的编程语言
Java语言从出现到今天,已经发展近30年。在这30年中,产生了无数和Java相关的产品、技术和标准,众多的开源框架和组件给Java程序员提供了标准积木,用于快速构建大型企业应用项目。
(2)企业最热衷的编程语言
因为Java易学、安全性,可移植、跨平台等特点,并且提供了大量开源框架和组件,易于构建大型企业应用项目。因此政府组织、机构及大型企业都青睐于用Java开发信息系统,企业用人需求量巨大。
(3)学习Java高薪没有问题
学会java,不但容易找到工作,钱赚的也多。Java工程师是世界上软件工程师需求量最大的,尤其是Java高级工程师,年薪平均在25W-50W之间,Java架构师薪资在80W起,选择Java,高薪没问题!
3、Java运行及开发环境
Java是编译兼解释性语言,Java的源代码首先被编译成字节代码,然后依赖各种不同平台上的虚拟机来解释执行字节码。Java语言的编译、解释、执行过程如下图所示:

图10 Java语言编译、解释及执行过程
Java代码是文本文件,可以用记事本等文本编辑器直接编辑Java文件。代码编写完成后运行Java编译器,将Java源代码文件编译为class文件(字节码文件),JVM(Java虚拟机)的类装载器加载class文件,由解释器解释执行。
从图中可以看出,从编写Java代码到运行Java程序,需要使用Java编译器和JVM,其它部分都是我们熟知的程序,例如:可以用记事本编写Java源代码,操作系统平台可以选择熟知的XP、Win7或Win10、Linux等系统。
Java为开发者提供了JRE(Java运行环境)和JDK(Java开发工具包),分别对应上图的JVM(Java虚拟机)和Java编译器。JRE是运行Java程序所必需的软件环境,是提供给想运行java程序的用户使用的,不过开发者也需要运行编写的Java程序,所以JRE是开发者必须要安装的Java软件。JRE包括JVM和Java核心类库。
JDK(Java开发工具包)为Java开发者提供了开发环境,JDK包含了编译java源码的编译器javac,同时还包含了java程序调试和分析工具,以及编写java程序所需的文档和demo例子程序。JDK是Java开发者必备的开发工具。
JDK1.5及后续版本包含了运行Java程序所必须的JRE,Java开发者安装JDK后,就不再需要单独安装JRE了。
课程小结
1、1991年,在Sun公司工作的詹姆斯●高斯林受命组织团队开发一个叫Oak的项目,目标用于智能家用电器的编程语言。后来由于市场需求没有预期的高,Sun公司准备放弃该项计划,但詹姆斯等人决定将Oak应用到互联网,为开发者提供网络编程语言,并在1995年正式发布Java语言,此后Java语言获得了巨大的成功。
2、整个Java技术体系分为三个开发方向,分别是面向桌面应用开发的J2SE、面向企业级开发的J2EE和面向手机等移动终端开发的J2ME。其中应用最广泛的技术体系是J2EE,多用于企业级的技术解决方案。
3、Java提供了JRE和JDK两个工具包,用于Java程序的运行和开发。JRE也称为Java运行环境,是运行Java程序所必需的软件环境,是提供给想运行java程序的用户使用的,不过开发者也需要运行编写的Java程序,所以JRE也是开发者必须要安装的Java软件;JDK为Java开发者提供了Java程序开发环境,开发者应用JDK提供的开发工具编译和调试Java程序。
思考与练习
1.1998年,Java正式发布了J2SE 1.2,在这个版本中,Java技术体系拆分为哪3个方向?
2.请简要叙述一下Java跨平台的原理。
3.面向过程开发和面向对象开发的主要区别是什么?
4.用哪些工具可以编写Java代码?
5.请简要叙述JRE和JDK的区别。
6.请说出当前主流的Java集成开发环境。