http://www.javass.cn 咨询 QQ:460190900 Java 私塾跟我学系列——JAVA 篇
http://www.javass.cn 欢迎大家前来报名学习,咨询 QQ:460190900
1
第一章 Java 入门
一:Java 语言的历史、现状及特点
1:Java 产生的历史
Java 来自于 Sun 公司的 Green 项目,其原先的目的是为家用消费电子产品开发一个分布式代码
系统,这样我们可以把 E-mail 发给电冰箱、电视机等家用电器,对它们进行控制,和它们进行信息
交流。开始,准备采用 C++,但 C++太复杂,安全性差,最后基于 C++开发一种新的语言 Oak(Java
的前身),Oak 是一种用于网络的精巧而安全的语言,Sun 公司曾依此投标一个交互式电视项目,但
结果是被 SGI 打败。可 怜 的 Oak 几乎无家可归,恰巧这时 MarkArdreesen 开发的 Mosaic 和 Netscape
启发了 Oak 项目组成员,他们用 Java 编制了 HotJava 浏览器,得到了 Sun 公司首席执行官
ScottMcNealy 的支持,触发了 Java 进军 Internet。Java 的取名也有一则趣闻,有一天,几位 Java
成员组的会员正在讨论给这个新的语言取什么名字,当时他们正在咖啡馆喝着 Java(爪哇)咖啡,
教学目标:
iJava
的历史、现状与特点
i
理解什么是
Java
i
描述
Java
技术的主要特性
i
描述
Java
虚拟机的功能
i
理解垃圾收集是如何进行的
i
理解
Java
代码安全性
i
掌握
Java
开发环境配置
i
编写、编译并运行简单的
Java
程序
i
掌握如何使用
Api
文档
http://www.javass.cn 咨询 QQ:460190900 Java 私塾跟我学系列——JAVA 篇
http://www.javass.cn 欢迎大家前来报名学习,咨询 QQ:460190900
2
有一个人灵机一动说就叫 Java 怎样,得到了其他人的赞赏,于是,Java 这个名字就这样传开了。
2:Java 的现状
Java 是 Sun 公司推出的新一代面向对象程序设计语言,特别适合于 Internet 应用程序开发,
它的平台无关性直接威胁到 Windows 的垄断地位。一时间,“连 Internet,用 Java 编程”,成为技
术人员的一种时尚。虽然新闻界的报导有些言过其实,但 Java 作为软件开发的一种革命性的技术,
其地位已被确立,这表现在以下几个方面:
(1)、计算机产业的许多大公司购买了 Java 的许可证,包括 IBM、Apple、DEC、Adobe、
SiliconGraphics、HP、Oracle、Toshiba,以及最不情愿的 Microsoft。这一点说明,Java 已得到
了工业界的认可。
(2)、众多的软件开发商开始支持 Java 的软件产品。其中著名的厂商有 IBM、BEA、BORLAND、
ORACLE 等。
(3)、Intranet 正在成为企业信息系统最佳的解决方案,而其中 Java 将发挥不可替代的作用。
Intranet 的目的是把 Internet 用于企业内部的信息系统,它的优点表现在:便宜,易于使用和管
理。用户不管使用何种类型的机器和操作系统,界面是统一的 Internet 浏览器,而数据库、Web 页
面、应用程序(用 JSP/Servlet 编的)则存在 WWW 服务器上,无论是开发人员,还是管理人员,或
是用户都可以受益于该解决方案。
3:Java 语言的特点
Java 到底是一种什么样的语言呢?Java 是一种简单的面向对象的、分布式的、解释的、健壮的、
安全的、结构中立的、可移植的、性能很优异的、多线程的、动态的语言。
简单
Java 最初是为对家用电器进行集成控制而设计的一种语言,因此它必须简单明了。Java 语言的
简单性主要体现在以下三个方面:
(1)、Java 的风格类似于 C++,因而 C++程序员是非常熟悉的。从某种意义上讲,Java 语言是
C 及 C++语言的一个变种,因此,C++程序员可以很快就掌握 Java 编程技术。
(2)、Java 摒弃了 C++中容易引发程序错误的地方,如指针和内存管理。
(3)、Java 提供了丰富的类库。
面向对象
面向对象可以说是 Java 最重要的特性。Java 语言的设计完全是面向对象的,它不支持类似 C
语言那样的面向过程的程序设计技术。Java 支持静态和动态风格的代码继承及重用。单从面向对象
的特性来看,Java 类似于 SmallTalk,但其它特性,尤其是适用于分布式计算环境的特性远远超越
了 SmallTalk。
分布式
Java 包括一个支持 HTTP 和 FTP 等基于 TCP/IP 协议的子库。因此,Java 应用程序可凭借 URL 打
开并访问网络上的对象,其 访问方式与访问本地文件系统几乎完全相同。为分布环境尤其是 Internet
提供动态内容无疑是一项非常宏伟的任务,但 Java 的语法特性却使我们很容易地实现这项目标。
http://www.javass.cn 咨询 QQ:460190900 Java 私塾跟我学系列——JAVA 篇
http://www.javass.cn 欢迎大家前来报名学习,咨询 QQ:460190900
3
健壮
Java 致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。
Java 自已操纵内存减少了内存出错的可能性。这项功能特征大大缩短了开发 Java 应用程序的周期。
结构中立
为了建立 Java 作为网络的一个整体,Java 将它的程序编译成一种结构中立的中间文件格式。
只要有 Java 运行系统的机器都能执行这种中间代码。现在,Java 运行系统有 Solaris2.4(SPARC)、
Windows 系统等。Java 源程序被编译成一种高层次的与机器无关的 byte-code(字节码)格式语言,
这种语言被设计在虚拟机上运行,由机器相关的运行调试器实现执行。
安全
Java 的安全性可从两个方面得到保证。一方面,在 Java 语言里,像指针和释放内存等 C++功能
被删除,避免了非法内存操作。另一方面,当 Java 用来创建浏览器时,语言功能和一项浏览器本身
提供的功能结合起来,使它更安全。Java 语言在你的机器上执行前,要经过很多次的测试。它经过
代码校验,检查代码段的格式,检测指针操作,对象操作是否过分以及试图改变一个对象的类型。
Byte-code(字节码)校验
如果 byte-code 通过代码校验,没有返回错误,我们可知道:代码没有堆栈上溢出和下溢错误,
所有操作代码参数类型都是正确的没有发生非法数据转换,如将整数转换成指针,访问对象操作是
合法的。
类装载
ClassLoader 通过将本机类与网络资源类的名称分开,来保持安全性。因为调入类时总要经过
检查,这样避免了特洛伊木马现象的出现。从网络上下载的类被调进一个与源相关的私有的名字域。
当一个私有类访问另一个类时,build-in(本机)类首先被检查,然后检查相关的类,这样就避免了
破坏本机类情况的出现。
可移植
可移植的同体系结构无关的特性使得 Java 应用程序可以在配备了 Java 解释器和运行环境的任
何计算机系统上运行,这成为 Java 应用软件便于移植的良好基础。但仅仅如此还不够。如果基本数
据类型设计依赖于具体实现,也将为程序的移植带来很大不便。例如在 Windows3.1 中整数(Integer)
为 16 位,在 Windows95 中整数为 32bits,在 DECAlpha 中整数为 64 位,在 Intel486 中为 32 位。
通过定义独立于平台的基本数据类型及其运算,Java 数据得以在任何硬件平台上保持一致。Java 语
言的基本数据类型及其表示方式如下:byte8-bit 二进制补码 short16-bit 二进制补码 int32-bit
二进制补码 long64-bit 二进制补码 float32-bit IEEE754 浮点数 double64-bit IEEE754 浮点数
char16-bit Unicode 字符在任何 Java 解释器中,数据类型都是依据以上标准具体实现的。因为几
乎目前使用的所有 CPU 都能支持以上数据类型、8~64 位整数格式的补码运算和单/双精度浮点运算。
Java编译器本身就是用 Java语言编写的。Java运算系统的编制依据 POSIX方便移植的限制,用 ANSIC
语言写成。
解释的
Java 解释器(运行系统)能直接运行目标代码指令。链接程序通常比编译程序所需资源少,所以
程序员可以在创建源程序上花上更多的时间。
http://www.javass.cn 咨询 QQ:460190900 Java 私塾跟我学系列——JAVA 篇
http://www.javass.cn 欢迎大家前来报名学习,咨询 QQ:460190900
4
高性能
如果解释器速度不慢,Java 可以在运行时直接将目标代码翻译成机器指令。Sun 用直接解释器
一秒钟内可调用 300,000 个过程。翻译目标代码的速度与 C/C++的性能接近。
多线程
Java 提供的多线程功能使得在一个程序里可同时执行多个小任务。线程--有时也称小进程-
-是一个大进程里分出来的小的独立的进程。因为 Java 实现的多线程技术,所以比 C 和 C++更键壮。
多线程带来的更大的好处是更好的交互性能和实时控制性能。当然实时控制性能还取决于系统本身
(UNIX,Windows,Macintosh 等),在开发难易程度和性能上都比单线程要好。任何用过当前浏览器的
人,都感觉为调一副图片而等待是一件很烦恼的事情。在 Java 里,你可用一个单线程来调一副图片,
而你可以访问 HTML 里的其它信息而不必等它。
动态的
Java 的动态特性是其面向对象设计方法的扩展。它 允 许 程序动态地装入运行过程中所需要的类,
这是 C++语言进行面向对象程序设计所无法实现的。在 C++程序设计过程中,每当在类中增加一个实
例变量或一种成员函数后,引用该类的所有子类都必须重新编译,否则将导致程序崩溃。Java 从如
下几方面采取措施来解决这个问题。Java 编译器不是将对实例变量和成员函数的引用编译为数值引
用,而是将符号引用信息在字节码中保存下传递给解释器,再由解释器在完成动态连接类后,将符
号引用信息转换为数值偏移量。这样,一个在存储器生成的对象不在编译过程中决定,而是延迟到
运行时由解释器确定的。这样,对类中的变量和方法进行更新时就不至于影响现存的代码。解释执
行字节码时,这种符号信息的查找和转换过程仅在一个新的名字出现时才进行一次,随后代码便可
以全速执行。在运行时确定引用的好处是可以使用已被更新的类,而不必担心会影响原有的代码。
如果程序连接了网络中另一系统中的某一类,该类的所有者也可以自由地对该类进行更新,而不会
使任何引用该类的程序崩溃。Java 还简化了使用一个升级的或全新的协议的方法。如果你的系统运
行 Java 程序时遇到了不知怎样处理的程序,没关系,Java 能自动下载你所需要的功能程序。
二:什么是 Java
1:Java 是
- 一种编程语言
- 一种开发环境
- 一种应用环境
- 一种部署环境
Java 编程语言的句法与 C++的句法相似,语义则与 Small Talk 的语义相似。Java 编程语言可
被用来创建任何常规编程语言所能创建的应用程序。
在 World Wide Web(WWW)和能够运行称为 applets 程序的浏览器的有关介绍中,人们经常
提及 Java 编程语言。Applets 是一种贮存于 WWW 服务器的用 Java 编程语言编写的程序,它通常由
浏览器下载到客户系统中,并通过浏览器运行。Applets 通常较小,以减少下载时间,它由超文本
标识语言(HTML)的 Web 页来调用。
Java application 是指独立的应用程序,它不需要任何 Web 浏览器来执行,是一种典型的通用
程序,可运行于任何具备 Java 运行环境的设备中。
http://www.javass.cn 咨询 QQ:460190900 Java 私塾跟我学系列——JAVA 篇
http://www.javass.cn 欢迎大家前来报名学习,咨询 QQ:460190900
5
2:Java 语言的主要目标
(1)提供一种易于编程的语言,从而
- 消除其它语言在诸如指针运算和存储器管理方面影响健壮性的缺陷。
- 利用面向对象的概念使程序真正地成为可视化程序
- 为使代码尽可能清晰合理、简明流畅提供了一种方法
(2)提供一种解释环境
- 提高开发速度──消除编译─链接—装载—测试周期。
- 代码可移植性──使操作系统能为运行环境做系统级调用
(3)为运行不只一个活动线程的程序提供了一种方式
(4)通过允许下载代码模块,从而当程序运行时也能动态支持程序改变。
(5)为那些保证安全性而装载的代码模块提供了一种检查方法。
3: JavaSDK 版本分类
在 Java 平台下,Sun 重新定义了 Java 技术的架构,将其分为三个版本,它们是适用于小型
设备和智能卡的 Java 平台 Micro 版(Java Platform Micro Edition,JME)、适用于桌面系统的
Java 平台标准版(Java Platform Standard Edition,JSE)和适用于以企业为环境而开发应用程序
的专门开发人员的 Java 平台企业版(Java Platform Enterprise Edition,JEE)。
3.1:JME
JME(Java ,Micro Edition)于 1999 年 6 月由 Sun Microsystems 第一次推向 Java 团体,它是
一项能更好满足 Java 开发人员不同需求的广泛倡议的一部分。Sun Microsystems 将 JME 定义为“一
种以广泛的消费性产品为目标的高度优化的 Java 运行时环境,包括寻呼机、移动电话、可视电话、
数字机顶盒和汽车导航系统。”
JME 是致力于消费产品和嵌入式设备的开发人员的最佳选择。尽管早期人们对它看好而且 Java
开发人员团体中的热衷人士也不少,然而,JME 最近才开始从其影响更大的同属产品 JEE 和 JSE 的
阴影中走出其不成熟期。
JME 在开发面向内存有限的移动终端(例如寻呼机、移动电话)的应用时,显得尤其实用。因为
它是建立在操作系统之上的,使得应用的开发无须考虑太多特殊的硬件配置类型或操作系统。因此,
开发商也无须为不同的终端建立特殊的应用,制 造 商 也 只需要简单地使它们的操作平台可以支持 JME
便可。
3.2:JSE
JSE(Java Standard Edition)是 Sun 公司针对桌面开发以及低端商务计算解决方案而开发的版
本,例如:我们平常熟悉的 Applet 应用程序和 Application 桌面应用程序,这个版本是个基础,它
也是我们平常开发和使用最多的技术,Java 的主要的技术将在这个版本中体现。这是我们这本教材
重点要介绍的内容。
3.3:JEE
JEE(Java Enterprise Edition)是一种利用 Java 平台来简化企业解决方案的开发、部署和管理