码出高效: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专家分享他们在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 )在布里斯托尔(英国)的Oracle工作于开源,Java和无服务器/云基础架构。

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:+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开发手册

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

  1. Java 11手册:最聪明的技巧来简化Java 11导航

    Java 11:提示和技巧,日常陷阱及更多 为了庆祝Java 11的发布,我们邀请了八位Java专家与他们分享最新版本的最佳和最差体验. 由于本系列旨在作为Java 11的手册,因此我们的受访者还将谈 ...

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

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

  3. 阿里巴巴Java 开发手册 码出高效,码出质量 1.4.0

    前言 <阿里巴巴Java 开发手册>是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,系统化地整理成册,回馈给广大开发者.现代软件行业的高速发展对开 ...

  4. 《码出高效:Java 开发手册》正式发布,83行代码计划启动

    可爱的Java开发者们,让你们久等了! 9月22日杭州云栖大会,众所期待的新书<码出高效:Java 开发手册>正式发布,并宣布将所有图书收益捐赠于技术公益项目. 本次新书发布,邀请了来自阿 ...

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

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

  6. 让你久等了!《码出高效:Java 开发手册》正式发布

    可爱的Java开发者们,让你们久等了! 9月22日杭州云栖大会,众所期待的新书<码出高效:Java 开发手册>正式发布,并宣布将所有图书收益捐赠于公益项目. 此书从立意到付梓,历时超过两年 ...

  7. 码出高效:Java开发手册PDF

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

  8. 码出高效:Java开发手册笔记(线程池及其源码)

    码出高效:Java开发手册笔记(线程池及其源码) 码出高效:Java开发手册笔记(线程池及其源码) 码出高效:Java开发手册笔记(线程池及其源码) 前言 一.线程池的作用 线程的生命周期 二.线程池 ...

  9. 阿里巴巴开发手册最新版、码出高效、性能调优实战、成神之路

    清幽现云山, 虚静出内功 <阿里巴巴Java开发手册>是阿里内部Java工程师所遵循的开发规范,涵盖编程规约.单元测试规约.异常日志规约.MySQL规约.工程规约.安全规约等,这是近万名阿 ...

最新文章

  1. android 字体上添加横线,字体下面添加下划线
  2. spring 源码 找不到 taskprovider_一步一步构建Spring5源码
  3. 理解 ajax、fetch和axios
  4. 互联网协议第六版部署提速 阿里专家详解全套安全解决方案
  5. 怎么监控一个接口的传输数据_监控安装超详细教学教程,学会又多一门技能
  6. IDEA 15款神级良心插件强烈推荐收藏
  7. 【Python 标准库学习】数据科学计算库 — math
  8. 数据增量更新定义_TiDB 在 OPPO 准实时数据仓库中的实践
  9. 华为Mate 30系列5G版屠榜双十一:当之无愧的5G爆品
  10. ArcGIS里表示地理信息的动态变化(例三)
  11. keepalived vrrp_script脚本不执行解决办法
  12. 在线抽签html,抽签网页板代码
  13. AD使用总结4——PCB天线知识
  14. 【原创】MapGIS K9 三维二次开发入门
  15. 51单片机数码管表白
  16. Python提取多张excel表上的数据,合并汇总到一张新表
  17. 引用bootstrap的两种方法
  18. 程序基石系列之C++多态的前提条件
  19. 租服务器太贵?流程太麻烦?教你如何免费解决
  20. Firefly ROC-RK3588S-PC板卡详细介绍

热门文章

  1. 系统工程原理(持续更新):2.系统科学体系
  2. 5·17电信日 | 中国广电谈5G
  3. DNS服务器配置- windows2012
  4. vue flv播放器报错Cannot read property ‘addEventListener‘ of null
  5. C++实现键盘记录器v1.0
  6. 中国联通短信网关接入程序源代码(SGIP1.2协议)
  7. c语言猜拳游戏实训报告,Java猜拳小游戏程序设计实验报告.doc
  8. Javaweb项目入门到实战-搭建javaweb环境并运行(下)
  9. 针对此次iTunes12.1升级导致第三方用不了的解决方案
  10. 判断各种浏览器360,火狐,搜狗,遨游,世界之窗,绿色,qq,猎豹等待