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

Java 11和IntelliJ IDEA

Trisha Gee2018 年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.2Java 11支持环境中写了这篇博文,但让我们再次快速介绍它。

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

 

1

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

包含x和y参数的类型信息。但是您不需要包含此类型信息,因为它已经是已知的 – 在这种情况下,左侧的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还附带了一些对OptionalCollectors的一些很好的补充,所以如果你使用Streams API,那么值得看看这些新方法。

Java 9

去年9月发布的Java 9版本很大,人们可能会惊讶地发现10和11都有效地取代了9 – 一些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):

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

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

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

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

 

转载需备注作者及出处

    原文作者:多纤果冻
    原文地址: https://blog.csdn.net/qq_37939251/article/details/83145480
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞