1、第第1 1章章 JavaJava概述概述Java概述2本章主要内容n1.1 Java的的诞生诞生与发展与发展n1.2 Java的特点的特点n1.3 Java开发运行环境的安装与配置开发运行环境的安装与配置n1.4 Java的工作原理与运行系统的工作原理与运行系统n1.5 简单的简单的Java程序程序Java概述31.1 Java的诞生与发展n前身:OAK(James Gosling 1990)nJava大事记n90年,Sun公司开始Green工程n93年,WWW席卷全球n94年,开始定位于Internetn95.1,Java命名nHotjava,第一个支持Java的浏览器Netscape2.0
2、Java概述41.1 Java的诞生与发展:面向网络应用,类库不断丰富,性能不断提高,应用领域不断拓展。n1995.5.23 Java诞生(Java1.0.2 API)n1997.2.18 JDK1.1nVJ+6.0、cafe、JBuilder.支持n1998.12 JDK1.2(Java 2 SDK v1.2 Standard Edition)n网址(查询新动向)nhttp:/Java概述51.1 Java的诞生与发展Java版本与Java开发环境的关系nJava1.2开始,JDK更名为SDKnJDK1.2开发Java1.2,JDK1.3开发Java1.3,JDK1.4开发Java1.4nJ
3、ava1.x统称为Java 2程序nJDK1.5Java概述6Java2.0开始开始,JDK分为三个版本分为三个版本J2EE(企业级版本)企业级版本)J2SE(标准版本)标准版本)J2ME(微型版本)微型版本)1.1 Java的诞生与发展J2MEJava概述71.2 Java的特点Java=“C+”“复杂性和奇异性复杂性和奇异性”+“安全性安全性和可移植性和可移植性”Java概述81.2 Java的特点1.简单性简单性:nJava的语法规则和C/C+类似,所以熟悉C/C+的编程人员就较易掌握Java的编程技术。nJava摒弃了C+中容易引发程序错误的概念,如指针、运算符重载、多重继承等。通过J
4、ava提供的丰富类库大大简化了Java程序开发。nJava对环境要求非常低,它的基本解释器及类的支持只有几十KB,加上标准类库和线程的支持也只有200多KB。Java概述91.2 Java的特点2.面向对象面向对象nJava是一种纯面向对象的程序设计语言。nJava提供了简单的类机制和动态的构架模型。Java概述101.2 Java的特点3.垃圾自动回收机制垃圾自动回收机制n在Java运行环境中,始终存在着一个系统级的线程,专门跟踪内存的使用情况,定期检测不再使用的内存并进行自动回收。Java的垃圾自动回收机制简化程序开发的同时,提高了程序的稳定性和可靠性。Java概述111.2 Java的特
5、点4分布性分布性nJava实现两种层次上的分布。n数据分布支持:通过Java的URL类,Java程序可以访问网络上的各类信息资源。访问方式完全类似于本地文件系统。n操作分布支持:Java通过嵌到WWW页面中的小应用程序(Applet)将计算从服务器分布至客户机。Applet由WWW浏览器在客户端执行,从而避免了网络拥挤,提高了系统效率。Java概述121.2 Java的特点5健壮性(鲁棒性)健壮性(鲁棒性)nJava丢弃了其他语言中容易引起错误的某些数据类型,如它不支持指针,从而避免了因重写内存而造成数据破坏的可能性。nJava的垃圾自动回收机制、异常处理机制和简单性等特点提高了程序的健壮性。
6、Java概述131.2 Java的特点6安全性安全性nava的验证技术是以公钥(public-key)加密算法为基础,而且从环境变量、类加载器、文件系统、网络资源和名字空间等方面实施安全策略。Java程序本身不操纵内存,这减少了内存出错的可能性,而让操作系统管理内存,这有效地避免了恶意代码的破坏和病毒的入侵,极大地提高了在网络环境下运行应用程序的安全性,同时也大大减轻了程序员的负担。Java概述141.2 Java的特点7解释执行解释执行8体系结构中立(平台无关性)体系结构中立(平台无关性)nJava编译器生成了与体系结构无关即体系结构中立(architecture neutral)的字节码文
7、件(又称类文件),可以在所有提供Java虚拟机(Java Virtual Machine:JVM)的多种不同主机、不同处理器上运行。9可移植性可移植性nJava实现两种层次上的分布。n数据分布支持:通过Java的URL类,Java程序可以访问网络上的各类信息资源。访问方式完全类似于本地文件系统。n操作分布支持:Java通过嵌到WWW页面中的小应用程序(Applet)将计算从服务器分布至客户机。Applet由WWW浏览器在客户端执行,从而避免了网络拥挤,提高了系统效率。Java概述151.2 Java的特点7解释执行解释执行8体系结构中立(平台无关性)体系结构中立(平台无关性)nJava编译器生
8、成了与体系结构无关即体系结构中立(architecture neutral)的字节码文件(又称类文件),可以在所有提供Java虚拟机(Java Virtual Machine:JVM)的多种不同主机、不同处理器上运行。Java概述161.2 Java的特点9可移植性可移植性nJava具有高度的可移植性,实现了其他程序设计语言所不具备的“一次编写,到处运行”(write once,run everywhere)的平台无关性。10多线程多线程n利用Java语言的多线程API,开发人员可以方便地写出支持多线程的应用程序,提高程序的执行效率1.2 Java的特点11高性能高性能nJava字节码格式的设
9、计就是针对机器码的转换,实际转换时相当简便,自动的寄存器分配与编译器对字节码的一些优化可使之生成高质量的代码。nJava解释器一秒钟内可调用30万个过程,翻译目标代码的速度与C/C+的性能没什么区别Java概述17Java概述181.2 Java的特点12动态性动态性nJava在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。nJava通过接口来支持多重继承,使之比严格的类继承具有更灵活的方式和可扩展性。nJava可以在分布环境中动态地维护程序及类库。1.3 Java开发运行环境的安装与配置为了鼓励使用Java语言开发软件,Sun Microsystems公司提供了免费的软件开
10、发工具包(JDK),其中包括编译器、虚拟机、调试器等开发工具,称为Java开发工具包或JDK。登录到Sun公司的网站http:/(自动跳转到http:/ SE Development Kit(jdk-7u11-windows-i586.exe),本书使用jdk1.7.0_11版本,大家可根据自己所用机器的操作系统免费下载不同的JDK。Java概述19Java概述201.3.1 安装JDK以Windows平台的JDK安装为例,下载的安装程序是一个自解压的jdk-7u11-windows-i586.exe文件,执行该程序就可在Windows上开始安装。安装过程比较简单,当出现如图所示的对话框时,单
11、击“更改”按钮可以更改安装目录。还可根据实际需要选择JDK的安装部件,默认情况下,向导安装所有的JDK组件Java概述21有关安装组件的说明:(1)开发工具:Java的开发工具包,用来编译、运行和打包Java程序。(2)源代码:此组件提供Java类库的源码,展示了Java的一些核心技术。(3)公共JRE:公共的Java运行时环境组件,选择此组件,将在浏览器中安装最新的Java插件,使浏览器支持最新的Java类库。Java概述22安装JDK后产生如下目录结构:bin:包含编译器javac、解释器java、小应用程序浏览器appletviewer等可执行文件。db:包含开源的Apache Derb
12、y Java数据库相关文件。如果没有选择安装Java DB,则该文件夹为空。include:存放本地文件(Windows系统下是一些C语言头文件)。jre:存放Java运行时环境(JRE)相关的文件。lib:保存了Java的类库文件。Java概述231.3.2 安装JDKJDK的安装程序中并不包含帮助文档,因此也必须从网站上下载进行安装,JDK帮助文档在JDK的下载页面也有下载链接。下载帮助文档的压缩文件jdk-7u11-apidocs.zip,解压缩后通常安装在JDK所在目录的docs子目录下面。用浏览器打开docs目录下的index.html文件就可以阅读所有的帮助文档241.3.3 配置
13、环境变量1.鼠标右键点击鼠标右键点击“我的电脑我的电脑”,找到,找到“属性属性”,单击进入。,单击进入。251.3.3 配置环境变量2.261.3.3 配置环境变量3.添加一项系统变量添加一项系统变量“JAVA_HOME”,值为值为jdk的安装路径。的安装路径。271.3.3 配置环境变量4.重复重复3中的步骤,建立系统变量中的步骤,建立系统变量CLASSPATH,变量值为:,变量值为:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;n(注意变量值里最前面的(注意变量值里最前面的“.”和后面的和后面的“;”一定要填入)一定要填入)。281.3.3
14、配置环境变量4.选中系统变量中的选中系统变量中的Path,点击,点击“编辑编辑”,在出现的变量值,在出现的变量值后附加如下信息:后附加如下信息:;%JAVA_HOME%bin;291.3.3 配置环境变量5.检验检验java命令命令301.3.3 配置环境变量6.检验检验javac命令命令Java概述31JDK实用程序njavacJava编译器,将Java源程序编译成字节码njavaJava解释器,直接从类文件执行Java应用程序,即applicationnappletviewer小程序浏览器,执行html文件上的Java小程序,即AppletJava概述321.4.1 Java的工作原理n在
15、编写好以.java为扩展名的Java源程序文件后,通过Java编译器将源程序翻译成与平台无关的、扩展名为.class的字节码文件,然后通过Java解释器便可解释并运行字节码文件。n字节码(Bytecode)是一种和具体计算机环境无关的中间代码。由于此种翻译方式既有编译又有解释,所以称作半编译、半解释方式。Java概述331.4.1 Java的工作原理nJava的字节码运行在Java虚拟机上。Java虚拟机(Java Virtual Machine,JVM)是软件模拟的计算机,具有自己的堆栈、CPU等定义,可以在任何处理器上(无论是在计算机上还是在其他电子设备中)安全并且兼容地执行保存在.cla
16、ss文件中的字节码。nJava字节码最大的好处是跨平台运行,字节码没有保存特定平台的信息,而任何具有Java虚拟机的计算机或电子设备上都可以运行字节码文件,Java虚拟机中的Java解释器负责将字节码文件解释成特定的机器码运行。Java概述341.4.1 Java的工作原理nJava虚拟机的建立需要针对不同的软硬件平台做专门的实现,既要考虑处理器的型号,也要考虑操作系统的种类。Java概述351.4.2 Java的运行系统n对于Java中的两类程序:nJava应用程序(Java Application)nJava小应用程序(Java Applet)n存在两种不同类型的运行系统n对于Java A
17、pplication,运行系统是Java解释器n对于Java Applet,运行系统是内嵌了Java解释器的Web浏览器,该浏览器中包含了支持Applet运行的环境Java概述361.4.2 Java的运行系统nJava运行系统一般包括类装配器、字节码验证器、解释器、代码生成器和运行支持库。Java运行系统运行的是字节码,即.class文件。字节码的执行过程分为三步,如图1.12所示。Java虚拟机类装入器字节码验证器解释器字节码执行Java概述371.4.2 Java的运行系统1装入代码n由类装入器装入程序运行时需要的所有代码,其中包括程序代码中调用的所有类。当装入了运行程序需要的所有类后,
18、运行系统便可以确定整个可执行程序的内存布局。Java概述381.4.2 Java的运行系统2验证代码n由字节码验证器进行安全检查,以确保代码不违反Java的安全性规则,同时字节码验证器还可发现操作数栈溢出,非法数据类型转换等多种错误。Java概述391.4.2 Java的运行系统3执行代码nJava字节码的执行有以下两种方式:n即时编译方式:由代码生成器先将字节码编译为本机代码,然后再全速执行本机代码,这种运行方式效率高,执行速度约可提高25%。n解释执行方式:解释器每次把一小段代码转换成本机代码并执行,如此往复完成Java字节码的所有操作。Java概述401.5 简单的Java程序Java程
19、序分两种:程序分两种:Java应用程序(Java Application)1.普通桌面应用 2.服务器端应用 Java小程序(Java Applet)(由浏览器解释执行)Java概述411.5 简单的Java程序/文件名:FirstApp.java/*程序功能:在DOS窗口显示字符串Java Programming!*/public class FirstApp/*main方法输出字符串Java Programming!*/public static void main(String args)System.out.println(Java Programming!);n例1.1:Java概述
20、421.5 简单的Java程序n用编译器javac.exe对它进行编译,如图1.13所示。若编译没有错误,将生成字节码文件FirstApp.class;若有错误,则回到编辑状态修改源文件,然后保存再重新编译。用解释器java.exe来运行该字节码文件得到如图所示的结果。Java概述43程序解析:n1java注释分为以下三种:n(1)单行注释:从/开始到本行结束的内容都是注释。n(2)多行注释:在/*和*/之间的所有内容都是注释。n(3)文档注释:在注释方面java提供了一种C/C+所不具有的文档注释方式。在“/*”和“*/”之间的文本,将自动包含在用javadoc命令生成的HTML格式的文档中
21、。Java概述44程序解析:njavadoc是JDK中API文档生成器。该工具解析一组Java源文件中的声明与文档注释,生成一组HTML页面描述这些源程序中定义的类、内部类、接口、构造方法、方法、属性等。JDK的API文档就是用javadoc工具生成的。n在DOS提示符下输入javadoc FirstApp.java,则会生成API文档,生成过程如图所示。Java概述45程序解析:Java概述46n2关键字class用来声明一个类,关键字public表示它是一个公共类,一个一个Java源程序最多只能有一个公共类源程序最多只能有一个公共类。类定义体由一对括起来。n3Java语言语句均以半角的分号
22、;结尾。n4类体内包含变量和函数的定义,变量称为类的“成员变量”,函数在Java语言中称为“方法”。n5在该类中定义了一个main()方法,其中public表示访问权限,指明所有的类都可以使用这一方法。static指明该方法是一个类方法(又称为静态方法),它可以通过类名直接调用;void则指明main()方法不返回任何值。对于一个应用程序来说,main()方法是必需的,而且必须按照上述格式来定义。Java解释器在没有生成任何实例的情况下,以main()方法作为入口来执行程序。n5 Java区分大小写。Java概述47n7Java程序中可以定义多个类,每个类中可以定义多个方法,但是最多只能有一个
23、公共类,main()方法也只能有一个。main()方法定义中,Stringargs是传递给main()方法的参数,参数名为args,它是String类的一个实例,参数可以为一个或多个,多个参数间用逗号分隔。n8.语句System.out.println(“Welcome to Java”);的作用是调用系统类库中的System类的成员out的println()方法实现字符串的输出。与println()不同的是:print()方法在当前行输出,而println()方法在新的一行输出。Java概述48n9java源程序结构n10源文件的命名规则:如果在源程序中包含有公共类的定义,则该源文件名必须与
24、该公共类的名字完全一致,字母的大小写都必须一样。这是java语言的一个严格的规定,如果不遵守,在编译时就会出错。因此,在一个java源程序中至多只能有一个公共类的定义。如果源程序中不包含公共类的定义,则该文件名可以任意取名。如果在一个源程序中有多个类定义和接口定义,则在编译时将为每个类生成一个.class文件。(每个接口编译后也生成.class文件)Java概述49【例1.2】以命令行方式输入圆的半径,求圆的周长和面积public class Circle1 final static double PI=3.1415926;/定义常量PI public static void main(Str
25、ing args)double r,perimeter,area;r=Double.parseDouble(args0);perimeter=2*PI*r;area=PI*r*r;System.out.println(圆的周长为:+perimeter);/实现字符串的输出System.out.println(圆的面积为:+area);Java概述50【例1.2】以命令行方式输入圆的半径,求圆的周长和面积运行结果:Java概述51【例1.2】以命令行方式输入圆的半径,求圆的周长和面积n【程序解析】【程序解析】nargs为字符串String类型的数组,从命令行读入的String类型的值3赋给数组元
26、素args0,表示圆的半径,需要转换为实型double类型。Double是系统提供的一个类(在java.lang包中定义),parseDouble()是Double类的一个静态方法(有关静态方法的概念参见第3章),用于将String类型转换为double类型。n语句“System.out.println(圆的周长为:+perimeter);”中的“+”运算符为连接符号,用于将字符串和double类型的值连接为一个新的字符串。Java概述52【例1.3】(自学)n编写程序,要求运行程序时从控制台输入圆的半径,然后输出圆的周长和面积。Java概述53【例1.4】(自学)n从输入对话框中输入圆的半径
27、,然后在消息对话框中显示圆的周长和面积。Java概述541.5.2 Java小应用程序(Applet)n小应用程序(Applet)是指采用Java创建的基于HTML的程序。由于Java Applet内嵌于HTML文件,所以必须搭配浏览器来运行,因此要运行Java Applet程序必须要有Applet的字节码文件与支持Java的浏览器,此时的浏览器即扮演JVM的角色,用来解释Java的字节码文件。Java概述55【例1.5】n设计一个显示“Hello World!”字符串的Java Applet程序,并用浏览器浏览网页。n(1)编辑如下的Java Applet源程序代码,文件名为HelloWor
28、ldApplet.javaJava概述56【例1.5】import java.awt.Graphics;import java.applet.Applet;public class HelloWorldApplet extends Applet public String s;public void init()s=new String(Hello World!);public void paint(Graphics g)super.paint(g);/在浏览器中坐标为(25,25)的位置显示字符串sg.drawString(s,25,25);Java概述57【例1.5】程序解析程序解析n所有
29、的Java Applet程序都是Applet类的派生类,该派生类是Java Applet的主类,主类必须是public的。nJava Applet程序中可以没有main()方法,Java Applet程序是从init方法开始执行的。Java概述58【例1.5】(2)编译Java Applet程序n使用命令javac HelloWorldApplet.java编译Java Applet源程序文件,生成名为HelloWorldApplet.class的字节码文件。如果给出错误信息,则需要重复编辑和编译过程,直到程序没有错误、编译成功为止。Java概述59【例1.5】(3)编辑HTML网页文件 Ja
30、va Applet Example Java小应用程序 Java概述60【例1.5】把上面的代码保存为index.html文件,主文件名不受限制,合法的文件名即可。在HTML文件中嵌入Java小应用程序,使用标签,该标签包含如下几个参数:nCODE=HelloWorldApplet.class:指定要嵌入的Java Applet字节码文件名,可以省略扩展名。由于Java采用半编译、半解释的方式,所以这里实际嵌入的是编译后的扩展名为.class的字节码文件。nWIDTH=300:指定Java Applet所占浏览器页面的宽度,以像素为单位。nHEIGHT=300:指定Java Applet所占浏
31、览器页面的高度,以像素为单位。Java概述61【例1.5】(4)运行网页文件有两种方式可以运行Java小应用程序:使用小应用程序查看器Appletviewer.exe运行Applet程序在命令行下面输入appletviewer index.html,运行结果如图所示。Java概述62【例1.5】在资源管理器中双击index.html文件,就可在浏览器中看到Applet的执行结果。使用IE浏览器显示结果如图所示632.4 Eclipse的安装和使用2.4.1 Eclipse概述概述2.4.2 Eciipse的安装的安装2.4.3 Eclipse的使用的使用642.4.1 Eclipse概述nEc
32、lipse是一个非常优秀的集成开发环境(是一个非常优秀的集成开发环境(IDE),它是),它是IBM支持的开源项目。支持的开源项目。n Eclipse软件可以集成很多软件开发工具供应商的产品,任软件可以集成很多软件开发工具供应商的产品,任何开发工具厂商都可以将开发工具或插件加入到何开发工具厂商都可以将开发工具或插件加入到Eclipse平平台台.n 用户可以在一个集成环境中使用不同的开发工具,从而进用户可以在一个集成环境中使用不同的开发工具,从而进行良好的整合,降低开发成本。行良好的整合,降低开发成本。652.4.2 Eclipse安装1.下载与安装下载与安装n 到到Eclipse官方网站下载免费
33、的官方网站下载免费的Eclipse软件压缩包。软件压缩包。http:/archive.eclipse.org/eclipse/downloads/index.phpn Eclipse为绿色软件为绿色软件,下载到本地硬盘后下载到本地硬盘后,将将Eclipse压缩压缩包解压缩包解压缩.双击双击Eclipse.exe启动启动Eclipse.n注意:注意:Eclipse现在主要有两个版本:现在主要有两个版本:1.eclipse-SDK-4.2,主要运行在,主要运行在WIN7下下2.eclipse-SDK-3.5,主要运行在,主要运行在WINXP下,该版本在下,该版本在WIN7下会出现兼容性问题。下会出
34、现兼容性问题。662.4.2 Eclipse安装2.多国语言包的下载与安装多国语言包的下载与安装n下载对应下载对应Eclipse版本的汉化包,可以在版本的汉化包,可以在Eclipse的官方网的官方网站站http:/download.eclipse.org/在进行搜索在进行搜索Eclipse language pack找到对应的汉化包,也可以百度搜索找到对应的汉化包,也可以百度搜索Eclipse中文汉化包中文汉化包。n在在Eclipse安装目录下新建一个文件夹名为安装目录下新建一个文件夹名为language,并并将解压的汉化包的将解压的汉化包的eclipse文件夹及其内容复制进去文件夹及其内容复
35、制进去.n在在Eclipse安装目录下新建一个文件夹名为安装目录下新建一个文件夹名为links的文件夹,的文件夹,在下面新建一个文本文件命名为:在下面新建一个文本文件命名为:language.txt;打开;打开此文本文件在里面加入如下内容:此文本文件在里面加入如下内容:path=D:/eclipse/languagen注意:注意:pathpath路径就是汉化语言包的根路径路径就是汉化语言包的根路径672.4.3 Eclipse的使用1.启动启动Eclipse.682.4.3 Eclipse的使用2.选择工作空间选择工作空间692.4.3 Eclipse的使用3.进入进入Eclipse欢迎界面欢
36、迎界面702.4.3 Eclipse的使用4.创建新项目创建新项目712.4.3 Eclipse的使用4.创建新项目创建新项目如果选择第一项,如果选择第一项,则源文件则源文件和和.class.class文件在文件在同一个文件夹内同一个文件夹内722.4.3 Eclipse的使用5.创建新包创建新包732.4.3 Eclipse的使用5.新建新建JAVA类(应用程序类)类(应用程序类)742.4.3 Eclipse的使用5.新建新建JAVA类类752.4.3 Eclipse的使用6.输入源代码输入源代码762.4.3 Eclipse的使用8.运行源程序运行源程序772.4.3 Eclipse的使
37、用9.运行结果运行结果782.4.3 Eclipse的使用792.4.3 Eclipse的使用创建创建Java小程序小程序的过程前的过程前4步与创建步与创建Java应用程序类似应用程序类似802.4.3 Eclipse的使用注意这里的对勾不要打上注意这里的对勾不要打上5.新建新建JAVA类类Java概述81作业n1简述Java语言的起源。n2简述Java语言的特点。n3简述Java的工作原理与运行系统。n4安装JDK并设置环境变量path和classpath。n5简述Java Application和Applet两种程序的区别。n6编辑、编译并运行1.5小节中的例题,并模仿例题编写控制台和图形用户界面两种程序:输入长方形的长和宽,输出其周长和面积。