1、第第1章章 了解了解JavaJava语言的发展历史语言的发展历史 了解了解JavaJava语言的特点语言的特点 了解了解JavaJava语言与语言与C+C+语言的不同之处语言的不同之处 掌握安装并设置掌握安装并设置JavaJava开发平台开发平台 掌握掌握JavaJava程序的组成结构程序的组成结构 掌握使用集成开发环境编写掌握使用集成开发环境编写JavaJava程序程序的方法的方法 19911991年由年由James GoslingJames Gosling负责开发的一个分负责开发的一个分布式代码系统(布式代码系统(OakOak),),最初是为家用消费最初是为家用消费电子产品(电冰箱、电视机
2、等)进行编程控电子产品(电冰箱、电视机等)进行编程控制制 。19931993年年Sun Sun 公司将目标市场转向公司将目标市场转向 Internet Internet。19941994年将年将OakOak语言更名为语言更名为JavaJava。19951995年年JavaJava被正式发布,之后立即引起极被正式发布,之后立即引起极大的轰动。大的轰动。许多大公司购买了许多大公司购买了JavaJava的许可证。的许可证。众多软件开发商开始支持众多软件开发商开始支持JavaJava软件产品。软件产品。面向对象的应用开发。面向对象的应用开发。Intranet(Intranet(企业内部网企业内部网)上
3、的软件开发。上的软件开发。动态画面的设计,包括图形图像的调用。动态画面的设计,包括图形图像的调用。与各类数据库连接查询的与各类数据库连接查询的SQLSQL语句实现。语句实现。其他应用类型的程序。其他应用类型的程序。简单性简单性 面向对象面向对象 分布式处理分布式处理 健壮性健壮性 结构中立结构中立 安全性安全性v系统精简,但功能齐备。系统精简,但功能齐备。v风格类似于风格类似于C+C+,对对C+C+程程序员而言非常容易掌握。序员而言非常容易掌握。vJavaJava摒弃了摒弃了C+C+中容易引发中容易引发程序错误的地方,如指针操程序错误的地方,如指针操作和内存管理;作和内存管理;v提供丰富的类库
4、。提供丰富的类库。完全是面向对象的,完全是面向对象的,它不支持类似它不支持类似C C语言那语言那样的面向过程的程序样的面向过程的程序设计技术。设计技术。支持支持TCP/IPTCP/IP协议。协议。JavaJava应应用程序可通过一个特定的用程序可通过一个特定的URLURL来打开并访问对象,来打开并访问对象,就像访问本地文件系统那就像访问本地文件系统那样简单。样简单。v提供面向对象的异常处理机制,提供面向对象的异常处理机制,在编译时能对在编译时能对NullNull指针检测、数指针检测、数组边界检测、异常出口字节代码组边界检测、异常出口字节代码校验等。校验等。v自动垃圾收集来进行内存管理。自动垃圾
5、收集来进行内存管理。将源程序编译成一种结构将源程序编译成一种结构中立的中间文件格式。只中立的中间文件格式。只要有要有JavaJava运行系统的机器运行系统的机器都能执行这种中间代码。都能执行这种中间代码。vJavaJava语言提供的安全。语言提供的安全。v编译器提供的安全。编译器提供的安全。v字节码校验。字节码校验。v类装载。类装载。可移植性可移植性 解释性解释性 高性能高性能 多线程多线程 动态动态JavaJava应用程序可以在配备了应用程序可以在配备了JavaJava解释器和运行环境的任解释器和运行环境的任何计算机系统上运行,而与何计算机系统上运行,而与体系结构无关。体系结构无关。Java
6、Java编译器将编译器将javajava源文件生源文件生成类文件成类文件.classclass,类文件可类文件可通过通过javajava命令解释执行,将命令解释执行,将JavaJava字节码转换为机器码。字节码转换为机器码。JITJIT编译器。可编译器。可以提高以提高 Java Java 代代码的执行速度。码的执行速度。内置多线程功能,使得在一内置多线程功能,使得在一个程序里可同时执行多个小个程序里可同时执行多个小任务。带来的好处是更好的任务。带来的好处是更好的交互性和实时控制性。交互性和实时控制性。允许程序动态地装入运行过允许程序动态地装入运行过程中所需要的类,这是程中所需要的类,这是C+C
7、+语言进行面向对象程序设计语言进行面向对象程序设计所无法实现的。所无法实现的。项目项目JavaJavaC+C+全局变量全局变量 不存在全局变量不存在全局变量 存在存在数据类型和转换数据类型和转换 无结构、枚举或者联合,无结构、枚举或者联合,转换时进行类型相容检查转换时进行类型相容检查 通过指针进行任意的类通过指针进行任意的类型转换,带来不安全性型转换,带来不安全性 范围运算符范围运算符 无作用域范围运算符:无作用域范围运算符:有有数组数组 对象,有只读的对象,有只读的lengthlength 无无lengthlength内存管理内存管理可创建不属于基本数据类可创建不属于基本数据类型的对象型的对
8、象 不能不能提前声明提前声明不必进行提前声明不必进行提前声明 必须必须预处理预处理 没有预处理机制没有预处理机制 有有头文件头文件 import import includeinclude指针指针 无无有有gotogoto和和virtual virtual 无无有有注释文档注释文档 对注释文档的内建支持对注释文档的内建支持 无无编编 译译 时时.java(源源 代代 码码).class(字字 节节 码码)运运 行行 时时类类 加加 载载 器器字字 节节 码码 校校 验验 器器解解 释释 器器JIT代代 码码 生生成成 器器硬硬 件件网网 络络 实现平台无关性的基础就是实现平台无关性的基础就是J
9、avaJava虚拟机,虚拟机,是以是以JavaJava字节码为指令组的软字节码为指令组的软CPUCPU。负责负责对本地对本地*.classclass文件解释执行。文件解释执行。包含类加载器、字节确认器、以及包含类加载器、字节确认器、以及JITJIT实实时编译器。时编译器。类加载器:类加载器:用来取得从网络或本地的类文件。用来取得从网络或本地的类文件。字节确认器:字节确认器:确认类文件是否有正确的格式。确认类文件是否有正确的格式。JITJIT:使虚拟机能提高到编译式的运行效率。使虚拟机能提高到编译式的运行效率。*.classclass文件与机器码不同,不是真正的文件与机器码不同,不是真正的CPU
10、CPU可运行的指令代码,故又称伪代码。可运行的指令代码,故又称伪代码。通过通过JVMJVM以及以及JREJRE将其转成本地机器代码,将其转成本地机器代码,达到一次撰写,到处运行的效益。达到一次撰写,到处运行的效益。(Write OnceWrite Once,Run AnywhereRun Anywhere)虚拟机使用两个独立的堆内存,分别用于虚拟机使用两个独立的堆内存,分别用于静静态内存分配态内存分配和和动态内存分配动态内存分配。非垃圾收集堆内存,用于存储所有类定义、非垃圾收集堆内存,用于存储所有类定义、常量池和方法表。常量池和方法表。另一个堆内存,用于垃圾收集的算法适用于另一个堆内存,用于垃
11、圾收集的算法适用于存放在动态堆内存中的对象。存放在动态堆内存中的对象。垃圾收集器在收集对象前调用垃圾收集器在收集对象前调用finalizefinalize方法。方法。显式调用垃圾收集显式调用垃圾收集(System.gc()System.gc()方法,不方法,不能保证立即运行,因为其优先级很低。能保证立即运行,因为其优先级很低。/这是文件名为这是文件名为“HelloWorld.java”的简单应用程序的简单应用程序import java.io.*;/引入包引入包class HelloWorld /定义类定义类public static void main(String args)/main方法方
12、法 System.out.println(“欢迎来到欢迎来到Java世界!世界!”);/输出数据输出数据 定义类的定义类的关键字关键字 类名类名 必须这必须这么写么写 以以javajava为扩展为扩展名,保存时注名,保存时注意类型。意类型。/*HelloToJava.java*/import java.awt.Graphics;import java.applet.*;public class HelloToJava extends Applet public String sHello;public void init()sHello=欢迎来到欢迎来到Java世界!世界!;public vo
13、id paint(Graphics g)g.drawString(sHello,50,50);文档注释,可以文档注释,可以使用使用javadocjavadoc命命令生成令生成HTMLHTML帮助帮助文件。文件。装入系统装入系统类库。类库。将上页文件保存为将上页文件保存为HelloToJava.java(必须必须)。将文件保存为将文件保存为*.htm或或*.html文件。文件。首先将首先将HelloToJava.java文件进行编译(文件进行编译(javac命令)。命令)。javac HelloToJava.java然后使用然后使用appletviewer*.htm 查看效果。查看效果。(1 1
14、)至多有一个)至多有一个publicpublic类,文件名必须与类名相同。类,文件名必须与类名相同。(2 2)程序可以有一个或多个其它类。)程序可以有一个或多个其它类。(3 3)当需要从某个类继承或使用某个类及其方法时,)当需要从某个类继承或使用某个类及其方法时,使用使用importimport引入该类的定义。引入该类的定义。(4 4)JavaJava程序组成结构程序组成结构 package/0个或个或1个,必须放在文件开始个,必须放在文件开始 import/0个或多个,必须放在所有类定义之前个或多个,必须放在所有类定义之前 public classDefinition/0个或个或1个,文件名
15、必须与类名相同个,文件名必须与类名相同 classDefinition /0个或多个个或多个 interface Definition /0个或多个个或多个 安装安装Java 2 SDKJava 2 SDK开发工具开发工具 。设置环境变量:设置环境变量:pathpath=javac=javac和和javajava命令所在的目录。命令所在的目录。classpathclasspath=存放字节码文件的目录。存放字节码文件的目录。Java2 SDKJava2 SDK简介及使用。简介及使用。JavaJava程序的集成开发环境。程序的集成开发环境。JCreator JCreator的安装配置及使用。的安装配置及使用。了解了解JavaJava程序设计语言的特性。程序设计语言的特性。区分区分JavaJava与与C+C+两种语言的不同。两种语言的不同。掌握掌握JavaJava程序包含程序包含应用程序应用程序和和小应用程小应用程序序两种不同类型。两种不同类型。熟练掌握每种熟练掌握每种程序的基本结构程序的基本结构。了解了解J2SDKJ2SDK和和JCreatorJCreator两种开发环境,及两种开发环境,及它们它们开发开发JavaJava程序的过程程序的过程。