单元概述
本章主要介绍Java语言的发展历史,了解Java的运行原理及Java编程语言的特点,通过搭建Eclipse集成开发环境来运行Java应用程序。
1.1 Java简介
1.1.1 什么是Java
计算机语言是人与计算机之间的通讯语言,分为机器语言、汇编语言、高级语言。Java是一种高级计算机语言,它是由Sun公司(已被Oracle公司收购)于1995年5月推出。
1.1.2 Java发展历史
Java是一种面向对象的程序设计语言,由Sun( Stanford University Network)公司的James Gosling等人于20世纪90年代初开发。它最初被命名为Oak,用来开发消费类电子产品,解决诸如电话、电视机等家用电器的控制和通讯问题。后来随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,在1995年5月正式命名为"Java",变化历程如下图
JDK版本 | 发布时间 |
J2SE 1.0 | 1996-01 |
J2SE 1.1 | 1997-02 |
J2SE 1.2 | 1998-12 |
J2SE 1.3 | 2000-05 |
J2SE 1.4 | 2002-02 |
JavaSE 5.0 | 2004-09 |
JavaSE 6.0 | 2006-04 |
JavaSE 7.0 | 2011-07 |
JavaSE 8.0 | 2014-03 |
JavaSE 9.0 | 2017-09 |
JavaSE 10.0 | 2018-03 |
JavaSE 11.0 | 2018-09 |
1.1.3 Java语言平台
Java语言平台包括3个版本,标准版、企业版、微型版。
JavaSE:标准版(Standard )。JavaSE包含构成Java语言核心的类,适合开发桌面应用程序和底层应用程序。同时它也是JavaEE的基础平台。
JavaEE :企业版(Enterprise)。JavaEE是在JavaSE平台的基础上构建的,它包含用于开发企业级应用的类,如EJB、servlet、JSP、事务控制等,为企业级应用提供了标准平台,简化复杂的企业级编程。
JavaME :微型版(Micro)。包含JavaSE平台中一部分类,用于嵌入式系统开发,专门针对一些小型的消费电子产品,如:手机、PDA、机顶盒。
1.2 Java开发环境搭建
在开发Java程序时,需要下载并安装JDK,配置必要的环境变量。
1.2.1 JDK下载与安装
JDK:Java开发工具包(Java Development Kit),是SUN公司提供的一套Java开发环境。JDK是整个Java开发的核心,其中包括Java编译器、Java运行工具、Java文档生成工具、Java打包工具等。在1996年1月,Sun公司发布了JDK1.0,随后相继推出了JDK1.1、JDK1.2、JDK1.3、JDK1.4、JDK5(1.5)、JDK 6(1.6)、JDK7(1.7)、JDK8(1.8)、JDK9-JDK21。目前企业应用较多的是比较稳定的JDK8,所以我们将针对JDK8进行讲解。
JRE:Java运行时环境(Java Runtime Environment),是Sun公司提供的一套Java运行环境。由于有些用户只需要运行事先编写好的Java程序,不需要自己动手编写,因此JRE中只包含Java运行工具,不包含Java编译工具。
注意:为了方便使用,Sun公司在其JDK中自带了一个JRE,也就是说开发环境中包含运行环境,这样一来,开发人员只需要在计算机上安装JDK即可。
JDK下载地址 Java Downloads | Oracle
JDk下载之后,单击安装,安装界面如下:
开发工具:是JDK中的核心功能模块,其中包含一系列Java程序所必须的可执行程序,如javac.exe、java.exe等,还包含了一个专用的JRE环境。
源代码:安装此模块将会安装Java所有核心类库的源代码,方便调试时使用。
公共JRE:是Java程序的运行环境。由于开发工具中已经包含了一个JRE,因此没有必要再安装公共的JRE环境,此项可以不作选择。
安装完JDK后会自动安装JRE,建议JDK和JRE都默认同一个根目录
JDK安装完成后,目录结构图如下所示:
bin目录:该目录存放一些可执行程序。如javac.exe (Java编译器)、java.exe (Java运行工具)、jar.exe (打包工具)和javadoc.exe (文档生成工具)等。
include目录:包含一些C语言的头文件。由于JDK是通过C和C++实现的,因此在启动时需要引入一些C语言的头文件,该目录就是用于存放这些头文件的。
jre目录:该目录是Java运行时环境的根目录。它包含Java虚拟机,运行时的类包、Java应用启动器以及一个bin目录,但不包含开发环境中的开发工具。
legal目录: 该路径下存放了JDK各模块的授权文档 。
lib目录:包含lib包文件。lib是library的缩写,意为Java类库或库文件,是开发工具使用的归档包文。
javafx-src.zip:该压缩文件内存放的是Java FX(Java图形用户界面工具)所有核心类库的源代码。
src.zip:放置的是JDK核心类的源代码,通过该文件可以查看Java基础类的源代码。
README等:说明性文档。
1.2.2 环境变量配置
JDK安装完成后,要想在系统中的任何位置都能编译和运行Java程序,还需要配置环境变量。通常来说,我们需要配置两个环境变量- PATH和CLASSPATH。
1、PATH环境变量
作用:用于告知操作系统到哪里去寻找JDK。比如到哪里去寻找javac.exe,java.exe等。
配置方式:打开“我的电脑->属性->高级系统设置->高级->环境变量->系统变量”,点击“新建”,弹出界面输入:
1.首先新建一个系统变量
“变量名”的文本区域值设置为“JAVA_HOME”;
“变量值”的文本区域值设置为JDK的安装目录“D:\Java\jdk1.8.0_151”(路径以JDK安装目录为准)。
2.其次在变量PATH的值中添加两个值 %JAVA_HOME%\bin 和 %JAVA_HOME%\jre\bin 点击确定即可
验证是否配置成功:单击“开始菜单->所有程序->附件->运行”(或者使用快捷键Win+R),在运行窗口中输入“cmd”并确定后,将打开命令行窗口。在窗口中输入“java -version”命令后,如果能正常地显示JDK对应版本信息,即说明系统环境变量配置成功。
2、CLASSPATH环境变量
作用:用于告知Java编译器到哪里去寻找Java标准类库。这些标准类库是别人已经写好的,我们只管使用。比如我们常用到java.lang包中的类,在配置classpath变量后被设为默认导入,所以在写程序时就不用import这个包了。在Java1.5之后,不需要手动配置CLASSPATH。
1.3 Java程序运行原理
1.3.1编写第一个Java程序
编写一个Java程序需要3个步骤,编辑Java文件->编译Java文件->运行Java文件。下面通过编写HelloWorld程序进行讲解。
第一步:编辑。
在指定盘(比如D盘)新建一个test文件夹,并在该文件夹中新建一个文本文档,重命名为HelloWorld.java后,用记事本方式打开,在其中编写如下一段Java代码,然后保存。
public class HelloWorld {
public static void main(String[ ] args) {
System.out.println("Hello world");
}
}
说明:
1、所有Java源文件的扩展名必须为.java。
2、class是一个关键字,用于定义一个类。在Java中,类是程序的基本单元,所有的代码都需要写在类中。
3、HelloWorld是类的名称,简称类名,类名必须和文件名相同。class关键字与类名之间需要用空格、制表符、换行符等任意的空白字符进行分隔。类名之后要写一对大括号,它定义了当前这个类的管辖范围。
4、“public static void main(String[] args){}”定义了一个main()方法,该方法是Java程序的执行入口,程序将从main()方法所属大括号内的代码开始执行。
5、在main()方法中编写了一条执行语句“System.out.println("Hello World!");”,它的作用是打印一段文本信息,执行完这条语句会在命令行窗口中打印“Hello World!”
第二步:编译。
1、单击“开始菜单->所有程序->附件->运行”(或者使用快捷键Win+R),在运行窗口中输入“cmd”并确定后,将打开命令行窗口。在命令行窗口输入如下两行命令进入test目录。
D: --切换到D盘根目录
cd test --进入到D盘test目录
2、在命令行窗口中输入“javac HelloWorld.java”命令,对源文件进行编译。
上面的javac命令执行完毕后,会在当前目录下生成一个字节码文件“HelloWorld.class”。
注意:在使用javac命令编译文件HelloWorld时,有可能会出现“找不到文件”的错误。出现上述错误很有可能是因为文件的扩展名被隐藏了,虽然文本文件被重命名为“HelloWorld.java”,但实际上该文件的真实文件名为“HelloWorld.java.txt”,文件类型并没有得到修改。解决方式是打开Windows系统控制面板中的【文件夹选项】,在“查看”选项下高级设置一栏中将“隐藏已知文件类型的扩展名”选项前面的“√”取消,单击【确定】按钮。然后再重新修改文件名即可。
第三步:运行。
如果编译正确执行后,在命令行窗口中输入“java HelloWorld”命令,运行编译好的字节码文件,将会在控制台上输出“Hello World”。
1.3.2 Java程序运行原理
通过HelloWord程序,我们不难发现,编写Java程序需要分3个步骤,编辑、编译、运行。实际上,Java程序是运行在Java虚拟机上的,Java虚拟机英文缩写为JVM:Java Virtual Machine ,虚拟机是一个虚构出来的计算机,有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。
Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码文件(字节码文件),就可以在多种平台上不加修改地运行。
Java程序的运行机制如下图所示:
编辑、编译及运行Java程序的过程
一个运行时的Java虚拟机实例的天职就是:负责运行一个Java程序。Java虚拟机的主要任务是装载class文件并且解释执行其中的字节码。当启动一个Java程序时,一个虚拟机实例也就诞生了。当该程序关闭退出,这个虚拟机实例也就随之消亡。如果同一台计算机上同时运行三个Java程序,将得到三个Java虚拟机实例。每个Java程序都运行于它自己的Java虚拟机实例中,如下图所示:
Java虚拟机示意图
运行时过程
编译源文件:java源代码被java编译器编译(Compile)。如果这时产生错误,我们称为编译错误。如果没有错误,则生成字节码(byte code)。
运行字节码:java字节码被装载到java虚拟机中,解释成本地代码再运行。如果此时产生错误,我们称之为运行时错误(Runtime)。
1.3.3 注释
任何一门编程语言都有注释,通过注释可以提高程序的可读性,使程序的条理更加清晰,通常我们在写一个类时,会在程序的开头加入作者,时间,版本,要实现的功能等内容注释,方便维护人员与程序员的交流。
注释在编译阶段不会被编译,Java中的注释包含下面三种。
1.单行注释,以双斜线开头,本行内双斜线后面所有的内容为注释内容。如:
//test
2.多行注释,以斜线星开头,星斜线结尾,中间的所有内容为注释内容。如:
/*
* test
*/
3.文档注释,以斜线两个星开头,星斜线结尾,中间的所有内容为注释内容。文档注释可以生成JavaDOC
/**
* @author neuedu
*/
1.4 Java语言特点
通过上述案例,我们总结一下Java语言的特点,可供各位学员了解。
1.4.1跨平台
通过上面的Java运行原理,我们不难发现,Java程序由虚拟机负责解释执行,而并非操作系统决定。
Java编译器会将Java源程序编译成不同操作系统下的字节码文件,这样便可以实现Java程序的跨平台。原理如下图
1.4.2 半编译半解释
编程语言分为编译型语言和解释型语言。
编译型语言编写的程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时则不需要重新翻译,直接使用编译的结果就行。程序执行效率高,依赖编译器,跨平台性差,如C/C++等。
解释型语言编写的程序不需要编译,每次运行,都需要一边运行一边翻译,因而效率低,但是靠着解释器,跨平台性好,如PHP,JavaScript等。
而Java语言编写的程序,运行之前需要先编译成字节码文件,所以Java语言是半编译半解释类型的语言。
1.4.3 简单
Java和C++的语法类似,同时Java中摒弃了C++中容易引发程序错误的地方,如多重继承、运算符重载、指针和内存管理等。而且Java具备自动垃圾回收机制、提供了丰富的类库,方便用户调用。因此,相对其它编程语言来说,使用Java编程主要关注在处理程序逻辑上,不用担心垃圾回收、内存管理等内容。
1.4.4 面向对象
面向对象编程是目前大多数编程语言都具备的特性,Java也不例外,因为Java语言最初的设计完全是面向对象的,所以面向对象是Java最基本的特性,面向对象的各种特性在Java语言中都可以使用。
1.4.5 分布式
Java包括一个支持HTTP和FTP等基于TCP/IP协议的子库。因此,Java应用程序可凭借URL打开并访问网络上的对象,就像访问本地文件一样简单方便。Java的分布性为实现在分布环境尤其是Internet下实现动态内容提供了技术途径。
1.4.6 健壮
Java提供了自动垃圾收集机制来进行内存管理,并检测程序对内存的访问,确定合法并不会引起任何问题后,才允许访问。
Java还提供了异常处理机制用来检查编译及运行时可能出现的问题,Java在编译和运行程序时要对可能出现的异常进行检查;同时,Java在编译时还可捕获类型声明中的许多常见错误,帮助程序员消除错误,防止系统崩溃。
1.4.7 安全
作为网络语言,安全是非常重要的。Java的安全性可从两个方面得到保证。一方面,在Java语言里,像指针和释放内存等C++功能被删除,避免了非法内存操作。另一方面,当Java操作浏览器时,语言功能和浏览器本身提供的功能结合起来,使它更安全。Java拥有多个层次的互锁保护措施,能有效地防止病毒的入侵和破坏。Java不支持指针,避免了由于指针操作所引起的错误和非法入侵。同时,Java在运行应用程序时,严格检查其访问数据的权限,保证数据的可靠性。
1.4.8 支持多线程
线程有时也称小进程,是一个大进程里分出来的小的独立运行的基本单位。Java提供的多线程功能使得在一个程序里可同时执行多个小任务,即同时进行不同的操作或处理不同的事件。多线程带来的更大的好处是具有更好的网上交互性能和实时控制性能,尤其是实现多媒体功能。
1.5 集成开发环境
集成开发环境(IDE,Integrated Development Environment)是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。
Java常用IDE:
Eclipse:是一个开放源代码的、基于Java 的可扩展开发平台。
MyEclipse:是Eclipse的多插件综合版,也是一款功能强大的J2EE集成开发环境,由Genuitec公司发布,它是收费的。
IntelliJ IDEA:是一款综合的Java 编程环境,支持J2EE,Ant,JUnit和CVS集成,非平行的编码检查和创新的GUI设计器。
NetBeans IDE:是一个屡获殊荣的集成开发环境,可以使开发人员利用Java平台能够快速创建Web、企业、桌面以及移动的应用程序。
1.5.1 Eclipse集成开发环境
Eclipse是一个开放源码的、基于Java的可扩展平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。Eclipse平台定义了一个开放式体系结构,任何插件开发者都可以在扩展点上添加各种功能。Eclipse软件旨在简化用于多操作系统软件工具的开发过程,它被设计成可以在多个操作系统上运行,基于Eclipse的软件在Linux和Windows系统上都可以运行,因此可以省去开发者把Windows应用程序切换到Linux的操作,进而简化了整个开发过程。同时Eclipse还提供了与每个底层操作系统的强大集成。
1.5.2 选择工作空间界面
安装Eclipse软件前,要确保已经成功安装了JDK工具。Eclipse是可以免费使用的软件,可以从Eclipse的官方站点 http://www.eclipse.org 上下载。
安装方法是直接解开压缩包到磁盘某个分区(如:D盘)的根目录,安装Eclipse的计算机上必须先安装与之版本对应的jdk。
Eclipse的启动方式是在Windows操作系统中可以直接双击Eclipse安装目录下的eclipse.exe启动Eclipse。
当你第一次运行Eclipse软件时,会遇到如下图所示的窗口界面。
这个窗口的功能是让开发者选择一个工作空间(Workspace),或者叫工作目录。如果你输入的工作目录在计算机上并不存在,那么Eclipse会自动为你创建一个目录。我们今后在Eclipse上开发的项目及代码都会放在这个Workspace中,因此建议大家将Workspace放在非系统盘下,以避免重装系统而丢失代码,Eclipse的启动页面如
下图
图1.21 Eclipse的启动界面
选择工作空间,就是将来程序存放的位置,如下图
图1.22设置Workspace的窗口
在选中了Workspace窗口下面的复选框后,会将我们所选择的工作目录作为默认的工作空间,以后再运行Eclipse也不会出现这个窗口进行询问了。
1.5.3 Eclipse的主界面
Eclipse的主界面图如下图
图1.23 Eclipse主界面
主要框架部分介绍如下:
- 菜单栏和工具栏;
- Package Explorer:树状的项目导航视图,在这里我们可以清晰地看到项目列表以及项目下的包、文件夹、文件列表以及它们的层次关系。我们可以在这里通过鼠标右键菜单来实现文件、包及文件夹的创建、复制、删除、重命名、刷新列表等操作;
- 文本编辑窗口:在这个视图里,以文本编辑的方式打开Java代码,可以进行编辑修改,并可以通过鼠标右键菜单来实现运行、调试等功能,默认情况下,Eclipse支持自动编译的功能,当我们在保存文件的同时,Eclipse就会对其进行编译;
- Outline视图:文件的大纲视图,在这里我们可以看到被打开文件的类、属性、方法等成员的结构;
- Console视图:控制台视图,当被打开文件执行时,输出的信息就在这里显示。
提示:
- 如果某些视图在你的Eclipse界面中没有看到,那么你可以通过菜单"Window(窗口)"->"show view(显示视图)"来选择你要显示的视图;
- 如果某些视图不在你习惯的位置,你可以通过拖拽鼠标来改变它们的位置和大小。
1.5.4 创建项目
创建项目可以如下进行操作:
- 选择菜单"File(文件)"->"New(新建)"->"Project(项目)",如果看不到"Project(项目)"这个菜单,可以在"Others(其它)"中找到。
- 或者使用工具栏 按钮,点击右面那个黑色小钮 ,选择"Project(项目)"菜单。
- 打开"New Project"窗口后,选择"Java Project"项目类型,然后按"next"按钮。
操作界面如下图1.24所示。
图1.24 New Project界面
- 进入"New Java Project"窗口后,输入项目名,然后按"Finish"按钮,我们就创建了一个Java项目,如下图1.25所示。
图1.25 New Java Project界面
- 创建项目后,在Package Explorer视图(主界面左侧)中,我们会看到一个新的Java项目,如下图1.26所示。
图1.26 Package Exploer视图
1.5.5 创建Java文件
我们创建好项目后,就可以在项目下创建Java代码文件了。
- 在Package Explorer视图中,右键点击MyFirst项目,选择菜单菜单"File(文件)"->"New(新建)"->"Class(类)"。
- 或者选中项目后,使用工具栏 按钮,点击右面那个黑色小钮 ,选择"Class(类)"菜单。
- 进入"New Java Class"窗口,输入类名,然后点"Finish"按钮,如下图1.27和1.28所示。
图1.27 New Java Class界面1
图1.28 New Java Class界面2
- 在Package Explorer视图中,可以看到我的项目下有了一个新的Java文件,如下图1.29所示。
图1.29创建一个Java文件
1.5.6 编辑Java文件
在编辑页面中输入代码。当对该文件做了更改后,文件名前会有个"*"号,表示文件已更改但未保存,保存文件后,这个符号就会消失,默认情况下保存文件的同时对程序进行编译。
保存文件的方式有三种:
- 点击菜单"File(文件)"->"Save(保存)";
- 或者点击菜单栏 按钮;
- 或者使用快捷键"Ctrl+S"。
保存前的文件如下图1.30所示。
图1.30编辑Java文件MyFirstClass.java
在Eclipse中,一般情况下是自动编译Java文件的,也就是说保存Java文件的同时,Eclipse就编译了该文件。
1.5.7 运行class文件
编辑并编译了Java文件后,我们还可以在集成环境Eclipse中来运行测试Class文件。启动运行的方式有两种:
- 在编辑页面中点击鼠标右键菜单"Run As(运行为)"->"Java Application(Java应用程序)"运行该程序。
- 或者使用工具栏 按钮,点击右面那个黑色小钮 ,选择"Run As(运行为)"->"Java Application(Java应用程序)"运行该程序。
运行Java文件的方式如下图1.31所示。
- 在Console视图中,会看到运行结果,如下图1.32所示。