Download presentation
Presentation is loading. Please wait.
2
Java 程序设计(第二版) 普通高等教育 “ 十一五 ” 国家级规划教材 辛运帷等 编著 徐小平 主讲
3
1 概述 什么是 Java 语言 一个简单的 Java 程序 程序的编译和运行 常见错误 使用 Java 核心 API 文档
4
1.1 什么是 Java 语言 前身是 1991 年由美国 Sun 公司的 Jame Gosling 、 Bill Joe 等人开发的 Oak 语言 Java 是一种功能强大的程序设计语言,既 是开发环境,又是应用环境,它代表一种 新的计算模式
5
1.1 什么是 Java 语言 面向对象的程序设计语言 与机器无关的二进制格式的类文件 Java 虚拟机(用来执行类文件) 完整的软件程序包(跨平台的 API 和库)
6
1.1.1 Java 语言的特点 语法简单,功能强大 类似于 C++ ,但去掉了 C++ 中不常用和容易出错的地方, 如 : 没有指针的概念,没有全局变量,没有预编译等 完全面向对象 分布式与安全性 强调网络特性,内置 TCP/IP 、 HTTP 、 FTP 协议类库 在语言定义、字节码检查、程序执行阶段有三级代码 安全检查机制 与平台无关 一次编写,到处运行 不同的操作系统有不同的虚拟机
7
1.1.1Java 语言的特点 解释编译两种运行方式 JAVA 程序可以经解释器得到字节码 也有 just-in-time 编译器(简称 JIT 编译器)的编译功能 多线程 允许在同一时刻做多件事情,即多个程序并行执行 通过使用多线程,可以分别用不同的线程完成特定的 行为 动态执行 执行代码是在运行时动态载入的 程序可以自动进行版本升级 丰富的 API 文档和类库
8
1.1.2Java 的三层架构 主机架构 集中处理,集中管理,各用户分享使用计算机 资源。 这种模式下,可移植性差,扩充系统费用较大 个人计算机( PC ) 本地处理,本地管理,各用户独占系统资源 管理维护费用直线上升
9
1.1.2Java 的三层架构 Java 计算模式 结合了上述两种模式的优势,它可用于客户 / 服 务器架构。 将公共使用的程序放到应用程序服务器上,用 户使用时从服务器上下载到客户端,各用户独 立使用设备和程序。 当程序更新时,只需在服务器上进行。 不必在客户端做任何维护工作,达到 “ 零管理 ” 的理想目标。
10
1.1.3Java 语言的目标 创建一种面向对象的语言 JAVA 语言的语法及程序结构适合面向对象的程 序设计 提供一种解释环境 这可以缩短系统开发的编译-连接-装载-测 试周期,提高开发速度。 去掉了影响代码健壮性的功能 如指针结构及程序员负责的内存分配与释放。
11
1.1.3Java 语言的目标 为程序运行多线程提供了方法 提供了语言级多线程功能,如类: Thread 允许程序下载代码模块 在程序运行生命期内可以动态修改 检查下载的代码模块 提供了保证安全的一种手段
12
1.1.4 Java 虚拟机 Java 虚拟机( Java virtual machine , JVM )是运 行 Java 程序必不可少的机制。编译后的 Java 程序 指令并不直接在硬件系统的 CPU 上执行,而是由 JVM 执行。 JVM 是编译后的 Java 程序和硬件系统之间的接口, 程序员可以把 JVM 看作一个虚拟的处理器。它不 仅解释执行编译后的 Java 指令,而且还进行安全 检查。 它是 Java 程序能在多平台间进行无缝移植的可靠 保证,同时也是 Java 程序的安全检验引擎。
13
1. 什么是 Java 虚拟机 JVM 的定义 JVM 是在一台真正的机器上用软件方式实现的 一台假想机 JVM 的具体实现 指令集(等价于 CPU 的指令集)、寄存器组、 类文件格式、栈、垃圾收集堆、内存区 JVM 代码格式为压缩的字节码,效率较高 JVM 的实现叫做 Java 运行时系统或运行时环境 ( Runtime Environment ),简称为运行时
14
2.Java 虚拟机的性能 Java 解释器经过优化,字节码的执行速度已有很 大提高 在字节码执行之前先经过 JIT 编译器( just-in-time ) 进行编译,生成针对具体平台的本机执行代码。 执行效率可比解释执行的效率大幅度提高。并仍 不失跨平台的特点 Hotspot 技术,是 Sun 公司推出,为根本上解决 Java 程序的效率问题。它提供对代码的运行时选 择。在程序执行时,对每个字节码指令进行分析, 根据它的执行次数,动态决定它的执行方式是编 译执行还是解释执行。
15
1.1.5 垃圾收集 程序员不必亲自释放内存 提供后台系统级线程,记录每次内存分配的情 况,并统计每个内存指针的引用次数,引用次 数为 0 的内存将被释放。 垃圾收集自动进行 无需用户释放内存,消除了内存漏洞
16
1.1.6 代码安全 语言定义 public protected private final 取消指针 自动回收垃圾 bytecode 检查 限定对象的存取权限 系统堆栈溢出 参数类型一致 程序执行系统 WWW 浏览器 限制 Java 小应用程序的不正当使用 Java 源程序 (.java 文件 ) Java 编译器 Java bytecode(.class 文件 ) bytecode 下载器 bytecode 解释器 系统执行平台
17
1.1.6 代码安全 对于 Applet ,因其是从其他机器上通过网络 下载到本机执行的,程序中可能隐藏某些 非法操作,所以在 Applet 运行之前,系统要 对之进行严格的三级代码安全检查,即验 证程序是否有权进入本机、分析下载的字 节码是否合乎规则、跟踪监测所执行的每 步操作是否合法。
18
1.1.6 代码安全 JDK1.0 版本中,安全模型是所谓的 “ 沙箱 ” 模 型,即下载的代码只能在一个像箱子一样 的受限环境中运行 JDK1.1 版本中,使用 “ 签名 Applet ” ,有正确 签名的代码才可以使用本地资源。 Java 2 允许用户自己设定相关的安全级别
19
1.1.6 代码安全 Java 解释器 Java 解释器只能执行为 JVM 编译的代码 Java 解释器有三项主要工作: (1) 下载代码--由类下载器完成 (2) 校验代码--由字节码校验器完成 (3) 运行代码--由运行时解释器完成
20
1.1.6 代码安全 类下载器 可以从本地文件系统中下载类文件 也可以从 Internet 网上下载类文件 类下载器把本地文件系统的类名空间和网络源 输入的类名空间区分开来,以增加安全性
21
1.1.6 代码安全 字节码校验器 检查代码的安全性、代码段的格式,并使用规 则来检查非法代码段 主要检查以下几项内容: (1) 类遵从 JVM 的类文件格式。 (2) 不出现访问违例情况。 (3) 代码不会引起运算栈溢出。 (4) 所有运算代码的参数类型总是正确的。 (5) 不会发生非法数据转换。 (6) 对象域访问是合法的。
22
1.2 一个 java 应用程序 1.2.1 开发环境的安装 安装 JDK 下载 jdk1.5.0 ,并安装 设置环境变量 PATH = C:\Program Files\Java\jdk1.5.0\bin; CLASSPATH =. ; c:\ Program Files\Java\ jdk1.5.0\LIB;c:\Program Files\Java\ jdk1.5.0\demo
23
1.2.2 JDK 目录结构 C:\ Jdk1.5.0 bin lib javac java appletviewer 用户类文件所在目录 c:\java\examples\applications 当前目录 jre demo
24
1.2.3 Java 程序 Java 应用程序( Java Application ) Java 小应用程序( Java Applet )
25
1.2.4Java 应用程序例 public class HelloWorldApp{ public static void main (String args[ ]) { System.out.println ("Hello World!"); } } 编译命令 运行命令运行结果
26
1.3 程序的编译和运行 1. 编译 源文件是文本形式的文件,经过编译,生 成二进制格式的字节码类文件 Java 编译器 : “ javac ” >javac HelloWorldApp.java
27
2. 运行 Java 的解释器是 “ java.exe ” 注意: java 和 javac 一般放在 bin 目录中,系 统配置文件的 PATH 变量中应包含该目录 >java HelloWorldApp
28
1.4 常见错误 编译时错误 javac: Command not found 包含 javac 编译器的路径变量设置不正确。 HelloWorldApp.java:3: Method printl (java.lang.String) not found in class java.io.PrintStream. System.out.printl (“Hello World!”); ^ 方法名 printl 不正确, HelloWorldApp.java:1: Public class HelloWorldapp must be defined in a file called "HelloWorldapp.java". public class HelloWorldapp{ ^ 文件定义的公有类 HelloWorldapp 的名字和文件名不匹配。
29
1.4 常见错误 运行时错误 Can't find class HelloWorldApp 系统找不到名为 HelloWorldApp 的类文件。 In class HelloWorldApp: main must be public and static main() 方法的左侧缺少 static 或 public 文件中含有的类个数错误 在一个源文件中只能定义一个公有类
30
1.4 常见错误 层次错误 解释:一个.java 源文件可以含有三个 “ 顶层 ” 元 素,这三个元素必须依次是: (1) 一个包说明,即 package 语句,可选 (2) 任意多个引入语句,即 import 语句 (3) 类和接口说明
31
1.4 常见错误 整体来看, Java 程序的结构如下: package 语句:零个或 1 个,必须放在文件开始; import 语句:零个或多个,必须放在所有类定 义之前; 公有的( public )类定义:零个或一个; 类定义:零个或多个; 接口定义:零个或多个; 源文件命名时,若文件中含有 public 类,源文 件必须与该类名字一致,注意区分大小写。
32
1.4 常见错误 正确的语句序列: 错误的语句顺序: package Transportation; import java.awt.Graphics; import java.applet.Applet; import java.awt.Graphics; import java.applet.Applet; package Transportation; 该例中在包说 明语句之前含 有其他语句
33
1.4 常见错误 错误的语句顺序: package Transportation; package House; import java.applet.Applet; 该例中含有两 个包说明语句
34
1.5 Java API 文档 从 SUN 公司的网站上下载文档文件,假定 文件存放在 jdk 目录下,则在浏览器地址框 中输入 jdk\docs\index.html 即可以查看 JDK 文档。 用 Javadoc 工具生成 API 文档 编写符合 JavaDoc 规范的注释,能够容易生成 HTML 页面格式的 API 文档,有利于开发团队成 员的沟通,有利于将来维护程序。 如,输入命令: >javadoc HelloWorldApp.java
35
习题: 1.3, 1.4, 1.6
Similar presentations