IntelliJ 平台 2020 年的路线图,项目模型将重新设计

西域战神 2019-12-20 13:48:35 ⋅ 779 阅读

JetBrains 发文介绍了其 IntelliJ 平台 2020 年的路线图。

文章主要介绍了当前 JetBrains 在改进 IntelliJ IDEA 和基于 IntelliJ 平台的 IDE 方面所做的一些工作,主要包括性能和对现代开发工作流的支持两个方面。改进结果将会在明年发布,其中一些会发布在春季的 2020.1 版本中。


性能

索引性能

与 IDE 性能有关的两个主要痛点是启动性能,索引耗时较长的工具被认为是重量级的。JetBrains 表示,明年关注点将转向索引性能方面。

针对此问题官方采取了多管齐下的方法。首先,支持使用预建的索引块,这样每个用户 IntelliJ 实例都不必执行索引java.lang.String类的工作。计划明年逐步提供支持,从 JDK 开始,然后涵盖 Maven Central 的库以及其它 IDE 中的解释器和包。同时还在研究支持团队或企业内项目源代码的索引块共享的方法,虽然这一块目前还没有任何具体计划。

其次,计划通过在索引时提供更多的 IDE 操作来减少索引的破坏性。

第三,将检测并通知用户有关索引异常的信息,包括索引花费时间太长的文件、索引重新建立频率太高的文件以及异常导致的索引重建,目的是提供解决这些问题并提高 IDE 在项目上的性能的清晰步骤。

同时也计划支持进行旧性能优化,以确保索引系统不会执行任何不必要的工作并且不会产生可避免的开销。

读/写锁线程模型重新设计

UI 卡死(freeze,冻结)是一个很大的问题。今年虽然已经构建了用于报告此类卡死问题的基础,并进行了架构更改以修复许多相关问题,比如文件系统事件的异步侦听器,但是接下来的一年中,计划迈出更大的一步:将需要写锁定的操作移出 UI 线程。

早在 IntelliJ IDEA 早期就做出了一项架构决定,该决定要求大多数操作需要修改 IDE 的内部数据结构才能在 UI 线程上运行,也就是包括基本操作(将字符插入文档中)和大规模操作(重新命名具有数千种用法的方法)。这种架构的好处是简单的编程模型,但是明显的缺点是 UI 响应能力在许多情况下都会受到影响。

多年以来,官方一直在寻找方法来解决此架构的局限性,主要是将大型操作拆分为在后台运行并应用于 UI 线程的部分。一个更基本的解决方案是完全摆脱 UI 线程的要求,但是直到最近,还不知道如何在不对自己的代码和第三方插件进行重大重写的情况下做到这一点。

不过现在,JetBrains 已经有了一个允许逐步迁移的架构解决方案,并且正在开始实施。明年将重构 IntelliJ 平台的基本 UI 组件和 API,以采用新的线程模型。一旦新模型稳定并且可以看到改进,将在所有 IDE 中切换到新模型,从而使 UI 平滑且没有滞后。

无需重启即可加载和卸载插件

该特性已经在 IntelliJ IDEA 2019.3 中预览,它使开发者不用重新启动就可以安装主题和键盘映射插件,无缝升级。2020.1 版本中会将此支持扩展到所有类型的插件。计划将为大部分捆绑的插件提供支持,并且会为第三方插件开发人员提供支持说明。

这项工作更有意义的地方在于,它的最终目标是 IDE 可以根据开发者打开的每个项目的大小自行调整大小,比如仅针对使用 Spring 的项目加载 Spring 插件,仅针对 Angular 项目加载 Angular 插件。这样如果不使用某项技术,那么就不会看到与此相关的任何 UI 元素,也不会看到支持该技术的插件对性能或内存使用量产生任何影响。

工作流支持

协同编辑

协同编辑是问题跟踪器中投票最高的请求,目前 JetBrains 也在跟进这一功能。在目前采用的方法中,将有一个主 IDE 在运行源代码的计算机上运行, 其他用户能够将其 IDE 作为“瘦客户机”连接到主 IDE,而无需直接进行源代码访问。每个连接的用户都将具有自己的状态,包括打开文件集与插入号位置等,并且可以根据需要选择“跟随”另一个用户。

瘦客户机用户将有权访问核心 IDE 功能,例如导航、补全和调试,但不能访问完整的功能集,例如,在初始版本中,瘦客户端可能无法执行版本控制操作。

协同编辑支持基于 Rider 协议,因此很可能首先在 Rider 中发布,然后扩展到其它 IDE。不过这是一项长期工作,IntelliJ IDEA 2020.1 版本中暂时还是看不是相关成果的。

支持云执行

相当长一段时间以来,许多 JetBrains 产品都支持在容器内运行和调试代码,但是,在不同产品中这些功能的实现之间并没有太多相关性,甚至基本功能(如 Docker 支持)的 UI 也不一致。

现在 JetBrains 引入了目标环境的概念,该概念提供了一种可双向复制文件并在目标环境中启动进程的方法。在 IntelliJ IDEA 2020.1 中,受支持的环境将包括本地计算机、Docker 容器和通过 ssh 连接的计算机。

在后续发行版中,计划统一支持围绕新架构的现有 Docker 和远程解释器。除此之外,还将提供更深入的云集成。

重新设计项目模型

项目模型是 IDE 表示项目结构的方式:哪些文件属于该项目、它们如何相互依赖、使用哪些库……项目模型有一定的局限性,首先,它不支持任意混合不同类型的项目。例如,AppCode 可以打开 Xcode 项目,Rider 可以打开 Visual Studio 解决方案,但是无法在同一 IDE 框架中打开 Gradle 项目和 Xcode 项目。其次,项目模型在目录级别上工作,而不在文件级别上,并且它不能表示同一目录中具有不同依赖项的不同文件,这使得很难将诸如 Bazel 之类的构建系统集成到 IDE 中,同时也给其它场景带来了问题。

重新设计的项目模型(内部称为“工作区模型”)将消除这些限制。同时它还带来了其它好处,例如在项目打开期间提高性能、与 Maven 和 Gradle 进行更顺畅的同步以及更好的编程模型。

JetBrains 还表示接下来将发布更多计划信息,详情查看:

https://blog.jetbrains.com/idea/2019/12/intellij-platform-roadmap-for-2020



全部评论: 0

    我有话说:

    「轻阅读」聊一聊6种常用架构设计模式(上)

      许多现代应用都需要在企业级规模上进行构建,有时甚至需要在互联网规模上进行构建。这些应用都需要满足可扩展性、可用性、安全性、可靠性和弹性需求。 在本文中,我谈论一些设计模式,这些模式

    IntelliJ IDEA 项目

    IntelliJ IDEA 项目概念简单可以理解为一个项目是由一个或多个模块组成

    「转载」使用DDD指导业务设计一点思考

    领域驱动设计(DDD) 是 Eric Evans 提出一种软件设计方法和思想,主要解决业务系统设计和建模。DDD 有大量难以理解概念,尤其是翻译原因,某些词汇非常生涩,例如:模型、限界上下文

    IntelliJ IDEA 2020.3.2 发布

    IntelliJ IDEA 2020.3.2 现已发布,这是 IntelliJ IDEA 2020.3 第二个错误修复版本。主要更新内容如下: 现在可以在 macOS Big Sur

    IntelliJ IDEA 超全优化设置,效率飞起来!

    作者:请叫我小思http://blog.csdn.net/zeal9s/article/details/83544074 显示工具条 (1)效果图(2)设置方法 标注1:View–>

    IntelliJ IDEA 2020.3 EAP7 发布

    十月以来,IntelliJ IDEA 2020.3 已经迭代了 5 个版本。10 月 7 日,IntelliJ IDEA 2020.3 EAP 3 发布,11 月 5 日,EAP 7 发布。 新版本

    2021 最火开发语言会是谁?

    哪种语言会比较火🔥? 开发语言走势一直都在牵动程序员心。 2020 已经过半,是时候分析下明年趋势了。 下面咱们就看下权威行业数据,看看 2021 可能排在前 3 开发语言都有谁

    IntelliJ IDEA 2021.1 发布

    IntelliJ IDEA 2021.1 现已发布。该版本解决了一些麻烦问题,并引入了许多新功能。现在,用户可以在 WSL 2 中与其 Java 项目一起工作、使用集成 Space

    重磅】微软正式宣布 .NET5支持跨、移动开发

    前言近期微软正式宣布 .NET Core 3.0 之后下一个版本是 .NET 5 。

    「精品推荐」优秀跨Redis可视化客户端工具—RedisViewer

    自荐RedisViewer一个有情怀Redis可视化客户端工具

    连续三蝉联第一,Flink 荣膺全球最活跃 Apache 开源项目(附课程)

    2020,一个注定会被历史铭记。在全球化合作受到挑战大环境下,作为全球最大开源软件基金会,Apache 软件基金所引领开源社区,依然汇聚了全球顶尖开发人员,交出了一份鼓舞人心成绩单

    DDDplus 1.0.2 发布,轻量级业务中开发框架

    DDDplus 简介 一套轻量级业务中开发框架,以DDD思想为本,致力于业务资产可沉淀可传承,全方位解决复杂业务场景扩展问题,实现中核心要素,赋能中建设。 融合了前中复杂生态协作方法论

    Git托管拉取请求

    拉取请求是Bitbucket一个特性(经调查,Gitlab、Github都支持这个特性),可以让开发人员协作更加容易,他们提供了一个友好网页界面让开发者在集成代码到正式库之前对其进行讨论

    IntelliJ IDEA 2021.1 EAP 1 发布,支持 Java 16 和 WSL 2

    IntelliJ IDEA 2021.1 EAP 1 现已发布,官方表示,其主要是 IntelliJ IDEA 2021.1 作为一个高质量版本来对待,它增强产品可用性和用户界面

    电商实战篇:商品模型分析与设计(超级实用)

    最近在设计电商平台,那么在整个电商系统中商品模型是非常重要模块,也可以说是整个电商核心,那么接下来我们一起分析一下,设计出一个完整商品模型

    Spring中9种设计模式汇总

    Spring中9种设计模式汇总

    IDEA 2020.3 更新 Kotlin 插件

    IntelliJ IDEA 2020.3 稳定版已在 12 月初发布。现在 IDEA 2020.3 更新了其中 Kotlin 插件并更改 Kotlin 插件发布周期。Kotlin 插件

    「强烈推荐」这是我看过最接“地气”代码问题与重构实践

      写这个文章是因为前段时间确实因为公司业务开发太忙太紧,所有开发都处在于加班赶项目,并且加入新人较多造成了一系列代码不可控质量问题。 文章针对这段时间代码出现各种各样问题

    JetLinks 物联网基础 1.6 RELEASE 发布

    JetLinks 开源物联网 JetLinks 基于Java8,Spring Boot 2.x,WebFlux,Netty,Vert.x,Reactor等开发, 是一个开箱即用,可二次开发企业