游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

Java12的新特性

  Java语言特性系列Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性
  序
  本文主要讲述一下Java12的新特性
  版本号
  javaversion
  openjdkversion1220190319
  OpenJDKRuntimeEnvironment(build1233)
  OpenJDK64BitServerVM(build1233,mixedmode)
  从version信息可以看出是build1233
  特性列表189:Shenandoah:ALowPauseTimeGarbageCollector(Experimental)
  ShenandoahGC是一个面向lowpausetime的垃圾收集器,它最初由RedHat实现,支持aarch64及amd64architecture;ZGC也是面向lowpausetime的垃圾收集器,不过ZGC是基于coloredpointers来实现,而ShenandoahGC是基于brookspointers来实现;如果要使用ShenandoahGC需要编译时withjvmfeatures选项带有shenandoahgc,然后启动时使用XX:UnlockExperimentalVMOptionsXX:UseShenandoahGC230:MicrobenchmarkSuite在jdk源码里头新增了一套基础的microbenchmarkssuite325:SwitchExpressions(Preview)对switch进行了增强,除了使用statement还可以使用expression,比如原来的写法如下:
  switch(day){
  caseMONDAY:
  caseFRIDAY:
  caseSUNDAY:
  System。out。println(6);
  break;
  caseTUESDAY:
  System。out。println(7);
  break;
  caseTHURSDAY:
  caseSATURDAY:
  System。out。println(8);
  break;
  caseWEDNESDAY:
  System。out。println(9);
  break;
  }
  现在可以改为如下写法:
  switch(day){
  caseMONDAY,FRIDAY,SUNDAYgt;System。out。println(6);
  caseTUESDAYgt;System。out。println(7);
  caseTHURSDAY,SATURDAYgt;System。out。println(8);
  caseWEDNESDAYgt;System。out。println(9);
  }
  以及在表达式返回值
  intnumLettersswitch(day){
  caseMONDAY,FRIDAY,SUNDAYgt;6;
  caseTUESDAYgt;7;
  caseTHURSDAY,SATURDAYgt;8;
  caseWEDNESDAYgt;9;
  };
  对于需要返回值的switchexpression要么正常返回值要么抛出异常,以下这两种写法都是错误的
  intiswitch(day){
  caseMONDAYgt;{
  System。out。println(Monday);
  ERROR!Blockdoesntcontainabreakwithvalue
  }
  defaultgt;1;
  };
  iswitch(day){
  caseMONDAY,TUESDAY,WEDNESDAY:
  break0;
  default:
  System。out。println(Secondhalfoftheweek);
  ERROR!Groupdoesntcontainabreakwithvalue
  };
  334:JVMConstantsAPI
  新增了JVMConstantsAPI,具体来说就是java。base模块新增了java。lang。constant包,引入了ConstantDesc接口(ClassDesc、MethodTypeDesc、MethodHandleDesc这几个接口直接继承了ConstantDesc接口)以及Constable接口;ConstantDesc接口定义了resolveConstantDesc方法,Constable接口定义了describeConstable方法;String、Integer、Long、Float、Double均实现了这两个接口,而EnumDesc实现了ConstantDesc接口340:OneAArch64Port,NotTwo64bitArmplatform(arm64),也可以称之为aarch64;之前JDK有两个关于aarch64的实现,分别是srchotspotcpuarm以及opensrchotspotcpuaarch64,它们的实现重复了,为了集中精力更好地实现aarch64,该特性在源码中删除了opensrchotspotcpuarm中关于64bit的实现,保留其中32bit的实现,于是opensrchotspotcpuaarch64部分就成了64bitARMarchitecture的默认实现341:DefaultCDSArchivesjava10的新特性JEP310:ApplicationClassDataSharing扩展了JDK5引入的ClassDataSharing,支持application的ClassDataSharing;ClassDataSharing可以用于多个JVM共享class,提升启动速度,最早只支持systemclasses及serialGC,JDK9对其进行扩展以支持applicationclasses及其他GC算法,并在JDK10中开源出来(以前是commercialfeature);JDK11将Xshare:off改为默认Xshare:auto,以更加方便使用CDS特性;JDK12的这个特性即在64bit平台上编译jdk的时候就默认在{JAVAHOME}libserver目录下生成一份名为classes。jsa的默认archive文件(大概有18M)方便大家使用344:AbortableMixedCollectionsforG1G1在garbagecollection的时候,一旦确定了collectionset(CSet)开始垃圾收集这个过程是withoutstopping的,当collectionset过大的时候,此时的STW时间会过长超出目标pausetime,这种情况在mixedcollections时候比较明显。这个特性启动了一个机制,当选择了一个比较大的collectionset,允许将其分为mandatory及optional两部分(当完成mandatory的部分,如果还有剩余时间则会去处理optional部分)来将mixedcollections从withoutstopping变为abortable,以更好满足指定pausetime的目标346:PromptlyReturnUnusedCommittedMemoryfromG1G1目前只有在fullGC或者concurrentcycle的时候才会归还内存,由于这两个场景都是G1极力避免的,因此在大多数场景下可能不会及时会还committedJavaheapmemory给操作系统。JDK12的这个特性新增了两个参数分别是G1PeriodicGCInterval及G1PeriodicGCSystemLoadThreshold,设置为0的话,表示禁用。当上一次garbagecollectionpause过去G1PeriodicGCInterval(milliseconds)时间之后,如果getloadavg()(oneminute)低于G1PeriodicGCSystemLoadThreshold指定的阈值,则触发fullGC或者concurrentGC(如果开启G1PeriodicGCInvokesConcurrent),GC之后Javaheapsize会被重写调整,然后多余的内存将会归还给操作系统
  细项解读
  上面列出的是大方面的特性,除此之外还有一些api的更新及废弃,主要见JDK12ReleaseNotes,这里举几个例子。
  添加项支持unicode11支持CompactNumberFormatting
  使用实例如下
  Test
  publicvoidtestCompactNumberFormat(){
  varcnfNumberFormat。getCompactNumberInstance(Locale。CHINA,NumberFormat。Style。SHORT);
  System。out。println(cnf。format(10000));
  System。out。println(cnf。format(19200));
  System。out。println(cnf。format(1000000));
  System。out。println(cnf。format(1Llt;lt;30));
  System。out。println(cnf。format(1Llt;lt;40));
  System。out。println(cnf。format(1Llt;lt;50));
  }
  输出
  1万
  2万
  100万
  11亿
  1兆
  1126兆
  String支持transform、indent操作
  Test
  publicvoidtestStringTransform(){
  System。out。println(hello。transform(newFunctionlt;String,Integergt;(){
  Override
  publicIntegerapply(Strings){
  returns。hashCode();
  }
  }));
  }
  Test
  publicvoidtestStringIndent(){
  System。out。println(hello。indent(3));
  }
  Files新增mismatch方法
  Test
  publicvoidtestFilesMismatch()throwsIOException{
  FileWriterfileWriternewFileWriter(tmpa。txt);
  fileWriter。write(a);
  fileWriter。write(b);
  fileWriter。write(c);
  fileWriter。close();
  FileWriterfileWriterBnewFileWriter(tmpb。txt);
  fileWriterB。write(a);
  fileWriterB。write(1);
  fileWriterB。write(c);
  fileWriterB。close();
  System。out。println(Files。mismatch(Path。of(tmpa。txt),Path。of(tmpb。txt)));
  }
  Collectors新增teeing方法用于聚合两个downstream的结果
  Test
  publicvoidtestCollectorTeeing(){
  varresultStream。of(Devoxx,VoxxedDays,CodeOne,BaselOne)
  。collect(Collectors。teeing(Collectors。filtering(ngt;n。contains(xx),Collectors。toList()),
  Collectors。filtering(ngt;n。endsWith(One),Collectors。toList()),
  (Listlt;Stringgt;list1,Listlt;Stringgt;list2)gt;List。of(list1,list2)
  ));
  System。out。println(result。get(0));
  System。out。println(result。get(1));
  }
  CompletionStage新增exceptionallyAsync、exceptionallyCompose、exceptionallyComposeAsync方法
  Test
  publicvoidtestExceptionallyAsync()throwsExecutionException,InterruptedException{
  LOGGER。info(begin);
  intresultCompletableFuture。supplyAsync(()gt;{
  LOGGER。info(calculate);
  inti10;
  return100;
  })。exceptionallyAsync((t)gt;{
  LOGGER。info(errorerror:{},t。getMessage());
  return0;
  })。get();
  LOGGER。info(result:{},result);
  }
  JDK12之前CompletionStage只有一个exceptionally,该方法体在主线程执行,JDK12新增了exceptionallyAsync、exceptionallyComposeAsync方法允许方法体在异步线程执行,同时新增了exceptionallyCompose方法支持在exceptionally的时候构建新的CompletionStageAllocationofOldGenerationofJavaHeaponAlternateMemoryDevices
  G1及ParallelGC引入experimental特性,允许将oldgeneration分配在诸如NVDIMMmemory的alternativememorydeviceZGC:ConcurrentClassUnloading
  ZGC在JDK11的时候还不支持classunloading,JDK12对ZGC支持了ConcurrentClassUnloading,默认是开启,使用XX:ClassUnloading可以禁用新增XX:ExtensiveErrorReports
  XX:ExtensiveErrorReports可以用于在jvmcrash的时候收集更多的报告信息到hserrlt;pidgt;。log文件中,productbuilds中默认是关闭的,要开启的话,需要自己添加XX:ExtensiveErrorReports参数新增安全相关的改进支持java。security。manager系统属性,当设置为disallow的时候,则不使用SecurityManager以提升性能,如果此时调用System。setSecurityManager则会抛出UnsupportedOperationException
  keytool新增groupname选项允许在生成keypair的时候指定一个namedgroup
  新增PKCS12KeyStore配置属性用于自定义PKCS12keystores的生成
  JavaFlightRecorder新增了securityrelated的event
  支持ChaCha20andPoly1305TLSCipherSuitesjdepsReportsTransitiveDependences
  jdeps的printmoduledeps,listdeps,以及listreducedeps选项得到增强,新增norecursive用于nontransitive的依赖分析,ignoremissingdeps用于suppressmissingdependenceerrors
  移除项移除com。sun。awt。SecurityWarnin移除FileInputStream、FileOutputStream、Java。util。ZipFileInflatorDeflator的finalize方法移除GTECyberTrustGlobalRoot移除javac的source,target对6及1。6的支持,同时移除release选项
  废弃项废弃的API列表见deprecatedlist废弃XX:MonitorInUseLists选项废弃DefaultKeytool的keyalg值
  已知问题Swing不支持GTK3。20及以后的版本在使用JVMCICompiler(比如Graal)的时候,JVMTI的canpopframe及canforceearlyreturn的capabilities是被禁用的
  其他事项如果用户没有指定user。timezone且从操作系统获取的为空,那么user。timezone属性的初始值为空变为nulljava。net。URLPermission的行为发生轻微变化,以前它会忽略url中的query及fragment部分,这次改动新增query及fragment部分,即scheme:authority〔path〕变动为scheme:authority〔path〕〔ignoredqueryorfragment〕javax。net。ssl。SSLContextAPI及JavaSecurityStandardAlgorithmNames规范移除了必须实现TLSv1及TLSv1。1的规定
  小结java12不是LTS(LongTermSupport)版本(oracle版本才有LTS),oracle对该版本的support周期为6个月。这个版本主要有几个更新点,一个是语法层更新,一个是API层面的更新,另外主要是GC方面的更新。语法层面引入了preview版本的SwitchExpressions;API层面引入了JVMConstantsAPI,引入CompactNumberFormat,让NumberFormat支持COMPACTSTYLE,对String、Files、Collectors、CompletionStage等新增方法;GC方面引入了experimental版本的ShenandoahGC,不过oraclebuild的openjdk没有enableShenandoahGCsupport;另外主要对ZGC及G1GC进行了改进其中JDK12对ZGC支持了ConcurrentClassUnloading,默认是开启,使用XX:ClassUnloading可以禁用;对于G1GC则新增支持AbortableMixedCollections以及PromptlyReturnUnusedCommittedMemory特性
  docopenjdk12JDK12ReleaseNotesJava12ReleasedwithExperimentalSwitchExpressionsandShenandoahGCDefinitiveGuideToJava12DefinitiveGuideToSwitchExpressionsInJava12JVMClassDataSharingJEP310:ApplicationClassDataSharingImproveLaunchTimesOnJava10WithApplicationClassDataSharingMakeXshare:autothedefaultforserverVMUsingapplicationclassdatasharingJavaPerformanceTuningNewsFebruary2018JDK12SecurityEnhancements

苹果手机都有什么比较厉害的app?推荐6个iPhone上超级出色的APP,用完直呼相见恨晚!1、时光纪推荐理由:时间管理工具,iOS限免APP作为一款纪念美好日子的APP,这款时光纪真的是满足了我所……快速学习Javascript有哪些思维技巧Javascript在过去几年时间,这种原本用于web浏览器的脚本语言,现阶段越来越多的出现在更广泛的软件应用当中,不仅可以用在服务器端代码,还可运行ios与android应用……骨传导助听器和普通助听器有什么不同?你好,一个是气传播一个是固体传播听到声音的快慢与声效不同相同点:都是通过一定的媒介将振动传递给内耳造成听觉。不同点:空气传到路径为骨膜、听小骨、内耳,而骨传导路径则是为颌骨直接……Java零基础入门(1)计算机程序和Java概述引言软件是用程序设计语言开发出来的,而程序设计语言有这么多种,为什么我们会选择Java?原因就是Java能够让用户开发和部署可用于Internet上的服务器、台式电脑和小……苹果13肯定不会送,有钱就官方买,想省钱就选奥睿科快充套装从iPhone12开始,苹果公司就已经取消赠送充电头。即将发布的iPhone13肯定不会再送,那如果你想体验,iPhone落后的20W慢充,只能选择从官方购买慢充充套装(20W……华为有哪些高科技技术?华为啥也不是,只有20万人,8万研发人员,2万博士,还有倔老头,一部基本法,几万亩花园厂区,十几个世界各地的研究所而已华为没有什么高科技,如果说有的话,那就是被美国举全国……科技强国必须从高考开始改革,大力提高数理化的分值从现在世界各国的发展来看,除了靠科技强国,好像也没有更好的途径了。所以我们国家要想真正强大,在世界竞争中立于不败之地,就必须大力发展科技。但要想靠科技强国就必须改革现在的高考制……不到2小时充满56万mAh,是什么让EcoFlow的户外电源近几年伴随着用户出行用电需求变多,以及在室内储电意识的增加,国内户外电源的发展进入了快车道,各大厂商纷纷入局,推出了多款户外电源产品。不过前一段时间户外电源领域出现了一匹……假如激光雷达欺骗了你未来的某一天,自动驾驶已经普及,大街上跑着各种各样的自动驾驶汽车,人们在车里睡觉。突然,一辆车上搭载的激光雷达错误接收了本不属于它的信号,进而产生了一系列误判,一瞬间道路……手机口碑榜前十名华为Mate40无缘,荣耀手机登顶进入5G时代之后,手机厂商开始感到危机感,深怕和当年2G、4G时代一样,被突如其来的5G洗牌,诺基亚、HTC就是前车之鉴。因此,我们看到小米和OV等品牌,不断发布新款5G手机,……预算10002000元内有什么手机值得买?hello,大家好,我是山外。2021年已经过去一半了,是时候进行上半年中手机盘点了,可能有很多朋友也需要更换手机了。那么预算10002000元内,有什么手机值得我们购买……普源精电致力成为全球领先的测试和测量仪器及解决方案的提供商中证网讯(王珞)普源精电作为行业内具有电子测量仪器芯片自主研发能力的高新技术企业,公司专注于通用电子测量仪器领域的前沿技术开发与突破,以通用电子测量仪器的研发、生产和销售为主要……
换道场景释放增长潜力!78。1高端用户选卡萨帝洗护场景如果已经做到高端引领,后续还会有新的增长点吗?卡萨帝洗衣机用换道场景为这个问题作出解答。中怡康发布的第34周数据显示,卡萨帝洗衣机在万元以上市场份额为78。1,较上周有所提升,……诠释什么叫性价比惠普(HP)星14系列惠普(HP)星14系列笔记本王源同款8。5代i5微边框轻薄本学生办公手提电脑金属超极本【八代增强版】香槟金高清【背光键盘】【核显】配置四:i58265U8G256G1T,目前在……马来西亚疫情加剧,芯片断供,何小鹏直呼愁抽芯断供供更苦,举杯销愁愁更愁。8月17日,小鹏汽车的创始人何小鹏在某社交平台上如是感慨。想必很多人注意到了,何小鹏的配图是一张朋友圈截图,头像名字都被何小鹏马赛克……激光雷达量产,要在三要素中找到平衡点文李佳师不久前,位于底特律全球排名前五的某汽车制造商将全球最大的激光雷达订单,砸在赛瞳科技身上,于是这家2016年在硅谷创立的激光雷达公司开始受到外界关注。这家企业为什么……芯之所向,思必驰AI芯片TH1520落地车载的破局之变在智能车载后装市场,盯盯拍是思必驰的重要合作伙伴,已助力其打造盯盯拍X系列、mini系列、mola系列中的多款行车记录仪产品。近期,盯盯拍发布的车载新品,搭载了思必驰AI芯片T……再创新高!10月交付8107台,哪吒汽车稳步迈向更高阶时代11月1日,哪吒汽车公布10月交付数据。数据显示,哪吒汽车10月交付8107台,同比增长294,首次突破8000台大关,连续9个月创下交付量纪录。其中,哪吒V交付5178台,哪……称上国民二字的雷柏游戏,12岁了,蜕变新生,越发炙热当雷柏游戏被命名为代表着王者营地与美梦成真的V时,其地位不言而喻。普及,执念,根植血脉。轻取强敌,自当全擎以赴,铺满坚定的决心,一路披荆斩棘,普及不会限制新生,资历……海信携多款阅读手机亮相深圳电子展创新实力获关注好评4月9日,以创新驱动高质量发展为主题的第九届中国电子信息博览会(CITE2021)在深圳会展中心揭开序幕,国内外众多电子信息领军企业参与本届展会。其中,海信通信携旗下阅读手机、……红米K40和红米K40Pro参数配置对比,哪个性价比更高值得最近红米高管卢伟冰微博开始为红米K40系列预热,因为在本月25日红米K40系列将会发布,最近想换手机的小伙伴比较着急,下面小编就给大家做一下汇总。这次红米K40系列将会发……使用折叠屏从三星停止发布翻盖手机,到他的第一部折叠屏售卖,确实是惊艳到我了。因为这是将平板和手机两个数码产品从某种程度合二为一了。既有了手机日常打电话的功能,在展开后又可以当作平板使用。……开国十大将之首,34岁娶18岁娇妻,粟裕将军事业爱情双赢作为开国元勋之首的粟裕,在四年解放战争之中,我军进行的较为重要的战役共134次,每役歼敌3万人以上的38次,其中粟裕指挥的有12次;每役歼敌5万人以上的23次,其中粟裕指挥的有……苹果接连传来两个好消息,一个手机一个系统,用户更关心哪个?对于手机,大家真的会缺吗?智能手机普及速度很快,人均已经不止一台智能手机,新品手机发布的周期也在加速,每个月都有新款手机亮相,如果都跟着去选择那真是大可不必。8月18日,……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网