计算机学院计算机科学与技术系 中德联合软件技术研究所 李波 libo@buaa.edu.cn Java 语言程序设计 计算机学院计算机科学与技术系 中德联合软件技术研究所 李波 libo@buaa.edu.cn
课程简介 Java语言程序设计 Java 语言程序设计是继C 语言,高级语言程序设计1,2 后开设的一门语言类选修课,面向6系大班二三年纪学生,主要讲授Java 基本语法,编程,Java IO,Java 异常处理,Java AWT等内容。
第一讲 Java 语言的介绍 主要内容 Java 的发展历史 Java 的主要特点 Java 虚拟机的简介 Java 语言开发环境
Java 语言发展的历史 Java是一种解释型的、面向对象的编程语言。 1991年,SUN MicroSystem公司的Jame Gosling、Bill Joe等人为在电视、控制烤箱等家用消费类电子产品上进行交互式操作而开发了一个名为Oak的软件。 1992.8,Oak与GreenOs、用户接口模块、硬件模块集成为Star Seven,成功表现高效的小程序代码技术,Green升级为First Person子公司 1994年,First Person 解体,Sun决定将Oak与3W相结合; 1995年,Oak —> Java:互联网给Java带来新的生机 1995年,Sun向公众推出Java并引起业界的轰动 发展:面向网络应用,类库不断丰富,性能不断提高,应用领域不断拓展。(1995年以来) 应用:Java是当今最流行的软件开发语言之一,Sun推出了 Java2 & J2EE使Java具有更广泛的用途,适用于各种应用开发,尤其是网络应用,网络服务,嵌入式系统等。
Java 的发展流行与网络的关系 Internet的发展,为Java 的发展创造了良好的条件
Java 语言的特点1 面向对象性 面向对象的哲学视角 Java 是比较纯粹的面向对象程序设计语言 软件工程对程序设计的需要 降低软件的维护成本 Java 是比较纯粹的面向对象程序设计语言 曾经存在争论 其面向对象性的意义超出了预计
Java 面向对象的比较 比较C#、C++和Java最重要的功能 功能 C# C++ Java 继承 允许继承单个类,允许实现多个接口 允许从多个类继承 接口实现 通过“interface”关键词 通过抽象类 内存管理 由运行时环境管理,使用垃圾收集器 需要手工管理 指针 支持,但只在很少使用的非安全模式下才支持。通常以引用取代指针 支持,一种很常用的功能。 完全不支持。代之以引用。 源代码编译后的形式 .NET中间语言(IL) 可执行代码 字节码 单一的公共基类 是 否 异常处理 返回错误
Java 语言的特点2 平台无关性 Java解释器生成与体系结构无关的字节码指令,只要安装了JRE(Java Runtime Environment),Java程序就可在任意的处理器上运行。这些字节码指令对应于Java虚拟机中(JVM) 的表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台运行。
Java 解释执行的基本过程 调入包含、继承所用到的所有类, 内存分配确定,变成真正可执行的机器码 不存在伪造的指针 不违反访问权限 编译,没有绝对地址 调入包含、继承所用到的所有类, 内存分配确定,变成真正可执行的机器码 Java源程序 (.java文件) Java编译器 Java Bytecode (.class文件) 系统执行平台 Bytecode 解释器 Bytecode 载入器 字节码校验器 不存在伪造的指针 不违反访问权限 不非法访问对象 不导致操作栈溢出
Java 语言的特点3 网络安全性 沙箱结构限制恶意代码 语言从结构上抑止影响系统安全的编程Bug 抑止信息失窃
Java 语言的安全机制 Bytecode检查 限定对象的 存取权限 系统堆栈溢出 参数类型一致 语言定义 public protected private final 取消指针 自动回收 垃圾 Java源程序 (.java文件) Java编译器 Java Bytecode (.class文件) Bytecode 载入器 Bytecode 解释器 系统执行平台 程序执行系统 WWW浏览器 限制Java小应用程序 的不正当使用
Java 语言特点4 语言内置的多线程架构 单线程程序一个时刻只能做一件事情,多线程程序允许在同一时刻同时做多件事情。 其它大多数高级语言,包括C,C++等,都不支持多线程,只能编写顺序执行的程序(除非有操作系统API的支持)。 Java提供现成的类Thread,只要继承这个类就可以编写多线程的程序。 多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作。 通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。
Java 语言的其他特点 移植性 Just-in-time compiler 健壮性 Java标准与特定平台 保持跨平台性前提下,追求性能 有选择的编译执行 健壮性 强类型检查
Java 虚拟机特点 自动垃圾收集器 Hotspot 定向优化技术 Just-in-time Compiler
安装Java 运行环境 安装JDK 直接运行“j2sdk-1_x_x-win.exe”,按照安装向导进行安装。 解开“j2sdk-1_x_x-doc.zip”,得到JDK的开发文档。
Java 开发环境 安装JDK后产生如下目录结构: \bin目录:Java开发工具,包括Java编译器、解释器等 \demo目录:一些实例程序 \lib目录:Java开发类库 \jre目录: Java运行环境,包括Java虚拟机、运行类库等 …
Java 开发环境工具 Java开发工具包括: Javac:Java编译器,用来将java程序编译成 Bytecode。 Jdb:Java调试器, 用来调试java程序。 Javap:反编译,将字节码还原成源文件。 Javadoc:文档生成器,创建HTML文件。 Appletviwer:Applet解释器, 用来解释已经转换成 Bytecode的java小应用程序。
Java 开发环境 设置环境变量: Windows 98: autoexec.bat PATH = c:\…\jdk1.x.x\bin; CLASSPATH = . ;c:\java\examples\applications; Windows 98: autoexec.bat Windows NT/2000/XP:控制面板系统高级环境变量
Java 开发环境 Java程序由各种类(class)组成 几点提示 你自己编写的类 (Java class libraries——Java API) JDK——Java Development Kit(1.1~1.4) 独立软件供应商、免费软件/共享软件 几点提示 使用类库可以 提高软件重用/提高效率/提高移植性 网络上有许多开放的Java源码资源
Java程序 Java程序有很多类型: 一般应用程序 Java Applet Java Serverlet ……
Java 程序结构 Java程序结构: 类个数:至少一个类,最多只能有一个public类 package语句:零个或多个,必须放在文件开始 import语句:零个或多个,必须放在所有类定义之前 public ClassDefinition:零个或一个 ClassDefinition:零个或多个 InterfaceDefinition:零个或多个 类个数:至少一个类,最多只能有一个public类 源文件命名:若有public类,源文件必须按该类命名 标识符:区分大小写
Java 应用程序结构 类库支持:引用其他类。 类定义:定义程序所需的类及接口,包括其内部的变量、方法等。 main()方法:应用程序的入口,与标准C中main()函数的地位是一样的。一个应用程序有且只有一个main()方法,main()方法必须包含在一个类中,该类即为应用程序的外部标志。 程序注释:与C++类似,/*…*/ //…
Java Applet 结构 类库支持:继承Applet类,引用其他类。 类定义:定义程序所需的类及接口,包括其内部的变量、方法等。 init()方法:初始化,自动调用,只执行一次。 start()方法:初始化后,重入等都将自动调用。Applet的主体,在其中可以执行一些任务或启动相关的线程来执行任务,如paint()方法等。 paint()方法:显示、重画Applet窗口时调用。 stop()方法:离开Applet所在页面时调用,以停止消耗系统资源。
Java 程序一般规范 包、类、变量、方法等命名:要体现各自的含义。 包名全部小写,io,awt 类名第一个字母要大写,HelloWorldApp 变量名第一个字母要小写,userName 方法名第一个字母要小写,setName 程序书写格式:保证良好的可读性,使程序一目了然。 大括号{}的使用与对齐,语句段的对齐 在语句段之间适当空行 程序注释:帮助了解程序的功能。 类注释 变量注释 方法注释 语句注释 语句段注释 建议:一个类一个.java文件
Java 的最普遍应用 JSP 网页开发 J2EE 企业信息系统 Web Service 应用 SOA 环境下的Java语言 轻量级网络开发 企业级开发 架构师 Web Service 应用 SOA 环境下的Java语言
框架开发技术与Java 标准化开发 框架意味着标准,方便维护 相对于繁琐的软件工程,要简单一些 大型系统普遍应用,XML 引入 Java 不标准化,就不是Java
参考资料 Java程序设计教程 Think in Java,Java编程思想 Inside Java Virtual Machine http://java.sun.com
联系我 Email: libo@buaa.edu.cn 电话:82328261 办公室:新主楼G817