Java 语言程序设计 王小茹 北京邮电大学计算机学院
第 1 章 Java 简介 1.1 Java 语言的发展历程 1.2 Java 语言的特点 1.3 Java 程序分类
课前思考 在 java 语言出现之前是否存在其它跨平台的 语言? 大家想一想,在 PC 下用 windows 编写的程 序能够不做修改就直接拿到 UNIX 系统上运 行吗?
1.1 Java 语言的发展历程 Java 语言在互联网时代获得巨大成功 1995 年,美国 Sun Microsystems 公司正式向 IT 业界推出了 Java 语言,该语言具有安全、跨平 台、面向对象、简单、适用于网络等显著特点, 当时以 web 为主要形式的互联网正在迅猛发展, java 语言的出现迅速引起所有程序员和软件公司 的极大关注,程序员们纷纷尝试用 java 语言编写 网络应用程序,并利用网络把程序发布到世界各 地进行运行。包括 IBM 、 Oracle 、微软、 Netscape 、 Apple 、 SGI 等大公司纷纷与
Sun Microsystems 公司签订合同,授权使用 java 平台技术。微软公司总裁比尔盖茨先生在经过研 究后认为 “java 语言是长时间以来最卓越的程序设 计语言 ” 。 在经历了以大型机为代表的集中计算模式和以 PC 机为代表的分散计算模式之后,互联网的出现 使得计算模式进入了网络计算时代。网络计算模 式的一个特点是计算机是异构的,即计算机的类 型和操作系统是不一样的 ;网络计算模式的另一 个特点是代码可以通过网络在各种计算机上进行 迁移,这就迫切需要一种跨平台的编程语言,使 得用它编写的程序能够在网络中的各种计算机上 能够正常运行, java 就是在这种需求下应运而生 的。正是因为 java 语言符合了互联网时代的发展 要求,才使它获得了巨大的成功。
1.1.2 Java 语言的产生 美国 Sun Microsystems 公司的某个研究小组为 了能够在消费电子产品上开发应用程序,积极 寻找合适的编程语言。 1992 年底, Java 最初 的原型 Oak 语言产生了。 随着互联网的蓬勃发展, Sun 公司发现 Oak 语 言所具有的跨平台、面向对象、安全性高等特 点非常符合互联网的需要,于是改进了该语言 的设计,。 1995 年 1 月, Oak 被正式更名为 Java 。 1995 年 5 月 23 日, Java 正式发布。
1996 年初, Java 的第一个版本 ——Java 1.0 版 正式发布了,同时,还发布 JDK1.0(Java 开 发 工具包 ) ;几个月后,又发布了 Java 1.02 版。 1998 年底,具有很多标准库的 Java1.2 (后更 名为 Java 2 )也已正式发布了。目前,基于 Java2 平台已经发展了几个版本系列: J2SE( 标 准版 ) 和 J2EE( 企业版 ) 。
1.2 Java 语言的特点 Java 语言是一种跨平台的,适用于分布式计 算机环境的面向对象编程语言。 简单性 (c ) 在某种意义上说, Java 语言实质上是 C/ C++ 语言 的一个变种,但比 C++ 语言更为简洁,因为它扬 弃了 C/C++ 语言中的运算符重载、多重继承、指 针、预处理、标题文件、结构、联合、多维数组、 模板及隐式类型变换等不符合逻辑、不易理解、 模糊的、或者是极少使用的功能。
面向对象 面向对象的原则是把数据和对该数据的操作都封 装在一个类中,在程序设计时要考虑多个对象及 其相互间的关系。面向对象的好处是实现代码的 重复使用。 分布式 分布式计算机涉及到几台计算机在网络上 一起工作。 Java 的设计使分布式计算机变得容 易起来,由于 Java 开始就设计了网络工作能力, 因而编写网络程序如同在文件中存取数据一样。
Java 是解释执行的 Java 的源程序首先由编 译器( javac.exe )编译 成字节码 再由解释器( java.exe ) 解释执行 Java 解释器能直接在任 何机器上执行 Java 字节 码 Java 源代码 Java 编译器 Java 字节码 Java 解释器 CPU
Java 是健壮的 程序的健壮性即是程序的可靠性 Java 非常重视及早检查错误, Java 编译器可以 查处许多其它编译器运行时才能发现的错误 Java 不支持指针,从而避免了对内存直接操作 容易造成的数据破坏 Java 具有实时异常处理的功能, Java 强制程序 员编写异常处理的代码,能够捕获并响应意外 情况
Java 是安全的 作为 Internet 程序设计语言, Java 用于网络和分布式环境 Java 执行多层安全机制用来保护系统不受恶意程序攻 击和破坏 不允许 Applet 读写计算机的文件系统,防止对文件破坏、 传播病毒等 不允许 Applet 运行浏览器所在计算机上的任何程序 除了存储 Applet 的服务器之外,不允许 Applet 建立用户 计算机与任何其他计算机相连
Java 是体系结构中立的 Write once, Run Anywhere 即 Java 的平台无关性 Java 程序被编译成一种与体系结构无关的字 节代码 只要安装了 Java 运行时系统 Java 程序就可以在 任意的处理器上运行, Java 解释器得到字节码 后,对他进行转换使他能够在不同的平台上运 行 Java 在操作系统级得到统一支持
Java 是体系结构中立的(续) Windows 下 C 语言编程过程 Java 语言编程过程 C 源程序(扩展名.c ) Java 源程序(扩展名.java ) Windows 可执行文件 (扩展名.exe ) Windows 操作系统 C 编译程序 执行 Java 字节码文件 (扩展名.class ) Java 编译程序 Windows 下 Java 字节码 解释程序 Linux 下 Java 字节码 解释程序 能直接解释 Java 字节码 的 CPU Java 虚拟机( JVM ) 执行 Windows 操作系统 Linux 操作系统
可移植性 Java 语言的平台无关性,成为了 Java 语言应用程 序方便地移植到网络上不同机器的良好基础,使 得 Java 语言应用程序在已配备了 Java 语言解释及 运行环境的任一台机器上运行是可行的。 可扩展性 由于 Java 语言是一种基于 C++ 的编程语言,它们 之间有很多相似性,便于扩展。当然, Java 语言 的可扩展性还体现在: Java 语言可以把内部的方 法映射成软件库所定义的功能,且可以动态地与 虚拟机链接。
高性能 Java 语言的字节码经过了周详地设计,在采用 Java 技术将字节码直接转换成高性能的本机代码 变得相对容易,因此, Java 语言程序在非常低档 的 CPU 上仍能顺利地进行,而其他的解释执行系 统(如: BASIC )就则变得相对困难。 多线程 Java 语言本身提供了一个 Thread 类和一组内置的 方法,它负责生成线程、执行线程或者查看线程 的执行状态。所以程序员要设计多线程程序时, 只要继承上述的那个类和调用相应的方法就可以 解决了,从而也提高了程序执行的效率。
动态性 Java 语言的动态性,即可以在本地或网上动态地 加载类,或者说在程序的执行过程中可以随意地 增加新方法、实例变量等。
1.3 Java 程序分类 根据实现环境来划分, Java 主要有以下几种 程序类型 : Java Application Java Application 是一个完整的程序,它需要 独立的解释器来解释执行。 Application 和其它 Windows 应用程序一样,可以居于窗体界面运行, 也可以在命令行运行。
Java Applet Java Applet 也称为小应用程序,适合在网络 中传输,安全可靠,功能强大,特别适合做 WEB 的交互式界面。它是一种嵌入到 WEB 页面的网络 应用程序,由 WEB 浏览器内部的 JAVA 解释器来 解释运行,它的主要功能是在浏览器端实现某些 特殊效果。网络用户访问服务器的 Applet 时,这 些浏览器先下载 Applet 程序,然后在浏览器端运 行下载完成的 Applet 程序。
Java Servlet Servlet 是一种运行于 Web 服务器端的 Java 程 序,也叫服务器端小程序。它既可以与客户端的 Applet 进行交互,也可以直接与客户端的 HTML 页 面交互,在许多大型的应用中可以作为现有的 Internet 技术和 Java 的中间桥梁。
JSP ( Java Server Page ) JSP 是一种用于生成动态网页的技术,类似 ASP ,基于 Servlet 技术,是在 HTML 代码中插入 Java 程序片段和 JSP 标记形成的。 JSP 程序同样 运行于 Web 服务器端,可实现程序与页面格式控 制的分离。
JavaBean 这是一种可重用、独立于平台的 Java 程序组 件。通常,可以将一些比较复杂的、需要重复使 用的功能封装成一个 Bean 组件。