Eclipse对Java 8的支持

您所在的位置:网站首页 eclipse哪个版本支持jdk8 Eclipse对Java 8的支持

Eclipse对Java 8的支持

2023-10-02 01:49| 来源: 网络整理| 查看: 265

在这次采访中(最初以德语在Eclipse Magazine上发表),Pivotal Inc.首席软件工程师Martin Lippert讨论了最新的Java版本以及Eclipse IDE开发的兴衰成败。

 

JAX:Java 8对您有哪些亮点?

Lippert: 在Java 8中,对我来说特别 值得一提的 是lambda表达式。 有了它们,代码可以编写得更简单,清晰,许多麻烦的Inner类终于消失了。 特别是与Streams API以及集合的相关扩展结合使用时,lambda表达式看起来非常优雅。

关于Java新语言功能的许多宣传都针对lambda表达式。 IntelliJ IDEA早就意识到了这一点,并Swift提供了初步的支持。 Eclipse稍微落后了–这是为什么呢?

我认为有多种原因。 首先,Eclipse中使用的Java工具:它具有自己的编译器实现,与javac编译器无关。 该编译器是Java工具的核心部分。 它不仅生成类文件,还生成示例抽象语法树,其余的工具使用该树来实现我们都非常喜欢的许多有用功能。 诸如内容辅助,自动完成,重构,快速修复等功能。

此外,Eclipse Java编译器非常快,可以增量编译,甚至可以从语法上不正确的代码生成可用的Class文件,并在错误和警告的手段上执行大量的静态代码分析,各种错误和警告可能表示编程错误。 在许多方面,它都优于标准javac编译器。 但是,另一方面,对语言的所有更改都会影响编译器,因此必须将其锁定在Eclipse Java编译器中。 这需要时间。

在Java 8的情况下,事实是,很长一段时间以来,对于每个功能的规范都不清楚且不完整。 即使在最近,对于编译器重要的许多细节也发生了变化。 当然,这不是实现编译器的最佳基础。 因此,我认为,团队在真正开始工作之前,已经在规范的许多方面等待了良好的基础。

另一方面,其他IDE则具有一定的优势,因为它们通常不实现自己的编译器,而是使用JDK的现有编译器。

因此,他们无需构建完整的编译器,而只需构建一个解析器即可实现IDE功能。 当然,这要快得多,并且可以像Java 8的IntelliJ一样,更早地支持新的语言版本-直到早期的beta版本。

就Java工具而言,随着技术的挑战,随着时间的推移,Eclipse也伴随着人员挑战,因为JDT Core团队经历了巨大的变化。 它必须将新的人员纳入现有的编译器实现中,这不应被低估。

最后,您应该记住,官方JDK8发行版可能会及时提供Eclipse的Java-8支持。 认为Eclipse JDT团队再次做了非常出色的工作。

Eclipse将来发布自己的编译器是否有意义?

我想是的。 Eclipse的编译器是一种非常优秀且非常快速的Java编译器,是其他任何软件所无法比拟的。 它在社区中享有很高的声誉,不仅可以在Eclipse中使用,而且还可以作为Java编译器在其他产品和项目中使用。

例如,Tomcat使用Eclipse编译器来转换生成的代码(例如JSP)。 因此,如果不进一步开发该编译器,将已经是很大的损失。 此外,它提供的功能比标准编译器多得多。 这些是我不想错过的功能。 编译器执行的大量静态代码分析特别有用。 其他编译器无法竞争。

我还认为,从Java语言开发的角度来看,拥有另一个完全独立的编译器实现很有用。 可以快速检测到规范中的空白和/或歧义,并可以进行讨论和解决。 因此,可以在原始javac编译器中找到错误。

尤其重要的是,将Eclipse中的现有Java工具转换为外部标准Java编译器(如javac)(如果可能的话)当然是一项巨大的工作–考虑到在进行转换时,您几乎没有任何意义。将会失去非常有用的功能-不会获得新功能。

目前的发展状况如何?

编译器实现与完成一样好。 在此方面,错误仍然主要是修复程序,并且添加了少量补充。 因此,IDE能够理解Java 8源代码并进行编译,包括已经不言而喻的功能,从语法突出显示到协调和错误报告。 您可以使用IDE毫无问题地编辑任何基于Java -8的源代码,并进行编译和运行-对于lambda表达式而言,这并不是一件容易的事。

另外,最近在UI领域发生了很多事情,因此现在几乎在所有地方都可以进行内容辅助和自动完成。 甚至lambda,特定的重构已经可以工作,最重要的是,您可以使用该重构在lambda表达式中转换匿名内部类(反之亦然)。 作为清理操作,这是一个很大的缓解。

除了lambda表达式之外,新的类型注释也很有趣,并且已经由JDT支持。 注释类型比以前更加灵活。 对此的标准情况是@ NonNull批注,可以将其附加,例如,现在集合的列表元素的类型(作为可插入类型系统的示例)。

尽管在标准JDK中仅实现了实际的机制,但已经使用现成的注释(例如@ NonNull)来实现Eclipse,Eclipse编译器会对其进行检查。 此功能已经在Eclipse Java 8中使用,但是现在有了Type注释变得更加灵活。 通过一致地替换这些批注,您可以在代码中节省许多空检查,而依赖于编译器。 一个非常有用的编译器功能。

您分别受雇于Pivotal和SpringSource。 对于Spring来说,插入Eclipse Tooling的好处到底在哪里?

我们的目标是使下一代应用程序的开发尽可能简单有效。 因此,我们在整个其他框架和库中与Spring框架一起工作,这些框架和库仅使真正的现代应用程序开发真正可行,例如Spring XD,Gemfire,RabbitMQ,Redis,当然还有Cloud Foundry(仅举几例)。

除了实际的框架,库和运行时环境外,还有诸如IDE之类的工具可以支持日常应用程序开发。 谁想今天错过内容支持,重构支持或JUnit集成? 而且,IDE对您所使用的编程模型和/或框架了解得越多,他们所能提供的支持就越好。 IDE的选择通常是一个问题。 一些开发人员对IntelliJ IDEA发誓,而其他开发人员则更喜欢Eclipse。 在这两种情况下,他们都应该获得使用Spring的最佳支持。

尽管Jetbrains和Spring支持IntelliJ和Oracle负责Netbeans对Spring的支持,但我们将工作重点放在Eclipse IDE上,最终Java领域中使用最广泛的IDE也应该为Spring提供出色的支持(笑)。 这样,各种Eclipse发行版的用户也可以从Spring工具中受益。

此外,我们受益于Eclipse社区中不同公司的合作。 Eclipse IDE提供了一个出色的平台,不同的公司可以在该平台上实施不同的组件,然后将这些组件组合成一个全面的IDE。 例如,当我们实施Spring工具时,其他小组将在Eclipse和WTP中进行Maven集成。 最后,每个人都将从中受益:获得广泛IDE的用户以及互惠互利的IDE开发人员。

翻译自: https://jaxenter.com/java-8-support-in-eclipse-107723.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3