




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java的起源 对于计算机语言的发展史 业界一般认为 B语言导致了C语言的诞生 C语言演变出了C 语言 而C 语言将让位于Java语言 要想更好地了解Java语言 就必须了解它产生的原因 推动它发展的动力 以及它对其他语言的继承 计算机语言的革新和发展需要2个基本因素的驱动 适应正在变化的环境和需求实现编程艺术的完善与提高Java也正是在这两个因素的驱动下产生的 Java的由来Java总是和C 联系在一起 而C 则是从C语言派生而来的 所以Java语言继承了这两种语言的大部分特性 每一次语言设计的革新都是因为先前的语言不能解决目前遇到的基本问题而引起 Java也不例外 现代的编程语言的诞生 C语言C语言的产生震撼了整个计算机界 它从根本上改变了编程的方法和思路当设计一种计算机语言时 经常要从以下几方面进行权衡 易用性与功能 安全性和效率性 稳定性和可扩展性 C语言出现以前 程序员们不得不经常在有优点但在某些方面又有欠缺的语言之间做出选择 例如 BASIC虽然容易学习 但功能不够强大 并且谈不上结构化 这使它应用到大程序的有效性受到怀疑 汇编语言虽能写出高效率的程序 但是学习或有效地使用它却是不容易的 而且 调试汇编程序也相当困难 因此 在C语言产生以前 没有任何一种语言能完全满足人们的需要 但人们对这样一种语言的需要却是迫切的 由BrianKernighan和DennisRitchie编写的 TheCProgrammingLanguage Prentice Hall 1978 被认为是事实上的C语言标准 该书认为C只是支持UNIX操作系统的一种语言 1989年12月 美国国家标准化组织 ANSI 制定了C语言的标准 C语言被正式标准化 许多人认为C语言的产生标志着现代计算机语言时代的开始 它成功地综合处理了长期困扰早期语言的矛盾属性 C语言是功能强大 高效的结构化语言 简单易学 而且它还包括一个无形的方面 它是程序员自己的语言 正如你将看到的 Java继承了这个思想 对C 的需要在20世纪70年代末和80年代初 C成为了主流的计算机编程语言 至今仍被广泛使用 你也许会问 既然C是一种成功且有用的语言 为什么还需要新的计算机语言 答案是复杂性 complexity 程序越来越复杂这一事实贯穿编程语言的历史 C 正是适应了这一需求 20世纪60年代提出了结构化编程方法 当一个工程项目达到一定规模后 即使使用结构化编程方法 编程人员也无法对它的复杂性进行有效管理 20世纪80年代初期 许多工程项目的复杂性都超过了结构化方法的极限 为解决这个问题 面向对象编程 object orientedprogramming OOP 新方法诞生了 1979年 当BjarneStroustrup在新泽西州的MurrayHill实验室工作时 发明了C C 的发明不是企图创造一种全新的编程语言 而是对一个已经高度成功的语言的改进 C 在1997年11月被标准化 目前的标准是ANSI ISO Java出现的时机已经到来在20世纪80年代末和90年代初 使用面向对象编程的C 语言占主导地位 的确 有一段时间程序员似乎都认为已经找到了一种完美的语言 在随后的几年里 万维网 WWW 和Internet达到临界状态 这个事件促成编程的另一场革命 Java的产生Java是由JamesGosling PatrickNaughton ChrisWarth EdFrank和MikeSheridan于1991年在SunMicrosystems公司设计出来的 该语言开始名叫 Oak 于1995年更名为 Java Java最初推动力并不是因特网 而是源于对独立于平台语言的需要 这种语言可创建能够嵌入微波炉 遥控器等各种家用电器设备的软件 用作控制器的CPU芯片是多种多样的 但C和C 以及其他绝大多数语言的缺点是只能对特定目标进行编译 尽管为任何类型的CPU芯片编译C 程序是可能的 但这样做需要一个完整的以该CPU为目标的C 编译器 而创建编译器是一项既耗资巨大又耗时较长的工作 因此需要一种简单且经济的解决方案 在Java的一些细节被设计出来同时 第二个并且也是最重要的因素出现了 这第二个因素当然就是万维网 WWW 因为万维网也需要可移植的程序 毕竟 因特网由不同的 分布式的系统组成 其中包括各种类型的计算机 操作系统和CPU 尽管许多类型的平台都可以与因特网连接 但用户仍希望他们能够运行同样的程序 曾经是一个令人烦恼却无需优先考虑的问题现在变成了急需解决的问题 中立体系结构编程语言的需要是促使Java诞生的源动力 而Internet却最终导致了Java的成功 Java的大部分特性是从C和C 中继承的 也是一个程序员自己的语言 其次 Java给了编程人员完全的控制权 换一种说法 Java并不是训练新手的语言 而是供专业编程人员使用的语言 尽管Java受到C 的影响 但它并不是C 的增强版 另外一点是 Java并不是用来取代C 的 设计Java是为了解决某些特定的问题 而设计C 是为了解决另外一类完全不同的问题 两者将长时间共存 Java的魔力 字节码Java解决上述两个问题 安全性和可移植性的关键在于Java编译器的输出并不是可执行的代码 而是字节码 bytecode 字节码是一套设计用来在Java运行时系统下执行的高度优化的指令集 该Java运行时系统称为Java虚拟机 JavaVirtualMachine JVM 在其标准形式下 JVM就是一个字节码解释器 将一个Java程序翻译成字节码 有助于它更容易地在一个大范围的环境下运行程序 原因非常直接 只要在各种平台上都实现Java虚拟机就可以了 每个Java程序的运行都在Java虚拟机的控制之下 Java虚拟机可以包含这个程序并且能阻止它在系统之外产生副作用 被解释的程序的运行速度通常确实会比同一个程序被编译为可执行代码的运行速度慢一些 但是对Java来说 这两者之间的差别不太大 使用字节码能够使Java运行时系统的程序执行速度比你想象的快得多 尽管Java被设计为解释执行的程序 但是在技术上Java并不妨碍动态将字节码编译为本机代码 SUN公司在Java2发行版中提供了一个字节码编译器 JIT JustInTime 即时 JIT是Java虚拟机的一部分 它根据需要 一部分一部分地将字节码实时编译为可执行代码 它不能将整个Java程序一次性全部编译为可执行的代码 因为Java要执行各种检查 而这些检查只有在运行时才执行 Java常用语Java设计开发小组总结了其他关键因素 称其为Java专门用语 如下 简单 Simple 安全 Secure 可移植 Portable 面向对象 Object oriented 健壮 Robust 多线程 Multithreaded 体系结构中立 Architecture neutral 解释执行 Interpreted 高性能 Highperformance 分布式 Distributed 动态 Dynamic 简单如果你是一个经验丰富的C 程序员 那就最好了 因为Java继承C C 语法和许多C 面向对象的特性 大多数程序员在学习Java时都不会觉得太难 另外 C 中许多容易混淆的概念 或者被Java弃之不用了 或者以一种更清楚 更易理解的方式实现 面向对象尽管受到其前辈的影响 但Java没被设计成兼容其他语言源代码的程序 这允许Java开发组自由地从零开始 这样做的一个结果是 Java语言可以更直接 更易用 更实际的接近对象 Java的对象模型既简单又容易扩展 对于简单数据类型 例如整数 它保持了高性能 但不是对象 健壮为了获得可靠性 Java在一些关键的地方限制你 强迫你在程序开发过程中及早发现错误 同时 Java使你不必担心引起编程错误的许多最常见的问题 因为Java是一种严格的类型语言 它不但在编译时检查代码 而且在运行时也检查代码 让我们考虑使程序失败的两个主要原因 内存管理错误和误操作引起的异常情况 例如 在C C 中 程序员必须手工地分配并且释放所有的动态内存 这有时会导致问题 因为程序员可能忘记释放原来分配的内存 或者释放了其他部分程序正在使用的内存 Java通过替你管理内存分配和释放 可以从根本上消除这些问题 事实上 释放内存是完全自动的 因为Java为闲置的对象提供内存垃圾自动收集 多线程Java支持多线程编程 因而你用Java编写的应用程序可以同时执行多个任务 Java运行时系统在多线程同步方面具有成熟的解决方案 这使你能够创建出运行平稳的交互式系统 结构中立Java设计者考虑的一个主要问题是程序代码的持久性和可移植性 程序员面临的一个主要问题是 不能保证今天编写的程序明天能否在同一台机器上顺利运行 操作系统升级 处理器升级以及核心系统资源的变化 都可能导致程序无法继续运行 Java设计者的目标是 只要写一次程序 在任何地方 任何时间该程序永远都能运行 在很大程度上 Java实现了这个目标 解释性和高性能其他解释执行的语言系统 如BASIC Tcl PERL都有无法克服的性能缺陷 然而 Java却可以在非常低档的CPU上顺利运行 前面已解释过 Java确实是一种解释性语言 Java的字节码经过仔细设计 因而很容易便能使用JIT编译技术将字节码直接转换成高性能的本机代码 分布式Java发布了叫做远程方法调用 RemoteMethodInvocation RMI 的软件包 这个特性使客户机 服务器编程达到了无与伦比的抽象级 动态Java程序带有多种的运行时类型信息 用于在运行时校验和解决对象访问问题 这使得在一种安全 有效的方式下动态地连接代码成为可能 对小应用程序环境的健壮性也十分重要 因为在运行时系统中 字节码内的小段程序可以动态地被更新 继续革命在Java1 0发布不久 Java的设计者已经创造出了Java1 1 Java1 1增加了许多新的库元素 并且重新设置了1 0版中库的许多特性 它也放弃了原来由Java1 0定义的若干过时的特征 Java的第二个主要发布版本是Java2 Java2是一个分水岭 它标志这个快速演变语言 现代时代 的开始 Java2第一版本的版本号是1 2 Java2增加了很多对新特性的支持 例如Swing和类集框架 并且它提高了Java虚拟机和各种编程工具的性能 Java的第三个版本是Java2 1 3版 这个版本是对Java2原来版本的第一次最主要的升级 该版本增强了Java大部分现有的功能 Java不是增强的HTML在继续讲解前 有必要澄清一个普遍的误解 因为Java被用来创建网页 所以初学者有时将J
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 品质意识考试试题及答案
- 渠道维护工(技师)技能鉴定理论考试题库(含答案)
- 2025年铆工理论考试题库(含答案)
- 催化汽油吸附脱硫装置操作工操作考核试卷及答案
- 平板显示膜生产工技术考核试卷及答案
- 2025年公路工程试验检测师资格考试(公共基础)综合能力测试题及答案(洛阳)
- 多重耐药菌预防与控制标准操作规程试题含答案
- 职业病诊断医师考试(职业性尘肺病)复习题及答案(清远2025年)
- 刀具考试试题及答案
- 2025年食品安全管理员考试参考题目及答案(一)
- GB/T 45696-2025公共汽电车场站分类及等级划分
- (2025)中国石油化工集团中石化招聘笔试试题及答案
- 以桂为墨:高中桂花文化校本课程的开发与实践探索
- 2025年计算机二级JAVA考试中的真题练习试题及答案
- 游戏俱乐部投资合同协议书
- 数字政府效能评估体系-洞察阐释
- 三级老年人能力评估师试题(附答案)
- 2025年电力机车钳工(高级)职业技能鉴定理论考试题库(含答案)
- 国家开放大学《政府经济学》形考任务1-4答案
- 智联招聘银行试题及答案
- 珠宝购销合同书范本珠宝购销合同书5篇
评论
0/150
提交评论