内容提要
IntelliJ的Workspace Model已经退出实验阶段,插件开发者可以访问和修改模型,从中受益于集中API和批量更新。这个更新对于开发构建工具集成插件的开发者特别有用。Workspace Model旨在处理多线程使用情况,并提供比之前的项目模型实现更好的性能。Workspace Model的下一步是允许插件开发者定义自己的实体,并消除在更新期间的写锁需求。
延伸解读
对构建工具插件开发者的意义
Workspace Model 退出实验阶段后,构建工具集成插件(如 Maven、Gradle、BSP、Bazel)的开发者可以直接受益。新 API 提供集中式入口和批量更新操作,能更高效地处理大型项目的模型更新。同时,旧 JPS 模型 API 已委托给 Workspace Model,直接使用新 API 可能带来性能提升,尤其是在大规模操作时。
技术优势与设计特点
Workspace Model 采用持久化数据结构,快照不可变,可在无读锁的情况下处理,适合多线程场景。所有数据集中存储,更新入口单一,无需像旧模型那样创建多个可修改模型。事件流机制允许观察存储中的所有变化,并增量影响依赖子系统,从而提升 IDE 性能。
迁移现状与未来方向
Rider IDE 是首个客户端,Maven 导入已重写并获性能提升,GoLand、WebStorm 和 Kotlin 插件也开始使用。目前平台仍主要使用旧 API,但所有新代码将基于新 API。未来将允许插件定义自己的实体,并消除更新时的写锁需求,进一步简化并发模型。
Q&A
什么是IntelliJ的Workspace Model?
IntelliJ的Workspace Model是项目模型的内部存储,旨在处理多线程使用情况并提供集中API和批量更新功能。
Workspace Model对插件开发者有什么好处?
Workspace Model为插件开发者提供了集中API、批量更新和持久数据结构,特别适合构建工具集成插件的开发。
如何迁移到新的Workspace Model API?
插件开发者被鼓励将旧API的代码迁移到新的Workspace Model API,具体的迁移信息可以在相关文档中找到。
Workspace Model如何处理多线程情况?
Workspace Model设计为持久数据结构,快照存储是不可变的,能够在没有读锁的情况下处理多线程使用情况。
Workspace Model的未来发展方向是什么?
未来Workspace Model将允许插件开发者定义自己的实体,并消除更新期间的写锁需求。
Rider IDE如何利用Workspace Model?
Rider IDE是Workspace Model的首个客户端,Maven导入已重写为新API,显著提升了性能。