Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Java技术与应用 -走进Java世界 西安交大 卫颜俊 2008年11月 电子信箱:[email protected] QQ: 610568018 网站: 202.117.58.97/java 1 / 39 对Java的评价 美国的著名杂志PC Magzine将Java评为1995年十大优秀科技产品。 WWW的创始人Bcrners-lee说:“计算机事业发展的下一个浪潮就是 Java,并且很快会发生”。 工业界指出 “Java是二十世纪际八十年代以来计算机界的一件大事 " 。 Microsoft CEO Bill Gates语录:“Java语言是长时间以来最卓越的程 序设计语言”。 工业界预言: “ Java将是网络上的世界语,Java语言的出现将会引起一场 软件革命” 。 权威专家说: “Java甚至会改变此星球的生活方式 ”。 本人预测: “其它计算机语言不久将会纷纷让位于Java” 。 2 / 36 对Java的评价 美国国家标准科学研究所 IBM公司 斯坦福大学 麻省理工大学 英国爱丁堡大学 日本国家高级工业科学与技术研究所等诸多国际 权威机构和几十篇权威证据 纷纷证明: Java比C++开发效率更快和运行性能更好。 3 / 36 本讲主要内容 Java发展简史 Java核心机制 Java语言的特点 JDK常用Java命令和Notepad工具的使用 方法 Java标识符 Java程序演示 4 / 38 Java语言的发展简史 全世界存在3000多种计算机程序设 计语言。 目前流行的如下: 汇编、C/C++言、Java、Fortran、 Pascal、PHP和HTML。 5 / 38 1991年,美国Sun公司“绿色项目”,目的是开拓掌上电脑、交互 式电视和烤面包箱等消费品电子技术市场。由于C/C++语言无法适 应高可靠、低费用、标准化和操作简单等消费类电子产品的特殊要 求,同年6月开始准备开发一种新型语言,后改名为Java。 1994年,Sun公司推出HotJava浏览器专门支持Java Applet小程序的 运行。 1996年初Sun公司正式发布Java 1.0版,Java的第一个开发工具包 JDK1.0也随即发布,标志着一种新的计算机语言-Java从此诞生。 1998年12月8日,Java第二版发布。 1999年6月,Sun公司相继发布了Java的三个版本: 标准版(J2SE)、企业版(J2EE)和微型版(J2ME) 。 目前Sun公司又推出JDK6 。 6 / 38 *7产品是基于新型SPARC体系结构的手持无线PDA, 它能够控 制广泛的娱乐平台和家用电器。 包含以下几部分: 一个 5“ 彩色 LCD(触摸屏) 新型的16位 --5:6:5 彩色硬件双缓冲NTSC 制式的帧缓冲 器 900MHz 无线网 PCMCIA 总线接口 多媒体和电池电源支持 内含<1MB的Unix 一种新型的小编程语言 TV远程控制器 …... 7 / 38 J2SE 为基本的Java 2 SDK,并提供工具、运行机制 和供开发者编写、交付和使用Applet和 Application的API。 Java 2 SDK, Standard Edition, v 1.6.0 Java 2 Runtime Environment, Standard Edition, v 1.6.0 Java Plug-in JavaBeans Development Kit (BDK) Java HotSpot Server Virtual Machine 8 / 38 APIs Collections Framework Java Foundation Classes (JFC) Swing Components Pluggable Look & Feel Accessibility Drag and Drop Security Java IDL JDBC JavaBeans Remote Method Invocation (RMI) Java 2D 9 / 38 J2EE 在一个体系中组合了许多技术,提供广泛的应用编程模型和兼容性 测试套件,以便建立企业级的服务器端应用。 Enterprise JavaBeans体系 JavaServer Pages Java Servlet Java Naming and Directory Interface (JNDI) Java IDL JDBC Java Message Service (JMS) Java Transaction (JTA) Java Transaction Service (JTS) JavaMail RMI-IIOP 10 / 38 J2ME 高度优化的Java运行环境,面向广泛的消费产品,包括传呼机、蜂 窝电话、视频电话、数字机顶盒和汽车导航系统。 Java 2 Platform, Micro Edition (J2ME technology) Connected Limited Device Configuration (CLDC) K Virtual Machine (KVM) PersonalJava Application Environment PersonalJava Technology, Source Edition EmbeddedJava Application Environment EmbeddedJava Technology, Source Edition Java Card JavaPhone API Java TV API Jini Connection Technology Mobile Information Device Profile (MIDP 11 / 38 几种平台图示 12 / 38 Java核心机制 Java程序的运行必须经过编写、编译和解释 运行三个步骤: 13 / 38 Java核心机制 编写是指在某种Java开发环境中进行程序代码 输入,最终保存为“.java”后缀形式的源代码文 件。 编译是指使用Java编译器对源代码文件进行语 法错误排查,生成“.class” 后缀形式的二进制 字节码格式文件。 解释运行是指使用Java解释器将字节码翻译成 硬件机器代码,并交由CPU执行并显示结果。 14 / 38 Java核心机制中的几个概念 字节码(ByteCode) 是一种和任何具体机器及操作系统体系结构都无关的 中间代码,以二进制格式的指令形式出现。 虚拟机(JVM) Java系统中专门设计了一个中间机制,即虚拟机, 字节码必须首先经过虚拟机上的运行时环境(JRE )使用及时编译(JIT)或Hotspot机制解释成硬 件机器的指令并交由CPU执行,虚拟机起到了一 种字节码解释器的作用,同时具有字节码装载和安 全校验的功能。 15 / 38 Java核心机制 虚拟机机制 Java虚拟机是一个假想机,在实际的计算机 上通过软件模拟实现的虚拟计算机。Java 虚拟机有自己想象中的硬件,包括处理器、 堆栈、寄存器,以及相应的指令系统。 虚拟机的内部结构由类装载器子系统、执行 引擎和运行时数据区等三部分组成。 16 / 38 虚拟机的内部结构 (1) 类装载器。用于装载字节码文件,包括启 动类装载器和用户自定义类装载器两种。 其中,启动类装载器是虚拟机实现的一部 分,用户自定义类装载器则是Java程序的 一部分。 (2) 执行引擎。包括执行字节码和执行本地方 法两个方面。 (3) 运行时数据区。包括指令集、方法区、堆、 栈、PC寄存器和本地方法栈等部分。 17 / 38 Java核心机制 垃圾回收机制 垃圾回收机制是虚拟机中的主要机制之一,目 的是释放那些不再使用的对象所占用的内存, 并将这些对象清除。它首先判断对象是否被 活动对象引用,以确定是否应该回收该对象, 然后使用引用计数和对象引用遍历等两种方 法来进行回收。 垃圾回收机制包括标记清除收集器、标记压缩 收集器、复制收集器、增量收集器、叠代收 集器、并发收集器和并行收集器等。 18 / 38 Java核心机制 安全模型 安全模型是Java应用于网络环境的关键技术。为了 防止用户系统受到网络不安全程序的破坏,Java 提供了沙箱机制,可以在沙箱内安全运行Java程 序,来自于Internet上的Applet,其行为仅限制 于“沙箱”之内,不允许读写沙箱之外的任何数据, 并禁止对硬盘进行直接读写、和别的主机(不包括 程序所在的主机)进行网络连接、创建新进程和载 入新的动态库并直接调用本地方法等一些不安全行 为。 19 / 38 “沙箱”安全模型组成部分 (1) 内建于Java虚拟机和语言的安全特性。 (2) 类的载入结构。 (3) 类文件校验器。 (4) 安全管理器和Java应用程序设计接口 (API)。 20 / 38 Java、Java程序与平台 Java程序 Java 平 API JVM 台 硬件平台(CPU) 21 / 38 Java的特点 Java是什么? Java的特点是什么? Java语言白皮书这样回答: A simple,object-oriented, distributed, interpreted, robust, secure, architectureneutral, portable, high-performance, multi-threaded, dynamic language. 简单、面向对象、分布式、解释执行、鲁棒、安全、体系结构 中立、可移植、高性能、多线程以及动态性。 22 / 38 Java Application的特点 Application是一种典型的客户/服务器( C/S)计算模式的Java程序,它与C/C++ 语言编写的带有主函数(main)的程序类 似,可以具有任意规模大小,本机上的任 何系统文件、数据库和网络等资源都可以 不受限制地使用。它完全采用面向对象程 序设计方法,能够充分发挥Java语言的诸 多优点,既可以是控制台(DOS)式的字 符界面风格,又可以是图形用户界面( GUI)式的风格。 23 / 38 Java Application的程序结构 【例1-1】编写一个程序,在屏幕上显示一段文 字:“欢迎学习Java!”。 1 2 3 4 5 6 7 : package 第一章; : : public class 我的第一个类 { : public static void main(String[] args) { : System.out.println("欢迎学习Java!"); : } :} 24 / 38 Java Applet的特点 普通WWW浏览器只具有下载、解析和运行 网页、图片、声音和Flash动画等功能,而 Java Applet程序不仅如此,还可以完成客 户程序与远程服务器程序之间的动态交互 ,身在异地就可以完成远程交易、网络电 子银行和网上办公等功能。 Applet以程序身份通过特殊标记嵌入在网页 ,浏览器通过访问该网页,首先下载网页 ,然后下载Applet字节码程序文件到本地 ,并交由本地的Java虚拟机解释运行,虚 拟机将运行结果定向到浏览器界面。 25 / 38 Java Applet的特点 26 / 38 Java Applet的程序结构 1 : //HelloWorldApplet.java 2 : import java.awt.*; 3 : import java.applet.*; 4 : public class HelloWorldApplet extends Applet { 5 : public void paint(Graphics g){ 6: g.drawString("Hello World!",50,50); 7: } 8:} 9: 10: <!-- HelloWorldApplet.html--> 11: <HTML> 12: <BODY> 13: <APPLET CODE="HelloWorldApplet.class" WIDTH=100 HEIGHT=100> 14: </APPLET> 15: </BODY> 16: </HTML> 27 / 38 JSP的特点 JSP技术主要是为企业建立浏览器/服务器 (B/S)计算模式的应用系统而推出的一种 动态网页技术(Java Server Pages), 它 在 网 页 ( HTML ) 和 超 文 本 传 输 协 议 (HTTP)的语法基础上,融合了许多Java 技术、特别是网络技术,给快速建立动态 网站提供了强有力的手段。它将Java的片 断代码嵌入在网页中,形成动态网页文件, 当浏览器访问时,WWW服务器中的Java 虚拟机和运行系统将本动态网页创建成 Java源代码程序,然后编译并运行起来, 最后将结果返回给浏览器。 28 / 38 JSP的程序结构 1 : <%--helloworldjsp.jsp --%> 2 : <%@page contentType="text/html; charset=GBK" %> 3 : <html> 4 : <body> 5: <%="Hello world!"%> 6 : </body> 7 : </html> 29 / 38 Java与C++等的比较 学过C++的不用从头学习Java。 对同一个项目进行开发,据估计用Java语言比用C++语 言可节省1/2到2/5的时间。 Java与C、C++风格相同。 全局变量、Goto、指针、数据类型的支持、类型转换、 头文件、结构和联合、预处理 Java 摒 弃 了 C 、 C++ 中 的 存 储 管 理 及 与 其 相 关 联 的 Pointer操作,代之以GC(自动存储管理系统)。 Java与HTML有区别,Java与CGI、ActiveX、JavaScript、 PHP、Perl、Python、JPython亦有区别。 Java 的 兼 容 性 、 安 全 性 和 客 户 机 零 配 置 方 面 也 较 ActiveX强。 30 / 38 JDK程序结构 package house;//目录 class Computer{…}//文件 import house.*; 或import house. Computer; class Desk{…} 31 / 38 JDK常用命令(1) 1. javac命令: 功能:将Java源程序文件(.java)编译成字节码文件 (.class) 用法:javac <选项> <源文件> 2. java命令: 功能:装载字节码文件(.class)并运行其对应的类 用法:java <选项> <类> [参数值...] 或 java<选项> -jar <打包文件> [参数值...] 3. appletviewer命令: 功能:Applet程序运行察看工具 用法:appletviewer <选项> <网址或网页> 32 / 38 JDK常用命令(2) 4. javadoc命令: 功能:摘取/** */注释行,生成网页格式的Java类说明 文档 用法:用法:javadoc [选项] [软件包名称] [源文件] [@file] 5. jdb命令: 功能:调试Java类 用法:jdb <选项> <类> <参数> 33 / 38 JDK常用系统包 34 / 38 Java标识符语法规定 任何计算机语言程序都需要定义标识符,Java语 言也不例外,标识符(identifier)是指对程序 中的各个元素加以命名时使用的命名记号。在 Java语言中,标识符是以字母、下划线(_)、 美元符($)或汉字开始的字符序列,后面可以跟 多个字母、下划线、美元符、数字或汉字。 Java语言的标识符区分大小写,而且不能包含 不可见的空格(Tab、Space、换行或回车),尽 量避免以_、$开头,以免与本地方法的一些C 库名混淆。另外,Java 标识符不能是Java系统 的保留字。 35 / 38 Java标识符语义约定 文件名:与所包含的类名一致,源程序文件扩展名为“.java”, 字节码文件扩展名为“.class”,例如:Hello.java、 Hello.class 包名:名词,无特殊要求,例如:myhome, chapter1.section1 类名:名词,每个词首字母大写,例如:Dog、 GraduatedStudent 方法名:动词,从第二个词开始首字母大写,其中构造方法与 类名相同,例如:getColor、setSalary、run 变量名:名词或形容词,与方法名相同,例如:color, totalScore 常量名:名词或形容词,每个字母均大写,可以使用_或$符号 分隔每个单词,例如:MAX_INTEGER、AVERAGE_AGE 36 / 38 Java保留字 abstract default if private this boolean do implements protected throw break double import public throws byte else instanceof return transient case extends int short try catch final interface static void char finally long strictfp volatile class float native super while const for new switch true continue goto package synchronized false、null 37 / 38 举例 【例1-2】编写程序计算正整数n的阶乘值n!,其 中n!=1×2×…×n。 38 / 38 举例 【例1-6】计算大数n的阶乘值。 39 / 38