Download presentation
Presentation is loading. Please wait.
Published byDoddy Sugiarto Modified 6年之前
1
武汉大学国际软件学院 hfan@iss.whu.edu.cn
面向对象程序设计 武汉大学国际软件学院
2
课程提纲 Java语言概述 Java语言语法基础 面向对象的特征 Applet及其应用 图形用户界面设计 异常 线程 集合操作
网络编程
3
教材及参考资料 教材 Java语言程序设计,吕凤翥、马皓编著,清华大学出版社 参考资料
面向对象分析与设计(影印版), Grady Booch, 中国电力出版社 The Java Tutorial, a practical guide for programmers, Thinking in Java, 3rd Edition Revision 4.0, Bruce Eckel, The Java Language Specification, 2nd Edition, James Gosling, Bill Joy, Guy Steele, Gilad Bracha
4
第1讲 Java语言概述 武汉大学国际软件学院
5
1.1 Java的发展 早期的历史 1991年,Sun Microsystems公司建立“the Green Project”(Secretly),13个成员,目的开发消费电子类产品市场(嵌入式设备),初始选择C++语言 1992年夏天,运行在一种全新的、对立于处理器的语言“Oak” 1995年底,”Oak”语言改名为”Java”语言
6
1.1.1 java.sun.com的主页
7
1.1.2 五年回顾(1996-2000) 1995年 1996年 May 23, Java technology launched
Jan 23, JDK 1.0 software release May 29, first JavaOne developer conference (JavaBeans, Java Media APIs, servlets, etc) July 10, 50,000 people attend Sun Java Day in Tokyo Aug 16, Sun/Addison-Wesley (The Java Tutorial and the first Java Language Specification) Sep, 83,000 Web pages have incorporated Java technology Oct 25, Sun announces first Just-In-Time (JIT) compiler for Java platform Oct 29, Java Card API announced Dec 9, JDK 1.1 beta software released
8
1.1.2 五年回顾(1996-2000) (续) 1997年 Feb 18, JDK 1.1 release ships
Mar 4, Java Web Server beta and Java Servlet Developers Kit software released Mar 10, Java Naming and Directory Interface (JNDI) API introduced Mar 11, More than 220,000 downloads of JDK 1.1 software in just three weeks Apr 2, JavaOne conference (10,000 attendees, the world's largest developer conference), Enterprise JavaBeans technology Aug 5, Java Media and Communication APIs released Aug 5, More than 100,000 downloads of JavaBeans Development Kit software Sep 23, Java Developer Connection program has 100,000+ members
9
1.1.2 五年回顾(1996-2000) (续) 1998年 Jan 20, JDK 1.1 software release downloads top 2 million Mar 24, JavaOne conference draws 15,000 Mar 31, Ericsson, Sony, Siemens, BEA, OpenTV and others license Java technology June 3, Visa launches world's first smart card based on Visa's Open Platform and Sun's Java Card technology Nov 5, Sun works with Linux Community on Java 2 software port to Linux Dec 8, Java 2 platform ships
10
1.1.2 五年回顾(1996-2000) (续) 1999年 Jan 13, Major consumer electronics manufacturers support Java technology for digital television Feb 24, Java 2 platform source code released Mar 4, XML support for Java platform unveiled Mar 27, Java HotSpot performance engine unveiled June 2, JavaServer Pages technology unveiled June 15, JavaOne developer conference draws 20,000 June 15, Sun announces three editions of Java platform: J2SE, J2EE, J2ME June 29, J2EE Reference Implementation Alpha ships Aug 25, J2SE version 1.3 beta software released Aug, The JavaPhone API specification included in an approved GSM standard by the European Telecommunications Standards Institute
11
1.1.2 五年回顾(1996-2000) (续) 1999年 Sep 30, J2EE beta software released Dec 8, J2EE platform ships Dec 8, J2SE platform on Linux ships 2000年 Apr 19, J2EE platform licensed to Art Technology Group, BEA Systems, Compaq, Hitachi, SilverStream, Sybase, .. May, Membership in Java Developer Connection program tops 1.5 million May 8, Sun to work with Chinese TV industry to define interactive digital TV spec for China TV May 8, J2SE v. 1.3 platform released May 17, J2SE v 1.3 platform gains industry support from Apple with Mac OS X
12
1.2 什么是Java? Java Technology 编程语言(Programming Language) 运行平台(Platform)
13
1.2.1 Java编程语言的特点 简单(Simple) 面向对象(Object oriented) 解释性(Interpreted) 平台独立和可移植(Architecture neutral & Portable) 健壮和安全(Robust & Secure) 多线程(Multithreaded) 分布式(Distributed) 高性能(High performance) 动态(Dynamic)
14
面向对象(Object oriented)
1.2.1 Java编程语言的特点 (续) Java编程语言的特点 简单(Simple) 简单易学 不存在指针、单一继承、内存空间自动回收 面向对象(Object oriented) 类和对象数据和方法的封装 封装、继承、多态性 注重于数据和操作数据的方法,而不是流程 解释性(Interpreted) Java编译器生成字节码,Java解释器执行字节码 链接过程简单,仅仅将新的类装载(load)入运行环境
15
Java编程语言的特点 1.2.1 Java编程语言的特点 (续)
平台独立(Architecture neutral)和可移植(Portable) Java编译器产生的字节码(bytecode)可运行在异种网络环境中(不同的硬件系统和不同的操作系统) Java程序在不同的平台中行为一致,不存在数据类型的不一致等现象
16
鲁棒/健壮(Robust)和安全(Secure)
1.2.1 Java编程语言的特点 (续) Java编程语言的特点 鲁棒/健壮(Robust)和安全(Secure) 取消了指针的不安全性,增强了程序的健壮性 内存管理简单,“new”构造对象,对象释放(automatic garbage collection) 可靠的语言: compile-time checking和run-time checking 网络环境的应用不会产生恶意行为,为Java程序构造一个个(Sandbox,具有安全策略的限制),提高了安全性
17
Java编程语言的特点 多线程(Multithreaded) 分布式(Distributed) 1.2.1 Java编程语言的特点 (续)
例: 浏览器应用中,播听音乐/拖动页面/后台下载页面 线程类: java.lang.Thread/Runnable/ThreadGroup等 原语支持: synchronized、wait()、notify() 分布式(Distributed) 支持网络应用, java.net.* URL类 Socket类、ServerSocket类 DatagramSocket类、DatagramPacket类
18
高性能(High performance)
1.2.1 Java编程语言的特点 (续) Java编程语言的特点 高性能(High performance) 解释性的语言,没有C语言快 “Just-In-Time” JIT编译器,在运行时将Java字节码转变为机器码 Java HotSpot Compilers 动态(Dynamic) Java语言在执行的链接(link)阶段是动态的 class类仅在需要时被链接 被链接的代码模块可以有不同的来源,从本地或从网络
19
平台(Platform) Java运行平台(Platform) 1.2.1 Java平台 程序运行的硬件和软件环境
操作系统平台-Windows 2000、Linux、Solaris、MacOS 操作系统与硬件的结合 Java运行平台(Platform) Java虚拟机(Java Virtual Machine, Java VM) Java解释器-Java开发工具或可运行applet的Web浏览器 Java应用编程接口(Java Application Programming Interface, Java API)
20
Java运行平台(Platform) 1.2.1 Java平台 (续)
J2SE Platform (Java 2 Standard Edition) Java Runtime Environment (JRE) -Java虚拟机、库函数、运行Java应用程序和Applet所必须文件 Java 2 SDK (Development Kit)-JRE的超集,包含编译器和调试器等用于程序开发的文件 Java虚拟机、Java应用编程接口和系统平台的关系
21
Java平台的三个版本(1999.6): J2SE/J2EE/J2ME
Java Development Kit 1.0.2 1.1.1 1.1.8 1.2.1 Java 2 SDK 1.2.2 1.3.0 1.3.1 1.4.0 1.4.21.5.0 Java平台的三个版本(1999.6): J2SE/J2EE/J2ME
22
1.2.3 Java可以做什么 基本: Objects, strings, threads, numbers, input and output, data structures, system properties, date and time等 Applets应用 网络应用: 实现基于URL/TCP/UDP的网络应用 国际化应用: 实现程序的本地化,并以适当的语言显示 安全应用: 电子签名、公钥和私钥管理、访问控制和用户证书等 软件构件: JavaBeans 对象串行化: 实现远程方法执行(Remote Method Invocation,RMI) Java数据库连接(Java Database Connectivity, JDBC): 提供统一的方式访问关系型数据库
23
1.2.4 为什么选择Java 简单易学 (Get started quickly) 写较少的代码 (Write less code)
写更好的代码 (Write better code): garbage collection (防止内存泄漏),面向对象、JavaBeans构件机制、其他API复用代码,减少bugs 开发程序更快 (Develop programs more quickly) 避免平台依赖性 (Avoid platform dependencies with 100% Pure Java) 编写一次,随处运行 (Write once, run anywhere) machine-independent bytecodes 发布软件更容易 (Distribute software more easily): 指对软件的更新,利用动态加载功能,一处改动,自动更新,不用重新编译整个程序
24
1.3 Java程序的种类 Java小应用程序(Java Applet) Java应用程序(Java Application)
在Web浏览器中运行(内嵌Java虚拟机) 特定标记 <APPLET CODE="HelloWorld.class" WIDTH=150 HEIGHT=25> </APPLET> Java应用程序(Java Application) 独立的Java程序 程序入口方法: public static void main(String[] args) { … } Java Script 嵌入在HTML文件中的脚本语言 <script language=javascript> … </script> Netscape引入javascript
25
Java源程序-文件扩展名为“.java” Java字节码程序-文件扩展名为“.class”
/** * Exam1_1 class实现一个应用 * 将特定的字符串显示到标准输出 */ public class Exam1_1 { public static void main(String[] args) { System.out.println(“This is a Java Application Program."); }
26
关键字class-表示要定义一个类(模板),包含数据变量和方法 关键字import-表示引入程序外部定义的类
1.4.1 定义类文件 关键词public -修饰符 关键字class-表示要定义一个类(模板),包含数据变量和方法 关键字import-表示引入程序外部定义的类 /** * Exam1_1 class实现一个应用 * 将特定的字符串显示到标准输出 */ import java.lang.System; public class HelloWorld1 { public static void main(String[] args) { System.out.println(“This is a Java Application Program.”); }
27
1.4.1 定义类文件 (续) 类名称与Java源程序名一致 class MyClass { . . . } 注意: 大小写敏感
所保存的文件为: MyClass.java 注意: 大小写敏感
28
/** ~~~ */-文档注解 /* ~~~ */ -程序内的任意位置 //-对本行注解 1.4.2 注解方式(Comments) /**
* Exam1_1 class实现一个应用 * 将特定的字符串显示到标注输出 */ public class Exam1_1 { public static void main(String[] args) { System.out.println(“This is a Java Application Program."); }
29
主方法(main Method) 每个Java应用程序必须有且只能有的一个方法,程序执行的入口 格式固定
/** * Exam1_1 class实现一个应用 * 将特定的字符串显示到标注输出 */ public class Exam1_1 { public static void main(String[] args) { System.out.println(“This is a Java Application Program."); }
30
所有的Java类默认都引入java.lang.*
1.4.4 类和变量的引用 类和变量的引用 类(java.lang.System),System类的一个变量out 变量out是PrintStream类的一个实例,PrintStream类实现标准输出流 引用实例out的方法println() 变量和方法的引用通过“.”实现 public class Exam1_1 { public static void main(String[] args) { System.out.println(“This is a Java Application Program."); } 所有的Java类默认都引入java.lang.*
31
书写规范 1.4.5 书写规范 花括号对“{}”-类,方法 语句分号“;”结尾 对齐和缩进 区分大小写 /**
* Exam1_1 class实现一个应用 * 将特定的字符串显示到标准输出 */ public class Exam1_1 { public static void main(String[] args) { System.out.println(“This is a Java Application Program."); }
32
1.5 简单的Java小程序(Applet) 引入类和包 引入特定的类(Class) 引入整个包(Package)
import java.applet.Applet; import java.awt.Graphics; public class HelloWorld extends Applet { public void paint(Graphics g) { g.drawString("Hello world!", 50, 25); } 引入整个包(Package) import java.applet.*; import java.awt.*;
33
类的定义 1.5.1 Applet类的定义 定义一个公共类HelloWorld 该类是Applet类的子类,关键词“extends”
import java.applet.Applet; import java.awt.Graphics; public class HelloWorld extends Applet { public void paint(Graphics g) { g.drawString("Hello world!", 50, 25); }
34
1.5.2 Applet方法的定义 方法定义 重写父类Applet的paint方法
参数g是Graphics类的一个实例,表示当前作画的上下文 引用g的方法drawString(),在坐标(50, 25)处输出字符串 import java.applet.Applet; import java.awt.Graphics; public class HelloWorld extends Applet { public void paint(Graphics g) { g.drawString("Hello world!", 50, 25); }
35
1.6 Java程序运行环境 Java开发工具(Java Development Kit, JDK), J2SDK Java API 工具集
基本工具 (javac, java, javadoc, appletviewer, jar, jdb, javah, javap, extcheck) 远程方法调用工具 (Remote Method Invocation, RMI) (rmic, rmiregistry, rmid, serialver) 国际化工具 (native2ascii) 安全工具 (keytool, jarsigner, policytool) Java IDL和RMI-IIOP工具 (tnameserv, idlj, orbd, servertool) Java插件工具 (Plug-in)
36
1.6.1 下载Java程序运行环境 获得 J2SDK http://java.sun.com/products/archive/
安装 j2sdk-1_4_1-windows-i586.exe 系统环境变量设置 路径设置 (path) Windows 95/98,autoexec.bat,添加“path c:\windows;c:\windows\command;c:\j2sdk1.4.1\bin” Windows NT/2000,控制面板系统高级环境变量,编辑path选项添加“c:\j2sdk1.4.1\bin” 类路径设置(classpath) Windows 95/98,autoexec.bat,添加“set classpath= c:\j2sdk1.4.1\jre\lib\rt.jar;.” Windows NT/2000,控制面板系统高级环境变量,添加classpath选项添加“.”,表示在当前目录寻找class文件 注: rt.jar -- the bootstrap classes (the RunTime classes that comprise the Java platform's core API).
37
1.6.2 检查Java程序运行环境 检查Java运行环境设置 C:\>java C:\>javac
Usage: java [-options] class [args...] (to execute a class) or java -jar [-options] jarfile [args...] (to execute a jar file) C:\>javac Usage: javac <options> <source files> … … … … C:\>java –version java version "1.4.1_01" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_01-b01) Java HotSpot(TM) Client VM (build 1.4.1_01-b01, mixed mode)
38
1.6.3 编译与运行Applications Java应用程序的编译和运行 编写源文件Exam1_1.java(内容如前)
保存到D盘根目录 编译: D:\>javac Exam1_1.java 生成Exam1_1.class文件 运行: D:\>java Exam1_1 This is a Java Application Program. 问题: (classpath的路径设置) Exception in thread "main" java.lang.NoClassDefFoundError: …
39
1.6.4 编译与运行Applets Java小程序的编译和运行 编写源文件 HelloWorld.java (内容如前) 保存到D盘根目录
D:\>javac HelloWorld.java 生成HelloWorld.class文件 编写HTML文件 “Test.html”,保存到D盘根目录 <Html> <Head> <Title> A Simple Program </Title> </Head> <Body> Here is the output of my program: <Applet code="HelloWorld.class" WIDTH=150 HEIGHT=25> </Applet></Body> </Html>
40
1.6.4 编译与运行Applets (续) Java小程序的编译和运行 运行 用浏览器打开Test.html文件
appletviewer Test.html
41
1.7 练习 下载并安装java 1.5.0以上运行环境 调试运行java应用程序,输出: ”Hello Applications!” 调试运行java小程序,输出: ”Hello Applets!”
42
第1章 结束!
Similar presentations