ITPub博客

首页 > Linux操作系统 > Linux操作系统 > JAVA是什么软件

JAVA是什么软件

原创 Linux操作系统 作者:AWBS4 时间:2013-08-20 14:30:31 0 删除 编辑

JAVA是什么软件,接下来我们就进行一下了解。

第1章
    Java 语言概述
    本章主要介绍什么是 Java 语言,以及 Java 语言具有哪些特点。在讲解的时候,为了能 突出 Java 语言的特色,详细的分析了其与 C/C++语言的区别。另外,本章还为初学者特意 安排了一节,针对如何学习 Java 语言,提出了一些中肯的建议。
    1.1 Java 的语言特点+
    Java 是由 Sun 公司开发出来的一种语言,是一种面向对象的编程语言。其在很多方面 与 C/C++相似,但在实际编程时又有很多区别。下面通过对他们的比较,了解 Java 语言的 特点。
    1.1.1 Java 语言与 C、C++的区别
    首先应该清楚,Java 是由 C++发展而来的,保留了 C++的大部分内容,其编程方式类 似于 C++。但 Java 的句法更清晰、规模更小、更易学。Sun 公司对多种程序设计语言进行 了深入研究,并摒弃了其他语言的不足之处,最终退出了 Java。正是这样,Java 从根本上 解决了 C++的固有缺陷,形成了一种新的完全面向对象的语言。 Java 和 C/C++的相似之处多于不同之处,有 C 基础的读者,学习 Java 会更容易。相比 较而言,Java 的编程环境更为简单。因篇幅所限,这里不能完全列出不同之处,仅列出一些 比较显著的区别。 指针 Java 没有指针的概念,从而有效地防止了在 C/C++语言中,容易出现的指针操作失误 (如指针悬空所造成的系统崩溃)。在 C/C++中,指针操作内存时,经常会出现错误。在 Java 中没有指针,更有利于 Java 程序的安全。 多重继承 C++支持多重继承,它允许多父类派生一个子类。也就是说,一个类允许继承多个父类。 尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。 所以 Java 不支持多重继承,但允许一个类实现多个接口。可见,Java 既实现了 C++多重继 承的功能,又避免了 C++的许多缺陷。 数据类型 Java 是完全面向对象的语言,所有方法和数据都必须是类的一部分。除了基本数据类型 之外,其余类型的数据都作为对象型数据。例如对象型数据包括字符串和数组。类将数据和 方法结合起来,把它们封装在其中,这样每个对象都可实现具有自己特点的行为。而 C++ 将函数和变量定义为全局的,然后再来调用这些函数和变量,从而增加了程序的负担。此外, Java 还取消了 C/C++中的结构和联合,使编译程序更简洁。 自动内存管理 Java 程序中所有的对象都是用 new 操作符建立在堆栈上的,这个操作符类似于 C++的
    1
    “new”操作符。Java 自动进行无用内存回收操作,不需要程序员进行删除。当 Java 中一个 对象不再被用到时,无须使用内存回收器,只需要给它加上标签以示删除。无用内存的回收 器在后台运行,利用空闲时间工作。而 C++中必须由程序释放内存资源,增加了程序设计者 的负担。 操作符重载 Java 不支持操作符重载,操作符重载被认为是 C++的突出特征。在 Java 中虽然类可以 实现这样的功能,但不支持操作符重载,这样是为了保持 Java 语言尽可能简单。 预处理功能 C/C++在编译过程中都有一个预编译阶段,即预处理器。预处理器为开发人员提供了 方便,但增加了编译的复杂性。Java 允许预处理,但不支持预处理器功能,因为 Java 没有 预处理器,所以为了实现预处理,它提供了引入语句(import),它与 C++预处理器的功能 类似。 Java 不支持缺省函数参数,而 C++ C++支持。 在 C 中,代码组织在函数中,函数可以访问程序的全局变量。C++增加了类,提供了类 算法,该算法是与类相连的函数,C++类方法与 Java 类方法十分相似。由于 C++仍然支持 C, 所以 C++程序中仍然可以使用 C 的函数,结果导致函数和方法混合使用,使得 C++程序比 较混乱。 Java 没有函数,作为一个比 C++更纯的面向对象的语言。Java 强迫开发人员把所有例 行程序包括在类中。事实上,用方法实现例行程序可激励开发人员更好地组织编码。 字符串 C 和 C++不支持字符串变量,在 C 和 C++程序中使用“Null”终止符代表字符串的结束, 在 Java 中字符串是用类对象(String 和 StringBuffer)来实现的,在整个系统中建立字符串 和访问字符串元素的方法是一致的。Java 字符串类是作为 Java 语言的一部分定义的,而不 是作为外加的延伸部分。此外,Java 还可以对字符串用“+”进行连接操作。 goto 语句 “可怕”的 goto 语句是 C 和 C++的“遗物”。它是该语言技术上的合法部分,引用 goto 语句造成了程序结构的混乱,不易理解。goto 语句一般用于无条件转移子程序和多结构分支 技术。Java 不提供 goto 语句,其虽然指定 goto 作为关键字,但不支持它的使用,这使程序 更简洁易读。 类型转换 在 C 和 C++中,有时出现数据类型的隐含转换,这就涉及了自动强制类型转换问题。 例如,在 C++中可将一个浮点值赋予整型变量,并去掉其尾数。Java 不支持 C++中的自动 强制类型转换,如果需要,必须由程序显式进行强制类型转换。
    1.1.2 Java 面向对象的特性和多态性
    Java 是一种跨平台、适合于分布式计算机环境的面向对象编程语言。具体来说,它具有 如下特性:简单性、面向对象、分布式、解释性、可靠、安全、平台无关、可移植、高性能、 多线程、动态性等。下面将重点介绍 Java 语言的面向对象、平台无关、分布式、多线程、 可靠和安全等特性。 面向对象其实是现实世界模型的自然延伸。现实世界中任何实体都可以看作是对象,对 象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象都是 某一类事物的实例。如果说传统的过程式编程语言是以过程为中心,以算法为驱动的话,那
    2
    面向对象的编程语言就是以对象为中心,以消息为驱动。用公式表示,过程式编程语言为: “程序=算法+数据”。面向对象编程语言为:“程序=对象+消息”。 所有面向对象编程语言都支持三个概念:封装、多态性和继承, Java 也不例外。现实世 界中的对象均有属性和行为映射到计算机程序上。属性则表示对象的数据,行为则表示对象 的方法。 封装是用一个自主式的框架,把对象的数据和方法连接在一起,形成一个整体。对象支 持封装,是封装的基本单位。Java 语言的封装性较强,那是因为 Java 无全程变量、无主函 数。在 Java 中,绝大部分成员是对象,只有简单的数字类型(字符类型和布尔类型除外)。 对于这些类型,Java 提供了相应的对象类型包装,以便与其他对象交互操作。有关封装的原 理如图 1.1 所示。
    类将方法和属性值封 装在其中
    方法1
    方法2
    方法3
    属性值1
    属性值2
    属性值3
    图 1.1
    封装的原理示意图
    多态性就是多种表现形式。具体来说,可以用“一个对外接口,多个内在实现方法”表 示。举一个例子,计算机中的堆栈可以存储各种格式的数据,包括整形、浮点型或字符型, 不管存储的是何种数据,堆栈的算法实现都是一样的。针对不同的数据类型,编程人员不必 手工选择,只需要使用统一方法名(参数不同),系统可以自动选择。运算符重载一直被认 为是一种优秀的多态机制体现。由于考虑到运算符重载会使程序变得难以理解,所以 Java 最后还是把它取消了。有关多态的原理如图 1.2 所示。
    方法体1 方法体2 方法体3 方法体4
    相同的方法名称
    图 1.2
    多态的原理示意图
    继承是指一个对象直接使用另一个对象的属性和方法。事实上,现实生活中遇到的很多 实体,都具有继承的含义。例如,把汽车看成一个实体,它可以分成多个子实体,如:轿车、 公交汽车等。以上子实体都具有汽车的特性,因此汽车是它们的 “父亲”,而这些子实体则 是汽车的“孩子”。子类可以继承父类的属性和方法,与其他面向对象编程语言不同, Java 只支持单一继承。有关继承的原理如图 1.3 所如示。
    3
    父类的方法
    父类的属性值
    父类
    通过子类继承父类
    子类
    子类自己的属性 值
    子类自己的方法
    父类的属性值
    父类的方法
    图 1.3
    继承的原理示意图
    1.1.3 Java 的平台无关性
    Java 的平台无关性是指用 Java 写的应用程序不用修改,就可以在不同的软硬件平台上 运行。平台无关有两种:源代码级和目标代码级。C 和 C++是具有一定程度的源代码级平台 无关。源代码级平台无关表明了用 C/C++写的程序无需修改,只需重新编译就可以在不同平 台上运行。 Java 主要靠 Java 虚拟机 JVM(Java Virtual Machine),在目标代码级实现平台无关性。 JVM 是一种抽象机器,它附着在具体操作系统之上,其本身具有一套虚拟机器指令,并有 自己的栈、寄存器组等。JVM 通常是在软件上而不是在硬件上实现的。 目前,Sun 系统公司已经设计实现了 Java 芯片,它主要使用在网络计算机上。另外,Java 芯片的出现也会使 Java 更加容易嵌入到家用电器中。在 JVM 上,有一个 Java 解释器,使 用它来解释 Java 编译器编译后的程序。Java 编程人员在编写完软件后,通过 Java 编译器, 将 Java 源程序编译为 JVM 的字节代码。任何机器只要配备了 Java 解释器,就可以运行这 个程序,而不管这种字节码是在何种平台上生成的。有关 Java 平台无关性的原理如图 1.4 所示。
    C语言的源代码 Java源代码
    编译器 不同平台的虚拟 机
    在不同平台上运 行
    Windows虚拟机
    linux虚拟机
    运行
    运行
    Windows
    linux
    Windows
    linux
    图 1.4
    Java 平台无关性示意图
    另外,Java 采用的是基于 IEEE 标准的数据类型。通过 JVM 保证数据类型的一致性, 也确保了 Java 平台的无关性。 Java 的平台无关性具有深远意义。首先,它的出现使得编程人员所梦寐以求的事情变成 了事实,这将大大地加快和促进软件产品的开发。其次 Java 的平台无关性正好迎合了“网 络计算机”的思想。
    4
    如果常用的应用软件都使用 Java 重新编写,并且放在某个 Internet 服务器上,那么具有 网络计算机的用户,将不需要占用大量空间安装软件,他们只需要一个 Java 解释器。每当 需要使用某种应用软件时,下载该软件的字节代码即可,其运行结果也可以发回服务器。目 前已有数家公司开始使用这种新型的计算机模式,构筑自己的信息系统。
    1.1.4 Java 分布式应用和多线程的特点
    本节讲述 Java 程序的分步式和多线程的特点。分布式包括数据分布和操作分布。数据 分布是指数据可以分散在网络的不同主机上。操作分布是指把一个计算分散在不同主机上处 理。 Java 支持客户机/服务器计算模式,因此它支持这两种分布。对于数据分布, Java 提供 了一个叫做 URL 的对象,利用这个对象,可以打开并且访问具有相同 URL 的对象,访问方 式与访问本地文件系统相同。对于操作分布,Java 的 Applet 小程序可以从服务器下载到客 户端,即部分计算在客户端进行,提高系统执行效率。有关分布式的原理如图 1.5 所示。
    使用Applet小程序访 问服务器
    让服务器处理一 部分数据 客户端 服务器
    客户端自己处 理一部分数据
    图 1.5
    分布式示意图
    Java 提供了一整套网络类库,开发人员可以利用这些类库进行网络程序设计,方便的实 现 Java 的分布式特性。 线程是操作系统的一种新概念,线程又被称作轻量进程,是比传统进程更加小的,并且 可以并发执行的单位。C 和 C++采用单线程系统结构,而 Java 提供了多线程的支持。 Java 在两方面支持多线程。一方面,Java 环境本身就是多线程的。若干个系统线程运 行,负责必要的无用单元回收、系统维护等系统级操作。另一方面, Java 语言内置多线程控 制,可以大大简化多线程应用程序的开发。 Java 提供了一个 Thread 类,由它负责启动、运行、终止线程,并且可以检查线程状态。 Java 线程还包括一组同步原语,这些原语负责对线程实行并发控制。利用 Java 的多线程编 程接口,开发人员可以方便的写出支持多线程的应用程序,从而提供程序执行的效率。 Java 的多线程在一定程度上受运行时所在平台的限制,如果操作系统不支持多线程,那么 Java 程序的多线程特性就不能表现出来。
    1.1.5 Java 程序的可靠性、安全性
    本节将详细讲述 Java 的可靠性和安全性。Java 最初的设计目的是电子类消费品,因此 要求较高的可靠性。Java 虽然源于 C++,但它消除了许多 C++不可靠的因素,可以防止许 多编程错误。 它的可靠性和安全性表现在如下几点: Java 是强类型的语言,要求显式的方法声明。这保证了编译器可以发现方法调用错 误,保证程序更加可靠。
    5
    Java 不支持指针,这杜绝了内存的非法访问。 Java 的自动单元收集功能,可以防止内存丢失等动态内存分配导致的问题。 Java 解释器运行时实施检查,可以发现数组和字符串访问的越界。 Java 提供了异常处理机制。程序员可以把一组错误代码放在一个地方,这样可简化 错误处理任务,便于恢复。 由于 Java 主要用于网络应用程序开发,因此对安全性有较高的要求。如果没有安全保 证,用户从网络下载程序执行就非常危险。Java 通过自己的安全机制,防止了病毒程序的产 生,以及下载程序对本地系统的威胁破坏。 当 Java 字节码进入解释器时,首先必须经过字节码校验器的检查,然后 Java 解释器将 决定程序中类的内存布局。随后,类装载器负责把来自网络的类装载到单独内存区域,避免 应用程序之间相互干扰破坏。最后,客户端用户还可以限制从网络上装载的类只能访问某些 文件系统。上述集中机制结合起来,使得 Java 成为安全的编程语言。
    1.1.6 Java 小程序和应用程序
    用 Java 可以写两种类型的程序:小程序和应用程序。小程序就是嵌入在网页文档中的 Java 程序,而应用程序就是在命令行中运行的程序。对 Java 而言,对小程序的大小和复杂 性都没有限制。事实上,Java 小程序有些方面比 Java 应用程序更加强大。目前,由于 Internet 通讯速度有限,因此大多数小程序规模较小。小程序和应用程序之间的技术差别就在于运行 环境。 Java 应用程序运行在最简单的环境中,它的惟一外部输入就是命令行参数。另一方面, Java 小程序需要来自 Web 浏览器的大量信息。它需要知道何时启动、何时放入浏览器窗口、 何处和何时激活关闭等等。由于这两种不同的执行环境,小程序和应用程序的最低要求不同。
    1.2 Java 的不同版本
    Java 拥有不同的版本,各种版本适合在什么样的场合使用呢?下面将详细介绍这些版 本。 Java Developers Kits JDK Kits(JDK JDK):JDK 是指 Java 开发工具箱,是 Sun 公司发布的 Java 最初版本。自从 Java1.2 发布后,Java 改名为 Java2,相应的 JDK 也就改名为 J2SE。 Java SDK Micro Edition J2ME Edition(J2ME J2ME):此版本用来开发掌上电脑、手机等移动通信设 备。现阶段,不是所有移动设备都支持 Java,只有具备其运行环境的设备才能运行 它。 Java SDK Standard Edition J2SE Edition(J2SE J2SE):主要用于开发一般的台式机应用程序,平时 说的 JDK 其实就是指 J2SE J2SE,本书也是围绕着它来讲述。 Java SDK Enterprise Edition J2EE Edition(J2EE J2EE):用于开发分布式的企业级大型应用程序, 其中的核心被称为 EJB(Enterprise Java Beans)。
    6
    1.3 如何才能学好 Java
    如何学习 Java,这个问题应该上升到如何学习程序设计这种境界,实际上,学习程序设 计也可以说是接受一种编程思想。每一种语言的程序设计思想大同小异,只是一些由语言特 性而带来的细微差别。比如 Java 中的“Interface”,在以前的学习中没有碰到过。以下详细 介绍几点: 必须明确一个大方向,也就是说在面向对象的编程范畴中,进行学习与研究。目前 最流行的面向对象编程语言就是 C++和 Java,所以先锁定这两个目标。 掌握 Java 的精华特性,而且一定要知道为什么。比如,nterface 和 Multi-thread。用 Interface 是更好的使用多继承的模型,而多线程则涉及到并发的特性。要完全理解 Interface 是什么、用多线程有几种常用的编程模型等等。 理解了语言的特性之后,就可以试着上升到设计这个层次,毕竟学习语言是为了应 用。目前,比较好的开发模式是采用自顶向下、结合 MVC 模式的设计。首先要找 出最顶层的对象(这往往是最难的),然后一层一层往下递归。所以说,一般有图 形用户界面的程序应从界面开始设计。 有了基本设计模型后,可以学一些设计模式(Design Pattern)。设计模式有很多种, 比如体系结构模式(Layering 分层、Pipe/Filter 管道或过滤器)、设计模式如对象池 Object Pool、缓冲池 Cache 等)、编程模式(比如 Copy-on-Write)。掌握这些模式 之后,就会对系统的整体结构有很好的把握。学术上倾向于一个系统完全由各种模 式组合而成。 学习语言最好的方法就是实践。在一般教科书上的例子并不能算是实践,只能算是 掌握了语言的特性。而提倡做实际的 Project 也不是太好,因为还没有熟练的能力去 综合各种技术,这样只能是自己越来越迷糊。笔者认为比较好的方法是找一些经典 的例子,对其进行进一步的修改。通过修改,找出觉得可以提高性能的地方,加上 自己的设计,这样读者才能真正地感到有所收获。
    1.4 什么是面向对象的程序设计
    面向对象的程序设计有很多种,除了 Java,还有很多编程语言,例如大家熟悉的 VB (Visual Basic)、PowerBuilder 等。本节将详细介绍面向对象的一些特征和概念。
    1.4.1 什么是面向对象
    面向对象程序的开发需要考虑多个对象及其相互间的关系。下面实例就是由类 Max 完 成求最大值的功能。面向对象的另外一个好处是实现代码的重复使用,如果其他程序需要最 大值的功能,只要通过类 Max 的对象就可以达到目的。而面向过程的程序设计中,把求最 大值的算法都实现在该代码段中,就无法再复用。 早期的编程语言如 Fortran、C 基本上都是面向过程的语言,其编程的主要思路专注于 算法的实现,例如下面是一个面向过程的求正整数最大值的程序:
    ///最大值 maxSoFar 的初始值为 0,price 是输入的值 ///while 循环输入 price 的值 7
    ///输入的值 price 大于最大值,则 maxSoFar 的值为 price 的值 ///继续输入 price ///把字符串 input 转换成整数 ///打印最大值 maxSoFar int maxSoFar=0,price=1; while(price>0) { if(price>maxSoFar) maxSoFar=price; String input=JoptionPane.showInputDialog("Enter the next price"); price=Double.parseDouble(input); } System.out.println("The maximum is "+maxSoFar); }
    该程序段主要实现了求最大值的算法,但如果考虑用面向对象的编程,可以使用另外一 种方式:
    ///max1 是类 ///对象 max1 ///对象 max1 ///对象 max1 Max 调用 调用 调用 的一个对象 updateMax 方法,更新最大值 getPrice 获得下一个 price 的值 getMax 方法获得最大值,并打印出来
    while(price>0) { max1.updateMax(price); price=max1.getPrice(); System.out.println("The maximum is "+max1.getMax()); }
    1.4.2 模型分析:造房子
    面向对象的程序设计其实就像是造房子,每一块砖瓦和木材都可以看成是一个对象,当 这个房子被拆掉后,每一块砖瓦还可以拿来重新使用。也就是说,如果需要更改程序,前面 设计的有些类,仍然可以被再次使用。 而编写程序时,也可以将某些实现方法或某些类型设计成一个类,然后,在这些类中构 造一些对象。在程序需要调用这些对象时,就调用它。这样,对于一个程序来说,不会牵一 发而动全身。如果对象中有些变化,只需要改变这个类就可以,整个程序不需要经过大的改 变,其原理如图 1.6 所示。
    如果新房子需 要的这些材料 就无需重新购 买了 老房子 房子拆了,新房子 也可以用这些材料 搭建
    红砖
    黑瓦
    木材
    老房子是由这 些材料组成的 老房子
    图 1.6
    造房子模型原理图
    所以,面向对象其实就是将每一个事物看作是一个对象,而这些对象可以被反复调用。 当做另一件事情时,如果用到这个对象,就可以直接调用。
    8
    1.4.3 设计面向对象程序的思路
    纯粹的面向对象程序设计方法如下。 所有的东西都是对象,可以将对象想象成一种新型变量,它保存着数据,而且还可 以对自身数据进行操作。例如在上面的例子中,类 Max 中保留着数据的最大值, 同时还有方法 updateMax,它根据新加入的 price 值产生新的最大值,另外,还有 getMax 方法返回数据的最大值。 程序是一大堆对象的组合,通过消息传递,各对象知道自己应该做什么。如果需要 让对象做些事情,则需向该对象发送一条消息。具体来说,可以将消息想象成一个 调用请求,它调用的是从属于目标对象的一个方法。 每个对象都有自己的存储空间,可容纳其他对象,或者说通过封装现有的对象产生 新型对象。尽管对象的概念非常简单,但经过封装后,却可以在程序中达到任意高 的复杂程度。 每个对象都属于某个类,每个对象都是某个“类”的一个“实例”。
    1.4.4 设计面向对象程序的技巧
    下面主要介绍面向对象编程的一些小技巧。 要学会如何抽象实际生活中的事物为一个类。 学会如何将类中各种各样的概念运用到设计中去。 要学会将整个程序模块化。 要学尽量减少类与类之间的联系,防止一变都变的现象发生。
    1.4.5 面向对象与面向过程设计的不同
    本节通过介绍两种语言不同的设计原理,让读者学习如何设计更好的程序。
    1.
    过程式设计
    总的来说,过程式的程序设计是一种自上而下的设计方法,设计者用一个 main 函数,
    概括出整个应用程序需要做的事。main 函数由对一系列子函数的调用组成,对于 main 中的 每一个子函数,都又可以再被拆分成更小的函数。过程式设计通过重复这个过程,就可以完 成一个过程式的设计。过程式的特征是以函数为中心,用函数作为划分程序的基本单位。数 据在过程式设计中,往往处于从属的位置,其结构可以使用如图 1.7 所示的示意图来表示。
    每个功能中如果有不 同对象而运用相同的 函数,必须重新书写
    main主函数
    功能1
    功能2
    功能3
    函数1
    函 数4
    函数7
    函数2
    函 数5
    函数8
    函数3
    函 数6
    函数9
    9
    图 1.7 过程式设计的示意图
    过程式设计的优点是易于理解和掌握,这种逐步细化问题的设计方法,与大多数人的思 维方式比较接近。然而,过程式设计对于比较复杂的问题,或是在开发中需求变化比较多的 问题,往往显得力不从心。因为过程式的设计是自上而下,这就要求设计者,在开始时要对 需要解决的问题有一定的了解,然而在问题比较复杂的时候,要做到这一点会比较困难。当 开发需求变化的时候,以前对问题的理解会变得不再适用。 事实上,开发一个系统的过程,往往也是一个对系统不断了解和学习的过程,而过程式 的设计方法忽略了这一点。 在过程式设计的语言中,既有定义数据的元素(如 C 语言中的结构),也有定义操作 的元素(C 语言中的函数),这样做的结果是数据和操作分离,导致对一种数据的操作分布 在整个程序的各个角落。一个操作也可能会用到很多种数据,这种情况下,对数据和操作的 任何一部分进行修改,都会变得很困难。 在过程式设计中,设计者是在“main()”函数中,对整个系统进行一个概括的描述,再 以此为起点,逐步细化出整个应用程序。假设编写一个图形界面的计算器程序,和一个命令 行界面的计算器程序,可以想象这两个版本的“main()”函数会有多大的差异,由此衍生出 的程序也会迥然不同。而这两个版本的程序,本应该有很大部分可以共用,这也就是过程式 程序设计的一大弊病。
    2.
    面向对象设计
    面向对象是一种自下而上的程序设计方法,它不像过程式设计那样,一开始就要用
    “main”概括出整个程序。面向对象设计往往从问题的一部分着手,一点一点地构建出整个 程序。面向对象设计以数据为中心,类作为表现数据的工具,是划分程序的基本单位,而函 数在面向对象设计中,是类的接口。面向对象程序设计的模式如图 1.8 所示。
    方法1 方法2 方法3 方法4 方法5 方法6
    对象1 如果要针 对某个对 象实现某 个功能, 则调用某 个对象的 某个方 法,无需 重新书写 代码 功能1
    对象2
    对象3
    功能2
    功能3
    图 1.8
    面向对象设计的模式
    面向对象设计自下而上的特性,允许开发者从问题的局部开始,在开发过程中逐步加深 对系统的理解。这些新的理解以及开发中遇到的需求变化,都会再作用到系统开发本身,形 成一种螺旋式的开发方式。在这种开发方式中,对于已有的代码,常使用代码重构的技术, 从而体现系统的变化。 和函数相比,数据应该是程序中更稳定的部分。比如一个网上购物程序,无论怎么变化, 大概都会处理货物、客户这些数据对象。不过,从抽象的角度看,数据不是稳定的,如果考 虑这些数据对象的具体实现,它们甚至比函数还要不稳定。这是由于在一个数据对象中,增 减字段是程序开发中的常事。在以数据为中心构建程序的同时,需要一种手段来抽象地描述 数据,这种手段就是使用函数。 在面向对象设计中,类封装了数据,而类的成员函数作为其对外的接口,抽象地描述了
    10
    类。用类将数据和操作这些数据的函数放在一起,就是面向对象设计方法的本质。 在面向对象设计中,类之间的关系有两种:客户(Client)关系和继承(Inheritance)关 系。客户关系,表示一个类(Client)会使用到另一个类(Server),一般将这种关系中的 Client 类称为客户端,Server 类称为服务器。继承关系,表示一个类(Child)对另一个类 (Parent)的继承,一般将这种关系中的 Parent 类称为父类,Child 类称为子类。 面向对象设计的过程,就是将各个类按以上的两种关系组合在一起。这两种关系都非常 简单,组合在一起却能提供强大的设计能力。
    1.5 常见疑难解答
    1.5.1 初学者如何选择 Java 参考书(进行一下JAVA书籍推荐
    答:一个程序员如果没有半米多高的技术书堆,就没有人会认为他是真正的程序员。如 何从眼花缭乱的开发丛书中,找到适合自己的书,也是一门学问。 书评:比较成功的书籍在上市的前后,都会有名家拟写的书评出来,这些书评包括 对该书积极一面的评价,也有对书中内容的指摘,通过正反的对照,相信可以帮助 初学者做出购买的选择。 道听途说:口碑的重要性在现代社会中日益突出,如果真是一本好书,可能会在不 同场合,听到不同的人对它相同的赞许,这就是该书的价值了。 不要忘记旧书摊:这不是在鼓励怀旧,而事实是老书的质量和作者写书态度,与现 在相比,实在是严谨又端正的多,这就是老书的好处。对于多次印刷的书,也是值 得考虑购买的对象,多版本说明作者对该书的精益求精和新技术的更新,同时也反 映了该书在市场的受欢迎程度。 预先阅览:最好的当然是自己能够预先浏览,从朋友那里借也好,在网上看看电子 版也好,只要自己喜欢,或是觉得有收藏的价值,就去购买它。
    1.5.2. Java 应用在哪些方面
    答:Java 的应用可以简单分为以下几个方面: (1)Java 的桌面应用 桌面应用一般仅仅需要 JRE 的支持就足够了。 (2)Java Web 应用 Java 的 Web 应用至少需要安装 JDK 和一个 Web 容器(例如 Tomcat),以及一个多用 户数据库,Web 应用至少分为 3 层: Browser 层:浏览器显示用户页面。 Web 层:运行 Servlet/JSP。 DB 层:后端数据库,向 Java 程序提供数据访问服务。 (3)Java 企业级应用 企业级应用比较复杂,可以扩展到 n 层,最简单情况会分为 4 层: Browser 层:浏览器显示用户页面。 Client 层:Java 客户端图形程序(或者嵌入式设备的程序)直接和 Web 层或者 EJB
    11
    层交互。 Web 层:运行 Servlet/JSP。 EJB 层:运行 EJB,完成业务逻辑运算。 DB 层:后端数据库,向 Java 程序提供数据访问服务。 (4)Java 嵌入式应用 Java 嵌入式应用是一个方兴未艾的领域。嵌入式开发,需要从下载 J2ME 开发包。J2ME 包含了嵌入式设备专用虚拟机 KVM,和普通的 JDK 中包含的 JVM 有所不同,另外还需要 到特定的嵌入式厂商那里下载模拟器。   

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29130002/viewspace-768888/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: java学习笔记1
请登录后发表评论 登录
全部评论

注册时间:2013-08-20

  • 博文量
    6
  • 访问量
    6910