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
相关推荐
"2020 IT行业最新学习路线图"是一个宝贵的资源,它为IT从业者或爱好者提供了清晰的学习路径,涵盖了多个热门领域,包括大数据、Java、Python、区块链以及运维等。下面将分别对这些领域进行详细解读。 首先,大数据...
初阶后端技术学习路线图主要涵盖了基础知识,包括编程工具技术基础、DNS、TCP/IP、浏览器、HTTP、性能分析、基本数据结构(列表、树等)、排序、查找、图、Git版本控制系统、代码托管服务、Maven、Gradle、VS Code、...
Java学习路线图 Java学习路线图涵盖了Java编程语言的方方面面,从基础知识到高级应用,从 SE 基础知识到 EE 企业级应用,从数据结构到软件工程设计模式,全方位地展示了 Java 程序员的知识图谱。 阶段一:Java SE...
该路线图吸取了动力节点成立10年来的全部教学经验,旨在分享、专业、便利,让喜爱Java的人,都能平等的学习。 Java基础知识点: 1.Java语言基础:基本语法、数据类型、运算符、控制结构、函数、数组、面向对象编程...
intellij-mjml-支持 MJML对IntelliJ平台的支持。 请注意,该插件尚处于早期开发中,可能会缺少某些功能,或者需要在各处进行一些优化。 您还可以随意查看路线图,以了解下一步的发展。 你想念什么吗? -随时提交PR /...
### Android最佳学习路线图详解 在当今移动互联网时代,Android作为全球最受欢迎的移动操作系统之一,其应用和游戏开发技能成为了IT行业中备受追捧的能力。本文将深入解析“Android最佳学习路线图”,旨在为初学者...
### Android最佳学习路线图 #### 一、路线图概览 本学习路线图旨在为Android初学者提供一个清晰的学习路径,帮助他们系统地掌握必要的技能并最终成为一名合格的Android开发者。该路线图覆盖了从Java基础到Android...
### Android游戏与应用开发最佳学习路线图 #### 一、路线图概览 本学习路线图旨在为初学者提供一个全面且系统的学习路径,帮助其掌握Android应用与游戏开发的核心技能。通过本路线图的学习,学员将能够从零开始...
以下是一份详尽的学习路线图,涵盖了从基础到高级的各个关键知识点。 首先,要掌握核心Java,这是Android开发的基础。这包括理解Java的语法、数据类型、流程控制、数组、类和对象(面向对象编程的基础)、接口、...
Java自学路线图 Java 是一门广泛应用的编程语言,掌握 Java 语言需要扎实的基础知识和系统的学习路径。本文将为您提供一份 Java 自学路线图,涵盖 Java 基础篇、数据库学习和框架大部分三个主要部分,旨在帮助您...
在2024年成为一名成功的Java开发人员,你需要掌握一...按照这个路线图,通过系统学习和实践,你将能够逐步成长为一名优秀的Java开发人员,适应2024年的技术需求。记得定期更新知识,保持对最新技术和最佳实践的敏感度。
该项目是一个基于Java技术栈的公交路线图管理系统,用于整理和管理公交线路及站点信息,主要采用了SpringBoot框架和JSP技术。以下将详细介绍这个系统的关键组成部分和技术知识点。 1. **SpringBoot框架**: ...
根据提供的文件信息:“全新Java学习路线图”,我们可以深入探讨与Java学习相关的各个阶段和技术要点,为初学者乃至进阶者提供一份详尽的学习指南。Java作为一门广泛应用的编程语言,在软件开发、Web应用、移动应用...
Java学习路线图:掌握核心框架与技术栈 Java作为一门广泛应用的编程语言,在软件开发、企业应用、移动设备等多个领域都有着不可替代的地位。对于初学者而言,构建一个清晰的学习路线图至关重要,它不仅能够帮助你...
初始语法突出显示 解析器/语法的初始AST树路线图要跟踪进度,以下功能将在未来几个月内发展: 完整词法分析器-带有测试完整语法分析器-带有测试默认语法突出显示配色方案-基于Atom灯光主题darcula语法突出显示配色...