热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java11和IntelliJIDEA——有趣的搭配

Java11和IntelliJIDEA由TrishaGee于2018 年9月26日发表本周Java11发布了!感觉就像昨天我们对Java9说的一样。这个新的六个月发布节奏对Java
Java 11和IntelliJ IDEA

Trisha Gee于2018 年9月26日发表

本周Java 11发布了!感觉就像昨天我们对Java 9说的一样。这个新的六个月发布节奏对Java社区来说是一个很大的变化,而且是一个受欢迎的 – Java开发人员定期获得一小部分有趣的新功能。

《Java 11和IntelliJ IDEA——有趣的搭配》

Java 11

Java 11与之前的Java 10一样,有一个相当简短的新功能列表,这对我们的开发人员来说是件好事,因为它更容易看到对我们有用和有用的东西。从IntelliJ IDEA的角度来看,实际上只有一个功能受益于IDE中的一些额外支持,那就是JEP 323:Lambda参数的本地变量语法。我们已经在IntelliJ IDEA 2018.2的Java 11支持环境中写了这篇博文,但让我们再次快速介绍它。

在Java 8中引入lambda表达式时,您可以编写如下内容:

 

1

BiConsumer<Processor, String> consumer1 = (Processor x, String y) -> x.process(y);

包含x和y参数的类型信息。但是您不需要包含此类型信息,因为它已经是已知的 &#8211; 在这种情况下,左侧的BiConsumer使用泛型声明这两种类型。IntelliJ IDEA允许您根据需要删除这些类型:

 

《Java 11和IntelliJ IDEA——有趣的搭配》

 

Java 10 var为局部变量类型引入,我们将在本文稍后讨论,Java 11进一步考虑var了lambda表达式参数。这个的主要用例是当参数需要注释时。注释出现在类型旁边,因此在Java 11之前,这意味着带有注释的代码可能类似于:

 

1

BiConsumer<Processor, String> consumer = (@NotNull Processor x, @Nullable String y) -> x.process(y);

在Java 11中,我们可以使用var而不是参数类型来缩短它,IntelliJ IDEA可以为您执行此转换。请注意,当您在类型上按Alt + Enter时,建议执行此操作,但未在代码中将其标记为警告。

 

《Java 11和IntelliJ IDEA——有趣的搭配》

 

Java 11:请注意,您使用的API可能不再存在

除了新的语言功能之外,了解Java 11实际上删除了功能也很重要。此步骤不仅会影响已弃用的功能和功能,还可以通过将一些大型部分移动到单独的依赖项(例如JavaFX)或期望应用程序使用已经可用的外部依赖项来简化语言的核心。(例如Java EE)。

无论是Java EE和CORBA组件已被删除。虽然CORBA可能没有被高度使用,但许多应用程序当然都使用Java EE。通常,这是在应用程序服务器或Java EE的某些其他特定实现的上下文中,但是某些应用程序和库使用Java EE的一小部分用于特定目的。例如,JAXB现在不是核心语言,您需要添加特定的依赖关系。有关此StackOverflow问题可能的替换依赖项的更多信息。

Java 10

Java 10仅在六个月前发布,我们中的许多人可能还没有开始使用它。

提醒一下,Java 10的主要新功能是引入了var,正如我们上面所看到的,它让我们使用var而不是特定的类型。这并没有在Java中引入动态类型,而是继续减少Java中样板的趋势,类似于引入菱形运算符,这意味着我们不再需要在等号的两边声明泛型类型。

IntelliJ IDEA var以多种方式支持。首先,检查可以选择用类型varvar类型替换类型。

 

《Java 11和IntelliJ IDEA——有趣的搭配》

 

默认情况下,检查不会向您发出有关可以使用的var代码(或应具有显式类型的代码)的警告,但通常可以根据您团队的样式配置检查。

《Java 11和IntelliJ IDEA——有趣的搭配》

IntelliJ IDEA还可以帮助您导航使用的代码var。按住Ctrl /⌘并将鼠标悬停在上方var将显示变量的类型。

《Java 11和IntelliJ IDEA——有趣的搭配》

与任何其他类型一样,我们可以单击此处并导航到声明,或者我们可以使用Ctrl + B /⌘B导航到声明var。我们还可以使用快速文档(Ctrl + Q / F1)或快速定义(Ctrl + Shift + I /⌥Space)var来查看类型。

《Java 11和IntelliJ IDEA——有趣的搭配》

我们在IntelliJ IDEA和Java 10的网络研讨会上var详细介绍了使用情况。

Java 10还附带了一些对Optional和Collectors的一些很好的补充,所以如果你使用Streams API,那么值得看看这些新方法。

Java 9

去年9月发布的Java 9版本很大,人们可能会惊讶地发现10和11都有效地取代了9 &#8211; 一些JDK提供商(例如Oracle)将不会为Java 9(或Java 10)提供长期支持。想要直接从Java 8跳到Java 11的团队,在没有长期支持的情况下跳过版本,仍然需要了解Java 9中的变化,因为很明显它们将成为Java 11的一部分。

我们已经在这个博客上多次介绍过Java 9和IntelliJ IDEA,并且我们有一个网络研讨会的录音,其中涵盖了开发人员可能感兴趣的许多Java 9功能。当然,模块化是最着名的功能,但还有很多其他功能,包括新的便利工厂收集方法。就个人而言,这是我最喜欢的Java 9功能,方便的IntelliJ IDEA检查可以提供迁移代码以使用新方法。

 

《Java 11和IntelliJ IDEA——有趣的搭配》

 

关于移民的说明

虽然这篇文章的目的是展示IntelliJ IDEA中的功能,使得使用Java 9,10和11更容易,而不是专门帮助开发人员将他们的代码迁移到这些版本,我们不得不投入这方面的一些建议。如果您希望在不久的将来使用Java 11,首先应确保所有依赖项都是最新的。许多JVM语言,库和框架必须对使用Java 9进行重大更改,而且还要更多地跟上Java 10和Java 11的更改。您应该能够以最小的方式更新您正在使用的库的版本对您自己的应用程序的影响,并且是能够使用最新版本的Java的重要一步。

如果您对从Java 8迁移感兴趣,我在其他地方写了几篇关于该主题的文章,特别是处理迁移到Java 9(当然,它也适用于Java 11):

  • 当然,使用IntelliJ IDEA 从Java 8迁移到Java Java for Java杂志。
  • 无痛迁移到Java Jigsaw模块 &#8211; InfoQ的案例研究,旨在为您的应用程序引入模块化。

Java 11可能只是刚刚发布,但IntelliJ IDEA已经完全支持它,并且更容易使用Java 11,10和9中的新功能。《Java 11和IntelliJ IDEA——有趣的搭配》

今天试试吧!您可以下载开源OpenJDK版本(由Oracle提供),该版本现在可供生产使用。

请注意,我在这里建议使用OpenJDK,因为Oracle已经更改了许可证,现在生产商业和开源JDK。请  阅读这篇文章了解更多信息,了解非常重要。

本文翻译自:Trisha Gee于https://blog.jetbrains.com/idea/2018/09/java-11-and-intellij-idea/的文章

 

转载需备注作者及出处


推荐阅读
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 本文详细介绍了如何使用OpenSSL自建CA证书的步骤,包括准备工作、生成CA证书、生成服务器待签证书以及证书签名等过程。 ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 本文探讨了如何在 Java 中将多参数方法通过 Lambda 表达式传递给一个接受 List 的 Function。具体分析了 `OrderUtil` 类中的 `runInBatches` 方法及其使用场景。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
author-avatar
nnamyp_826
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有