撰稿丨千山
很早就有人问:JetbrAIns 出了那么多集成开发环境(IDE),诸如IDEA、CLion、PyCharm、phpStorm、GoLand、WebStorm等等,为什么不能整合成一个IDE,一招通吃呢?
显然Jetbrains有自己的考量。时至今日,Jetbrains依然坚持自己的产品路线:给每种语言打造一个“家”。
最近,JetBrains瞄上的是Rust,针对这门编程语言新贵,它推出了一个名为RustRover的集成开发环境。官网显示,这款IDE目前还在抢先体验计划(Early Access Program)中,大家可以免费下载使用并提供反馈。
此前或许很难想象,专为Rust打造的IDE应该是什么样子。如今RustRover就给出了其中一个答案。
以前,JetBrains只为Rust提供了 IntelliJ Rust 插件。Rust 的其他插件包括Rust-analyzer和 RLS。当然也有支持Rust的文本编辑器,但RustRover是第一个转为Rust而设计的IDE。
IDE 通常包括代码编辑器、调试器、编译器和其他功能,以帮助开发人员编写、测试和部署软件。RustRover的开发人员倡导者Vitaly Bragilevsky介绍说,专用IDE是编程语言成熟的一个重要里程碑。
为什么要在当前这个节点选择Rust呢?Bragilevsky在回复外媒采访时谈到:“以前,在我们看来,插件就足够了,但后来我们观察到Rust社区及其生态系统发生了一些变化。社区的状态说服了我们,我们真的需要它(独立的Rust IDE)。”
一个显著趋势是:Rust 社区正在扩大。
JetBrains 的研究发现,接受调查的开发人员中有56%在过去六个月中开始采用 Rust。另据《SlashData 23 届开发者国家状态报告》,估算Rust开发者数量已增长至280万。该报告还显示,这一数字在过去两年中增加了两倍,使其成为增长最快的开发者社区之一。
考虑到当前的技术趋势以及该语言不算很长的发展史,Rust的潜力是令人期待的。在此背景下,JetBrains决定押注Rust。
与VS Code不同,JetBrains向来提供与特定编程语言和技术配合使用的专用IDE。比如,WebStorm是大家熟悉的JAVAScript开发工具,PyCharm是支持Python/ target=_blank class=infotextkey>Python 的IDE,CLion是专为开发C及C++所设计的跨平台IDE,GoLand是支持编写Go的IDE,RubyMine 是为Ruby和Rails开发者准备的 IDE。
那么这款面向Rust开发者的IDE又有哪些特点呢?
有开发者提到,针对Rust的IDE并不容易做。主要原因有二:其一,很多其他语言运行时暴露出来的问题都需要在Rust编译时提前暴露出来,这部分检查压力自然而然会转移到IDE上。其二,不同语言有其不同的语法特性。对于Rust来说就是所有权和生命周期。
就官网信息来看,RustRover 目前支持 Rust、Cargo、TOML、Web 和数据库技术,以及 IntelliJ IDEA 的所有功能,包括 VCS 集成。其主要功能特点表现在:
在代码编写方面,RustRover可以通过代码补全、代码生成、实时分析和快速修复、实时模版等方法来提高编码效率。
在测试、运行、调试方面,可以运行单个测试、测试模块或项目中的所有测试。失败测试支持跳回相关代码,便于开发人员找到问题所在。
在Web程序开发方面,可以使用内置的HTTP客户端发出 HTTP 请求并分析响应。虽然Rust 是一种后端语言,但 RustRover也为前端技术和数据库提供支持,提供与前端开发的无缝集成。
在项目管理方面,RustRover与Cargo 完全集成,并提供代码洞察帮助编辑TOML文件。允许开发人员直接在IDE中调用Cargo命令。
在团队协作方面,实时编码,并支持直接从 IDE 与他人交谈。使用Git和Github工作,支持探索提交和拉取请求、创建分支和查看代码。
当下,RustRover 可以在windows、mac OS 和linux 上运行。因为还在Early Access Program阶段,所以感兴趣的开发者可以免费试用。至于什么时候会发布稳定版本,尚无定论,不过官方回复“计划将产品的公开预览持续到最晚2024年9月”。
因为没有公开路线图,所以RustRover未来还会推出哪些具体功能依旧是个迷。另外,JetBrains承诺:“预览阶段,RustRover 的插件版本将与 IntelliJ IDEA Ultimate 和 CLion 兼容。”至于正式发布后就不好说了,“我们将与 CLion 团队联系,确定在临近发布日期时CLion的Rust插件的可用性选项。”
对于这款新产品,除了好用与否,价格如何自然是用户关心的焦点。对此,JetBrains给出的答案是:尚在研究中。不过肯定的是,“RustRover 将是以订阅制出售的商业产品,与我们的其他 IDE 类似,具有能够反映其实际价值的公平定价结构”。
图源:https://www.jetbrains.com/rust/
另外值得关注的是,随着RustRover的出现,现有开源Rust插件也会受到影响。
PhpStorm 的开发者Kirill Smelov公开发文写道:“虽然现有插件仍然会在Marketplace和GitHub上免费提供,但在未来,我们将把我们的努力投入到RustRover中,它是闭源的。对于现有的开源插件,我们将尽最大努力保持与新版本IDE的兼容性,但我们不会修复错误或添加新功能。”简言之,开源插件被弃用,不再受JetBrains 官方支持。
对于RustRover的种种动态,开发者们也表现出了两极分化的反应。
Reddit论坛的相关议题下,有人表达了这样的诉求:“我真的希望他们允许RustRover作为插件安装在IntelliJ中。我既买不起几个IDE许可证,也不想维护好几个IDE。”
图源:Reddit
在不满者的声音中,也有人表示:不仅仅是钱的问题。
“每种编程语言都有1个IDE,这非常丑陋。甚至苹果也没有这样做。”“没有人说它应该是免费的。我要说的是,我不想要另一个IDE,只需在我现有的IDE中给我插件即可。从消费者的角度来看,每种语言都有一个IDE的方法是可怕的。”
此外,也有人显露出隐隐的担忧。“链接页面上的常见Q&A说,它将在预览阶段与IDEA Ultimate兼容。没有明确说发布后。”
不过,对RustRover的出现表示支持和欢迎的开发者也不在少数。理由则主要集中于以下几点:
1、不必将所有内容都塞进 IntelliJ。更喜欢针对特定语言量身定制的单独 IDE。
2、不同语言的生态系统差异很大。IDE 不仅仅是一个文本编辑器。
3、对于专业人士来说收费非常合理。如果你不是专业的软件开发人员,那么有适合业余爱好者的工具。
4、乐意为JetBrains花钱。本身产品质量和售后服务都非常好,可以节省很多时间,性价比相当高。
争议仍在继续中。或许只有到RustRover正式发布后,JetBrains这次的决策是否成功,才能显露端倪。但在开源又免费的VS Code的冲击下,JetBrains仍能存活至今,显然不仅仅是运气。
在多数人的普遍印象中,VS Code 最大的特点就是完全免费,而且可以在线安装各类开发工具,调试插件等等。任何编程语言在 VS Code 中都可以简单且快速地启动和运行,所以大家更倾向于称它为“编辑器”。
相对来说,JetBrains 在功能上更标准更专业,但对用户,尤其新手来说似乎包含了很多不合理的初始设置。在两个为不同使用场景设计的IDE之间做切换,付出一些学习的时间成本不可避免。
VS Code相当轻巧,具有高度可配置性和可扩展性,但是没有很多非常深入的功能,且部分依赖第三方扩展来提供更深入的功能;JetBrains为一种特定语言显式构建的IDE上工作,团队投入了大量资源来支持一种语言及其所有相关的工作流程,扩展性却较低,受支持的语言本身也具有很深的可配置性。
在新一代程序员中,VSCode受到了极大的欢迎。尽管如此,JetBrains还是有坚定的拥趸。去年,Blankly的首席工程师在用了五年VS Code后,转而切换到JetBrains 生态系统,甚至专门为此撰文解释了理由。
首先,在代码检查和代码重构上,JetBrains 具备优秀的Linting工具和无副作用的重构能力。“如果代码分解和重构对你和你的工作流程很重要,那么,JetBrains是更好的选择。”
再者,在调试上,JetBrains 比 VS Code 略胜一筹。“因为JetBrains 可以直接在变量声明的边上直接显示变量值,这使得跟踪大量变量的时候会比较容易管理。”
然后,在 Git 集成上,各有千秋,只是个人喜好不同。“例如,在解决合并冲突的时候,相对于 VS Code 将冲突文件堆在一个文件中显示的方式,我更喜欢 JetBrains 将冲突文件分开显示的方式。”
最后,在团队协作方面,所有 JetBrains IDE 都提供了大量选项来与他人共享代码并实时协作。Code With Me功能允许你直接在 IDE 中查看其他人的项目,并使用他们的开发环境,
总而言之,JetBrains固然收费,但其功能性的确有其特有的价值。以IntelliJ IDEA Ultimate为例,按照去年10月开始生效的新政策,订阅价为首年169美元,有需要的时候也可以考虑试一试。
https://www.jetbrains.com/rust/
https://thenewstack.io/dedicated-ide-for-rust-released-by-jetbrains/
https://www.reddit.com/r/programming/comments/16htf7m/jetbrains_rustrover/