Presentation is loading. Please wait.

Presentation is loading. Please wait.

Java 程序设计(第二版) 普通高等教育 “ 十一五 ” 国家级规划教材 辛运帷等 编著 徐小平 主讲.

Similar presentations


Presentation on theme: "Java 程序设计(第二版) 普通高等教育 “ 十一五 ” 国家级规划教材 辛运帷等 编著 徐小平 主讲."— Presentation transcript:

1

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


Download ppt "Java 程序设计(第二版) 普通高等教育 “ 十一五 ” 国家级规划教材 辛运帷等 编著 徐小平 主讲."

Similar presentations


Ads by Google