外文翻译-java技术及ssh框架和jsp技术的介绍_第1页
外文翻译-java技术及ssh框架和jsp技术的介绍_第2页
外文翻译-java技术及ssh框架和jsp技术的介绍_第3页
外文翻译-java技术及ssh框架和jsp技术的介绍_第4页
外文翻译-java技术及ssh框架和jsp技术的介绍_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

外文翻译JAVA技术及SSH框架和JSP技术的介绍JAVA,是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由当时任职太阳微系统的詹姆斯高斯林(JAMESGOSLING)等人于1990年代初开发。它最初被命名为OAK,目标设置在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,SUN放弃了该项计划。就在OAK几近失败之时,随着互联网的发展,SUN看到了OAK在计算机网络上的广阔应用前景,于是改造了OAK,在1995年5月以“JAVA”的名称正式发布了。JAVA伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。JAVA编程语言的风格十分接近C语言。继承了C语言面向对象技术的核心,JAVA舍弃了C语言中容易引起错误的指针(以引用取代)、运算符重载(OPERATOROVERLOADING)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间。在JAVASE15版本中JAVA又引入了泛型编程(GENERICPROGRAMMING)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。JAVA不同于一般的编译运行计算机语言和解释执行计算机语言。它首先将源代码编译成字节码(BYTECODE),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,这同时也在一定程度上降低了JAVA程序的运行效率。但在J2SE142发布后,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年,JAVA10A版本已经可以提供下载,但是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(JAVAEEJAVA平台企业版)、JAVAPLATFORM,STANDARDEDITION(JAVASEJAVA平台标准版)、JAVAPLATFORM,MICROEDITION(JAVAMEJAVA平台微型版)JAVAPLATFORM,CARDEDITION。JAVA开放源代码项目2006年SUN在JAVAONE公布JAVA开放源代码项目,并推出OPENJDK计划。2JAVA虚拟机、JAVA编译器和JAVA类库以GNU通用公共许可证公开。JAVA语言之所以被开发,是要达到以下五个目的应当使用面向对象序设计方法学、应当允许同一程序在不同的计算机平台执行、应当包括内建的对计算机网络的支持、应当被设计成安全地执行远端代码、应当易于使用,并借鉴以前那些面向对象语言(如C)的长处。JAVA技术主要分成几个部分JAVA语言、运行环境JVM、类库。一般情况下说JAVA时并不区分指的是哪个部分。JAVA在15版本时,做了重大改变,太阳公司并15版本重命名为JAVA50。面向对象JAVA的特点之一就是面向对象,是程序设计方法的一种。“面向对象程序设计语言”的核心之一就是开发者在设计软件的时候可以使用自定义的类型和关联操作。代码和数据的实际集合体叫做“对象”。一个对象可以想像成绑定了很多“行为(代码)”和“状态(数据)”的物体。对于数据结构的改变需要和代码进行通信然后操作,反之亦然。面向对象设计让大型软件工程的计划和设计变得更容易管理,能增强工程的健康度,减少失败工程的数量。面向对象设计另外一个目标就是能产生很多的有关联的类,可以让软件的再开发变得简单。举例来说,很多软件工程都有同样的功能,尤其是很多应用了同一原理组织的软件工程。软件的二次开发者想自己为软件开发插件以增强功能的时候,绝对不想看到混乱的开发代码和管理计划。面向对象的目的就是不生产难懂且难以使用的代码,为软件各个功能群之间创建有效的通信通道。很多开源软件社区正在计划给软件作者提供更多的类来让软件的二次开发变得简便。跨平台性JAVA语言的第二个特性就是跨平台性,也就是说使用JAVA语言编写的程序可以在编译后不用经过任何更改,就能在任何硬件设备条件下运行。这个特性经常被称为“一次编译,到处运行”。执行JAVA应用程序必须安装JAVARUNTIMEENVIRONMENT(JRE),JRE内部有一个JAVA虚拟机(JAVAVIRTUALMACHINE,JVM)以及一些标准的类库(CLASSLIBRARY)。通过JVM的虚拟机才能在电脑系统执行JAVA应用程序(JAVAAPPLICATION),这与NETFRAMEWORK的情况一样,所以电脑上没有安装JVM,那么这些程序将不能够执行。实现跨平台性的方法是大多数编译器在进行JAVA语言程序的编码时候会生成一个用字节码(BYTECODE)写成的“半成品”,这个“半成品”会在JAVA虚拟机(解释层)的帮助下运行,虚拟机会把它转换成当前所处硬件平台的原始代码。之后,JAVA虚拟机会打开标准库,进行数据(图片、线程和网络)的访问工作。类库问题使用SWING平台编写的带有GUI(图形用户接口)的程序和其他原始程序非常不同。选用AWT工具包编写程序的程序师看到的都是原始接口,而且也无法获得先进的GUI编程支持,如果使用的话,就要提供每个平台上面所需的API,这将是一项庞大的工程。SWING则是完全用JAVA语言所写的程序,避免了接口元素重复的问题,性能问题由于JAVA编译器和虚拟机的不同对JAVA代码的性能影响比语言本身的影响大的多,所以统一讨论JAVA的程序的性能经常是有误导性的。据IBM的数据,在同样的硬件上2001年时的IBMJDK版本的性能是1996年的JDK版本的十倍左右。见IBM东京研究院的数据HTTP/WWWISTITECHACJP/PPL2004/PROCEEDINGS/ISHIZAKI_SLIDESPDF而即使是在同一时期,不同公司的JDK和JRE的性能也不一样,比如SUN、IBM、BEA等公司都有自己开发的JDK和JRE。JAVA语言的一些特性不可避免的有额外的性能代价,例如数组范围检查、运行时类型检查等等。JAVA程序的性能还会因为不同的动态复杂性和垃圾处理机制使用的多少而各有不同。如果JVM的实现比较优化的话,那么这些功能甚至可以增加存储器分配的性能。这和总是使用STL或者托管C的程序的情况类似。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托管扩展被微软的VISUALC70及以上版本所支持。智能指针的优点是不需引入缓慢的垃圾收集机制,而且可以不考虑线程安全的问题,但是缺点是如果不善使用智能指针的话,性能有可能不如垃圾收集机制,而且不断地分配和释放存储器可能造成存储器碎片,需要手动对堆进行压缩。除此之外,由于智能指针是一个基于模板的功能,自动删除这个对象所占用的空间,释放存储器以避免存储器泄漏。注意程序员不需要修改FINALIZE方法,自动垃圾收集也会发生作用。但是存储器泄漏并不是就此避免了,当程序员疏忽大意地忘记解除一个对象不应该有的参考的时候,存储器泄漏仍然不可避免,例如以下的程序STRINGSTR“這是一段字串“SYSTEMOUTPRINTLNSFORINTISYSTEMOUTPRINTLN“HALLOWOULD“I在循环开始之前,字符串STR已经不会再用到了,但未将这个参考指向NULL,因此字符串STR无法被GC所回收。这种存储器泄漏必须等到一个函数退出之后才会被系统取回,自不过发生的机率要比不激活垃圾收集机制的C程序少很多。但是总体来讲,自动垃圾收集机制要安全和简单许多。JSP技术简介JSPJAVASERVERPAGES是由SUNMICROSYSTEMS公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件HTM,HTML中插入JAVA程序段SCRIPTLET和JSP标记TAG,从而形成JSP文件JSP。用JSP开发的WEB应用是跨平台的,即能在LINUX下运行,也能在其他操作系统上运行。WEB服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的JAVA程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP与JAVASERVLET一样,是在服务器端执行的,通常返回该客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。JSP的10规范的最后版本是1999年9月推出的,12月又推出了11规范。目前较新的是JSP12规范,JSP20规范的征求意见稿也已出台。JSP页面由HTML代码和嵌入其中的JAVA代码所组成。服务器在页面被客户端请求以后对这些JAVA代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。JAVASERVLET是JSP的技术基础,而且大型的WEB应用程序的开发需要JAVASERVLET和JSP配合才能完成。JSP具备了JAVA技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。SPRINGSPRINGFRAMEWORK是一个开源的JAVA/JAVAEE全功能栈(FULLSTACK)的应用程序框架,以APACHE许可证形式发布,也有NET平台上的移植版本。该框架基于EXPERTONEONONEJAVAEEDESIGNANDDEVELOPMENT(ISBN0764543857)一书中的代码,最初由RODJOHNSON和JUERGENHOELLER等开发。SPRINGFRAMEWORK提供了一个简易的开发方式,这种开发方式,将避免那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。SPRING中包含的关键特性强大的基于JAVABEANS的采用控制翻转(INVERSIONOFCONTROL,IOC)原则的配置管理,使得应用程序的组建更加快捷简易。一个可用于从APPLET到JAVAEE等不同运行环境的核心BEAN工厂。数据库事务的一般化抽象层,JDBC抽象层提供了有针对性的异常等级(不再从SQL异常中提取原始代码),简化了错误处理,大大减少了程序员的编码量。再次利用JDBC时,你无需再写出另一个终止FINALLY模块。并且面向JDBC的异常与SPRING通用数据访问对象(DATAACCESSOBJECT)异常等级相一致。可以与各种标准的数据访问技术结合在一起,包括ENTERPRISEJAVABEANS(EJB),JDBC与JNDI。在STRUTS的视图(VIEW)端,除了使用标准的JAVASERVERPAGES(JSP)以外,还提供了大量的标签库使用,同时也可以与其他表现层组件技术(产品)进行整合,比如VELOCITYTEMPLATES,XSLT等。通过应用STRUTS的框架,最终用户可以把大部分的关注点放在自己的业务逻辑(ACTION)与映射关系的配置文件(STRUTSCONFIGXML)中。STRUTS2的合并示意图2006年,WEBWORK与STRUTS这两个优秀的JAVAEEWEB框架(WEBFRAMEWORK的团体,决定合作共同开发一个新的,整合了WEBWORK与STRUTS优点,并且更加优雅、扩展性更强的框架,命名为“STRUTS2”,原STRUTS的1X版本产品称为“STRUTS1”。至此,STRUTS项目并行提供与维护两个主要版本的框架产品STRUTS1与STRUTS2。STRUTS这个名字来源于在建筑和旧式飞机中使用的支持金属架。它的目的是为了减少在运用MVC设计模型来开发WEB应用的时间。你仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。STRUTS跟TOMCAT、TURBINE等诸多APACHE项目一样,是开源软件,这是它的一大优点,使开发者能更深入的了解其内部实现机制。HIBERNATE开源框架介绍HIBERNATE是一种JAVA语言下的对象关系映射解决方案。它是使用GNU宽通用公共许可证发行的自由、开源的软件。它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。概览它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来。无论是从设计草案还是从一个遗留数据库开始,开发人员都可以采用HIBERNATE。HIBERNATE不仅负责从JAVA类到数据库表的映射(还包括从JAVA数据类型到SQL数据类型的映射),还提供了面向对象的数据查询检索机制,从而极大地缩短的手动处理SQL和JDBC上的开发时间。HIBERNATE的架构有三个主要部分组成1连接管理HIBERNATE的连接管理服务提供的数据库连接的有效管理。数据库连接是与数据库进行交互,因为它需要大量资源的开放和关闭数据库连接的最昂贵的部分。2交易管理事务管理服务提供给用户能够同时执行多个数据库报表。3对象关系映射对象关系映射是从对象映射模型的数据表示为关系数据模型的技术。这部分是用来休眠选择,插入,更新和删除记录窗体的基础表。当我们传递一个对象到SESSIONSAVE()的方法时,HIBERNATE读取该对象的变量的状态,并执行必要的查询。HIBERNATE是很好的工具尽可能对象关系映射的关注,但在连接管理和事务管理方面,它在性能和能力缺乏。所以通常冬眠与其他正在使用的连接管理和事务管理工具。例如APACHE的二溴氯丙烷是用于与HIBERNATE的连接池。HIBERNATE提供了使用中的灵活性。它被称为轻型的体系结构时,我们只使用对象关系映射的组成部分。而在全面解决的体系结构的所有三个组件对象关系映射,连接管理和事务管理)的使用。HISTORYDUKE,THEJAVAMASCOTJAMESGOSLING,MIKESHERIDAN,ANDPATRICKNAUGHTONINITIATEDTHEJAVALANGUAGEPROJECTINJUNE1991JAVAWASORIGINALLYDESIGNEDFORINTERACTIVETELEVISION,BUTITWASTOOADVANCEDFORTHEDIGITALCABLETELEVISIONINDUSTRYATTHETIMETHELANGUAGEWASINITIALLYCALLEDOAKAFTERANOAKTREETHATSTOODOUTSIDEGOSLINGSOFFICEITWENTBYTHENAMEGREENLATER,ANDWASLATERRENAMEDJAVA,FROMALISTOFRANDOMWORDSGOSLINGAIMEDTOIMPLEMENTAVIRTUALMACHINEANDALANGUAGETHATHADAFAMILIARC/CSTYLEOFNOTATIONSUNMICROSYSTEMSRELEASEDTHEFIRSTPUBLICIMPLEMENTATIONASJAVA10IN1995ITPROMISED“WRITEONCE,RUNANYWHERE“WORA,PROVIDINGNOCOSTRUNTIMESONPOPULARPLATFORMSFAIRLYSECUREANDFEATURINGCONFIGURABLESECURITY,ITALLOWEDNETWORKANDFILEACCESSRESTRICTIONSMAJORWEBBROWSERSSOONINCORPORATEDTHEABILITYTORUNJAVAAPPLETSWITHINWEBPAGES,ANDJAVAQUICKLYBECAMEPOPULARWITHTHEADVENTOFJAVA2RELEASEDINITIALLYASJ2SE12INDECEMBER19981999,NEWVERSIONSHADMULTIPLECONFIGURATIONSBUILTFORDIFFERENTTYPESOFPLATFORMSFOREXAMPLE,J2EETARGETEDENTERPRISEAPPLICATIONSANDTHEGREATLYSTRIPPEDDOWNVERSIONJ2MEFORMOBILEAPPLICATIONSMOBILEJAVAJ2SEDESIGNATEDTHESTANDARDEDITIONIN2006,FORMARKETINGPURPOSES,SUNRENAMEDNEWJ2VERSIONSASJAVAEE,JAVAME,ANDJAVASE,RESPECTIVELYIN1997,SUNMICROSYSTEMSAPPROACHEDTHEISO/IECJTC1STANDARDSBODYANDLATERTHEECMAINTERNATIONALTOFORMALIZEJAVA,BUTITSOONWITHDREWFROMTHEPROCESSJAVAREMAINSADEFACTOSTANDARD,CONTROLLEDTHROUGHTHEJAVACOMMUNITYPROCESSATONETIME,SUNMADEMOSTOFITSJAVAIMPLEMENTATIONSAVAILABLEWITHOUTCHARGE,DESPITETHEIRPROPRIETARYSOFTWARESTATUSSUNGENERATEDREVENUEFROMJAVATHROUGHTHESELLINGOFLICENSESFORSPECIALIZEDPRODUCTSSUCHASTHEJAVAENTERPRISESYSTEMSUNDISTINGUISHESBETWEENITSSOFTWAREDEVELOPMENTKITSDKANDRUNTIMEENVIRONMENTJREASUBSETOFTHESDKTHEPRIMARYDISTINCTIONINVOLVESTHEJRESLACKOFTHECOMPILER,UTILITYPROGRAMS,ANDHEADERFILESONNOVEMBER13,2006,SUNRELEASEDMUCHOFJAVAASOPENSOURCESOFTWAREUNDERTHETERMSOFTHEGNUGENERALPUBLICLICENSEGPLONMAY8,2007,SUNFINISHEDTHEPROCESS,MAKINGALLOFJAVASCORECODEAVAILABLEUNDERFREESOFTWARE/OPENSOURCEDISTRIBUTIONTERMS,ASIDEFROMASMALLPORTIONOFCODETOWHICHSUNDIDNOTHOLDTHECOPYRIGHTSUNSVICEPRESIDENTRICHGREENHASSAIDTHATSUNSIDEALROLEWITHREGARDSTOJAVAISASAN“EVANGELIST“FOLLOWINGORACLECORPORATIONSACQUISITIONOFSUNMICROSYSTEMSIN20092010,ORACLEHASDESCRIBEDITSELFASTHE“STEWARDOFJAVATECHNOLOGYWITHARELENTLESSCOMMITMENTTOFOSTERINGACOMMUNITYOFPARTICIPATIONANDTRANSPARENCY“PRINCIPLESTHEREWEREFIVEPRIMARYGOALSINTHECREATIONOFTHEJAVALANGUAGE1ITSHOULDBE“SIMPLE,OBJECTORIENTED,ANDFAMILIAR“、2ITSHOULDBE“ROBUSTANDSECURE“3ITSHOULDBE“ARCHITECTURENEUTRALANDPORTABLE“、4ITSHOULDEXECUTEWITH“HIGHPERFORMANCE“、5ITSHOULDBE“INTERPRETED,THREADED,ANDDYNAMIC“JAVAPLATFORMMAINARTICLESJAVASOFTWAREPLATFORMANDJAVAVIRTUALMACHINEONECHARACTERISTICOFJAVAISPORTABILITY,WHICHMEANSTHATCOMPUTERPROGRAMSWRITTENINTHEJAVALANGUAGEMUSTRUNSIMILARLYONANYSUPPORTEDHARDWARE/OPERATINGSYSTEMPLATFORMTHISISACHIEVEDBYCOMPILINGTHEJAVALANGUAGECODETOANINTERMEDIATEREPRESENTATIONCALLEDJAVABYTECODE,INSTEADOFDIRECTLYTOPLATFORMSPECIFICMACHINECODEJAVABYTECODEINSTRUCTIONSAREANALOGOUSTOMACHINECODE,BUTAREINTENDEDTOBEINTERPRETEDBYAVIRTUALMACHINEVMWRITTENSPECIFICALLYFORTHEHOSTHARDWAREENDUSERSCOMMONLYUSEAJAVARUNTIMEENVIRONMENTJREINSTALLEDONTHEIROWNMACHINEFORSTANDALONEJAVAAPPLICATIONS,ORINAWEBBROWSERFORJAVAAPPLETSSTANDARDIZEDLIBRARIESPROVIDEAGENERICWAYTOACCESSHOSTSPECIFICFEATURESSUCHASGRAPHICS,THREADING,ANDNETWORKINGAMAJORBENEFITOFUSINGBYTECODEISPORTINGHOWEVER,THEOVERHEADOFINTERPRETATIONMEANSTHATINTERPRETEDPROGRAMSALMOSTALWAYSRUNMORESLOWLYTHANPROGRAMSCOMPILEDTONATIVEEXECUTABLESWOULDJUSTINTIMECOMPILERSWEREINTRODUCEDFROMANEARLYSTAGETHATCOMPILEBYTECODESTOMACHINECODEDURINGRUNTIMEIMPLEMENTATIONSSUNMICROSYSTEMSOFFICIALLYLICENSESTHEJAVASTANDARDEDITIONPLATFORMFORLINUX,MACOSX,ANDSOLARISALTHOUGHINTHEPASTSUNHASLICENSEDJAVATOMICROSOFT,THELICENSEHASEXPIREDANDHASNOTBEENRENEWEDTHROUGHANETWORKOFTHIRDPARTYVENDORSANDLICENSEES,ALTERNATIVEJAVAENVIRONMENTSAREAVAILABLEFORTHESEANDOTHERPLATFORMSSUNSTRADEMARKLICENSEFORUSAGEOFTHEJAVABRANDINSISTSTHATALLIMPLEMENTATIONSBE“COMPATIBLE“THISRESULTEDINALEGALDISPUTEWITHMICROSOFTAFTERSUNCLAIMEDTHATTHEMICROSOFTIMPLEMENTATIONDIDNOTSUPPORTRMIORJNIANDHADADDEDPLATFORMSPECIFICFEATURESOFTHEIROWNSUNSUEDIN1997,ANDIN2001WONASETTLEMENTOFUS20MILLION,ASWELLASACOURTORDERENFORCINGTHETERMSOFTHELICENSEFROMSUNASARESULT,MICROSOFTNOLONGERSHIPSJAVAWITHWINDOWS,ANDINLATTERCASETHERESPONSIBILITYOFMANAGINGMEMORYRESIDESWITHTHEPROGRAMMERIFTHEPROGRAMDOESNOTDEALLOCATEANOBJECT,AMEMORYLEAKOCCURSIFTHEPROGRAMATTEMPTSTOACCESSORDEALLOCATEMEMORYTHATHASALREADYBEENDEALLOCATED,THERESULTISUNDEFINEDANDDIFFICULTTOPREDICT,ANDTHEPROGRAMISLIKELYTOBECOMEUNSTABLEAND/ORCRASHTHISCANBEPARTIALLYREMEDIEDBYTHEUSEOFSMARTPOINTERS,BUTTHESEADDOVERHEADANDCOMPLEXITYNOTETHATGARBAGECOLLECTIONDOESNOTPREVENT“LOGICAL“MEMORYLEAKS,IETHOSEWHERETHEMEMORYISSTILLREFERENCEDBUTNEVERUSEDGARBAGECOLLECTIONMAYHAPPENATANYTIMEIDEALLY,ITWILLOCCURWHENAPROGRAMISIDLEITISGUARANTEEDTOBETRIGGEREDIFTHEREISINSUFFICIENTFREEMEMORYONTHEHEAPTOALLOCATEANEWOBJECTTHISCANCAUSEAPROGRAMTOSTALLMOMENTARILYEXPLICITMEMORYMANAGEMENTISNOTPOSSIBLEINJAVAJAVADOESNOTSUPPORTC/CSTYLEPOINTERARITHMETIC,WHEREOBJECTADDRESSESANDUNSIGNEDINTEGERSUSUALLYLONGINTEGERSCANBEUSEDINTERCHANGEABLYTHISALLOWSTHEGARBAGECOLLECTORTORELOCATEREFERENCEDOBJECTSANDENSURESTYPESAFETYANDSECURITYASINCANDSOMEOTHEROBJECTORIENTEDLANGUAGES,VARIABLESOFJAVASPRIMITIVEDATATYPESARENOTOBJECTSVALUESOFPRIMITIVETYPESAREEITHERSTOREDDIRECTLYINFIELDSFOROBJECTSORONTHESTACKFORMETHODSRATHERTHANONTHEHEAP,ASCOMMONLYTRUEFOROBJECTSBUTSEEESCAPEANALYSISTHISWASACONSCIOUSDECISIONBYJAVASDESIGNERSFORPERFORMANCEREASONSBECAUSEOFTHIS,JAVAWASNOTCONSIDEREDTOBEAPUREOBJECTORIENTEDPROGRAMMINGLANGUAGEHOWEVER,ASOFJAVA50,AUTOBOXINGENABLESPROGRAMMERSTOPROCEEDASIFPRIMITIVETYPESWEREINSTANCESOFTHEIRWRAPPERCLASSJAVACONTAINSMULTIPLETYPESOFGARBAGECOLLECTORSBYDEFAULT,HOTSPOTUSESTHECONCURRENTMARKSWEEPCOLLECTOR,ALSOKNOWNASTHECMSGARBAGECOLLECTORHOWEVER,THEREAREALSOSEVERALOTHERGARBAGECOLLECTORSTHATCANBEUSEDTOMANAGETHEHEAPFOR90OFAPPLICATIONSINJAVA,THECMSGARBAGECOLLECTORISGOODENOUGHACLASSTHATISNOTDECLAREDPUBLICMAYBESTOREDINANYJAVAFILETHECOMPILERWILLGENERATEACLASSFILEFOREACHCLASSDEFINEDINTHESOURCEFILETHENAMEOFTHECLASSFILEISTHENAMEOFTHECLASS,WITHCLASSAPPENDEDFORCLASSFILEGENERATION,ANONYMOUSCLASSESARETREATEDASIFTHEIRNAMEWERETHECONCATENATIONOFTHENAMEOFTHEIRENCLOSINGCLASS,A,ANDANINTEGERTHEKEYWORDPUBLICDENOTESTHATAMETHODCANBECALLEDFROMCODEINOTHERCLASSES,ORTHATACLASSMAYBEUSEDBYCLASSESOUTSIDETHECLASSHIERARCHYTHECLASSHIERARCHYISRELATEDTOTHENAMEOFTHEDIRECTORYINWHICHTHEJAVAFILEISLOCATEDTHEKEYWORDSTATICINFRONTOFAMETHODINDICATESASTATICMETHOD,WHICHISASSOCIATED

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论