第 1 章 Java 语言概述

Preview:

DESCRIPTION

第 1 章 Java 语言概述. —— Write once, run anywhere. 本章内容. JAVA 语言的发展史 JAVA 的版本演化 JAVA 白皮书的关键术语 JAVA 程序的类型 JAVA 集成开发环境. 1.1 Java 的历史. JAVA 是 SUN 公司 (java.sun.com) 于上世纪 90 年代开发。 - PowerPoint PPT Presentation

Citation preview

1

LOGO

广东工业大学计算机学院

第第 11 章 章 JavaJava 语言概述语言概述第第 11 章 章 JavaJava 语言概述语言概述

——Write once, run anywhere——Write once, run anywhere

2

本章内容本章内容

JAVA 语言的发展史

JAVA 的版本演化

JAVA 白皮书的关键术语

JAVA 程序的类型

JAVA 集成开发环境

3

1.1 Java1.1 Java 的历史的历史

JAVA 是 SUN 公司 (java.sun.com) 于上世纪 90 年代开发。

1990 年 12 月, SUN 公司的一个开发小组从事家用电器方面的小型研究项目。最初的方案是用 C++ 开发。开发人员James Gosling 对 C++ 实现这一任务感到失望,决定自己编写一种更好的语言来实现这一项目。最初,这种语言命名为 OAK ,后来改名为 JAVA 。

JAVA 最初为用于家用电器而开发, JAVA 的小型、安全、可移植性等特点,使其适用于 WEB 。

JAVA 产 生 的 时 候 , Internet 正 日 益 流 行 。 95 年 8月 , Netscape 公 司 的 浏 览 器 率 先 支 持 JAVA 。 随后, Microsoft 的 Internet Explorer 浏览器也支持 JAVA 。这样,随着万维网的日益普及, JAVA 得到了广泛的使用。

4

JavaJava 语言在互联网时代获得巨大成功语言在互联网时代获得巨大成功

互联网的出现使得计算模式进入了网络计算时代。

网络计算模式的特点 计算机是异构的——即计算机的类型和操作系统是不一样的。

例如: SUN 工作站的硬件是 SPARC 体系,软件是 UNIX 中的Solaris 操作系统,而 PC 机的硬件是 INTEL 体系,操作系统是windows 或者是 Linux 。

代码可以通过网络在各种计算机上进行迁移。

网络的计算模式迫切需要一种跨平台的编程语言,使得用它编写的程序能够在网络中各种计算机上能够正常运行, Java 就是在这种需求下应运而生的。

Java 语言具有安全、跨平台、面向对象、简单等适用于网络的显著特点,使得它已经成为最流行的网络编程语言。

5

本章内容本章内容

1.1 JAVA 语言的发展史

1.2 JAVA 的版本演化

1.3 JAVA 白皮书的关键术语

1.5 JAVA 程序开发环境

1.6 JAVA 源程序结构与编程规范

6

JavaJava 版本历史版本历史

1996 年初, Sun 公司发布了 Java 1.0. 该版本实际上并不能用来进行真正的应用程序开发。

1998 年, Sun 在 JavaOne 会议上发布 Java 1.2 。 三天后,又将 Java1.2 改名为“ Java 2 标准版软件开发工

具箱 1.2 版”

在 Java 1.2 中分为 3 个版本: J2SE :标准版,面向一般用户 J2ME :微型版,用于手机等嵌入式设备的应用程序开发 J2EE :企业版,用于服务器端处理的软件开发。

本课程内容主要基于 J2SE 。

7

JavaJava 版本历史(续)版本历史(续)

Java 1.3 和 1.4 对最初的 Java 2 版本作了一些细微的改进,如扩展了标准类库、提高了系统性能个,修正 bug 。

2004 年发布的 Java 1.5 改称 Java5.0 ,该版本对 Java 作出了重大改进: 添加了泛型类型 generic type ,类似于 C++ 的模版 “for each” 循环 可变元参数 自动打包 元数据 枚举 静态导入

8

本章内容本章内容

JAVA 语言的发展史

JAVA 的版本演化

JAVA 白皮书的关键术语

JAVA 程序的类型

JAVA 集成开发环境

9

JAVA“JAVA“ 白皮书”的关键术语白皮书”的关键术语

Java 白皮书解释了设计 Java 语言的初衷及完成的情况,在白皮书的摘要中有 11 个关键术语:

1. 简单性

2. 面向对象

3. 分布式

4.健壮性

5. 安全性

6. 体系结构中立

7. 可移植性

8.解释型

9. 高性能

10.多线程

11.动态性

10

JAVA“JAVA“ 白皮书”的关键术语(续)白皮书”的关键术语(续)

1. 简单性目标之一:建立一种简单的系统,它允许使用者不

需要像现今的标准程序一样接受深奥的训练就能轻易地设计程序,而且要符合当今的标准惯例。

Java 的语法与 C++ 的语法相似,但删除了许多极少被使用、不容易理解和令人混淆的 C++ 功能,如运算符重载 (operator overloading) 、多重继承(inheritance) 以及指针;

Java增加自动内存垃圾收集 (auto garbage collection) 功能,因此简化 Java 程序工作。

11

JAVA“JAVA“ 白皮书”的关键术语(续)白皮书”的关键术语(续)

2. 面向对象

将事物抽象为对象。

面向对象语言关注“对象”和接口 非面向对象语言关注“过程”和“工具”

提高了程序代码的重用性

12

JavaJava 语言与语言与 C++C++

Java 产生于 C++之后,是完全的面向对象的编程语言,充分吸取了 C++的优点,同时摒弃了 C++的一些弊端。

采用了程序员所熟悉的 C 和 C++语言的许多语法,同时又去掉了 C 语言中指针、内存申请和释放等影响程序健壮性的部分。

Java 语言的一个目标是跨平台,因此采用了解释执行而不是编译执行的运行环境,在执行过程中根据所在的不同的硬件平台把程序解释为当前的机器码,实现跨平台运行。

Java 语言具备动态下载程序代码机制,是为了适应网络计算的特点——程序可以根据需要把代码实时地从服务器中下载到目标机器来执行。在此之前还没有任何一种语言能够支持这一点。

13

JAVA“JAVA“ 白皮书”的关键术语(续)白皮书”的关键术语(续)

3. 分布式(网络适用性)

将复杂的网络编程变成简单化: 提供大量的系统模块支持 TCP/IP协议的编程。

远程方法调用机制使得分布式对象之间可以进行通信。

Java 应用程序可以借由 URL 在通过网络开启和存取对象,就如同存取一个本地 (local)文件系统一样简单。

14

JAVA“JAVA“ 白皮书”的关键术语(续)白皮书”的关键术语(续)

4. 健壮性

Java 的设计目标之一为程序的可靠性 强调在设计初期即检查可能存在的问题(编译检查),

运行时执行动态 (runtime)检测,并排除容易出现错误的条件。

Java 和 C++ 的最大不同是 Java 可以消除重写内存和损坏数据的可能性。

15

JAVA“JAVA“ 白皮书”的关键术语(续)白皮书”的关键术语(续)

5. 安全性

Java 设计目的是要供使用于网络 / 分布式运算环境。为此, Java非常强调安全性 禁止运行时堆栈溢出。(蠕虫病毒常用的攻击手段)

禁止在自己的处理空间之外破坏内存 未经授权禁止读写文件

16

JAVA“JAVA“ 白皮书”的关键术语(续)白皮书”的关键术语(续)

6. 体系结构中立性(平台无关性)

Java 编译器能产出与某一计算机结构无关的字节代码指令,该字节码可以在多种不同处理器上执行。

Java 应用程序能够在网络上的各种异构计算机上执行 。

17

JAVA“JAVA“ 白皮书”的关键术语(续)白皮书”的关键术语(续)

7. 可移植性在 Java 中,数据类型的大小固定( C/C++数据类

型大小不不固定),消除了代码移植时数据类型大小不一致的问题;

二进制数据采用固定的格式存储和传输,消除了字节顺序的困扰。

定义了可移植的接口。 例如:有一个抽象的 window 类给出了在

UNIX 、 Windows 和 Macintosh 环境下的不同实现。

18

JAVA“JAVA“ 白皮书”的关键术语(续)白皮书”的关键术语(续)

8. 解释型

Java解释器 (interpreter) 将字节码翻译成本地机器指令执行。

编写 Java 程序,文本格式 字节码文件

面向 Linux 的JRE

面向 Windows的 JRE

传输

编译

传输

19

JAVA“JAVA“ 白皮书”的关键术语(续)白皮书”的关键术语(续)

9. 高性能字节码可以(在运行时)被快速地翻译成运行该应

用程序的特定 CPU 的机器码。

提供“即时编译”方式,即一次将字节码编译成本地代码,并将结果缓存起来。在需要的时候重新调用。

在 Java虚拟机技术中,还可以监控代码被执行的“热度”。将最常执行的字节码部分可以逐渐翻译成本地代码并小心地优化,能够极大地提高程序执行速度。

20

JAVA“JAVA“ 白皮书”的关键术语(续)白皮书”的关键术语(续)

10. 多线程 Java 中的多线程处理非常便捷。只要 OS 支

持, Java 中的线程就可以利用多个处理器。

但在底层,主流平台的线程实现机制各不相同, Java 并没有对此实现平台相关性。在不同的机器上,只是调用多线程的代码完全相同, Java仅是简单地把多线程的实现交给底层的 OS去处理。

问题:正因为如此,有些程序员不得不为不能深入控制线程而苦恼,并认为这是 Java 的缺陷之一。

21

JAVA“JAVA“ 白皮书”的关键术语(续)白皮书”的关键术语(续)

11. 动态性 Java 能支持不断变化的运算环境。

C++ 中,如果修改了某一个类,整个程序都得重新编译。

在 Java 中,可以在类库中自由地加入新的方法和实例变量,而不影响用户的程序执行。虽然 C++也可以实现这样的动态性,但使用起来非常复杂,代价也很高。 #

22

本章内容本章内容

JAVA 语言的发展史

JAVA 的版本演化

JAVA 白皮书的关键术语

JAVA 程序的类型

JAVA 集成开发环境

23

JavaJava 程序的类型程序的类型

Application 程序:需要独立的解释器解释运行。必须有 main() 方法。

Applet 程序:嵌入在 HTML 编写的 WEB页面中的非独立程序。由Web 浏览器内部包含的 Java解释器解释运行。

24

JAVAJAVA Application Application 结构结构

例如:有一个 java 源程序可以是如下结构,该源程序命名为HelloWorldApp.java :

package javawork.helloworld; /*把编译生成的所有 .class文件放 到包 javawork.helloworld 中 */

import java.awt.*; //告诉编译器本程序中用到系统的 AWT包

public class HelloWorldApp{....

public static void main(String args[]){…}

..} /* 公共类 HelloWorldApp 的定义, 名字与文件名相同 */

class TheFirstClass{......} //第一个普通类 TheFirstClass 的定义

class TheSecondClass{......} //第二个普通类 TheSecondClass 的定义

...... // 其它普通类的定义

interface TheFirstInterface{......} //第一个接口 TheFirstInterface 的定义

25

javajava 编程规范编程规范

包 (package)即目录,它能够将某一个类放入到某个目录当中,

使得程序员能够更好地管理 Java 类 (Class) 和接口 (Interface) 。

import 语句如果在源程序中用到了除 java.lang 这个包以外的

类 (无论是系统的类还是自己定义的包中的类 ) ,都必须用 import 语句标识,以通知编译器在编译时找到相应的类文件。

26

JavaJava 命名规范命名规范

包名:系统包名是全小写的名词,中间可以由点分隔开,例如:java.awt.event;

类名:通常首字母大写由多个单词合成一个类名,每个单词的首字母也要大写,例如: class HelloWorldApp;

接口名:命名规则与类名相同,例如: interface Collection;

方法名:往往由多个单词合成,第一个单词通常为动词,首字母小写,中间的每个单词的首字母都要大写,例如:balanceAccount , isButtonPressed

变量名:全部字母小写,一般为名词。例如: length;

常量名:习惯上应该全部字母大写,单词间用下划线“ _” ,分隔。例如 : MAX_SIZE, R_PG13, TERM_LIMIT

27

JavaJava 命名规范(续)命名规范(续)

参数的命名:参数的命名规范和方法的命名规范相同,而且为了避免阅读程序时造成迷惑,请在尽量保证参数名称为一个单词的情况下使参数的命名尽可能明确。

Javadoc注释:除了常见的注释方式之外, Java 语言规范还定义了一种特殊的 Javadoc多行注释:以 /** 开头,而以*/ 结束。

使用 Javadoc注释的好处:编写的注释可以被自动转为在线文档,省去了单独编写程序文档的麻烦。例如: /**

* This is an example of* Javadoc** @author Darchon* @since 2008-2-28*/ #

EclipseEclipse 演示

28

Java Application Java Application 注意问题注意问题

注意问题: (1) 类个数:至少一个类,最多只能有一个 public 类 (2) 源文件命名:若有 public 类,源文件必须按该类命名 (3) 标识符:区分大小写 (4) main() 方法:一个应用程序有且只有一个 main()

方法, main() 方法必须包含在一个类中,该类即为应用程序的外部标志。

29

注意:存盘时文件名和公共类名 ( 用public声明 ) 要一致 HelloWorldApp.java

public class HelloWorldApp{ public static void main(String args[]) { System.out.println(“Hello World!”); }}

JavaJava 应用程序的编辑应用程序的编辑

30

JavaJava 应用程序的编译与运行(应用程序的编译与运行( 11 ))

Step 1 :安装 Java 开发工具包 JDK :

http://developers.sun.com/downloads/ (下载)

主要文件: javac.exe 、 java.exe 和appletviewer.exe

(建议装 1.6 以上版本: jdk-6u4-windows-i586-p.exe )

31

JavaJava 应用程序的编译与运行(应用程序的编译与运行( 22 ))

Step 2 :设置 Java 运行环境 设 JDK 目录: C:\Program Files\Java\jdk1.6.0_02

“我的电脑” “属性” “高级” “环境变量”

path :添加“ C:\Program Files\Java\jdk1.6.0_02\bin\” ( java 编译器和虚拟机可执行文件java 、 javac 、 appletviewer所在目录)

classpath : . ; (在 dos当前目录下寻找 .class文件) C:\Program Files\Java\jdk1.6.0_02\lib\dt.jar; C:\Program Files\Java\jdk1.6.0_02\lib\tools.jar (告诉虚拟机 java 需要使用到的类库文件路径)

JAVA_HOME :告诉系统 JDK 的安装目录(可省略)

32

JavaJava 应用程序的编译与运行(应用程序的编译与运行( 33 ))

编译 HelloWorldApp.java javac HelloWorldApp.java(在与 HelloWorldApp.java 相同的目录下生成

HelloWorldApp.class ) 运行: java HelloWorldApp

若在 HellowWorldApp.java 程序最前面加上以下语句: package app; 编译: javac HelloWorldApp.java 或 javac –d . HelloWorldApp.java 运行: java app.HelloWorldApp

33

Java AppletJava Applet 的组成的组成

类库支持:继承 Applet 类。

init() 方法:初始化,自动调用,只执行一次。

start() 方法:初始化后,重入等都将自动调用。 Applet 的主体,在其中可以执行一些任务或启动相关的线程来执行任务等。

stop() 方法:离开 Applet所在页面时调用,以停止消耗系统资源。

pait() 方法:每次激活时自动调用

34

import java.applet.*;import java.awt.*;public class HelloApplet extends Applet{ public String s; public void init() { s = new String("Hello Applet"); System.out.println("调用了 Applet init()"); } public void start() { System.out.println("调用了 Applet start()"); }

Java AppletJava Applet 实例实例

35

Java AppletJava Applet 实例实例

public void stop() { System.out.println("调用了 Applet stop()"); } public void destroy() { System.out.println("调用了 Applet destroy()"); } public void paint(Graphics g) { g.drawString(s,25,25); }}

36

编辑存盘:文件名 (.java) 和主类名一致编译代码: javac HelloApplet.java编写 HTML 文件: HelloApplet.html查看运行结果: appletviewer HelloApplet.html

<HTML> <HEAD> <TITLE>Hello World</TITLE> </HEAD> <applet code="HelloApplet.class" width=300 height=300>

</applet></HTML>

Java AppletJava Applet 实例实例

37

本章内容本章内容

JAVA 语言的发展史

JAVA 的版本演化

JAVA 白皮书的关键术语

JAVA 程序的类型

JAVA 集成开发环境

38

JAVAJAVA 程序的集成开发环境程序的集成开发环境

1. NetBeans

2. Eclipse

3. JBuilder2007

39

1. NetBeans1. NetBeans

安装过程:(1) 首先安装 JDK : jdk-6u4-windows-i586-

p.exe

(2) 安装 NetBeans : version 6.1

40

课程要求课程要求

掌握 Java 程序的语法

深刻理解面向对象含义(类、对象、接口)

掌握 Java图形程序设计、多线程、异常处理等技术

学会独立(通过小组讨论)解决实际问题(查阅资料)

41

考核方式考核方式

总成绩=

平时成绩( 10 %)+三次作业( 90 %)

第一、二次作业( 20 %)

的三次大作业( 70 %)

42

附录:参考书籍附录:参考书籍

1. JAVA2 核心技术 ( 第 7 版 ) : CAY S.HORSTMANN,GARY CORNELL ,机械工业出版社 第 I卷:基础知识 第 II卷:高级特性

有英文电子版及源代码。这套书的卷 I 适合于 Java 语言基本入门,卷II则可以作为进入特定应用程序设计的基本指导。

2. 21 天学通 Java 2 (第 3 版)(专业参考版): Rogers Cadenhead,Laura Lemay ,人民邮电出版社 作为需要快速掌握 Java 语言基础知识的傻瓜书。

3. Java 编程思想 ( 第 3 版 ) :机械工业出版社 适宜于曾经接触过 Java ,但未系统学过 Java 的读者,不太适合于

基本入门。

4. Java Swing(第二版 ) :清华大学出版社 Java GUI 程序设计的字典式工具书

43

作业作业

安装 JDK ( 1.5 以上版本) 安装 NetBeans 集成开发环境,构建一个 java 工

程。

并编写 HelloWorld 程序,分别在 Dos 和集成开发环境中编译运行

Recommended