Java技术及SSH框架毕业论文中英文对照资料外文翻译文献.docx
《Java技术及SSH框架毕业论文中英文对照资料外文翻译文献.docx》由会员分享,可在线阅读,更多相关《Java技术及SSH框架毕业论文中英文对照资料外文翻译文献.docx(36页珍藏版)》请在冰豆网上搜索。
Java技术及SSH框架毕业论文中英文对照资料外文翻译文献
毕业论文外文资料翻译
Java技术及SSH框架和Jsp技术的介绍
Java,是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由当时任职太阳微系统的詹姆斯·高斯林(JamesGosling)等人于1990年代初开发。
它最初被命名为Oak,目标设置在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。
由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。
就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,在1995年5月以“Java”的名称正式发布了。
Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
Java编程语言的风格十分接近C++语言。
继承了C++语言面向对象技术的核心,Java舍弃了C++语言中容易引起错误的指针(以引用取代)、运算符重载(operatoroverloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间。
在JavaSE1.5版本中Java又引入了泛型编程(GenericProgramming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
Java不同于一般的编译运行计算机语言和解释执行计算机语言。
它首先将源代码编译成字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。
不过,这同时也在一定程度上降低了Java程序的运行效率。
但在J2SE1.4.2发布后,Java的运行速度有了大幅提升。
与传统程序不同Sun公司在推出Java之际就将其作为一种开放的技术。
全球数以万计的Java开发公司被要求所设计的Java软件必须相互兼容。
“Java语言靠群体的力量而非公司的力量”是Sun公司的口号之一,并获得了广大软件开发商的认同。
这与微软公司所倡导的注重精英和封闭式的模式完全不同。
Sun公司对Java编程语言的解释是:
Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。
Java的历史
Duke,Java语言的吉祥物语言最开始只是太阳微系统(SunMicroSystems)公司在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团队对建造一种高度交互的设备感兴趣,当时代华纳发布了一个关于电视机顶盒的征求提议书时(Requestforproposal),FirstPerson改变了他们的目标,作为对征求意见书的响应,提出了一个机顶盒平台的提议。
但是有线电视业界觉得FirstPerson的平台给予用户过多的控制权,因此FirstPerson的投标败给了SGI。
与3DO公司的另外一笔关于机顶盒的交易也没有成功,由于他们的平台不能在电视工业产生任何效益,公司被并回太阳公司。
Java和互联网1994年6月、7月间,在经历了一场历时三天的脑力激荡的讨论后,约翰·盖吉、詹姆斯·高斯林、比尔·乔伊、帕特里克·诺顿、韦恩·罗斯因和埃里克·斯库米,团队决定再一次改变了努力的目标,这次他们决定将该技术应用于万维网。
他们认为随着Mosaic浏览器的到来,因特网正在向同样的高度互动的远景演变,而这一远景正是他们在有线电视网中看到的。
作为原型,帕特里克·诺顿写了一个小型万维网浏览器,WebRunner,后来改名为HotJava。
Java和“Java”由于商标搜索显示,Oak已被一家显卡制造商注册。
于是同年,Oak被改名为Java。
当使用十六进制编辑器打开由Java源代码编译出的二进制文件(.class文件)的话,最前面的32位将显示为CAFEBABE,即词组“CAFEBABE”(咖啡屋宝贝)。
[编辑]Java和浏览器1994年10月,HotJava和Java平台为公司高层进行演示。
1994年,Java1.0a版本已经可以提供下载,但是Java和HotJava浏览器的第一次公开发布却是在1995年3月23日SunWorld大会上进行的。
升阳公司的科学指导约翰·盖吉声明Java技术。
这个发布是与网景公司的执行副总裁马克·安德森的惊人发布一起进行的,宣布网景将在其浏览器中包含对Java的支持。
1996年1月,升阳公司成立了Java业务集团,专门开发Java技术。
Java近况在流行几年之后,Java在浏览器中的地位被逐步侵蚀。
它在简单交互性动画方面的用途已经完全被Adobe公司的Flash排挤,2005年Java倾向只被用于雅虎游戏那样的更为复杂的应用程序。
Java同时遭受到来自微软的反对,他们决定在新版本的InternetExplorer和Windows中不再附带Java平台。
与此相反。
在万维网的服务器端和手持设备上,Java变得更加流行。
很多网站在后端使用JSP和其他的Java技术。
在桌面系统上,独立的Java程序还是相对少见,这是因为Java平台的运行开销较大,而许多人的电脑上没有安装Java,由于网络带宽在以前较小,下载Java曾经是个耗时的事情。
但是随着计算机计算能力、网络带宽在10年中取得了很大的进步,同时虚拟机和编译器的质量得到了提高,许多应用程序得到了广泛的使用,包括:
开源软件:
NetBeans和Eclipse等软件开发工具、JEdit、AzureusBitTorrent客户端、JNode操作系统、Apache软件基金会的Ant、Derby、Hadoop、Jakarta、POI和Tomcat、JBoss和GlassFish应用服务器;商用软件:
EIOffice(永中Office)、纯Java3D游戏合金战士Chrome、IBMWebsphere、ColdFusion和WebLogic。
目前Java提供以下三个版本:
JavaPlatform,EnterpriseEdition(JavaEE:
Java平台企业版)、JavaPlatform,StandardEdition(JavaSE:
Java平台标准版)、JavaPlatform,MicroEdition(JavaME:
Java平台微型版)JavaPlatform,CardEdition。
Java开放源代码项目2006年SUN在JavaOne公布Java开放源代码项目,并推出OpenJDK计划。
[2]Java虚拟机、Java编译器和Java类库以GNU通用公共许可证公开。
Java语言之所以被开发,是要达到以下五个目的:
应当使用面向对象程序设计方法学、应当允许同一程序在不同的计算机平台执行、应当包括内建的对计算机网络的支持、应当被设计成安全地执行远端代码、应当易于使用,并借鉴以前那些面向对象语言(如C++)的长处。
Java技术主要分成几个部分:
Java语言、运行环境JVM、类库。
一般情况下说Java时并不区分指的是哪个部分。
Java在1.5版本时,做了重大改变,太阳公司并1.5版本重命名为Java5.0。
面向对象Java的特点之一就是面向对象,是程序设计方法的一种。
“面向对象程序设计语言”的核心之一就是开发者在设计软件的时候可以使用自定义的类型和关联操作。
代码和数据的实际集合体叫做“对象”。
一个对象可以想像成绑定了很多“行为(代码)”和“状态(数据)”的物体。
对于数据结构的改变需要和代码进行通信然后操作,反之亦然。
面向对象设计让大型软件工程的计划和设计变得更容易管理,能增强工程的健康度,减少失败工程的数量。
面向对象设计另外一个目标就是能产生很多的有关联的类,可以让软件的再开发变得简单。
举例来说,很多软件工程都有同样的功能,尤其是很多应用了同一原理组织的软件工程。
软件的二次开发者想自己为软件开发插件以增强功能的时候,绝对不想看到混乱的开发代码和管理计划。
面向对象的目的就是不生产难懂且难以使用的代码,为软件各个功能群之间创建有效的通信通道。
很多开源软件社区正在计划给软件作者提供更多的类来让软件的二次开发变得简便。
跨平台性Java语言的第二个特性就是跨平台性,也就是说使用Java语言编写的程序可以在编译后不用经过任何更改,就能在任何硬件设备条件下运行。
这个特性经常被称为“一次编译,到处运行”。
执行Java应用程序必须安装JavaRuntimeEnvironment(JRE),JRE内部有一个Java虚拟机(JavaVirtualMachine,JVM)以及一些标准的类库(ClassLibrary)。
通过JVM的虚拟机才能在电脑系统执行Java应用程序(JavaApplication),这与.NetFramework的情况一样,所以电脑上没有安装JVM,那么这些程序将不能够执行。
实现跨平台性的方法是大多数编译器在进行Java语言程序的编码时候会生成一个用字节码(Bytecode)写成的“半成品”,这个“半成品”会在Java虚拟机(解释层)的帮助下运行,虚拟机会把它转换成当前所处硬件平台的原始代码。
之后,Java虚拟机会打开标准库,进行数据(图片、线程和网络)的访问工作。
主要注意的是,尽管已经存在一个进行代码翻译的解释层,有些时候Java的字节码代码还是会被JIT编译器进行二次编译。
有些编译器,比如GCJ,可以自动生成原始代码而不需要解释层。
但是这些编译器所生成的代码只能应用于特定平台。
并且GCJ目前只支持部分的JavaAPI。
甲骨文公司对于Java的许可是“全兼容的”,这也导致了微软和升阳关于微软的程序不支持RMI和JNI接口、并且增加特性为己所用的法律争端。
升阳最终赢得了官司,获得了大约两千万美元的赔偿,法院强制要求微软执行升阳公司关于Java的许可要求。
作为回应,微软不再在Windows系统中捆绑Java,最新的Windows版本,WindowsVista和InternetExplorer7.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的不变性在动摇。
语言问题有些程序师不喜欢原始类型(primitivetype)和类(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运行时程序,包含了MacOSX的经典Aqua接口风格。
性能问题由于Java编译器和虚拟机的不同对Java代码的性能影响比语言本身的影响大的多,所以统一讨论Java的程序的性能经常是有误导性的。
据IBM的数据,在同样的硬件上2001年时的IBMJDK版本的性能是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-Time(JIT)编译器,在加载字节码的时候将其编译成针对运行环境的本地代码来实现一些本地编译器的优化特性。
Just-In-Time机制和本地编译的性能比较仍旧是一个有争议的话题。
JIT编译需要很多时间,对于运行时间不长或者代码很多的大型程序并不适宜。
但是不算JIT编译阶段的话,程序的运行性能在很多JVM下可以和本地编译的程序一争短长,甚至在一些计算比较密集的数值计算领域也是这样。
目前,Java已经使用更先进的HotSpot技术来代替JIT技术,Java的性能有了更进一步的提升。
另外,在使用-server选项运行java程序时,也可以对java进行更深入的优化,比如在运行时将调用较多的方法内联(inline)到程序中来提高运行速度,这就是所谓的“动态优化”,而本地编译器是无法做到这一点的;这也是一些java代码比对应用C/C++等语言编写的本地代码运行的更快的原因之一。
微软的.NET平台也使用JIT编译器,所以也有类似问题。
Java的设计目的主要是安全性和可携性,所以对于一些特性,比如对硬件架构和存储器地址访问的直接访问都被去除了。
如果需要间接调用这些底层功能的话,就需要使用JNI(Java本地接口)来调用本地代码,而间接访问意味着频繁调用这些特性时性能损失会很大,微软的.NET平台也有这样的问题。
所以到目前为止,性能敏感的代码,例如驱动程序和3D视频游戏,还是大多使用本地编译,甚至直接以不直接支持面向对象的C语言或机器码编写。
但最近已经有了许多用纯Java编写的3D游戏,其效果与用C语言编写的不相上下,例如“合金战士”(英文名:
Chrome)。
这主要是因为新版的Java3D技术已经能像C++一样调用硬件加速,也就是使用显卡来加速,无论是C++还是Java语言写的3D游戏都是使用显卡及GPU来处理,从而使得CPU可以专注于其他方面的工作。
垃圾回收机制
自动垃圾回收(GarbageCollection)C++语言被用户诟病的原因之一是大多数C++编译器不支持垃圾收集机制。
通常使用C++编程的时候,程序员于程序中初始化对象时,会在主机存储器堆栈上分配一块存储器与地址,当不需要此对象时,进行解构或者删除的时候再释放分配的存储器地址。
如果对象是在堆栈上分配的,而程序员又忘记进行删除,那么就会造成存储器泄漏(MemoryLeak)。
长此以往,程序运行的时候可能会生成很多不清除的垃圾,浪费了不必要的存储器空间。
因此如果同一存储器地址被删除两次的话,程序会变得不稳定,甚至崩溃。
因此有经验的C++程序员都会在删除之后将指针重置为0,然后在删除之前先判断指针是否为0。
C++中也可以使用“智能指针”(SmartPointer)或者使用C++托管扩展编译器的方法来实现自动化存储器释放,智能指针可以在标准类库中找到,而C++托管扩展被微软的VisualC++7.0及以上版本所支持。
智能指针的优点是不需引入缓慢的垃圾收集机制,而且可以不考虑线程安全的问题,但是缺点是如果不善使用智能指针的话,性能有可能不如垃圾收集机制,而且不断地分配和释放存储器可能造成存储器碎片,需要手动对堆进行压缩。
除此之外,由于智能指针是一个基于模板的功能,所以没有经验的程序员在需要使用多态特性进行自动清理时也可能束手无策。
Java语言则不同,上述的情况被自动垃圾收集功能自动处理。
对象的创建和放置都是在存储器堆栈上面进行的。
当一个对象没有任何参考的时候,Java的自动垃圾收集机制就发挥作用,自动删除这个对象所占用的空间,释放存储器以避免存储器泄漏。
注意程序员不需要修改finalize方法,自动垃圾收集也会发生作用。
但是存储器泄漏并不是就此避免了,当程序员疏忽大意地忘记解除一个对象不应该有的参考的时候,存储器泄漏仍然不可避免,例如以下的程序:
Stringstr="這是一段字串";
System.out.println(s);
for(inti){
System.out.println("HalloWould"+i);
}
在循环开始之前,字符串str已经不会再用到了,但未将这个参考指向null,因此字符串str无法被gc所回收。
这种存储器泄漏必须等到一个函数退出之后才会被系统取回,自不过发生的机率要比不激活垃圾收集机制的C++程序少很多。
但是总体来讲,自动垃圾收集机制要安全和简单许多。
不同厂商、不同版本的JVM中的存储器垃圾回收机制并不完全一样,通常越新版本的存储器回收机制越快,IBM、BEA、SUN等等开发JVM的公司都曾宣称过自己制造出了世界上最快的Template:
WhatJVM,JVM性能的世界纪录也在不断的被打破并提高。
IBM有一篇有关Java存储器回收机制比不激活垃圾收集机制的C++存储器处理快数倍的技术文章,而著名的Java技术书籍《Java编程思想》(ThinkinginJava)也有一段论述Java存储器及性能达到甚至超过C++的章节。
Java的设计者们不想让Java有多重继承的特性,因为C++的多重继承显示了这种特性的困难。
Java的接口功能可以提供同样的功能,但是又不会很复杂。
应用程序开发接口在Java语言中,应用程序接口(API)化身成类,并且分组成为包。
每个包中包含有相关的接口和类。
对于不同的平台,Java提供了不同版本的包。
API的设定由sun公司和其他公司通过JCP(Java社区程序)决定。
任何公司和个人都可以参与这个工程,对API进行设计。
2004年,IBM和BEA公司准备联合对官方的Java开源软件工程进行支持,但是2005年初,sun公司拒绝了这个支持。
JSP技术简介
JSP(JavaServerPages)是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。
JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。
用JSP开发的Web应用是跨平台的,即能在Linux下运行,也能在其他操作系统上运行。
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。
网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。
JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。
Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。
插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。
JSP与JavaServlet一样,是在服务器端执行的,通常返回该客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
JSP的1.0规范的最后版本是1999年9月推出的,12月又推出了1.1规范。
目前较新的是JSP1.2规范,JSP2.0规范的征求意见稿也已出台。
JSP页面由HTML代码和嵌入其中的Java代码所组成。
服务器在页面被客户端请求以后对这些Java代码进行处理,然后