jdk15-18的新特性

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

jdk1.5---jdk1.8的新特性JDK1.5新特性:1.自动装箱与拆箱:IntegeriObj=3;System.out.println(iObj+12);Integeri1=137(-128--127范围时,为true);Integeri2=137(-128--127范围时,为true);System.out.println(i1==i2);//false,但是括号中时却返回ture,原因是Integer采用的是享元模式Integeri3=Integer.valueOf(213);Integeri4=Integer.valueOf(213);System.out.println(i3==i4);//同上,另一种包装形式2.枚举(常用来设计单例模式)publicclassEnumTest{/***@paramargs*/publicstaticvoidmain(String[]args){WeekDay1weekDay=WeekDay1.MON;System.out.println(weekDay.nextDay());WeekDayweekDay2=WeekDay.FRI;System.out.println(weekDay2);System.out.println(weekDay2.name());System.out.println(weekDay2.ordinal());System.out.println(WeekDay.valueOf(SUN).toString());System.out.println(WeekDay.values().length);newDate(300){};}publicenumWeekDay{SUN(1),MON(),TUE,WED,THI,FRI,SAT;privateWeekDay(){System.out.println(first);}privateWeekDay(intday){System.out.println(second);}}publicenumTrafficLamp{RED(30){publicTrafficLampnextLamp(){returnGREEN;}},GREEN(45){publicTrafficLampnextLamp(){returnYELLOW;}},YELLOW(5){publicTrafficLampnextLamp(){returnRED;}};publicabstractTrafficLampnextLamp();privateinttime;privateTrafficLamp(inttime){this.time=time;}}}3.静态导入importstaticjava.lang.Math.*;publicclassStaticImport{publicstaticvoidmain(String[]args){intx=1;try{x++;}finally{System.out.println(template);}System.out.println(x);System.out.println(max(3,6));System.out.println(abs(3-6));}}4.可变参数publicclassVarableParameter{/***@paramargs*/publicstaticvoidmain(String[]args){System.out.println(add(2,3));System.out.println(add(2,3,5));}publicstaticintadd(intx,int...args){intsum=x;/*for(inti=0;iargs.length;i++){sum+=args[i];}*/for(intarg:args){sum+=arg;}returnsum;}}5.内省ReflectPointpt1=newReflectPoint(3,5);BeanInfobeanInfo=Introspector.getBeanInfo(pt1.getClass());PropertyDescriptor[]pds=beanInfo.getPropertyDescriptors();ObjectretVal=null;for(PropertyDescriptorpd:pds){MethodmethodGetX=pd.getReadMethod();retVal=methodGetX.invoke(pt1);}jdk1.6新特性:1.Web服务元数据Java里的Web服务元数据跟微软的方案基本没有语义上的区别,自从JDK5添加了元数据功能(Annotation)之后,SUN几乎重构了整个J2EE体系,由于变化很大,干脆将名字也重构为JavaEE,JavaEE(当前版本为5.0)将元数据纳入很多规范当中,这其中就包括WebServices的相关规范,加入元数据之后的WebServices服务器端编程模型就跟上面看到的C#片断差不多了,这显然比以前的JAX-RPC编程模型简单(当然,Axis的编程模型也很简单).这里要谈的Web服务元数据(JSR181)只是JavaWeb服务规范中的一个,它跟CommonAnnotations,JAXB2,StAX,SAAJ和JAX-WS等共同构成JavaEE5的WebServices技术堆栈.packageWebServices;importjava.io.File;importjava.io.IOException;importjavax.jws.Oneway;importjavax.jws.WebMethod;importjavax.jws.WebParam;importjavax.jws.WebResult;importjavax.jws.WebService;importjavax.xml.ws.Endpoint;/***@authorchinajash*/@WebService(targetNamespace==HelloService)publicclassWSProvider{@WebResult(name=Greetings)//自定义该方法返回值在WSDL中相关的描述@WebMethodpublicStringsayHi(@WebParam(name=MyName)Stringname){returnHi,+name;//@WebParam是自定义参数name在WSDL中相关的描述}@Oneway//表明该服务方法是单向的,既没有返回值,也不应该声明检查异常@WebMethod(action=printSystemTime,operationName=printSystemTime)//自定义该方法在WSDL中相关的描述publicvoidprintTime(){System.out.println(System.currentTimeMillis());}publicstaticvoidmain(String[]args){ThreadwsPublisher=newThread(newWSPublisher());wsPublisher.start();}privatestaticclassWSPublisherimplementsRunnable{publicvoidrun(){//发布WSProvider到这个地址,之前必须调用wsgen命令//生成服务类WSProvider的支持类,命令如下://wsgen-cp.WebServices.WSProviderEndpoint.publish(());}}}如果想看到WebServicesEngine生成的WSDL文件是否遵守上面的元数据,我们没有必要将上面的WSProvider部署到支持JSR-181的应用服务器或Servlet形式的WebServicesEngine,现在JDK6已经提供了一个很简单的机制可以用来测试和发布WebServices,下面讲讲如何在JDK6环境下发布WebServices和查看生成的WSDL1.将JDK_HOME/bin加入path环境变量2.在命令行下切换当前目录到WSProvider的class文件所在的目录,运行下面命令wsgen-cp.WebServices.WSProvider在这个例子中会生成以下3个类的源代码文件及class文件SayHiSayHiResponsePrintTime3.执行如下代码发布WSProvider到在这里可以执行WSProvider类的main方法就可以Endpoint.publish(());4.在浏览器输入就可以看到生成的WSDL文件,为了节省篇幅,这里就不把生成的WSDL文件贴上了,大家可以自己动手试试.2.脚本语言支持JDK6增加了对脚本语言的支持(JSR223),原理上是将脚本语言编译成bytecode,这样脚本语言也能享用Java平台的诸多优势,包括可移植性,安全等,另外,由于现在是编译成bytecode后再执行,所以比原来边解释边执行效率要高很多。加入对脚本语言的支持后,对Java语言也提供了以下好处。1、许多脚本语言都有动态特性,比如,你不需要用一个变量之前先声明它,你可以用一个变量存放完全不同类型的对象,你不需要做强制类型转换,因为转换都是自动的。现在Java语言也可以通过对脚本语言的支持间接获得这种灵活性。2、可以用脚本语言快速开发产品原型,因为现在可以Edit-Run,而无需Edit-Compile-Run,当然,因为Java有非常好的IDE支持,我们完全可以在IDE里面编辑源文件,然后点击运行(隐含编译),以此达到快速开发原型的目的,所以这点好处基本上可以忽略。3、通过引入脚本语言可以轻松实现Java应用程序的扩展和自定义,我们可以把原来分布在在Java应用程序中的配置逻辑,数学表达式和业务规则提取出来,转用JavaScript来处理。Sun的JDK6实现包含了一个基于MozillaRhino的脚本语言引擎,支持JavaScript,这并不是说明JDK6只支持JavaScript,任何第三方都可以自己实现一个JSR-223兼容的脚本引擎使得JDK6支持别的脚本语言,比如,你想让JDK6支持Ruby,那你可以自己按照JSR223的规范实现一个Ruby的脚本引擎类,具体一点,你需要实现javax.script.ScriptEngine(简单起见,可以继承javax.script.AbstractScriptEngine)和javax.script.ScriptEngineFactory两个接口。当然,在你实现自己的脚本语言引擎之前,先到scripting.dev.java.netproject这里看看是不是有人已经帮你做了工作,这样你就可以直接拿来用就行。ScriptingAPI---------------------------------------------------------------------ScriptingAPI是用于在Java里面编写脚本语言程序的API,在Javax.script中可以找到ScriptingAPI,我们就是用这个API来编写JavaScript程序,这个包

1 / 39
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功