admin 管理员组文章数量: 1184232
2024年4月17日发(作者:spring aop原理面试必备)
Java程序语言和环境的设计目的是为了解决现代程序设计上的问题。它最初是一项较大规模『消
费者电子产品先进软件发展专案』的一部份,该专案目的是为了发展小型、可靠、可移植、分布式、
实时的嵌入式系统。我们在专案一开始原决定采用C++,不过碰到一些问题。最初,那只是编译器技
术方面的问题,可是后来我们遭遇更多困难,且发现最好的解决方式就是更换编程语言。
Java是一种简单、面向对象、分布式、解释、健 壮、安全、结构中立、可移植、高效能、多线
程、动态的语言。描述系统特性的方法之一就是把一堆高效能的术 语摆在一起。一如上述,我们也使
用一组标准的术语来描述Java。以下我们将解释这些术语在 Java上代表的意义,以及我们试图解决
的问题是哪些。『首先,我们要介绍阿基米得公司(Archimedes Inc.);它是我们为了方便说明Java功
能而虚构的一家软件公司。阿基米得从事有关基本物理教学 用途的软件开发,其软体设计目的是要与
使用者产生交互关系,不仅提供一如传统教科书的文字 与插图,而且也包括一组软件实验工作室,供
使用者进行实验和模拟真实世界的物理行为。例 如,它最基本的一项实验允许学生组成杠杆和滑轮,
然后观察它们的物理作用。在以下的论述 中,我们将借由这些实验和阿基米得设计师的旁白,以说明
Java语言概念。』
★ 简单
我们想建立一种真正简单的系统,它允许使用者 轻易地设计程序而不需要像现今的标准程序一
样接受深奥的训练。目前大多数程序设计师都采用 C语言,而面向对象程序设计师则大多使用C++。
因此,即使我们发现C++并非适合我们,我 们在Java的设计上还是尽可能让它与C++相近,以确
保系统更容易被理解。Java删除许多极少被使用、不容易理解和令人混淆 的C++功能,这些功能在
我们的使用经验中只能带来麻烦而非效益。删除的功能主要包括运算符 重载(operator
overloading)、多重继承(inheritance)以及广泛的自动强迫同型(automatic coercions); 重载是指
以一个辨识元参照多重项目,Java语言也提供重载函数,不过它重载的对象是方法(method)而非变
量或运算符。我们增加自动内存垃圾收集(auto garbage collection) 功能,因此简化Java程序工作,
不过同时也让系统变得稍复杂一些。储存管理(storage management)是使C与C++ 应用程序变得
1
复杂的常见的一项原因,即关于内存的分配与释放。Java语言的自动垃圾收集功能(周期性地 释放未
被使用的内存)不仅简化了程序设计工作,而且能大幅度减少小错误(bugs)数量。『阿基米得设计师们
原想花时间思考杠杆与滑轮原 理,但是后来却发现大部份时间都浪费在世俗的程序工作上。事实上,
他们的核心专业知识在于 教学而非程序设计。这些程序工作中最复杂的部份就是从他们那二万行程序
码中,找出那些地方 浪费了内存。』 确保Java『简单化』的另一特性在于『小而单 纯』。Java的目
标之一是要协助开发能独立地在小型机器上顺利执行的软件。Java的基本解释器 (interpreter)和对象
类(class)支援约占4OKB,而若增加基本的标准程序库和线程(thread)支援 (它 实际上是一整自含式
的微核心) 需增加175K。体积小对于在嵌入式的系统中的使用是很重要的,并因 此Java可以通过网
络轻易下载。
★ 面向对象
这是在业界被过度渲染的术语之一。不过,面向对象是一项很强的设计功能,因为它促成明确
的接口定义,并允许发展者建立可重复使用的『软 件IC』。简单的说,面向对象设计是一种以数据(对
象) 及其接口为重心的程序设计技术。我们以木匠比例;一位『面向对象』木匠最重视的是他想制作
的椅子,其次才是他用来制做椅子的工具。相反的,一位『非面向对象』木匠是把主要的心思放在工
具上。面向对象设计也是定义程序模块如何『即插即用』的机制。Java的面向对象设施实质上就是
C++,并包含 Objective C的一些延伸,以提供更有动态的解决方案。『阿基米得设计师在他们的模
拟式中设计许多 东西,包括绳子与橡皮筋等。他们初期的C版本产品是一个非常庞大的系统,因为
他们必须个别地设计软件来描述绳子和橡皮筋。当以面向对象方式重新设计应用程序时,他们发现可
以定义一个基本对象来代表绳子与橡皮筋两者之间的共同部份,然后绳子与橡皮筋即定义成基本对象
类型的子对象类。其后,当他们有需要增加链结时就能非常轻易地建立起来,因为他们可以将这些链
结建立在先前已设计妥当的对象之上,而不需要整个重新设计新对象模拟。』
★ 分布式
2
版权声明:本文标题:Java白皮书 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1713308637a628733.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论