毕业论文外文翻译Java的历史.docx
- 文档编号:28800065
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:21
- 大小:37.54KB
毕业论文外文翻译Java的历史.docx
《毕业论文外文翻译Java的历史.docx》由会员分享,可在线阅读,更多相关《毕业论文外文翻译Java的历史.docx(21页珍藏版)》请在冰豆网上搜索。
毕业论文外文翻译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提供以下三个版本:
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的不变性在动摇。
类库问题使用Swing平台编写的带有GUI(图形用户接口)的程序和其他原始程序非常不同。
选用AWT工具包编写程序的程序师看到的都是原始接口,而且也无法获得先进的GUI编程支持,如果使用的话,就要提供每个平台上面所需的API,这将是一项庞大的工程。
Swing则是完全用Java语言所写的程序,避免了接口元素重复的问题,只使用所有平台都支持的最基本的绘图机制。
但是很多用户不知道如何在Java风格和Windows风格之间进行转换,结果造成了Java程序的接口在很多程序中非常特殊。
苹果电脑已经提供了优化过的Java运行时程序,包含了MacOSX的经典Aqua接口风格。
性能问题由于Java编译器和虚拟机的不同对Java代码的性能影响比语言本身的影响大的多,所以统一讨论Java的程序的性能经常是有误导性的。
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可以专注于其他方面的工作。
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代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
JavaServlet是JSP的技术基础,而且大型的Web应用程序的开发需要JavaServlet和JSP配合才能完成。
JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。
Struts技术介绍
Struts项目是Apache软件基金会(ASF)赞助的一个开源项目。
它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。
它通过采用JavaServlet/JSP技术,实现了基于JavaEEWeb应用的Model-View-Controller〔MVC〕设计模式的应用框架〔WebFramework〕,是MVC经典设计模式中的一个经典产品。
MVC结构在Struts中,已经由一个名为ActionServlet的Servlet充当控制器(Controller)的角色,根据描述模型、视图、控制器对应关系的struts-config.xml的配置文件,转发视图(View)的请求,组装响应数据模型(Model)。
在MVC的模型(Model)部分,经常划分为两个主要子系统(系统的内部数据状态与改变数据状态的逻辑动作),这两个概念子系统分别具体对应Struts里的ActionForm与Action两个需要继承实现超类。
在这里,Struts可以与各种标准的数据访问技术结合在一起,包括EnterpriseJavaBeans(EJB),JDBC与JNDI。
在Struts的视图(View)端,除了使用标准的JavaServerPages(JSP)以外,还提供了大量的标签库使用,同时也可以与其他表现层组件技术(产品)进行整合,比如VelocityTemplates,XSLT等。
通过应用Struts的框架,最终用户可以把大部分的关注点放在自己的业务逻辑(Action)与映射关系的配置文件(struts-config.xml)中。
发展历程在JavaEE的Web应用发展的初期,除了使用Servlet技术以外,普遍是在JavaServerPages(JSP)的源代码中,采用HTML与Java代码混合的方式进行开发。
因为这两种方式不可避免的要把表现与业务逻辑代码混合在一起,都给前期开发与后期维护带来巨大的复杂度。
为了摆脱上述的约束与局限,把业务逻辑代码从表现层中清晰的分离出来,2000年,CraigMcClanahan采用了MVC的设计模式开发Struts。
后来该框架产品一度被认为是最广泛、最流行JAVA的WEB应用框架。
Struts2的合并示意图2006年,WebWork与Struts这两个优秀的JavaEEWeb框架(WebFramework〕的团体,决定合作共同开发一个新的,整合了WebWork与Struts优点,并且更加优雅、扩展性更强的框架,命名为“Struts2”,原Struts的1.x版本产品称为“Struts1”。
至此,Struts项目并行提供与维护两个主要版本的框架产品——Struts1与Struts2。
很多开发人员认为Struts目前尚不成熟,应用的成本较高。
附带的一点点建议:
Struts的优点主要集中体现在两个方面:
Taglib和页面导航。
Taglib是Struts的标记库,灵活动用,能大大提高开发效率。
Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。
它的目的是为了减少在运用MVC设计模型来开发Web应用的时间。
你仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。
Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点,使开发者能更深入的了解其内部实现机制。
Hibernate开源框架介绍
Hibernate是一种Java语言下的对象关系映射解决方案。
它是使用GNU宽通用公共许可证发行的自由、开源的软件。
它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。
概览它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来。
无论是从设计草案还是从一个遗留数据库开始,开发人员都可以采用Hibernate。
Hibernate不仅负责从Java类到数据库表的映射(还包括从Java数据类型到SQL数据类型的映射),还提供了面向对象的数据查询检索机制,从而极大地缩短的手动处理SQL和JDBC上的开发时间。
.NET上的HibernateHibernate有个在.NETFramework上的实现版本,称为NHibernate,在ADO.NETEntityFramework发表之前,NHibernate是在.NETFramework上经常被使用的ORM实现。
Hibernate的架构有三个主要部分组成:
1连接管理:
Hibernate的连接管理服务提供的数据库连接的有效管理。
数据库连接是与数据库进行交互,因为它需要大量资源的开放和关闭数据库连接的最昂贵的部分。
2交易管理:
事务管理服务提供给用户能够同时执行多个数据库报表。
3对象关系映射:
对象关系映射是从对象映射模型的数据表示为关系数据模型的技术。
这部分是用来休眠选择,插入,更新和删除记录窗体的基础表。
当我们传递一个对象到Session.save()的方法时,Hibernate读取该对象的变量的状态,并执行必要的查询。
HistoryofJava
Duke,theJavamascotJamesGosling,MikeSheridan,andPatrickNaughtoninitiatedtheJavalanguageprojectinJune1991.Javawasoriginallydesignedforinteractivetelevision,butitwastooadvancedforthedigitalcabletelevisionindustryatthetime.ThelanguagewasinitiallycalledOakafteranoaktreethatstoodoutsideGosling'soffice;itwentbythenameGreenlater,andwaslaterrenamedJava,fromalistofrandomwords.GoslingaimedtoimplementavirtualmachineandalanguagethathadafamiliarC/C++styleofnotation.
SunMicrosystemsreleasedthefirstpublicimplementationasJava1.0in1995.Itpromised"WriteOnce,RunAnywhere"(WORA),providingno-costrun-timesonpopularplatforms.Fairlysecureandfeaturingconfigurablesecurity,itallowednetwork-andfile-accessrestrictions.MajorwebbrowserssoonincorporatedtheabilitytorunJavaappletswithinwebpages,andJavaquicklybecamepopular.WiththeadventofJava2(releasedinitiallyasJ2SE1.2inDecember1998–1999),newversionshadmultipleconfigurationsbuiltfordifferenttypesofplatforms.Forexample,J2EEtargetedenterpriseapplicationsandthegreatlystripped-downversionJ2MEformobileapplications(MobileJava).J2SEdesignatedtheStandardEdition.In2006,formarketingpurposes,SunrenamednewJ2versionsasJavaEE,JavaME,andJavaSE,respectively.
FollowingOracleCorporation'sacquisitionofSunMicrosystemsin2009–2010,Oraclehasdescribeditselfasthe"stewardofJavatechnologywitharelentlesscommitmenttofosteringacommunityofparticipationandtransparency".
PrinciplesTherewerefiveprimarygoalsinthecreationoftheJavalanguage:
1.Itshouldbe"simple,objectoriented,andfamiliar"、2.Itshouldbe"robustandsecure".
3.Itshouldbe"architectureneutralandportable"、4.Itshouldexecutewith"highperformance"、5.Itshouldbe"int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业论文 外文 翻译 Java 历史