专栏名称: InfoQ
有内容的技术社区媒体。
目录
相关文章推荐
51好读  ›  专栏  ›  InfoQ

Spring 之父:我不是 Java 的“黑粉”,但我也不想再碰它!这门语言拯救了我......

InfoQ  · 公众号  · 科技媒体  · 2025-05-21 06:18

正文

请到「今天看啥」查看全文


2000 年代初到中期,Java 开源市场上有两个重要的玩家:JBoss 和 Spring。我认为 Boss 并不具创新性,如果你有能力使用 WebLogic,你会选择 WebLogic,而不是 JBoss,因为 WebLogic 本身就更好。JBoss 的重要性在于它让你不需要购买昂贵的应用服务器,但它本质上是开源市场的商品化。Spring 则不同,它提供了从 BAA、Oracle、Sun 或 IBM 那里无法获得的东西,而要做到这一点,必须有一个稳固的经济模型。

Sebastian:首先,关于 Spring 框架的一致性,虽然它有很多动态的部分,但如果支撑它的思维模型是一致的,你就可以在不同的部分之间做出合理的假设,这点总是让人感到非常愉快,这也是我喜欢 Kotlin 的一部分原因。我一直形容它就像是有很多不同的零件,它们像乐高积木一样拼接在一起,你能很清楚地看到这些部分如何组合在一起,背后有一种相对一致的哲学。您能否进一步扩展一下关于在开源背景下,如何实现可持续发展呢?

Rod: Spring 不仅规模巨大,而且与众多其他工具有集成,因此我们很早就遇到了这样一个问题:IBM 在每个 WebSphere 的重大版本发布时,总喜欢玩一个游戏,叫作“把事务管理器放到一个你找不到的地方”。此外,还存在一些不同产品中的 bug 和性能问题,这些问题需要迅速解决,但无法依赖于志愿者开源社区来解决。在 2000 年代每一个 WebSphere 版本发布时,Juergen 都确保 Spring 与该版本完美兼容。但即使 Jurgen 再优秀,也无法保证他会把这个问题列为待办事项的首位,尤其是他不全职从事 Spring 工作的话。

说实话,我对开源的现状有些沮丧 。曾经有一段时间,开源正在确立自己作为一个商业类别,我认为 JBoss 在这一过程中发挥了非常重要的作用,因为它展示了你可以拥有一种不同的模式,使公司和个人能够更容易地获得技术。大概直到 2010 年代初期,似乎开源收购变得越来越大,且这种现象从商业角度看具有很强的潜力。然而,不幸的是,向云计算的转移在这方面造成了不少问题。

我认为,开源如果能够维持可持续发展,对几乎所有人都有好处。我相信开源开发者如果不能从中创造财富,是不利的。例如,如果我唯一能期望的就是找到一份薪水不错的工作,我可能就没有太多动力了。 开源需要激发人们的兴奋感,这不仅仅是财务激励的问题,更是关于构建组织、创建企业并产生影响力的问题 。比如,Elasticsearch 的 Shay Banon,他并不是为了成为一名员工而工作,即使他得到了很好的认可和薪酬,他的动力来自于创造某种东西,做出改变,并且在这一过程中拥有更多的话语权。

Márton:开源项目通常需要非常有激情的个人付出巨大的努力来推动,最终才能实现可持续发展,同时必须拥有某种盈利模式。而 Spring 的故事也很有意思,它来自一群实际开发应用的人员,而不是那些单纯为了框架而创造框架的人,这与 Kotlin 的诞生非常相似。Kotlin 也不是一个学术性项目,而是在 JetBrains 的开发者希望用它来支持他们的实际产品时诞生的。那么,你是如何开始使用 Kotlin 的呢?

使用 Kotlin 的种种乐趣

Rod: 我实际上有很长一段时间远离了 Java 和 Spring。大概在 2009 年 SpringSource 被收购的时候,接下来的两三年里,我几乎没有写什么代码。后来,我真正开始接触 Scala,之后由于参与的多个项目,我做了很多 TypeScript 和 Python 的工作。大约在去年此时,我对 Python 感到厌倦,决定将开发语言换成 Java 和 Spring。那时我当然知道 Kotlin 已经推出,而由于我已经熟悉 Scala,学习 Kotlin 似乎是顺理成章的选择。

但是,我还是有意识地花时间将自己更新到现代 Java 的水平,因为我最后一次写 Java 代码,可能还是 Java 7。我认为,在深入了解其他技术之前,我应该先彻底熟悉 Java。事实上,Java 的确有很多改进。 然而,最终我还是对 Java 中的流操作感到厌烦,坦白说真是有些尴尬 。我记得我是在散步时决定,“好吧,试试 Kotlin 吧,总比这强。”我觉得 Kotlin 的学习曲线非常平缓,大约两个月之后,我几乎完全不想再写 Java 代码了。所以,现在我写的所有代码都是 Kotlin。尽管如此, 我从来不会成为 Java 的“黑粉” ,事实上,我认为现代 Java 实际上比人们给的评价要好得多。

然而,如果有机会使用 Kotlin,我真的觉得很难拒绝它,因为 Kotlin 更友好、更易读、写起来更有趣,它是一个更现代的语言。当然,我在个人项目中也对 Scala 有过同样的感受,但即使在我最热衷 Scala 的时期,我也能清楚地看到,作为经理,如果我要管理大规模项目,我可能不希望团队使用 Scala,因为我们都知道,使用 Scala 的大型项目常常会带来问题。但 Kotlin 就不会有这种感觉,Kotlin 中的所有特性,我认为都很实用,它来源于实践者,而非学术界。每个特性似乎都是为了某个实际目的而存在,而不是为了迎合学术上的时尚。

另外,你可以在 Kotlin 里看到 Scala 的很多经验和元素。这是一个非常宝贵的经验,因为它让我们看到什么是可能的,然后我们想,或许我们可以用更实用的方式实现这些功能。

Márton:有一场非常精彩的演讲,标题大概是《站在巨人的肩膀上(Shoulders of giants)》,演讲者讲述了 Kotlin 如何建立在 Scala 这样的技术基础上,以及从中学到的经验。他还提到,Kotlin 在构建过程中吸取了包括 Python 在内的其他语言的特性,作为其某些功能的基础。

Rod: 使用 Kotlin 有两件事让我感到惊讶。第一件事是我竟然这么喜欢它。第二件事是,我的 Kotlin 代码看起来竟然很像 Python。虽然我写了很多 Python 代码,但总体上我并不喜欢 Python 作为语言。然而,Kotlin 具备了 Python 让我喜欢的所有优点,却没有那些我不喜欢的缺点。例如,它具备了 Python 的清晰性和可读性,但它有更好的类型系统,并且让我能够使用 Spring,能够在 JVM 上运行。

Márton:我认为回顾 Kotlin 最初的定位和专注于 JVM 的背景,真的很有意义。而且,回想一下每个人第一次接触 Kotlin 的时刻,我觉得我们所有人都有类似的体验。我写的 Kotlin 代码越多,我就越为之欣喜。我相信,很多听众也经历了类似的体验,尤其是在他们第一次开始使用 Kotlin 时。







请到「今天看啥」查看全文