Spring Cloud 2020 年路线图发布

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

文章主要介绍了当前 JetBrains 在改进 IntelliJ IDEA 和基于 IntelliJ 平台的 IDE 方面所作的一些工做,主要包括性能和对现代开发工做流的支持两个方面。

改进结果将会在明年发布,其中一些会发布在春季的 2020.1 版本中。编程

性能

索引性能

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

针对此问题官方采起了多管齐下的方法。首先,支持使用预建的索引块,这样每一个用户 IntelliJ 实例都没必要执行索引java.lang.String类的工做。数据结构

计划明年逐步提供支持,从 JDK 开始,而后涵盖 Maven Central 的库以及其它 IDE 中的解释器和包。同时还在研究支持团队或企业内项目源代码的索引块共享的方法,虽然这一块目前尚未任何具体计划。架构

其次,计划经过在索引时提供更多的 IDE 操做来减小索引的破坏性。框架

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

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

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

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

早在 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

相关文章
相关标签/搜索