您好,欢迎访问三七文档
升级JDK选型报告选型范围:JDK6,JDK7,JDK8JDK各版本的新特性JDK后一版本包含之前所有版本的新特性JDK6简化WebServicesMustang将简化Webservices的开发和发布.XML和Web服务一直都是Mustang的关注重点..Mustang为此引入了JAX-WS(JavaArchitectureforXML-WebServices)2.0以及JAXB(JavaArchitectureforXMLBinding)2.0..同时还有StreamingAPIforXML(STaX),它提供了一个双向API,这个API可以通过一个事件流来读取或者写入XML,其中包括跳过某个部分,然后直接关注与文档中的另外一个小部分的能力。Scripting,整合脚本语言目前来讲,Java开发者们必须在Java之外独立地额外编码来使用non-Java脚本语言。这个头痛的问题将被Mustang消灭,开发者将更加轻松的使用Perl、PHP、Python、JavaScript和Ruby等脚本语言。新的框架将允许人们操作任意的脚本语言,和使用Java对象。JavaSE6中实现了JSR223。这是一个脚本框架,提供了让脚本语言来访问Java内部的方法。你可以在运行的时候找到脚本引擎,然后调用这个引擎去执行脚本。这个脚本API允许你为脚本语言提供Java支持。另外,WebScriptingFramework允许脚本代码在任何的Servlet容器(例如Tomcat)中生成Web内容。Database,绑定Derby开源嵌入式数据库Derby(JavaDB)绑定在JDK1.6中.具体可以参考:JDK1.6将绑定开源数据库Derby更丰富的DesktopAPIsMustang中拥有更多强的桌面API提供给开发者,开发者可以更简单地开发更强大的桌面应用,比如启动界面的支持,系统托盘的支持,JTable排序等等监视和管理JavaSE6中对内存泄漏增强了分析以及诊断能力。当遇到java.lang.OutOfMemory异常的时候,可以得到一个完整的堆栈信息,并且当堆已经满了的时候,会产生一个Log文件来记录这个致命错误。另外,JVM还添加了一个选项,允许你在堆满的时候运行脚本。(这也就是提供了另外一种方法来诊断错误)增强的JMX监视API在MBean的属性值传入了一个特定的参数的时候,允许这个应用程序发送一个事件通告。(这里的属性值可以在很复杂的类型中)对于Solaris10的用户,为Solaris提供的HotspotJVM中,提供了一种通过SolarisDTrace(这是个系统的调试工具)来追踪显示JVM内部的活动情况,包括垃圾收集,类装载,线程,锁等等。PluggableAnnotations从JavaSE5带来得新特性Annotations,将在Mustang继续扮演重要角色..CompilerAPI:访问编译器对于Java开发工具,或者Web框架等的开发者来说,利用编译器编译动态生成的代码,是一个普遍的需求.Mustang实现了JSR199,提供了Java编译器API(应用程序接口),允许你从一个Java应用程序中去编译其他的Java源程序--比如在应用程序中动态生成的一些源代码..Security:安全性JavaSE6的安全部分,增加了XML-DigitalSignature(XML-DSIG)APIs,整合了GSS/Kerberos的操作API,LDAP上的JAAS认证。Instrumentation利用Java代码,即java.lang.instrument做动态Instrumentation是JavaSE5的新特性,它把Java的instrument功能从本地代码中解放出来,使之可以用Java代码的方式解决问题。在JavaSE6里面,instrumentation包被赋予了更强大的功能:启动后的instrument、本地代码(nativecode)instrument,以及动态改变classpath等等。在JavaSE5当中,开发者只能在premain当中施展想象力,所作的Instrumentation也仅限与main函数执行前,这样的方式存在一定的局限性。在JavaSE6的Instrumentation当中,有一个跟premain“并驾齐驱”的“agentmain”方法,可以在main函数开始运行之后再运行。Http在JavaSE6当中,围绕着HTTP协议出现了很多实用的新特性:NTLM认证提供了一种Window平台下较为安全的认证机制;JDK当中提供了一个轻量级的HTTP服务器;提供了较为完善的HTTPCookie管理功能;更为实用的NetworkInterface;DNS域名的国际化支持等等。HTTPCookie管理可以应用客户操作临时变量的保存,如查询条件,当前状态等JMX与系统管理管理系统的构架其中Agent/SubAgent起到的就是翻译的作用:把IT资源报告的消息以管理系统能理解的方式传送出去。也许读者有会问,为什么需要Agent和SubAgent两层体系呢?这里有两个现实的原因:管理系统一般是一个中央控制的控制软件,而SubAgent直接监控一些资源,往往和这些资源分布在同一物理位置。当这些SubAgent把状态信息传输到管理系统或者传达管理系统的控制指令的时候,需要提供一些网络传输的功能。1.管理系统的消息是有一定规范的,消息的翻译本身是件复杂而枯燥的事情。一般来说,管理系统会将同一物理分布或者功能类似的SubAgent分组成一组,由一个共用的Agent加以管理。在这个Agent里封装了1和2的功能。JMX和管理系统JMX既是Java管理系统的一个标准,一个规范,也是一个接口,一个框架。图2展示了JMX的基本架构。JMX构架和其它的资源系统一样,JMX是管理系统和资源之间的一个接口,它定义了管理系统和资源之间交互的标准。javax.management.MBeanServer实现了Agent的功能,以标准的方式给出了管理系统访问JMX框架的接口。而javax.management.MBeans实现了SubAgent的功能,以标准的方式给出了JMX框架访问资源的接口。而从类库的层次上看,JMX包括了核心类库java.lang.management和javax.management包。java.lang.management包提供了基本的VM监控功能,而javax.management包则向用户提供了扩展功能。JMX帮助开发者监控JVM的信息。编辑器APIJDK6提供了在运行时调用编译器的API。在传统的JSP技术中,服务器处理JSP通常需要进行下面6个步骤:1.分析JSP代码;2.生成Java代码;3.将Java代码写入存储器;4.启动另外一个进程并运行编译器编译Java代码;5.将类文件写入存储器;6.服务器读入类文件并运行;但如果采用运行时编译,可以同时简化步骤4和5,节约新进程的开销和写入存储器的输出开销,提高系统效率。实际上,在JDK5中,Sun也提供了调用编译器的编程接口。然而不同的是,老版本的编程接口并不是标准API的一部分,而是作为Sun的专有实现提供的,而新版则带来了标准化的优点。新API的第二个新特性是可以编译抽象文件,理论上是任何形式的对象——只要该对象实现了特定的接口。有了这个特性,上述例子中的步骤3也可以省略。整个JSP的编译运行在一个进程中完成,同时消除额外的输入输出操作。第三个新特性是可以收集编译时的诊断信息。作为对前两个新特性的补充,它可以使开发人员轻松的输出必要的编译错误或者是警告信息,从而省去了很多重定向的麻烦一些有趣的新特性:1本地行为java.awt.Desktop比如用默认程序打开文件,用默认浏览器打开url,再也不用那个browserlauncher那么费劲了Desktopdesk=Desktop.getDesktop();desk.browse(newURI());desk.open(file)desk.print(file)2console下密码输入java.io.Console再也不用自己写线程去删echo字符了Consoleconsole=System.console();charpassword[]=console.readPassword(Enterpassword:);3获取磁盘空间大小java.io.File的新方法Fileroots[]=File.listRoots();for(Fileroot:roots){System.out.println(root.getPath()+:+root.getUsableSpace()+/+root.getTotalSpace());}4专利过期,可以提供合法的lzw的gifencoder了ImageIO.write(input,GIF,outputFile);5JAXB2.0增加了java-to-xmlschema,完成javabean,xml间转换非常容易6xml数字签名javax.xml.crypto,记得以前似乎只有ibm有个类库实现了7编译器,以前是com.sun.tools.javac,现在是javax.tools.JavaCompiler有人写了完全在内存里的生成源文件,编译,反射运行的过程,比较好玩。8脚本引擎,javax.script,内嵌的是MozillaRhino1.6r2支持ECMAScript1.6语法新特性1,switch中可以使用字串Java代码1.Strings=test;2.switch(s){3.casetest:4.System.out.println(test);5.casetest1:6.System.out.println(test1);7.break;8.default:9.System.out.println(break);10.break;11.}Strings=test;switch(s){casetest:System.out.println(test);casetest1:System.out.println(test1);break;default:System.out.println(break);break;}2,这个玩意儿的运用ListStringtempList=newArrayList();即泛型实例化类型自动推断。3.语法上支持集合,而不一定是数组Java代码1.finalListIntegerpiDigits=[1,2,3,4,5,8];finalListIntegerpiDigits=[1,2,3,4,5,8];4.新增一些取环境信息的工具方法Java代码1.FileSystem.getJavaIoTempDir()//IO临时文件夹2.FileSystem.getJavaHomeDir()//JRE的安装目录3.FileSystem.getUserHomeDir()//当前用户目录4.FileSystem.getUserDir()//启动java进程时所在的目录5........FileSystem.getJavaIoTempDir()//IO临时文件夹FileSystem.getJavaHomeDir()//JRE的安装目录FileSystem.getUserHomeDir()//当前用户目录FileSystem.getUserDir()//启动java进程时所在的目录.......5.Boolean类型反转,空指针安全,参与位运算Java代码1.BooleanBooleans.negate(BooleanbooleanObj)2.True=False,False=True,Null=Null3.booleanBooleans.and(boolean[]array)4.booleanBooleans.or(boolean[]array)5.boolean
本文标题:升级JDK选型报告
链接地址:https://www.777doc.com/doc-2589237 .html