码出高效:java开发手册
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 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:+UseEpsilonGC
public 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开发手册