作者 : oschina
来源 : oschina.net/news/112204/intellij-platform-roadmap-for-2020
改进结果将会在明年发布,其中一些会发布在春季的 2020.1 版本中。
索引性能
与 IDE 性能有关的两个主要痛点是启动性能,索引耗时较长的工具被认为是重量级的。JetBrains 表示,明年关注点将转向索引性能方面。计划明年逐步提供支持,从 JDK 开始,然后涵盖 Maven Central 的库以及其它 IDE 中的解释器和包。同时还在研究支持团队或企业内项目源代码的索引块共享的方法,虽然这一块目前还没有任何具体计划。其次,计划通过在索引时提供更多的 IDE 操作来减少索引的破坏性。同时也计划支持进行旧性能优化,以确保索引系统不会执行任何不必要的工作并且不会产生可避免的开销。UI 卡死(freeze,冻结)是一个很大的问题。今年虽然已经构建了用于报告此类卡死问题的基础,并进行了架构更改以修复许多相关问题,比如文件系统事件的异步侦听器,但是接下来的一年中,计划迈出更大的一步:将需要写锁定的操作移出 UI 线程。早在 IntelliJ IDEA 早期就做出了一项架构决定,该决定要求大多数操作需要修改 IDE 的内部数据结构才能在 UI 线程上运行,也就是包括基本操作(将字符插入文档中)和大规模操作(重新命名具有数千种用法的方法)。这种架构的好处是简单的编程模型,但是明显的缺点是 UI 响应能力在许多情况下都会受到影响。多年以来,官方一直在寻找方法来解决此架构的局限性,主要是将大型操作拆分为在后台运行并应用于 UI 线程的部分。一个更基本的解决方案是完全摆脱 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 版本中暂时还是看不是相关成果的。在后续发行版中,计划统一支持围绕新架构的现有 Docker 和远程解释器。除此之外,还将提供更深入的云集成。
项目模型是 IDE 表示项目结构的方式:哪些文件属于该项目、它们如何相互依赖、使用哪些库……项目模型有一定的局限性,首先,它不支持任意混合不同类型的项目。其次,项目模型在目录级别上工作,而不在文件级别上,并且它不能表示同一目录中具有不同依赖项的不同文件,这使得很难将诸如 Bazel 之类的构建系统集成到 IDE 中,同时也给其它场景带来了问题。重新设计的项目模型(内部称为“工作区模型”)将消除这些限制。同时它还带来了其它好处,例如在项目打开期间提高性能、与 Maven 和 Gradle 进行更顺畅的同步以及更好的编程模型。JetBrains 还表示接下来将发布更多计划信息,详情查看:https://blog.jetbrains.com/idea/2019/12/intellij-platform-roadmap-for-2020