【PHP开源代码栏目提醒】:本文主要为网学会员提供“[精品论文]外文翻译 JAVA技术及SSH框架和JSP技术的介绍 - 毕业设计”,希望对需要[精品论文]外文翻译 JAVA技术及SSH框架和JSP技术的介绍 - 毕业设计网友有所帮助,学习一下!
课件之家精心整理资料--欢迎你的欣赏 课件之家精心整理资料--欢迎你的欣赏
毕业设计
论文外文资料翻译 学 院 计算机工程学院 专业班级 学生姓名 学 号 指导教师 外文出处 外文 http://en.wikipedia.org/wiki/java_ programming_language 附 件 1.外文资料翻译译文 2.外文原文 指导教师评语 签名 年 月 日 课件之家精心整理资料--欢迎你的欣赏 课件之家精心整理资料--欢迎你的欣赏 Java技术及SSH框架和Jsp技术的介绍 Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言由当时任职太阳微系统的詹姆斯·高斯林James Gosling等人于1990年代初开发。
它最初被命名为Oak目标设置在家用电器等小型系统的编程语言来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。
由于这些智能化家电的市场需求没有预期的高Sun放弃了该项计划。
就在Oak几近失败之时随着互联网的发展Sun看到了Oak在计算机网络上的广阔应用前景于是改造了Oak在1995年5月以“Java”的名称正式发布了。
Java伴随着互联网的迅猛发展而发展逐渐成为重要的网络编程语言。
Java编程语言的风格十分接近C语言。
继承了C 语言面向对象技术的核心Java舍弃了C语言中容易引起错误的指针以引用取代、运算符重载operator overloading、多重继承以接口取代等特性增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间。
在Java SE 1.5版本中Java又引入了泛型编程Generic Programming、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
Java不同于一般的编译运行计算机语言和解释执行
计算机语言。
它首先将源
代码编译成字节码bytecode然后依赖各种不同平台上的虚拟机来解释执行字节码从而实现了“一次编译、到处执行”的跨平台特性。
不过这同时也在一定程度上降低了Java程序的运行效率。
但在J2SE1.4.2发布后Java的运行速度有了大幅提升。
与传统程序不同Sun公司在推出Java之际就将其作为一种开放的技术。
全球数以万计的Java开发公司被要求所设计的Java软件必须相互兼容。
“Java语言靠群体的力量而非公司的力量”是Sun公司的口号之一并获得了广大软件开发商的认同。
这与微软公司所倡导的注重精英和封闭式的模式完全不同。
Sun公司对Java编程语言的解释是Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。
Java的历史 DukeJava语言的吉祥物语言最开始只是太阳微系统Sun MicroSystems公司在1990年12月开始研究的一个内部项目。
太阳微系统公司的一个叫做帕特里克诺顿的工程师被公司自己开发的C和C语言编译器搞得焦头烂额因为其中的API极其难用。
帕特里克决定改用NeXT同时他也获得了研究公司的一个叫做“Stealth计划”的项目的机会。
“Stealth计划”后来改名为“Green计划”詹姆斯·高斯林和麦克舍林丹也加入了帕特里克的工作小组。
他们和其他几个工程师一起在加利福尼亚州门罗帕克市沙丘路的一个小工作课件之家精心整理资料--欢迎你的欣赏 课件之家精心整理资料--欢迎你的欣赏 室里面研究开发新技术瞄准下一代智能家电如微波炉的程序设计太阳公司预料未来科技将在家用电器领域大显身手。
团队最初考虑使用C语言但是很多成员包括太阳的首席科学家比尔乔伊发现C和可用的API在某些方面存在很大问题。
工作小组使用的是内嵌类型平台可以用的资源极其有限。
很多成员发现C太复杂以至很多开发者经常错误使用。
他们发现C缺少垃圾回收系统还有可移植的安全性、分布程序设计、和多运行续功能。
最后他们想要一种易于移植到各种设备上的平台。
根据可用的资金比尔乔伊决定开发一种集C语言和Mesa语言大成的新语言在一份
报告上乔伊把它叫做“未来”他提议太阳公司的工程师应该在C的基础上开发一种面向对象的环境。
最初高斯林试图修改和扩展C的功能他自己称这种新语言为C --但是后来他放弃了。
他将要创造出一种全新的语言被他命名为“Oak”橡树以他的办公室外的橡树命名。
就像很多开发新技术的秘密工程一样
工作小组没日没夜地工作到了1992年的夏天他们能够演示新平台的一部分了包括Green操作
系统Oak的程序设计语言类库及其硬件。
最初的尝试是面向一种类PDA设备被命名为Star7这种设备有鲜艳的图形界面和被称为“Duke”的智能代理来帮助用户。
1992年12月3日这台设备进行了展示。
同年11月Green计划被转化成了“FirstPerson有限公司”一个太阳公司的全资子公司团队也被重新安排到了帕洛阿尔托。
FirstPerson团队对建造一种高度交互的设备感兴趣当时代华纳发布了一个关于电视机顶盒的征求提议书时Request for proposalFirstPerson改变了他们的目标作为对征求意见书的响应 提出了一个机顶盒平台的提议。
但是有线电视业界觉得FirstPerson的平台给予用户过多的控制权因此FirstPerson的投标败给了SGI。
与3DO公司的另外一笔关于机顶盒的交易也没有成功由于他们的平台不能在电视工业产生任何效益公司被并回太阳公司。
Java和互联网1994年6月、7月间在经历了一场历时三天的脑力激荡的讨论后约翰·盖吉、詹姆斯·高斯林、比尔·乔伊、帕特里克·诺顿、韦恩·罗斯因和埃里克·斯库米团队决定再一次改变了努力的目标这次他们决定将该技术应用于万维网。
他们认为随着Mosaic浏览器的到来因特网正在向同样的高度互动的远景演变而这一远景正是他们在有线电视网中看到的。
作为原型帕特里克·诺顿写了一个小型万维网浏览器WebRunner后来改名为HotJava。
Java和“Java”由于商标
搜索显示Oak已被一家显卡制造商
注册。
于是同年Oak被改名为Java。
当使用十六进制编辑器打开由Java源
代码编译出的二进制文件.class文件的话最前面的32位将显示为CA FE BA BE即词组“CAFE BABE”咖啡屋宝贝。
编辑 Java和浏览器1994年10月HotJava和Java平台为公司高层进行
演示。
1994年Java 1.0a版本课件之家精心整理资料--欢迎你的欣赏 课件之家精心整理资料--欢迎你的欣赏 已经可以提供下载但是Java和HotJava浏览器的第一次公开发布却是在1995年3月23日SunWorld大会上进行的。
升阳公司的科学指导约翰·盖吉声明Java技术。
这个发布是与网景公司的执行副总裁马克·安德森的惊人发布一起进行的宣布网景将在其浏览器中包含对Java的支持。
1996年1月升阳公司成立了Java业务集团专门开发Java技术。
Java近况在流行几年之后Java在浏览器中的地位被逐步侵蚀。
它在简单交互性动画方面的用途已经完全被Adobe公司的Flash排挤2005年Java倾向只被用于雅虎游戏那样的更为复杂的应用程序。
Java同时遭受到来自微软的反对他们决定在新版本的Internet Explorer和Windows中不再附带Java平台。
与此相反。
在万维网的服务器端和手持设备上Java变得更加流行。
很多网站在后端使用JSP和其他的Java技术。
在桌面系统上独立的Java程序还是相对少见这是因为Java平台的运行开销较大而许多人的电脑上没有安装Java由于网络带宽在以前较小下载Java曾经是个耗时的事情。
但是随着计算机计算能力、
网络带宽在10年中取得了很大的进步同时虚拟机和编译器的质量得到了提高许多应用程序得到了广泛的使用包括
开源软件NetBeans和Eclipse等软件开发工具、JEdit、Azureus BitTorrent客户端、JNode操作系统、Apache软件基金会的Ant、Derby、Hadoop、Jakarta、POI和Tomcat、JBoss和GlassFish应用服务器商用软件EIOffice永中Office、纯Java 3D游戏合金战士Chrome、IBM Websphere、ColdFusion和WebLogic。
目前Java提供以下三个版本Java Platform Enterprise EditionJava EEJava平台企业版、Java Platform Standard EditionJava SEJava平台标准版、Java Platform Micro EditionJava MEJava平台微型版Java Platform Card Edition。
Java开放源
代码项目2006年SUN在JavaOne公布Java 开放源
代码项目并推出OpenJDK计划。
2 Java虚拟机、Java编译器和Java类库以GNU通用公共许可证公开。
Java语言之所以被开发是要达到以下五个目的应当使用面向对象程序设计方
法学、应当允许同一程序在不同的计算机平台执行、应当包括内建的对计算机网络的支持、应当被
设计成安全地执行远端
代码、应当易于使用并借鉴以前那些面向对象语言如C的长处。
Java技术主要分成几个部分Java语言、运行环境JVM、类库。
一般情况下说
Java时并不区分指的是哪个部分。
Java在1.5版本时做了重大改变太阳公司并1.5版本重命名为Java 5.0。
面向对象Java的特点之一就是面向对象是程序设计方法的一种。
“面向对象程序设计语言”的核心之一就是开发者在设计软件的时候可以使用自定义的类型和关联操作。
代码和数据的实际集合体叫做“对象”。
一个对象可以想像成绑定了很多“行为
代码”和“状态数据”的物体。
对于数据结构的改变需要和
代码进行通信然后操作反之亦然。
面向对象设计让课件之家精心整理资料--欢迎你的欣赏
课件之家精心整理资料--欢迎你的欣赏 大型软件工程的计划和设计变得更容易管理能增强工程的健康度减少失败工程的数量。
面向对象设计另外一个目标就是能产生很多的有关联的类可以让软件的再开发变得简单。
举例来说很多软件工程都有同样的功能尤其是很多应用了同一原理组织的
软件工程。
软件的二次开发者想自己为软件开发插件以增强功能的时候绝对不想看到混乱的开发
代码和管理计划。
面向对象的目的就是不生产难懂且难以使用的
代码为软件各个功能群之间创建有效的
通信通道。
很多
开源软件社区正在计划给软件作者提供更多的类来让软件的二次开发变得简便。
跨平台性Java语言的第二个特性就是跨平台性也就是说使用Java语言编写的程序可以在编译后不用经过任何更改就能在任何硬件设备条件下运行。
这个特性经常被称为“一次编译到处运行”。
执行Java应用程序必须安装Java Runtime EnvironmentJREJRE内部有一个Java虚拟机Java Virtual MachineJVM以及一些标准的类库Class Library。
通过JVM的虚拟机才能在电脑系统执行Java应用程序Java Application这与.Net Framework的情况一样所以电脑上没有安装JVM那么这些程序将不能够执行。
实现跨平台性的方法是大多数编译器在进行Java语言程序的编码时候会生成一个用字节码Bytecode写成的“半成品”这个“半成品”会在Java虚拟机解释层的帮助下运行虚拟机会把它转换成当前所处硬件平台的原始
代码。
之后Java虚拟机会打开标准库进行数据图片、线程和网络的访问工作。
主要注意的是尽管已经存在一个进行
代码翻译的解释层有些时候Java的字节码
代码还是会被JIT编译器进行二次编译。
有些编译器比如GCJ可以自动生成原始
代码而不需要解释层。
但是这些编译器所生成的
代码只能应用于特定平台。
并且GCJ目前只支持部分的Java API。
甲骨文公司对于Java的许可是“全兼容的”这也导致了微软和升阳关于微软的程序不支持RMI和JNI接口、并且增加特性为己所用的法律争端。
升阳最终赢得了官司获得了大约两千万美元的赔偿法院强制要求微软执行升阳公司关于Java的许可要求。
作为回应微软不再在Windows系统中捆绑Java最新的Windows版本Windows Vista和Internet Explorer 7.0版本也不再提供对于Java应用程序和控件的支持。
但是升阳公司和其他使用Java运行时系统的公司对于微软的操作对用户提供无偿的第三方插件和程序支持。
Java语言使用解释层最初是为了轻巧性。
所以这些程序的运行效率比C语言和C要低很多用户也对此颇有微词。
很多最近的调查显示Java的程序运行速度比几年前要高出许多有些同样功能的程序的效率甚至超过了C和C语言编写的程序。
Java语言在最开始应用的时候是没有解释层的所有需要编译的
代码都直接转换成机器的原始
代码。
这样做的后果就是获得了最佳的性能但是程序臃肿异常。
从JIT技术开始Java的程序都经过一次转换之后才变成机器码。
课件之家精心整理资料--欢迎你的欣赏 课件之家精心整理资料--欢迎你的欣赏 很多老牌的第三方虚拟机都使用一种叫做“动态编译”的技术也就是说虚拟机实时监测和分析程序的运行行为同时选择性地对程序所需要的部分进行编译和优化。
所有这些技术都改善了
代码的运行速度但是又不会让程序的体积变得失常。
程序的轻便性事实上是软件编写很难达到的一个目标Java虽然成功地实现了“一次编译到处运行”但是由于平台和平台之间的差异所编写的程序在转换
代码的时候难免会出现微小的、不可察觉的错误和意外。
有些程序员对此非常头疼他们嘲笑Java的程序不是“一次编译到处运行”而是“一次编译到处调试”。
平台无关性让Java在服务器端软件领域非常成功。
很多服务器端软件都使用Java或相关技术创建。
Java的性能和复杂性 关于Java的批评Java试图通过新的方式解决软件编写的复杂性。
很多人认为Java语言做到了它承诺的一切。
但是Java并不是一门完美的语言。
整体性问题并不是所有的工程和环境需要企业级别的复杂性比如一个简单的个人网站或者独自编程的
程序师所写的程序。
这些程序师会发现Java的复杂管理对于自己要做的程序来说过于强大了。
一些人觉得Java在面向对象上面做的没有Ruby和Smalltalk纯粹。
但是最新出现的用Java实现的语言Groovy解决了这些问题。
作为一种已经创建的新技术Java显然综合了很多语言的特性比如C、C语言、Python等等。
一些对于Java的评论认为Java的不变性在动摇。
语言问题有些程序师不喜欢原始类型primitive type和类class的分离尤其是那些曾经使用过Smalltalk和Ruby的程序师。
Java的
代码相对于其他的
代码来说过于冗长这与它的轻便化声明相违背。
Java是一种单层继承的语言。
这也导致了程序师在试图使用多重继承时候的不便而很多语言都可以使用这个特性。
但是Java可以使用接口类把多重继承可能导致的风险减少到最小。
Java不支持运算符重载这是为了防止运算符重载使得
代码的功能变得不清晰。
但是用Java实现的语言Groovy可以进行运算符重载。
过去Java对于文本的操作和其他语言比如Perl和
PHP相比差的较多但Java在1.4版本时候引入了正则表达式。
类库
问题使用Swing平台编写的带有GUI图形用户接口的程序和其他原始程序非常不同。
选用AWT工具包编写程序的程序师看到的都是原始接口而且也无法获得先进的GUI编程支持如果使用的话就要提供每个平台上面所需的API这将是一项庞大的工程。
Swing则是完全用Java语言所写的程序避免了接口元素重复的问题只使用所有平台都支持的最基本的绘图机制。
但是很多用户不知道如何在Java风格和Windows风格之间进行转换课件之家精心整理资料--欢迎你的欣赏 课件之家精心整理资料--欢迎你的欣赏 结果造成了Java程序的接口在很多程序中非常特殊。
苹果电脑已经提供了优化过的Java运行时程序包含了Mac OS X的经典Aqua接口风格。
性能问题由于Java编译器和虚拟机的不同对Java
代码的性能影响比语言本身的影响大的多所以统一讨论Java的程序的性能经常是有误导性的。
据IBM的数据在同样的硬件上2001年时的IBM JDK版本的性能是1996年的JDK版本的十倍左右。
见IBM东京研究院的数据 http://www.is.titech.ac.jp/ppl2004/proceedings/ishizaki_slides.pdf 而即使是在同一时期不同公司的JDK和JRE的性能也不一样比如SUN、IBM、BEA等公司都有自己开发的JDK和JRE。
Java语言的一些特性不可避免的有额外的性能代价例如数组范围检查、运行时类型检查等等。
Java程序的性能还会因为不同的动态复杂性和垃圾处理机制使用的多少而各有不同。
如果JVM的实现比较优化的话那么这些功能甚至可以增加存储器分配的性能。
这和总是使用STL或者托管C的程序的情况类似。
尽管如此仍然有许多人认为Java的性能低。
这部分归因于Sun公司最初的JVM实现使用未优化的解释机制来运行字节码。
一些新版本的JVM使用Just-In-TimeJIT编译器在加载字节码的时候将其编译成针对运行环境的本地
代码来实现一些本地编译器的优化特性。
Just-In-Time机制和本地编译的性能比较仍旧是一个有争议的话题。
JIT编译需要很多时间对于运行时间不长或者
代码很多的大型程序并不适宜。
但是不算JIT编译阶段的话程序的运行性能在很多JVM下可以和本地编译的程序一争短长甚至在一些计算比较密集的数值计算领域也是这样。
目前Java已经使用更先进的HotSpot技术来代替JIT技术Java的性能有了更进一步的提升。
另外在使用-server选项运行java程序时也可以对java进行更深入的优化比如在运行时将调用较多的方法内联inline到程序中来提高运行速度这就是所谓的“动态优化”而本地编译器是无法做到这一点的这也是一些java
代码比对应用C/C等语言编写的本地
代码运行的更快的原因之一。
微软的.NET平台也使用JIT编译器所以也有类似问题。
Java的设计目的主要是安全性和可携性所以对于一些特性比如对硬件架构和存储器地址访问的直接访问都被去除了。
如果需要间接调用这些底层功能的话就需要使用JNIJava本地接口来调用本地
代码而间接访问意味着频繁调用这些特性时性能损失会很大微软的.
NET平台也有这样的问题。
所以到目前为止性能敏感的
代码例如驱动程序和3D视频游戏还是大多使用本地编译甚至直接以不直接支持面向对象的C语言或机器码编写。
但最近已经有了许多用纯Java编写的3D游戏其效果与用C语言编写的不相上下例如“合金战士”英文名Chrome。
这主要是因为新版的Java 3D课件之家精心整理资料--欢迎你的欣赏 课件之家精心整理资料--欢迎你的欣赏 技术已经能像C一样调用硬件加速也就是使用显卡来加速无论是C还是Java语言写的3D游戏都是使用显卡及GPU来处理从而使得CPU可以专注于其他方面的工作。
垃圾回收机制 自动垃圾回收Garbage CollectionC语言被用户诟病的原因之一是大多数C编译器不支持垃圾收集机制。
通常使用C编程的时候程序员于程序中初始化对象时会在主机存储器堆栈上分配一块存储器与地址当不需要此对象时进行解构或者删除的时候再释放分配的存储器地址。
如果对象是在堆栈上分配的而程序员又忘记进行删除那么就会造成存储器泄漏Memory Leak。
长此以往程序运行的时候可能会生成很多不清除的垃圾浪费了不必要的存储器空间。
因此如果同一存储器地址被删除两次的话程序会变得不稳定甚至崩溃。
因此有经验的C程序员都会在删除之后将指针重置为0然后在删除之前先判断指针是否为0。
C中也可以使用“智能指针”Smart Pointer或者使用C托管扩展编译器的方法来实现自动化存储器释放智能指针可以在标准类库中找到而C托管扩展被微软的Visual C 7.0及以上版本所支持。
智能指针的优点是不需引入缓慢的垃圾收集机制而且可以不考虑线程安全的问题但是缺点是如果不善使用智能指针的话性能有可能不如垃圾收集机制而且不断地分配和释放存储器可能造成存储器碎片需要手动对堆进行
压缩。
除此之外由于智能指针是一个基于模板的功能所以没有经验的程序员在需要使用多态特性进行自动清理时也可能束手无策。
Java语言则不同上述的情况被自动垃圾收集功能自动处理。
对象的创建和放置都是在存储器堆栈上面进行的。
当一个对象没有任何参考的时候Java的自动垃圾收集机制就发挥作用自动删除这个对象所占用的空间释放存储器以避免存储器泄漏。
注意程序员不需要修改finalize方法自动垃圾收集也会发生作用。
但是存储器泄漏并不是就此避免了当程序员疏忽大意地忘记解除一个对象不应该有的参考的时候存储器泄漏仍然不可避免例如以下的程序 String str quot这是一段字串quot System.out.printlns forint i System.out.printlnquotHallo Wouldquoti 在循环开始之前字符串str已经不会再用到了但未将这个参考指向null因此字符串str无法被gc所回收。
这种存储器泄漏必须等到一个函数退出之后才会被系统取回自不过发生的机率要比不激活垃圾收集机制的C程序少课件之家精心整理资料--欢迎你的欣赏 课件之家精心整理.