730 likes | 944 Views
Java 语言与 WWW 技术. 主讲教师:陈小冬 联系电话:88078549-8 219 E-mail: cxd@zjtvu.edu.cn. 第1讲 Java 入门. 课程目标 什么是 Java? 开始 Java 程序设计 Java 数据类型与运算符 Java 控制语句. (一)课 程 目 标. 在本课程中你将学到的内容 Java applications and applets 基本数据类型( Primitive data types) 流程控制( Java control flow) 方法( Methods)
E N D
Java语言与WWW技术 主讲教师:陈小冬 联系电话:88078549-8219 E-mail: cxd@zjtvu.edu.cn
第1讲 Java入门 • 课程目标 • 什么是Java? • 开始 Java 程序设计 • Java数据类型与运算符 • Java控制语句
(一)课 程 目 标 • 在本课程中你将学到的内容 • Java applications and applets • 基本数据类型(Primitive data types) • 流程控制(Java control flow) • 方法(Methods) • 面向对象程序设计(Object-oriented programming) • Core Java classes (Swing, exception, internationalization, multithreading, multimedia, I/O, networking)
你将学会 • 编写 applications and applets • 开发图形界面应用程序 • 编写简单的项目(多媒体、网络) • 理解Java编程思想
(二)什么是Java? • Java历史 • Java特点 • Java开发工具
Java历史 • James Gosling “Green”项目 • Oak语言——网络程序语言 • 与Oak相配合的浏览器——WebRunner,后更名为HotJava • Java, May 20, 1995, Sun World
Java特点 简单 simple 面向对象的object-oriented 分布式 distributed 解释型 interpreted 健壮 robust 安全 secure 结构中立 architecture-neutral 可移植的portable 高效 high-performance 多线程multithreaded 动态的 dynamic
简单 simple(KISS ) C++ like ;no point ;auto memory arrangement Java的风格类似于C++,因而C++程序员是非常熟悉的。从某种意义上讲,Java语言是C及C++语言的一个变种,因此,C++程序员可以很快就掌握Java编程技术。 Java摒弃了C++中容易引发程序错误的地方,如指针和内存管理。 Java提供了丰富的类库。
面向对象的object-oriented Java语言的设计完全是面向对象的,它不支持类似C语言那样的面向过程的程序设计技术。 Java支持静态和动态风格的代码继承及重用。单从面向对象的特性来看,Java类似于SmallTalk,但其它特性、尤其是适用于分布式计算环境的特性远远超越了SmallTalk。
Java字节码 Byte code 网络传输 Java VM Java 平台 Java API 硬件工作平台 分布式 distributed Java包括一个支持HTTP和FTP等基于TCP/IP协议的子库。因此,Java应用程序可凭借URL打开并访问网络上的对象,其访问方式与访问本地文件系统几乎完全相同。为分布环境尤其是Internet提供动态内容无疑是一项非常宏伟的任务,但Java的语法特性却使我们很容易地实现这项目标。
健壮 robust Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自已操纵内存减少了内存出错的可能性。Java具有实时异常处理的功能,强制程序编写处理异常的代码,它能够捕获并响应意外情况。
结构中立 architecture-neutral 另外,为了建立Java作为网络的一个整体,Java将它的程序编译成一种结构中立的中间文件格式。只要有Java运行系统的机器都能执行这种中间代码。 现在,Java运行系统有Solaris2.4(SPARC),Win32系统(Windows 2k和Windows NT)等。Java源程序被编译成一种高层次的与机器无关的byte-code格式语言,这种语言被设计在虚拟机上运行,由机器相关的运行调试器实现执行。
Java 源文件 引用包 Source File Java API 编译器 字节码 Byte Code JRE JRE JRE Windows Mac Linux
在客户端接收到由网络所传输过来的Bytecode后,便可通过一种与各平台有关的运行阶段环境(JRE,Java Runtime Environment)中的JVM,以及JRE所提供运行时所需类库,将其转成Native code(本地码,CPU机器指令)。JRE所包含的软件如下图所示。如此便可达到一次撰写,到处运行(write once,run anywhere)的效益。
安全 secure Java的安全性可从两个方面得到保证。一方面,在Java语言里,象指针和释放内存等C++功能被删除,避免了非法内存操作。 另一方面,当Java用来创建浏览器时,语言功能和一些浏览器本身提供的功能结合起来,使它更安全。Java语言在你的机器上执行前,要经过很多次的测试。它经过代码校验,检查代码段的格式,检测指针操作,对象操作是否过分以及试图改变一个对象的类型。
Byte-code校验和类装载 限定对象的 存取权限 系统堆栈溢出 参数类型一致 public protected private final Java源程序 (.java文件) Bytecode 载入器 语言定义 Bytecode检查 取消指针 自动回收 垃圾 Java编译器 Bytecode 解释器 程序执行系统 Java Bytecode (.class文件) 系统执行平台 WWW浏览器 限制Java小应用程序 的不正当使用
"write once, run anywhere." 可移植的portable 同体系结构无关的特性使得Java应用程序可以在配备了Java解释器和运行环境的任何计算机系统上运行,这成为Java应用软件便于移植的良好基础。 Java是平台无关的语言是指Java写的应用程序不用修改就可在不同的软硬件平台上运行。 “一次编译,多处运行”! Java主要靠它的虚拟机在目标代码级实现平台无关性。
Java interpreter Just-in-time compiler Runtime System Operating System Hardware Java虚拟机(JVM) 不同的操作系统有不同的虚拟机. 它类似一个小巧而高效的CPU. byte-code代码是与平台无关的,是虚拟机的机器指令. Java字节代码运行的两种方式: interpreter(解释方式) Just-in-time(即时编译):有代码生成器将字节代码转换成本机的机器代码,然后可以以较高速度执行.
JVM是一种解释器(interpreter)。而Java HotSpot Runtime(client VM)以及供浏览器使用的Java Plug-in,这些可将Byte Code转成NativeCode的转换软件单元,均可被视为一种VM。Java HotSpot Runtime可运行在DOS或其他非图形作业系环境下。而Java Plug-in则是一种浏览器嵌入软件,提供浏览器运行Java的环境支持。 JVM包含类加载器(class loader)字节确认器(bytecode verifier)以及JIT实时编译器(Just-in-time compiler)。类加载器用来取得从网络获取,或存于本地机器上的类文件字节码。字节确认器接着确认这些类文件是否有正确的格式,以确定在运行时不会有破坏内存的行为。 JIT编译器可将字节码转成本地机器码,使原本是解释式的VM能提高到编译式的运行效率。Java HotSpot Runtime就是实时编译技术的一大杰作。
多线程multithreaded Java提供的多线程功能使得在一个程序里可同时执行多个小任务。线程--有时也称小进程--是一个大进程里分出来的小的独立的进程。因为Java实现的多线程技术,所以比C和C++更健壮。多线程带来的更大的好处是更好的交互性能和实时控制性能。 当然实时控制性能还取决于系统本身(UNIX, Windows, Macintosh 等),在开发难易程度和性能上都比单线程要好。任何用过当前浏览器的人,都感觉为调一副图片而等待是一件很烦恼的事情。在Java里,你可用一个单线程来调一副图片,而你可以访问HTML里的其它信息而不必等它。
J2EE J2SE J2ME Smart card Java开发工具 JDK JDK ( Java Development Kit) J2SDK( Java 2 SoftWare Development Kit) J2SE (Java 2 Platform, Standard Edition ) J2EE ( Java 2 Platform, Enterprise Edition ) J2ME ( Java 2 Platform, Micro Edition)
Java IDE Tools Inprise JBuilder (RAD) Microsoft Visual J++ Symantec Café (RAD) Forte by Sun MicroSystems IBM Visual Age for Java (RAD)
本课程使用的开发工具——JDK+JCreator 1.安装Java Develop Kit(JDK) Sun公司为所有的java程序员提供了一套免费的java开发和运行环境,取名为Java2 SDK,可以从http://java.sun.com上进行下载。 安装的时候可以选择安装到任意的硬盘驱动器上。通常在JDK目录下有bin、demo、lib、jre等子目录,其中bin目录保存了javac、java、appletviewer等命令文件,demo目录保存了许多java的例子,lib目录保存了java的类库文件,jre保存的是java的运行时环境。
C:\ java lib 用户类文件 所在目录 myclasses bin 当前目录 classes.zip javac appletviewer java Java的开发环境
java\bin目录下包含以下主要文件: javac: Java编译器, 用来将java程序编译成Bytecode java: Java编译器,执行已经转换成Bytecode的java应用程序. jdb: Java调试器, 用来调试java程序 javap: 反编译,将类文件还原回方法和变量. javadoc:文档生成器,创建HTML文件 appletviwer : Java解释器, 用来解释已经转换成Bytecode的java小应用程序.
2. 安装java帮助文档 由于JDK的安装程序中并不包含帮助文档,因此也必须从Sun的网站上下载进行安装。通常安装在JDK所在目录的docs子目录下面。用浏览器打开docs子目录下的index.html文件就可以阅读所有的帮助文档。
3. 配置类路径 在安装完JDK之后,必须配置类路径classpath和环境变量path,JDK才能够正常运行。 如果是在windows2000中,则需要用右键单击桌面上"我的电脑",选择"属性",则弹出一个名为"系统特性"的窗口,选择"高级",然后选择"环境变量",在"环境变量"窗口中编辑classpath和path。
(三)开始Java程序设计 • 一个简单的Java Application程序 • 一个简单的Java Applet程序 • 区分Application与Applet • Java程序开发流程
一个简单的Java Application程序 编写源程序 //This application program prints Welcome to Java! public class Welcome { public static void main(String[] args) { System.out.println("Welcome to Java!"); } }
注释Comments • 单行注释// • 多行注释/* ... */ • 保留字/关键字 • public class void static • 47个关键字 • goto / const • true / false / null
修饰符(modifier) • public /static /private/final/abstract/protected • 语句(statement) System.out.println("Welcome to Java!"); • Java中语句用分号;结束。 • 类 • 主类 • 类中可以包含数据声明和方法声明。
方法 • System.out.println( ) • main方法 public static void main(String[] args) 编译程序 : javac Welcome .java 运行程序 : java Welcome
一个简单的Java Applet程序 编写源程序 /* This is an example of Java applets */ import java.awt.Graphics; public class WelcomeApplet extends java.applet.Applet { public void paint (Graphics g) { g.drawString("Welcome to Java!",10,10); } }
import (引入包或类) import java.awt.Graphics; • import 语句告诉编译器所使用类的来源 • Applet程序总是需要引入Applet 类 (package java.applet) • 可引入Graphics 类 (package java.awt)绘制图形 • Can draw lines, rectangles ovals, strings of characters
extends • applets至少包含一个类的定义 (like applications) • Rarely create classes from scratch • Use pieces of existing class definitions • Inheritance - create new classes from old ones • extends followed by class name • Indicates class to inherit from (Applet) • Applet : superclass (base class) • WelcomeApplet : subclass (derived class) • Welcome now has methods and data of Applet
编写welcome.html <html> <body> <applet code="WelcomeApplet.class" width=100 height=40> </applet> </body> </html> 编译程序 : javac WelcomeApplet.java 运行程序 : appletviewer welcome.html
WWW服务器 WWW服务器 HTML文件 ———— Applet嵌入标记 Applet名 ———— ———— ———— 请求 Applet字节码 下载html文件 请求html文件 WWW浏览器 下载Applet字节码 解释执行Applet字节码
Applet安全限制 不允许applet读写计算机的文件系统。 不允许applet运行浏览器所在计算机上的任何程序。 除了存储applet的服务器之外,不允许applet建立用户计算机与任何其他计算机的连接。
Java程序开发流程 文本编辑器 Java 源文件 HTML javadoc xxx.java 说明文件 编译 javac 有 错误? 无 C/C++ Java 类文件 javah 标头文件 xxx.class 解释java 程序 结果 NO YES 正确? 除错器 jdb Application 开发流程
文本编辑器 HTML javadoc Java 源文件 说明文件 xxx.java 编译 javac 有 错误? 文本编辑器 无 Java 类文件 HTML C/C++ javah xxx.class 标头文件 主文件 Appletviewer 程序 结果 NO YES 正确? 除错器 jdb Applet 开发流程
Application及Applet程序撰写比较表 比较Application与Applet Application Applet 1.程序格式特征 有main() 有init() start() stop() destroy() 2.存储文件格式 .java文件 .java文件 3.编译(compile)程序代码 使用JSDK <在DOS命令列环境下> 使用javac.exe 使用javac.exe 4.产生文件格式 .class文件 .class文件 5.运行程序 使用java.exe 即可直接运行 1.先制作一个嵌入此.class的.html文件,方法如下 : <Applet Code=”xxx.class”…> </Applet> 2.再使用appletveiwer.exe 或浏览器运行此.html文件
(四)Java数据类型与运算符 • 标识符 • 关键字 • 基本数据类型 • 常量 • 变量 • 运算符
标识符 1.语法规则:以字母、下划线( _ )、美元符号($)开始,后跟这三种符号或数字。2.必须要区分大小写。 3.没有长度限制。4.不得使用关键词。 5. 约定: • 类名, 接口名 :首字母应该大写: class ThisIsAClassName interface Account