关于本课程 本书的主要目标是为你提供有关Java应用和 Java applets的面向对象的程序设计所必需的知识和技能:并讲授Java 编程语言句法和面向对象的概念,以及Java运行环境的许多特性,对图形用户界面(GUIs)、多线程和网络的支持等, 本课程包括了参加 SUN Certified Java Programmer和 SUN Certified Java Developer考试所必备的知识。 课程概述 课程概述 本课程主要包括以下内容 Java编程语言句法 应用于Java编程语言的面向对象的概念 图形用户界面(GUI)编程 创建 Applet 多线程 本课程首先讨论了Jaa运行环境和Java编程语言句法,然后阐述了应用于Java编程语言的面向对象的概念:随着 课程的进展还将讨论有关Java平台的更先进的特性 本课程授课对象应具备运用Java编程语言或其它语言进行基本语言设计的能力,它是“非程序员Java编程”(“Java rogramming for Non- Programmers”,SL-10)课程的延续 尽管Java编程语言独立于操作系统,但它所产生的图形用户界面(GUⅠ)却可能依赖于执行其代码的操作系统。本 课程中的例题所使用的代码运行于 Solaris操作系统,因而本手册中的图形具备 Motif gu。如果将这些代码运行于 Windows95操作系统,则可产生 Microsoft windows95GUI。本课程的内容适用于所有Java操作系统端口。 二、课程图 每一模块的课程都从一张课程图开始,使学员可掌握自己的学习进度。全课程设置流程图如下所示: The Java Programming Language Basics Getting Started Keywords, and Ty Expressions and Flow Control Object-Oriented Programming and Classes Language Features Developing Graphical User Interfaces Building guis The AwT Multithreading Threads Communications Stream v/o and Files Networking
1 关于本课程 本书的主要目标是为你提供有关 Java 应用和 Java applets 的面向对象的程序设计所必需的知识和技能;并讲授 Java 编程语言句法和面向对象的概念,以及 Java 运行环境的许多特性, 对图形用户界面(GUIs)、多线程和网络的支持等。 本课程包括了参加 SUN Certified Java Programmer 和 SUN Certified Java Developer 考试所必备的知识。 一、课程概述 课程概述 本课程主要包括以下内容: - Java 编程语言句法 - 应用于 Java 编程语言的面向对象的概念 - 图形用户界面(GUI)编程 - 创建 Applet - 多线程 - 网络 本课程首先讨论了 Java 运行环境和 Java 编程语言句法,然后阐述了应用于 Java 编程语言的面向对象的概念;随着 课程的进展还将讨论有关 Java 平台的更先进的特性。 本课程授课对象应具备运用 Java 编程语言或其它语言进行基本语言设计的能力,它是“非程序员 Java 编程”(“Java Programming for Non—Programmers”,SL-110)课程的延续。 尽管 Java 编程语言独立于操作系统,但它所产生的图形用户界面(GUI)却可能依赖于执行其代码的操作系统。本 课程中的例题所使用的代码运行于 Solaris TM 操作系统,因而本手册中的图形具备 Motif GUI。如果将这些代码运行于 Windows 95 操作系统,则可产生 Microsoft Windows 95 GUI。本课程的内容适用于所有 Java 操作系统端口。 二、课程图 每一模块的课程都从一张课程图开始,使学员可掌握自己的学习进度。全课程设置流程图如下所示: The Java Programming Language Basics Getting Started Identifiers, Keywords, and Types Expressions and Flow Control Arrays Object-Oriented Programming Objects and Classes Advanced Language Features Exception Handling Exceptions Developing Graphical User lnterfaces Building GUIs The AWT Event Model The AWT Component Library Java Foundation Classes Applets Introduction to Java Applets Multithreading Threads Communications Stream I/O and Files Networking
三、各模块概述 各模块概述 模块1——起步 模块2——标识符、关键字和类型 模块3——表达式和流程控制 模块4——数组 模块5——对象和类 模块6——高级语言特性 模块7——异常 模块8——建立GUIs 模块9——AWT事件模型 模块10—AWT组件库 模块11——Java基础类 模块12— Java Applets介绍 模块13——线程 模块14——流式IO和文件 模块15——网络 模块1——起步 本模块概述了Java编程语言的主要特性及Java应用程序,阐述了类和包的概念,并介绍了一些常用Jaa包。 -模块2——标识符、关键字和类型 Jawa编程语言与C语言类似,具有许多编程构造。本模块对这些构造作了一般介绍并讲授了每一构造所要求的一般句法。 此外,还介绍了采用集合数据类型进行数据关联的面向对象的方法 模块3——表达式和流程控制 本模块介绍了包括运算符和Java程序控制句法在内的表达式 模块4——数组 本模块讲解了如何声明、创建、初始化和拷贝Java数组 -模块5——对象和类 本模块是在模块2的基础上,对Java对象的概念作了进一步的阐述,包括重载、覆盖、子类和构造函数。 -模块6——高级语言特性 本模块是模块5的继续,它进一步讲解了Java面向对象的编程模块,包括一些新的Jκ!Ⅰ特性—降级和内部类。该模 块还介绍了在Java开发包JDKM1.2中新增的收集的概念 模块7——异常 本模块为Java程序员提供了一种在运行Java程序时俘获错误的机制,并阐述了预定义异常和用户定义异常 模块8——建立GUIs 在Java编程语言中,所有图形用户界面都是建立在框架和面板的概念之上。本模块介绍了布局管理和容器的概念。 模块9——AWT事件模型 Java编程语言1.1版的最重要的变化就是将事件送入和送出Java组件的方法的变化。本模块阐述了JDK1.0和1.1的事件 模型的区别,并演示了如何建立小型事件柄( compact event handler)的方法。 模块10—AWT组件库 本模块介绍了用于建立 Java guis的抽象窗口工具包(AWT)组件,并演示了 Java Awt组件和1.1事件模型共同工作的 方法 模块11—Java基础类介绍 本模块重点介绍了JDK12的一个重要特性—Java基础类(JFC),阐述了Swng组件和它们的可插入式外观及感觉的
2 三、各模块概述 各模块概述 - 模块 1──起步 - 模块 2──标识符、关键字和类型 - 模块 3──表达式和流程控制 - 模块 4──数组 - 模块 5──对象和类 - 模块 6──高级语言特性 - 模块 7──异常 - 模块 8──建立 GUIs - 模块 9──AWT 事件模型 - 模块 10──AWT 组件库 - 模块 11──Java 基础类 - 模块 12──Java Applets 介绍 - 模块 13──线程 - 模块 14──流式 I/O 和文件 - 模块 15──网络 - 模块 1──起步 本模块概述了 Java 编程语言的主要特性及 Java 应用程序,阐述了类和包的概念,并介绍了一些常用 Java 包。 - 模块 2──标识符、关键字和类型 Java 编程语言与 C 语言类似,具有许多编程构造。本模块对这些构造作了一般介绍并讲授了每一构造所要求的一般句法。 此外,还介绍了采用集合数据类型进行数据关联的面向对象的方法。 - 模块 3──表达式和流程控制 本模块介绍了包括运算符和 Java 程序控制句法在内的表达式。 - 模块 4──数组 本模块讲解了如何声明、创建、初始化和拷贝 Java 数组。 - 模块 5──对象和类 本模块是在模块 2 的基础上,对 Java 对象的概念作了进一步的阐述,包括重载、覆盖、子类和构造函数。 - 模块 6──高级语言特性 本模块是模块 5 的继续,它进一步讲解了 Java 面向对象的编程模块,包括一些新的 JDK1.1 特性──降级和内部类。该模 块还介绍了在 Java 开发包 JDKTM 1.2 中新增的收集的概念。 - 模块 7──异常 本模块为 Java 程序员提供了一种在运行 Java 程序时俘获错误的机制,并阐述了预定义异常和用户定义异常。 - 模块 8──建立 GUIs 在 Java 编程语言中,所有图形用户界面都是建立在框架和面板的概念之上。本模块介绍了布局管理和容器的概念。 - 模块 9──AWT 事件模型 Java 编程语言 1.1 版的最重要的变化就是将事件送入和送出 Java 组件的方法的变化。本模块阐述了 JDK1.0 和 1.1 的事件 模型的区别,并演示了如何建立小型事件柄(compact event handler)的方法。 - 模块 10──AWT 组件库 本模块介绍了用于建立 Java GUIs 的抽象窗口工具包(AWT)组件,并演示了 Java AWT 组件和 1.1 事件模型共同工作的 方法。 ⚫ 模块 11──Java 基础类介绍 本模块重点介绍了 JDK1.2 的一个重要特性──Java 基础类(JFC),阐述了 Swing 组件和它们的可插入式外观及感觉的
体系结构,并介绍了一例基本的 Swing应用及JFC的其它特点,例如在二维图形、存取性及拖放( Drag and drop)等方面 的应用 模块1 ava applets介绍 本模块演示了 applet和应用程序开发之间的区别,并介绍了JDK1.2的声音增强功能 模块13——线程 线程是一个复杂的论题。本模块阐述了与Java编程语言相关的线程问题,并介绍了一个简单的线程通信和同步传输实例。 模块14——流式IO和文件 本模块阐述了既可读写数据又可读写文本文件的类,并介绍了对象流的概念。 模块15——网络 本模块介绍了Java网络编程包并演示了传输控制协议/ nternet协议( TCP/P)客户—一服务器模 四、课程目标 完成本课程的学习后,你应该能够 描述语言的主要特性 编译并运行Java应用程序 理解和使用在线超文本Java技术文件 描述语言句法元素和构造 理解面向对象的例子并使用该语言的面向对象特性 理解并使用异常 开发图形用户界面 -描述Java技术平台上的用于建立GUIs的抽象窗口工具包 从GUI输入 理解事件处理 描述 Swing的主要特性 开发 Java applets 读写文件和其它数据源 在不使用GUI的情况下,对所有数据源执行输入输出 理解多线程基础 开发多线程Jaa应用程序和 applets 使用 TCP/P和用户数据报协议(UDP)开发客户和服务器程序 五、从各模块中所获得的技能 下表的左侧显示有关的Java应用程序编程技能,右侧的黑格表示出讲解其左侧相应技能的有关模块,而灰格则 简述其左侧相应技能的有关模块 Module SkillsGained[ 0215 Describe Key language compile and run a Java Understand and use the online hypertext Java technology Describe language syntactic elements and constructs
3 体系结构,并介绍了一例基本的 Swing 应用及 JFC 的其它特点,例如在二维图形、存取性及拖放(Drag and drop)等方面 的应用。 - 模块 12──Java Applets 介绍 本模块演示了 applet 和应用程序开发之间的区别,并介绍了 JDK 1.2 的声音增强功能. - 模块 13──线程 线程是一个复杂的论题。本模块阐述了与 Java 编程语言相关的线程问题,并介绍了一个简单的线程通信和同步传输实例。 - 模块 14──流式 I/O 和文件 本模块阐述了既可读写数据又可读写文本文件的类,并介绍了对象流的概念。 - 模块 15──网络 本模块介绍了 Java 网络编程包并演示了传输控制协议/Internet 协议(TCP/IP)客户──服务器模型。 四、课程目标 完成本课程的学习后,你应该能够: - 描述语言的主要特性 - 编译并运行 Java 应用程序 - 理解和使用在线超文本 Java 技术文件 - 描述语言句法元素和构造 - 理解面向对象的例子并使用该语言的面向对象特性 - 理解并使用异常 - 开发图形用户界面 - 描述 Java 技术平台上的用于建立 GUIs 的抽象窗口工具包 - 从 GUI 输入 - 理解事件处理 - 描述 Swing 的主要特性 - 开发 Java applets - 读写文件和其它数据源 - 在不使用 GUI 的情况下,对所有数据源执行输入输出 - 理解多线程基础 - 开发多线程 Java 应用程序和 applets - 使用 TCP/IP 和用户数据报协议(UDP)开发客户和服务器程序 五、从各模块中所获得的技能 下表的左侧显示有关的 Java 应用程序编程技能,右侧的黑格表示出讲解其左侧相应技能的有关模块,而灰格则表示 简述其左侧相应技能的有关模块。 Module Skills Gained 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Describe Key language features Compile and run a Java application Understand and use the online hypertext Java technology documentation Describe language syntactic elements and constructs
object-oriented paradigm and use object-oriented Understand and use Describe the java technology platforms Abstract Window Toolkit from which GUIs are hical user interface nderstand event Describe the main features of swin Understand the basics of Java applications and erform lo to all sources without the use of a guI Read and write to files Develop Java client and ver programs using TCP/P and UDP 六、课时安排 下表给出了大致的课程进度 Module Day Day Day Day Day about this course A M Module 1-Getting Starte Module 2-Identifiers, Keywords, and Types A M Module 3-Expressions and Flow Control Module 4-Arrays Module 5-Objects and Classes AM Module 6-Advanced Language Features P. M Module 7-Exceptions A M Module 8-Building GUls Module 9-The A wT Event model P. M Module 10-The AWT Component Library A M Module 11-Introduction to jFC Module 12-Introduction to Applets Module 13-Threads A. Module 14-Stream 1/o and files Module 15-Networkin 七、未包括的论题 未包括的论题 般编程概念。本课程不是为从未参与过编程的人员而设置。 一般面向对象概念
4 Understand the object-oriented paradigm and use object-oriented features Understand and use exceptions Develop a GUI Describe the Java technology platform’s Abstract Window Toolkit from which GUIs are built Take input from a graphical user interface Understand event handling Describe the main features of Swing Develop Java applets Understand the basics of multithreading Develop multithreaded Java applications and applets Perform I/O to all sources without the use of a GUI Read and write to files and other data sources Develop Java client and server programs using TCP/IP and UDP 六、课时安排 下表给出了大致的课程进度 Module Day Day Day Day Day 1 2 3 4 5 About This Course A.M. Module 1-Getting Started A.M. Module 2-Identifiers,Keywords,and Types A.M. Module 3-Expressions and Flow Control P.M. Module 4-Arrays P.M. Module 5-Objects and Classes A.M. Module 6-Advanced Language Features P.M. Module 7-Exceptions A.M. Module 8-Building GUIs A.M. Module 9-The AWT Event Model P.M. Module 10-The AWT Component Library A.M. Module 11-Introduction to JFC A.M. Module 12-Introduction to Applets P.M. Module 13-Threads A.M. Module 14-Stream I/O and Files P.M. Module 15-Networking P.M. 七、未包括的论题 未包括的论题 - 一般编程概念。本课程不是为从未参与过编程的人员而设置。 - 一般面向对象概念
本课程未包括的论题见上表,由 SUN Educational services(SES)提供的其它课程包括了上述论题 面向对象的概念——见O0-100:面向对象的技术和概念 面向对象的设计和分析一见OO-120面向对象的设计和分析 一般编程概念一一见SL-110:非程序员Java编程 八、如何做好准备? 如何做好准备? 在学习本课程前,你应该已经完成了下列内容的学习 SL-10非程序员Java编程 用C或C++创建编译程序 用文本编辑器创建并编辑文本文件 使用 World wide web(www)浏览器,如 Netscape Navigator1N 在学习本课程前,你应该已经完成了下列内容的学习 -SL-10非程序员Java编程 或能够 用C或C++创建编译程序 用文本编辑器创建并编辑文本文件 使用 World wide Web(www)浏览器,如 Netscape Navigator1M 九、自我介绍 自我介绍 姓名 公司 职务、职责 编程经历 参与本课程学习的原因 -对本课程的预期 现在你已经进入本课程的学习,请互相介绍并填写上面的表格 十、如何使用本教材 如何使用本教材 课程图 相关问题 页头图 检查你的进度 思考题 为使你学好本课程,本教材采用了包括下列主要项目的授课模式 课程图——每一模块都从内容概述开始,这样你就可以了解该模块在实现整个课程目标中所起的作用。 相关问题一一每一模块的相关问题部分提供给你一些有关该模块的问题供学习者之间进行讨论,并鼓励你思考在
5 本课程未包括的论题见上表,由 SUN Educational Services(SES)提供的其它课程包括了上述论题。 - 面向对象的概念──见 OO-100:面向对象的技术和概念 - 面向对象的设计和分析──见 OO-120 面向对象的设计和分析 - 一般编程概念──见 SL-110:非程序员 Java 编程 八、如何做好准备? 如何做好准备? 在学习本课程前,你应该已经完成了下列内容的学习: - SL-110 非程序员 Java 编程 - 用 C 或 C++创建编译程序 - 用文本编辑器创建并编辑文本文件 - 使用 World Wide Web(WWW)浏览器,如 Netscape NavigatorTM 在学习本课程前,你应该已经完成了下列内容的学习: - SL-110 非程序员 Java 编程 或能够: - 用 C 或 C++创建编译程序 - 用文本编辑器创建并编辑文本文件 - 使用 World Wide Web(WWW)浏览器,如 Netscape NavigatorTM 九、自我介绍: 自我介绍 - 姓名 - 公司 - 职务、职责 - 编程经历 - 参与本课程学习的原因 - 对本课程的预期 现在你已经进入本课程的学习,请互相介绍并填写上面的表格。 十、如何使用本教材 如何使用本教材 - 课程图 - 相关问题 - 页头图 - 教程 - 练习 - 检查你的进度 - 思考题 为使你学好本课程,本教材采用了包括下列主要项目的授课模式: ⚫ 课程图──每一模块都从内容概述开始,这样你就可以了解该模块在实现整个课程目标中所起的作用。 ⚫ 相关问题──每一模块的相关问题部分提供给你一些有关该模块的问题供学习者之间进行讨论,并鼓励你思考在
Java应用程序编程过程中你的兴趣与该模块内容的关系 页头图—页头图可帮助你及时而轻松的跟上教师的进度。它并不是在每一页都出现 教程——教师将为你提供有关模块的特有信息,这些信息将有助于你掌握做练习所需要的知识和技能 练习——练习将为你提供测试你的技能和应用所学概念的机会。本教程中所提供的例题代码亦有助于你完成练习。 检査你的进度——在这一部分,模块的目标被重新提及,有时是以问题形式出现。这样,在你进入下一模块之前, 就可以检查你是否已完成了目前这一模块所要求达到的目标 ●思考题——具有挑战性的问题有助于你应用所学模块内容或预测待学模块的内容。 十一、图表和印刷体例说明 下列图表及印刷体例代表着不同的含义 辅助资源——表示可获取辅助参考资料。 讨论一一表示此时建议以小组或班级形式进行讨论 练习目标——一表示练习的目标,这个练习适合于正在讨论的内容。 注意——附加重要信息、强调信息、有趣或特殊信息 警告——对数据或机器的潜在损坏 印刷体例 字体 Courier系用来表示命令名称、文件名及目录名,同时也表示计算机屏幕输出。例如: Use ls -al to all files System器 You have mai1 黑体 courier bold系用来表示你打印的字符和数字。 system% su 斜体 courier italic系用来表示变量和命令行,它可以被实际名称或值所代替。 例如: To delete a file, type rm filename 斜体 Palatino系用来表示书名、新词或术语或需强调的词 Read Chapter 6 in User's Guide These are called class options You must be root to do this
6 Java 应用程序编程过程中你的兴趣与该模块内容的关系 ⚫ 页头图──页头图可帮助你及时而轻松的跟上教师的进度。它并不是在每一页都出现 ⚫ 教程──教师将为你提供有关模块的特有信息,这些信息将有助于你掌握做练习所需要的知识和技能 ⚫ 练习──练习将为你提供测试你的技能和应用所学概念的机会。本教程中所提供的例题代码亦有助于你完成练习。 ⚫ 检查你的进度──在这一部分,模块的目标被重新提及,有时是以问题形式出现。这样,在你进入下一模块之前, 就可以检查你是否已完成了目前这一模块所要求达到的目标。 ⚫ 思考题──具有挑战性的问题有助于你应用所学模块内容或预测待学模块的内容。 十一、图表和印刷体例说明 下列图表及印刷体例代表着不同的含义: 辅助资源──表示可获取辅助参考资料。 讨论──表示此时建议以小组或班级形式进行讨论。 练习目标──表示练习的目标,这个练习适合于正在讨论的内容。 注意──附加重要信息、强调信息、有趣或特殊信息 警告──对数据或机器的潜在损坏 印刷体例 字体 Courier 系用来表示命令名称、文件名及目录名,同时也表示计算机屏幕输出。例如: Use ls –al to all files. System% You have mail 黑体 courier bold 系用来表示你打印的字符和数字。 例如: system% su Password: 斜体 courier italic 系用来表示变量和命令行,它可以被实际名称或值所代替。 例如: To delete a file, type rm filename. 斜体 Palatino 系用来表示书名、新词或术语或需强调的词。 例如: Read Chapter 6 in User’s Guide. These are called class options You must be root to do this
第一章起步 本模块对Java编程语言做了一般性描述,包括Java虚拟机、垃圾收集和安全性等, Exception Handling Developing Graphical user Interfaces Huairou mathers casemate,maGenta SwnDNtavoings 第一节相关问题 讨论—一下列问题与本模块相关 Java编程语言是一种完整的语言吗?它是不是仅用于编写web程序 -你为什么需要另一种编程语言 Java平台是如何在其它语言平台上提高性能的? 第二节目标 完成本模块的学习后,你应该能够 描述Java编程语言的主要特性 描述Java虚拟机的主要功能 描述垃圾收集是如何进行的 列举由处理代码安全性的Java平台所执行的三大任务 定义 Class 和 application 编写、编译并运行简单Java应用程序 利用Java技术应用程序编程界面(AP)的在线文档来标识 Java. lang包的方法。 参考资料 辅助资源—一下列参考资料可为本模块所讨论的问题提供更详细的补充 Lindholm and Yellin. 1997. The Java Virtual Machine Specification. Addison-Wesley Yellin, Frank. Low-Level Security in Java, white paper. [Online]. Available 第三节什么是Java编程语言?
7 第一章 起 步 本模块对 Java 编程语言做了一般性描述,包括 Java 虚拟机、垃圾收集和安全性等。 第一节 相关问题 讨论──下列问题与本模块相关 - Java 编程语言是一种完整的语言吗?它是不是仅用于编写 Web 程序 ? - 你为什么需要另一种编程语言 ? - Java 平台是如何在其它语言平台上提高性能的 ? 第二节 目 标 完成本模块的学习后,你应该能够: - 描述 Java 编程语言的主要特性 - 描述 Java 虚拟机的主要功能 - 描述垃圾收集是如何进行的 - 列举由处理代码安全性的 Java 平台所执行的三大任务 - 定义 Class,Package,Applets 和 Applications - 编写、编译并运行简单 Java 应用程序 - 利用 Java 技术应用程序编程界面(API)的在线文档来标识 Java. lang 包的方法。 参考资料 辅助资源──下列参考资料可为本模块所讨论的问题提供更详细的补充 - Lindholm and Yellin. 1997. The Java Virtual Machine Specification. Addison-Wesley. - Yellin, Frank. Low-Level Security in Java, white paper. [Online]. Available: http://www.javasoft.com/sfaq/verifier.html. 第三节 什么是 Java 编程语言 ?
什么是Java编程语言 Java是 种编程语言 种开发环境 种应用环境 ·种部署环境 句法与C++相似,语义与 Small Talk相似 Java是 种编程语言 种开发环境 应用环境 -一种部署环境 Java编程语言的句法与C++的句法相似,语义则与 Small Talk M的语义相似。Java编程语言可被用来创建任何常规 编程语言所能创建的应用程序。 在 World wide Web(www)和能够运行称为 applets程序的浏览器的有关介绍中,人们经常提及Java编程语言。 Applets是一种贮存于www服务器的用Java编程语言编写的程序,它通常由浏览器下载到客户系统中,并通过浏览器运 行。 Applets通常较小,以减少下载时间,它由超文本标识语言(HIML)的web页来调用 Java applications是一种独立的程序,它不需要任何Web浏览器来执行。它们是一种典型的通用程序:可运行于任 何具备Java运行环境的设备中。 1.3.1Java编程语言的主要目标 Java编程语言的主要目标 提供一种解释环境为 提高开发速度 代码可移植性 使用户能运行不止一个活动线程 当程序运行时,能动态支持程序改变 提供更好的安全性 设计Java编程语言的主要目标是 提供一种易于编程的语言,从而 消除其它语言在诸如指针运算和存储器管理方面影响健壮性的缺陷。 利用面向对象的概念使程序真正地成为可视化程序 ˇ为使代码尽可能清晰合理、简明流畅提供了一种方法 Java编程语言的主要目标 设计Java编程语言的主要目标是 提供一种易于编程的语言 消除其它语言在诸如指针运算和存储器管理方面影响健壮性的缺陷 利用面向对象的概念使程序真正地成为可视化程序 Java编程语言的主要目标(续) 为获得如下两点益处提供一种解释环境 提高开发速度——一消除编译一链接一装载一测试周期。 ˇ代码可移植性——使操作系统能为运行环境做系统级调用 为运行不止一个活动线程的程序提供了一种方式
8 什么是 Java 编程语言 Java 是: - 一种编程语言 - 一种开发环境 - 一种应用环境 - 一种部署环境 - 句法与 C++相似,语义与 Small Talk 相似 - 用来开发 applets,又用来开发 applications Java 是: - 一种编程语言 - 一种开发环境 - 一种应用环境 - 一种部署环境 Java 编程语言的句法与 C++的句法相似,语义则与 Small Talk TM的语义相似。Java 编程语言可被用来创建任何常规 编程语言所能创建的应用程序。 在 World Wide Web(WWW)和能够运行称为 applets 程序的浏览器的有关介绍中,人们经常提及 Java 编程语言。 Applets 是一种贮存于 WWW 服务器的用 Java 编程语言编写的程序,它通常由浏览器下载到客户系统中,并通过浏览器运 行。Applets 通常较小,以减少下载时间,它由超文本标识语言(HTML)的 Web 页来调用。 Java applications 是一种独立的程序,它不需要任何 Web 浏览器来执行。它们是一种典型的通用程序;可运行于任 何具备 Java 运行环境的设备中。 1.3.1 Java 编程语言的主要目标 Java 编程语言的主要目标 提供一种解释环境为 - 提高开发速度 - 代码可移植性 - 使用户能运行不止一个活动线程 - 当程序运行时,能动态支持程序改变 提供更好的安全性 设计 Java 编程语言的主要目标是 提供一种易于编程的语言,从而 消除其它语言在诸如指针运算和存储器管理方面影响健壮性的缺陷。 利用面向对象的概念使程序真正地成为可视化程序 为使代码尽可能清晰合理、简明流畅提供了一种方法 Java 编程语言的主要目标 设计 Java 编程语言的主要目标是 提供一种易于编程的语言 - 消除其它语言在诸如指针运算和存储器管理方面影响健壮性的缺陷。 - 利用面向对象的概念使程序真正地成为可视化程序 - 为使代码尽可能清晰合理、简明流畅提供了一种方法 Java 编程语言的主要目标(续) - 为获得如下两点益处提供一种解释环境 提高开发速度──消除编译─链接—装载—测试周期。 代码可移植性──使操作系统能为运行环境做系统级调用 - 为运行不止一个活动线程的程序提供了一种方式
通过允许下载代码模块,从而当程序运行时也能动态支持程序改变。 为那些保证安全性而装载的代码模块提供了一种检查方法 Java编程语言的主要目标 下列特性使这些目标付诸实现: Java虚拟机(JVM) 垃圾收集 代码安全性 Java编程语言的主要目标(续 精心开发的Java技术体系结构为上述目标的实现提供了保证。Java的如下特性使这些目标得以实现 -Java虚拟机 垃圾收集 代码安全性 1.3.2Java虛拟机 Java虚拟机 提供硬件平台规范 解读独立于平台的已编译的字节码 可当作软件或硬件来实现 可在Java技术开发工具或Web浏览器上实现 Java虚拟机规范为Java虚拟机(JVM)作了如下定义: 在真实机器中用软件模拟实现的一种想象机器。Java虚拟机代码被存储在 class文件中;每个文件都包含最多一个 public类 Java虚拟机规范为不同的硬件平台提供了一种编译Jawa技术代码的规范,该规范使Java软件独立于平台,因为编译 是针对作为虚拟机的“一般机器”而做,这个“一般机器”可用软件模拟并运行于各种现存的计算机系统,也可用硬件 来实现。 Java虚拟机 JVM为下列各项做出了定义 指令集(中央处理器[CPU]) 注册集 类文件格式 -垃圾收集堆 存储区 Java虚拟机(续) 编译器在获取Java应用程序的源代码后,将其生成字节码,它是为JM生成的一种机器码指令。每个Jαva解释器, 不管它是Java技术开发工具,还是可运行 applets的web浏览器,都可执行JVM JVM为下列各项做出了定义 指令集(相当于中央处理器[CPU]) 注册集 类文件格式 -垃圾收集堆 存储区
9 - 通过允许下载代码模块,从而当程序运行时也能动态支持程序改变。 - 为那些保证安全性而装载的代码模块提供了一种检查方法。 Java 编程语言的主要目标 下列特性使这些目标付诸实现: - Java 虚拟机(JVM) - 垃圾收集 - 代码安全性 Java 编程语言的主要目标(续) 精心开发的 Java 技术体系结构为上述目标的实现提供了保证。Java 的如下特性使这些目标得以实现 - Java 虚拟机 - 垃圾收集 - 代码安全性 1.3.2 Java 虚拟机 Java 虚拟机 - 提供硬件平台规范 - 解读独立于平台的已编译的字节码 - 可当作软件或硬件来实现 - 可在 Java 技术开发工具或 Web 浏览器上实现 Java 虚拟机规范为 Java 虚拟机(JVM)作了如下定义: 在真实机器中用软件模拟实现的一种想象机器。Java 虚拟机代码被存储在 .class 文件中;每个文件都包含最多一个 public 类。 Java 虚拟机规范为不同的硬件平台提供了一种编译 Java 技术代码的规范,该规范使 Java 软件独立于平台,因为编译 是针对作为虚拟机的“一般机器”而做,这个“一般机器”可用软件模拟并运行于各种现存的计算机系统,也可用硬件 来实现。 Java 虚拟机 JVM 为下列各项做出了定义 - 指令集(中央处理器[CPU] ) - 注册集 - 类文件格式 - 栈 - 垃圾收集堆 - 存储区 Java 虚拟机(续) 编译器在获取 Java 应用程序的源代码后,将其生成字节码,它是为 JVM 生成的一种机器码指令。每个 Java 解释器, 不管它是 Java 技术开发工具,还是可运行 applets 的 Web 浏览器,都可执行 JVM。 JVM 为下列各项做出了定义 - 指令集(相当于中央处理器[CPU] ) - 注册集 - 类文件格式 - 栈 - 垃圾收集堆 - 存储区
Java虚拟机 由保持适当类型约束的字节码形成代码 大部分类型检查在编译代码时完成 由SUNM批准的JVM必须能够运行任何从属类文件 Java虚拟机(续) JVM的代码格式由紧缩有效的字节码构成。由JM字节码编写的程序必须保持适当的类型约束。大部分类型检查 是在编译时完成。 任何从属的Java技术解释器必须能够运行任何含有类文件的程序,这些类文件应符合Java虚拟机规范中所指定的类 文件格式。 1.3.3垃圾收集 圾收集 不再需要的分配存储器应取消分配 在其它语言中,取消分配是程序员的责任 Java编程语言提供了一种系统级线程以跟踪存储区分配 垃圾收集 可检查和释放不再需要的存储器 可自动完成上述工作 可在JVM实现周期中,产生意想不到的变化 许多编程语言都允许在程序运行时动态分配存储器,分配存储器的过程由于语言句法不同而有所变化,但总是要将 指针返回到存储区的起始位置 当分配存储器不再需要时(存储器指针己溢出范围),程序或运行环境应取消分配存储器 在C,C++或其它语言中,程序员负责取消分配存储器。有时,这是一件很困难的事情。因为你并不总是事先知道 存储器应在何时被释放。当在系统中没有能够被分配的存储器时,可导致程序瘫痪,这种程序被称作具有存储器漏洞。 Java编程语言解除了程序员取消分配存储器的责任,它可提供一种系统级线程以跟踪每一存储器的分配情况。在Java 虚拟机的空闲周期,垃圾收集线程检查并释放那些可被释放的存储器 垃圾收集在Java技术程序的生命周期中自动进行,它解除了取消分配存储器的要求,并避免了存储器漏洞。然而, 垃圾收集可在JⅥM实现的周期中,产生意想不到的变化。 13.4代码的安全性 概述 下图显示了Java技术的运行环境及其加强代码安全性的方法。 Runtime Class loader Byte code )avac Hello.]ava Network verifier Hella class Interpret JIT code Runtime generator/ Hardw
10 Java 虚拟机 - 由保持适当类型约束的字节码形成代码 - 大部分类型检查在编译代码时完成 - 每个由 SUN TM批准的 JVM 必须能够运行任何从属类文件 Java 虚拟机(续) JVM 的代码格式由紧缩有效的字节码构成。由 JVM 字节码编写的程序必须保持适当的类型约束。大部分类型检查 是在编译时完成。 任何从属的 Java 技术解释器必须能够运行任何含有类文件的程序,这些类文件应符合 Java 虚拟机规范中所指定的类 文件格式。 1.3.3 垃圾收集 许多编程语言都允许在程序运行时动态分配存储器,分配存储器的过程由于语言句法不同而有所变化,但总是要将 指针返回到存储区的起始位置 当分配存储器不再需要时(存储器指针已溢出范围),程序或运行环境应取消分配存储器。 在 C,C++ 或其它语言中,程序员负责取消分配存储器。有时,这是一件很困难的事情。因为你并不总是事先知道 存储器应在何时被释放。当在系统中没有能够被分配的存储器时,可导致程序瘫痪,这种程序被称作具有存储器漏洞。 Java 编程语言解除了程序员取消分配存储器的责任,它可提供一种系统级线程以跟踪每一存储器的分配情况。在 Java 虚拟机的空闲周期,垃圾收集线程检查并释放那些可被释放的存储器。 垃圾收集在 Java 技术程序的生命周期中自动进行,它解除了取消分配存储器的要求,并避免了存储器漏洞。然而, 垃圾收集可在 JVM 实现的周期中,产生意想不到的变化。 1.3.4 代码的安全性 概述 下图显示了 Java 技术的运行环境及其加强代码安全性的方法。 垃圾收集 - 不再需要的分配存储器应取消分配 - 在其它语言中,取消分配是程序员的责任 - Java 编程语言提供了一种系统级线程以跟踪存储区分配 - 垃圾收集 - 可检查和释放不再需要的存储器 - 可自动完成上述工作 - 可在 JVM 实现周期中,产生意想不到的变化