IntelliJ 平台
IntelliJ 平台本身不是一个产品,而是提供了一个用于构建 IDE 的平台。它用于为 IntelliJ IDEA 等 JetBrains 产品提供支持。它也是开源的,第三方可以使用它来构建 IDE,例如 Google 的 Android Studio。
IntelliJ 平台提供了这些 IDE 提供丰富的语言工具支持所需的所有基础架构。它是一个组件驱动、基于跨平台 JVM 的应用程序主机,具有用于创建工具窗口、树视图和列表(支持快速搜索)以及弹出菜单和对话框的高级用户界面工具包。
IntelliJ 平台具有一个全文编辑器,其中包含语法突出显示、代码折叠、代码完成和其他富文本编辑功能的抽象实现。还包括一个图像编辑器。
此外,它还包括用于构建标准 IDE 功能的开放 API,例如项目模型和构建系统。它还为丰富的调试体验提供了基础结构,具有与语言无关的高级断点支持、调用堆栈、监视窗口和表达式计算。
但 IntelliJ 平台的真正强大之处在于程序结构接口 (PSI)。它是一组功能,用于解析文件、构建丰富的代码语法和语义模型,以及从这些数据构建索引。PSI 支持许多功能,从快速导航到文件、类型和符号,到代码完成弹出窗口的内容和查找用法、代码检查和代码重写,用于快速修复或重构,以及许多其他功能。
IntelliJ 平台包括适用于多种语言的解析器和 PSI 模型,其可扩展性意味着可以添加对其他语言的支持。
插件
在 IntelliJ 平台上构建的产品是可扩展的应用程序,平台负责创建扩展。IntelliJ 平台完全支持插件,JetBrains 托管 JetBrains Marketplace,该市场可用于分发支持一个或多个产品的插件。也可以利用自定义的插件存储库分发插件。
插件可以通过多种方式扩展平台,从添加简单的菜单项到添加对完整语言、构建系统和调试器的支持。许多现有的 IntelliJ 平台功能都是作为插件实现的,可以根据最终产品的需要包含或排除这些插件。有关更多详细信息,请参阅快速入门指南。
插件替代
在某些情况下,可能不需要实现实际的 IntelliJ 平台插件,因为存在其他解决方案。
开源
IntelliJ 平台是开源的,在 Apache 许可下,并托管在 GitHub 上。
虽然本指南将 IntelliJ 平台作为一个单独的实体进行引用,但没有名为 “IntelliJ Platform” 的 GitHub 存储库。相反,该平台被认为与 IntelliJ IDEA 社区版几乎完全重叠,后者是 IntelliJ IDEA Ultimate 的免费开源版本(上面链接的 GitHub 存储库是 JetBrains/intellij-community 存储库)。请注意:从 2021.1 版本开始,与 IntelliJ IDEA 社区版捆绑的某些插件不是开源的。
IntelliJ 平台的版本由相应的 IntelliJ IDEA Community Edition 版本的内部版本号定义。例如,要针对 IntelliJ IDEA(2019.1.1,内部版本号为 #191.6707.61)构建插件,意味着需要指定相同的内部版本号标签,以从 intellij-community 仓库获取正确的 IntelliJ 平台文件。有关与版本编号对应的内部版本号的更多信息,请参阅 Build Number Ranges 页面。
通常,基于 IntelliJ 平台的 IDE 会将 intellij-community 存储库作为 Git 子模块包含在内,并提供配置以描述 intellij-community 中的哪些插件,以及哪些自定义插件将构成产品。
基于 IntelliJ 平台的 IDE
IntelliJ 平台是许多 JetBrains IDE 的基础。IntelliJ IDEA Ultimate 是 IntelliJ IDEA 社区版的超集,但包含闭源插件(请参阅此功能比较)。同样,WebStorm 和 DataGrip 等其他产品基于 IntelliJ IDEA 社区版,但包含一组不同的插件,不包括其他默认插件。这允许插件面向多个产品,因为每个产品都将包含基本功能和 IntelliJ IDEA Community Edition 存储库中的一系列插件。
符合条件的开源项目可以申请 JetBrains 产品的免费许可证。
以下 IDE 基于 IntelliJ 平台:
- JetBrains IDEs:
- AppCode
- Aqua
- CLion
- DataGrip
- DataSpell
- GoLand
- IntelliJ IDEA
- MPS
- PhpStorm
- PyCharm
- Rider
- RubyMine
- RustRover
- WebStorm
- Writerside
- Android Studio IDE(谷歌)
- Comma IDE for Raku(曾用名:Perl 6)
Rider
JetBrains Rider 使用 IntelliJ 平台的方式与其他基于 IntelliJ 的 IDE 不同。它使用 IntelliJ 平台为 C# 和 .NET IDE 提供用户界面,包括标准 IntelliJ 编辑器、工具窗口、调试体验等。它还集成到标准的 Find Usages 和 Search Everywhere UI 中,并使用代码完成、语法突出显示等。
但是,Rider 不会为 C# 文件创建完整的 PSI(语法和语义)模型。相反,它重用 ReSharper 来提供语言功能。所有 C# PSI 模型、检查、代码重写(如快速修复)和重构都在 ReSharper 的命令行版本中从进程中运行。这意味着为 Rider 创建插件涉及两部分:一个插件位于 IntelliJ“前端”中,用于显示用户界面,另一个插件位于 ReSharper“后端”中,用于分析和使用 C# PSI。
幸运的是,许多插件可以简单地与 ReSharper 后端配合使用。Rider 负责显示检查和代码完成的结果,并且无需 IntelliJ UI 组件即可实现许多插件。