Java 11:提示和技巧,日常陷阱及更多

为了庆祝Java 11的发布,我们邀请了八位Java专家与他们分享最新版本的最佳和最差体验。 由于本系列旨在作为Java 11的手册,因此我们的受访者还将谈论他们对Java 11的第一印象,技巧和窍门,最聪明的黑客技巧,以及如果他们真的在乎Java 11的话,那将是不可避免的事情-比他们关心的更多至少Java 8 。

但是首先,要了解一些情况:在Java 11发布之前,我们与八位Java影响者讨论了向最新版本的迁移,以及即使它没有“杀手级功能来推动采用”,它是否也是“有价值的”迁移里程碑。马丁•汤普森(Martin Thompson)在采访系列中表示赞同。 如果您尚未迁移,我们认为您想了解此新版本的优缺点。

优点

+使用HTTP客户端处理非阻塞异步代码

+对lambda参数使用带局部变量的注释

+ TLS 1.3 真正快速的周转集成

+对ChaCha20和Poly1305加密算法的新支持

+比Java 9和10更好的启动性能

+ 字符串API增强功能(重复,isBlank,条带,行)非常酷

+过时的功能被抛出

+升级时影响较小

+使用启动单文件源代码程序

+对谓词接口的微小更改,添加了not()静态方法

缺点

–在不编译的情况下启动单个源代码程序会造成混乱

–对程序员几乎没有

–根据此版本中不推荐使用的位,可能给这些用户带来不便

–已从JDK 11中的JDK中删除了JAXB。这在首次设置jOOQ时会给jOOQ用户带来一些额外的配置麻烦。

–启动仍可与Java 8媲美

不要错过“ Java 11手册”系列的第一部分:

  • Java专家分享他们在Java 11中的最佳和最差的经验
  • Java 11是否在所有正确的方框中打勾?

会见专家

Mala Gupta( @eMalaGupta )是eJavaGuru.com的创始人。 她是DelhiJUG的Java冠军,书籍作者,演讲者和联合负责人。

Josh Long( @ starbuxman )是Pivotal的Spring Developer Advocate。 他是5本书和3本畅销视频培训的作者。 他还是Java冠军。

Lukas Eder( @ lukaseder )是Data Geekery GmbH的创始人兼研发主管,该公司是jOOQ背后的公司和Java冠军。

Matthew Gillard( @MaximumGilliard )在开源,Java和无服务器/云基础架构上为英国布里斯托尔的Oracle工作。

Marcus Biel( @MarcusBiel )是一位演讲者,作家,JCP成员和Java Clean Code的传播者。

Trisha Gee( @trisha_gee )是JetBrains的一名开发倡导者,是伦敦Java社区的重要成员和Java冠军。

Simon Ritter( @speakjava )是Azul Systems的副CTO。

Tal Weiss( @weisstal )是OverOps的CTO和联合创始人。

更好地“导航” Java 11的提示和技巧

Mala Gupta:以下步骤引用了OpenJDK,而不是OracleJDK。 话虽这么说,我更喜欢从这里的“功能”链接开始 。

功能选项卡打开一个JEP(Java增强建议)编号及其名称的列表:

每个JEP的细节都包括其“范围”和“组成部分”:

我更喜欢浏览Java新版本的功能,方法是将JEP按其作用域分组,然后按其组件类型进一步分组。 在Java 11中,JEP的范围分为“实施”,“ JDK”和“ SE”。 概述之后,我将深入探讨:

JEP(范围:实施)

垃圾收集器– Epsilon,ZGC; 和Aarch64 Intrinsics指定要求。 要使用它们,它们应该由SE实现来实现。

在范围内,JEP可以进一步细分为“组件”类型。 例如,垃圾收集器Epsilon和ZGC在Hotspot处理gc。 Aarch64 Intrinsics在热点中处理编译器。

JEP(范围:JDK)

启动单文件源代码程序会修改编译器(一种JDK工具)如何从源文件添加类的启动(无需显式编译)。 Nashorn JavaScript Engine的弃用会影响JDK中的核心库。 飞行记录器和低开销堆分析是热点VM的一部分。

JEP(范围:SE)

先前所有的JEP都与SE相关。 Lambda参数的局部变量语法将'var'的用法与lambda参数对齐。 使用'var',您还可以在lambda参数中使用注释。

Pack200压缩方案与Java 5周围的jar文件或applet一起使用,以减小Java应用程序包的大小,因此可以通过Internet下载它们。 随着Internet速度的提高和小程序的弃用,Pack200变得多余,标志着它已弃用。

在同一个源文件中定义的类被编译为不同的字节码文件,从而通常通过桥方法来扩大私有成员的范围。 基于嵌套的访问控制引入了在同一个源文件中定义多个类时形成一个嵌套的形式化概念,共享一个通用的访问控制机制。

HTTP客户端和Unicode 10影响核心库-分别为java.net和java.lang。

删除Java EE和CORBA模块(因为Java EE现在与Eclipse Foundation一起使用),

与Curve25519和Curve448,ChaCha20和Poly1305加密算法和传输层安全性(TLS)1.3的密钥协议处理了安全性库中的更改。

访问较小的修改列表

通过单击上一页上的“发行说明”链接来滚动打开的页面。 向下滚动以查看不属于JEP的添加或修改:

访问带注释的API规范

它使您可以查看Java API中的所有更改-添加,修改或删除。 例如,让我们逐步完成必要的步骤,以访问修改后的Java String API规范。

第2步:点击“带注释的API规范”

步骤3:之前的步骤将带您进入一个页面 ,该页面列出了Java 10中所有Java API的更改。

步骤4 :滚动页面,然后单击java.lang

步骤5:单击java.lang后,在打开的页面上单击String(左面板)。

步骤6 :String类列出了6种新方法(绿色)的添加。

步骤7 :在左侧面板中查看新添加到String类的方法。 访问右侧面板中的方法描述。

Josh Long: JDK本身非常简单。 许可可能很棘手! Java冠军西蒙•里特(Simon Ritter)发表了一篇不错的文章, 供那些考虑使用哪种JDK版本的人选择 。 然后,甚至在最近,我们Java Champions发行了一份文档-Java仍然免费 -尽我们所能 。 我衷心建议读者阅读两个文档。

Matthew Gillard:我发现这里的JEP(JDK增强建议) 确实可读,并为新功能提供了很多理由。 除此之外-阅读JavaDoc,阅读博客,然后玩耍-试试吧!

Marcus Biel:当然,第一个调用端口是OpenJDK项目页面,其中列出了Java 11发行版的17个JEP。 乍一看,Java 11似乎主要是在“幕后”提供了更改,而没有真正的开发人员功能。 但是,事实并非如此。

例如,我认为String API增强功能(重复,isBlank,条带,行)非常酷。 对我而言,通常是一些小事情使我们作为开发人员的生活更加轻松。 到现在为止,我们不得不访问诸如commons-lang之类的外部库来处理诸如“ isBlank”之类的简单事情,这太棒了,我们以后可以保存它! 最后但并非最不重要的一点是,我认为将过时的功能抛弃掉总是很好的,例如Java EE和CORBA模块或Java Web Start。

乍一看,Java 11似乎主要是在“幕后”提供了更改,而没有真正的开发人员功能。 但是,事实并非如此。

Trisha Gee: JDK 11实际上删除了一些API,这对于许多人来说可能是最大的惊喜。 例如,CORBA消失了,SE代码中不再包含Java EE代码(您应该使用外部Java EE库),并且 JavaFX 现在是一个外部依赖项,并作为社区的努力 予以 维护。

Simon Ritter: 除了我的博客文章之外,我还向开发人员指出了一些资源。

对于自JDK 10起的新API列表,Gunnar Morling 在Github上的列表非常有用。 可以将其与标准API文档一起使用,以了解JDK 11中可用的所有新类和方法。

另外,要查看java命令的-XX命令行选项已更改的内容,Chris Newland提供了很好的参考资料 。

Tal Weiss: OpenJDK网站上的JDK 11官方页面有一个非常清晰的发行说明页面,其中包含指向发行版中所包含的不同JEP的链接。 JEP编写得很好,包括清晰的描述,目标和实施说明。 在我看来,仅此一项就足以浏览JDK 11。

迄今为止发现的最聪明的黑客

Matthew Gillard:带有shebang行的单源文件启动器非常简洁-我将其与新的EpsilonGC结合使用来编写用例脚本:

#!/opt/jdk/jdk-11/bin/java --source 11 -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGCpublic class MyClass {public static void main(String... args){...

Tal Weiss:我真的很喜欢JEP 330的实现,该实现允许通过命令行使用Shebang语法非常快速地对Java代码进行原型制作,而无需经历构建链。 我认为这对于通用脚本和语言学习也非常方便。

Trish Gee:由于Java 11的更改,我使用的某些旧版本库不再可用。 例如,我发现了缺少类文件的运行时错误问题。 有两件事使我的生活更轻松-确保我使用的依赖项是最新版本; 并为已移出核心库(在我的情况下为JAXB)的API添加其他依赖项。

Simon Ritter:由于JDK 11中开发人员功能的数量相对较少,我尝试过的任何事情都没有给我带来任何问题。 新功能的文档非常好,因此我尝试过的所有东西都在第一次尝试时就起作用了。

在这个小型系列的最后一部分,专家们将揭示他们是否真的在乎Java 11 —至少比他们对Java 8的关心更大。 为什么这很重要? 您很快就会发现!

翻译自: https://jaxenter.com/manual-java-11-series-part-3-150308.html

Java 11手册:最聪明的技巧来简化Java 11导航相关推荐

  1. 码出高效:java开发手册_Java 11手册:最聪明的技巧来简化Java 11导航

    码出高效:java开发手册 Java 11:提示和技巧,日常陷阱及更多 为了庆祝Java 11的发布,我们邀请了八位Java专家与他们分享最新版本的最佳和最差体验. 由于本系列旨在作为Java 11的 ...

  2. 不迈出第一步_Java 11手册:新Java发布系列迈出的一小步,Java 8用户迈出了一大步...

    不迈出第一步 Java 11:废除Java 8是否足够重要? 为了庆祝Java 11的发布,我们邀请了9位Java专家与他们分享最新版本的最佳和最差体验. 由于本系列旨在作为Java 11的手册,因此 ...

  3. Java面试手册——高频问题总结(二)

    这里将Java集合和垃圾回收的知识总结,放到(二)中.对Java平台的理解.Java基础知识.面向对象请参考Java面试手册--高频问题总结(一) Java高频问题面试: 序号 文章 1 Java面试 ...

  4. 佳铁怎样传输程序_阿里资深开发工程师合著《Java开发手册》,影响250万程序员附pdf...

    写在前面 <码出高效: Java开发手册> 源于影响了全球250万名工程师的<阿里巴巴Java开发手册),作者静心沉淀,对Java规约内容的来龙去脉进行了全面而彻底的梳理.本书以实战 ...

  5. java 堆大小的最大值_优化Java堆大小的5个技巧

    优化Java堆大小的5个技巧 摘要:Java堆容量不足可以对性能造成很大影响,这样无疑就给程序带来不可必要的麻烦,本文总结了影响Java堆容量不足的五大原因以及巧妙地去优化? 本文作者Pierre是一 ...

  6. 《码出高效:Java开发手册》背后的故事

    2018年12月22日,由博文视点组织的<码出高效:Java开发手册>作者见面会暨签售仪式在北京举行,InfoQ对书籍作者孤尽(杨冠宝).鸣莎(高海慧)进行了采访,了解了此书出版背后的一些 ...

  7. 《阿里巴巴Java开发手册1.4.0》阅读总结与心得(一)

    前言 下面是阿里对<阿里巴巴 Java 开发手册>(下称<手册>)的介绍: 凝聚了阿里集团很多同学的知识智慧和经验,这些经验甚至是用血淋淋的故障换来的,希望前车之鉴,后车之师, ...

  8. 阿里巴巴Java开发手册(嵩山版)v1.7.0 及各个历史版本 百度云直接带走 不需要其他操作

    阿里巴巴Java开发手册(嵩山版)v1.7.0 阿里巴巴Java开发手册(泰山版)v1.6.0 阿里巴巴Java开发手册(华山版)v1.5.0 阿里巴巴Java开发手册(详尽版)v1.4.0 阿里巴巴 ...

  9. 码出高效:java开发手册_Java 11手册:Java专家分享他们在Java 11方面的最佳和最差的经验

    码出高效:java开发手册 Java 10标志着Java生态系统新时代的开始,但最新版本证明仍有一些里程碑可言. Java 11是Oracle新的六个月周期中的第一个LTS版本. 您可以在此处下载Ja ...

最新文章

  1. python大神教程_大神python教程415集全套,拿走不谢
  2. Windows Phone开发(25):启动器与选择器之WebBrowserTask
  3. php算法学习,php算法学习之动态规划
  4. mybatis入门案例
  5. 这种玩法闻所未闻,利用python编程自定义QQ的在线状态
  6. Target runtime com.genuitec.runtime.generic.jee60 is not defined.报错解决
  7. 利用python进行tf-idf算法绘制词云图_利用python实现通过TF-IDF和BM25提取文章关键词...
  8. CodeForces - 1513B AND Sequences
  9. java session机制_如何学习Session的机制使用
  10. BZOJ 3675 APIO2014 序列切割 斜率优化DP
  11. java实践体会,java实践心得体会范文3篇
  12. 常用Windows快捷键大全
  13. ssh 远程连接详解--(linux运维09)
  14. 幼儿园调查过程怎么写_关于幼儿园的调查报告格式及范文
  15. 警惕针对SQL的爆破攻击,入侵者会完全控制服务器,挖矿只是小目标
  16. mac蓝牙鼠标总是自己断开_完美的解决方案:解决Mac蓝牙鼠标和键盘经常断开的问题...
  17. 回归模型效果评估系列3-R平方
  18. 为什么Linux的fdisk分区时第一块磁盘分区的First Sector是2048?
  19. 在 RedHat、 CentOS、 Fedora 上安装 Teamviewer 9(转)
  20. 我把B站番剧的视频和弹幕一起下载下来了……

热门文章

  1. 局域网、广域网、互联网三者的区别以及应用领域
  2. 打开word就报错“Microsoft Office Word 遇到问题需要关闭如何解决?
  3. 初学者必学项目之C++实现简易通讯录
  4. Word2003入门动画教程46:用“碎片”复制或移动文章
  5. python玩转android_Python Xplorer
  6. 郭健: Linux进程调度技术的前世今生之“前世”
  7. 范围变更管控案例_项目管理案例讨论“如何有效开展项目变更管理”
  8. 云计算医疗行业解决方案的前世今生
  9. 机器学习之条件概率,联合概率,贝叶斯定理详解
  10. python计算火车的运行时间_python+pandas处理火车换乘数据