Jmix Roadmap 2021-2022

原文是 Jmix/CUBA.platform 负责人 Andrey Glaschenko 所写,这里按原文直译,以作者为第一视角。

roadmap2021

首先,祝大家新年快乐!也恭喜大家能在 2020 年的 hard 模式生存下来!对全人类来说,今年都是很艰难的,希望 2021 年能带给大家更多的好消息。
在这篇文章中,我想给大家总结一下我们团队 2020 的成果,并分享一下 2021 年的计划。

过去一年中,我们一直没有对外发布过我们的计划。希望在此时,也就是 Jmix 发布 之后,你能明白个中原因。大量的改动和研发任务使我们很难对外做出 deadline 承诺。我们需要随机应变并保持舒适的开发速度。
但即使团队的大部分人都扑在 Jmix 上,我们还是为 CUBA 平台交付了一些很酷的功能:

  • CUBA 7.2 支持了 Kotlin 和设计时安全角色
  • 新的 Helium 主题及其可视化设计器
  • 在前端 generator 中支持 React Native
  • CUBA SDK,支持在网络受限环境下进行开发

当然,我们也对 Studio、框架、前端生成器进行了大量改进。

而在社区方面,我们上线了 意大利语法语 版的网站及论坛。我们还推出了方便申请学院许可的简化表单,越来越多的大学 开始将 CUBA 用在企业级软件课程中!
我们的客户中,也新增了一些“大牌”,包括 Ingenico 和 Sber,Sber 是东欧最大的银行。与我们 签署 了大规模协议,约定将使用 CUBA Studio 加速整个银行内部系统的开发。

2021 年的新计划

最新发布的 Jmix 为我们提供了一个坚实的基础,所以对未来我们更有信心。我们制定了激进的计划,并正在扩张团队,希望在明年年底 Jmix 有超过 50 个开发人员!

我们最重要的目标首先还是发布稳定版的 Jmix。包括完整的文档、迁移剩下的扩展插件以及全面的测试。计划在 2020 第二季度完成这些工作。

以下会介绍一些新功能。请注意,很多功能仍然在开发中,所以不要问我实现细节。但是,下面的介绍能给大家足够的信息,知道我们是朝哪个方向努力,希望你们能喜欢!

前端

此时,因为 CUBA 后端技术已经用 Spring Boot 重构了,Boot 是企业级项目用的最广泛的服务端技术, 所以我们需要将一部分精力转移到前端。好吧,老实说,我们关注前端转变是在几年前了,彼时 Vaadin 8 开始跟不上潮流。但是,我们始终将长期的可持续性和向后兼容性作为我们考虑的原则。不幸的是,Web 框架瞬息万变,我们很难下一把稳赢的赌注。Vaadin 这边也是,组件库在最新的几个版本中也一直还在 不断变化 。所以对于我们来说,只能继续使用 Vaadin 8,尽管有局限性,但是 “至少能用”。同时,前端团队也在 portal 模块探索新的方案,最近在研究 Typescript SDK 和 React 前端生成器。你已经可以生成 React 和 React Native 客户端的框架代码了,虽然与 Vaadin UI 比还比较复杂也需要更多手动工作。另外,也可以通过 Typescript SDK 集成任何其它的 web 框架,只不过也需要很多手动工作。

无论如何,探索阶段已经结束。我们相信 React 能支持足够长的时间。所以 2021 年我们主要专注于将 React 客户端的生产力和易用性推至与 Vaadin 客户端同等的层级。自然地,这就意味着我们需要 Studio 的全面支持,包括带界面模板的可视化设计器、热加载、主题以及一组完备的组件,至少与 Vaadin 能实现的类似。与往常一样,我们会尝试尽可能地使开发人员脱离(非绝对)庞大复杂的 JS 生态。将 UI 技术切换到 React 的好处很明显:可以使用更快速更容易扩展的 UI、有更多的自定义选项以及广泛的社区支持。

但是,这也需要付出一定的代价。开发人员需要了解基础的 Typescript、HTML 和 CSS。如果希望在 IDEA 中舒服的开发 Typescript,还需要商业版的 IntelliJ IDEA Ultimate。我们计划发布一个具备此功能的独立版 Studio。

基于 Vaadin 的 UI 会有什么变化?别担心,我们会继续支持。在很多场景中,Vaadin 仍然是非常好的选择。特别是对于不熟悉前端 Web 技术的纯后端开发者来说,几乎完美。如果你的应用场景中没有数以万计的用户,并且也不是高延迟网络,那么 Vaadin 完全能胜任,大部分后台应用系统基本都符合这个场景。我们也一直在注意着 Vaadin 最新版本的动向,预计在 2022 年会从版本 8 升级至一个新的版本。

移动端会怎么样呢?之前已经提到,我们已经支持生成 React Native 客户端,以及在 React 客户端使用 PWA。除此之外,我们还启动了关于 Flutter 的小规模研究,Flutter 是由 Google 支持的 UI 技术。其终极目标是为全平台提供单一的 UI 技术,包括移动端、Web 端甚至桌面端。可能后端开发人员会对于 Flutter 更加熟悉,但是其核心思想还是与 React 类似:万物皆组件,UI 是状态的展示。Flutter 很快获得了广泛的关注,在跨平台移动应用开发方面已经是最流行的选择了,不过对于 Web 的支持还处于 Beta 阶段。我们还需要观望一阵,看看是否会成为主流技术。

我们的主要使用场景是 “LOB” 系统,需要操作复杂的数据关系图。所以无论是 Flutter 还是 React,都需要一个方便的服务端 API。在做了一些实验之后,我们选择了 GraphQL,这个技术似乎很自然就满足了我们的需求,将作为两种客户端共享的后台服务使用。

总结一下,Jmix 将会提供更多的选项以便交付任何量级、任何复杂度的前端,同时支持 Web 和移动端,也支持喜欢和讨厌 JS 的开发者们 :slight_smile:

DevOps 和云

这些年来,我们没有将 “部署” 纳入我们的考虑范围,而是专注于开发阶段的事情。但是,我们收到了越来越多的请求,要求我们能简化应用程序生命周期中的这一步。因此,我们决定在 Jmix 内部成立 “DevOps” 团队专门处理部署的事情。这个任务与我们的目标也是一致的:使开发者脱离(非绝对)各种底层技术,比如 Jenkins、Docker、Kubernetes、Terraform,并提供简单方便的可视化工具用来配置环境和 CI/CD pipeline。

也就是说我们要实现:

  • 配置、生成以及发布 Docker 镜像
  • 配置环境,比如测试和生产环境
  • 使用可视化设计器描述需要的基础设施,基于 Kubernetes 和 Terraform
  • 配置 CI/CD pipeline

对于这些功能,我们计划将来会依赖公有云的基础设施,从 AWS 开始。但是 AWS(或者 Azure、Alibaba 等)除了能让你部署 App 之外还提供了很多功能,如果我们忽略这些云平台功能的话,感觉就是在犯罪!因此,你可以选择构建基于这些云服务的真正云原生应用程序,包括数据库、文件存储、认证、全文检索、监控、日志、负载均衡等。

我们的终极目标是为你提供所有需要部署的内容,然后以最小的人力开销在云环境运行你的应用程序。这是一个全新的方向,我们很难给出 deadline。但是我们希望能在 2021 年底推出 Beta 版本。

工具

Studio 团队逐渐成为了 Jmix 中最大的团队。确实,无论哪个方向,云也好,前端也好,都需要 Studio 提供相关的工具支持。今年,我们计划提供一些更重要的功能:

  • 新的可视化设计器,支持 JPQL 和 GraphQL 查询、字符串消息和简单的逻辑表达式。我希望所有人都喜欢不需要书写 JPQL 语句的想法!
  • 基于典型操作模板的代码生成:打开一个界面、保存/加载数据、显示消息、调用服务、启动工作流。
  • 设计时的可视化报表配置。
  • 设计时的 BPM 流程配置。

将一些内容迁移至设计时(编码时)

我想要着重说说最后两个功能。目前为止,报表和 BProc 扩展只支持运行时配置。从某一方面看,这很棒:非开发人员可以配置报表和工作流,而且也不需要重新部署程序。但是这又有一些副作用:

  • 如果数据模型修改了,配置的报表和工作流可能会无法正常工作,但直到运行时才知道有问题。
  • 在多次安装应用程序升级后,报表和工作流的实例可能很容易不同步。比如你在测试环境测的是一个版本,但是生产环境有人配置了另一个版本…
  • 对于复杂的报表,开发者不得不使用不方便的运行时代码编辑器。
  • 当需要配置工作流时,开发者不得不在 Studio 和运行的程序之间切换,还得频繁的重启,以便添加新的表单、服务等。

总的来说,这个流程很脆弱也很笨重,为犯错误留下了太多空间。考虑到这点,我们决定在 Studio 实现 BPM 和报表设计器。但是我们还会保留运行时构建报表和工作流的能力。你可能已经注意到,这个方法和我们最近实现的设计时访问组和安全角色一致。

对于报表,一个报表就变成了一个 Java 类,使用 Studio 向导配置。这样的话,能引入编译时检查,并能测试和调试报表,也方便提供更好的可视化设计器。

对于 BPM,思路也类似。设计时的编辑器能对流程定义进行测试和调试,并能一并创建其他相关的内容:服务、表单、处理器等等。这样的无缝开发环境足以与市场上的某些 BPMS 解决方案相竞争。

与其他功能一样,我们也计划在 2021 年底发布这些工具的 Beta 版本。

时间线

为方便起见,这里总结一下各个发布版本的时间线:

  • Q2 2021 - Jmix 稳定版
  • Q4 2021 - React 客户端稳定版
  • Q4 2021 - 以下内容 Beta 版:
    • DevOps 以及云工具
    • 云原生应用程序支持
    • 设计时可视化报表和工作流配置
    • Studio 中的其它工具
  • Q2 2022 - Q4 2021 发布所有 Beta 版内容的稳定版

这个计划非常有挑战性,某些 deadline 可能会跳票,但是我们已经决定不惜一切投入以达到目标。

未来

实现上述功能后,Jmix 将成为一个构建现代企业应用的强大的平台,提供:

  • 支持移动端和 Web 端的可扩展 UI
  • 云原生能力以及全自动部署
  • 更多的可视化工具,极具生产力的开发以及更加容易上手

事实上,Jmix 应该是低代码应用程序平台(LCAP)市场中的一个强有力的竞争者。除了提供同样高效的生产力外,Jmix 还弥补了很多 LCAP 的短板,所以我们希望 Jmix 能成为这个极具话题的市场中的新力量。

Jmix 是为开发者提供舒适的开发环境而构建的,而大部分 LCAP 专注于为业务人员(又称 “平民开发者” )服务,开发者体验并不好。同时,Jmix 是开放的,而且足够灵活,可以用来构建高复杂度的应用程序,比如 ERP,这个能力已经被我们社区中的项目多次证明。最后,与众多 LCAP 不同,Jmix 是构建在开源框架之上,意味着你的应用程序是真正属于你的。

我们希望这些 Jmix 的功能组合能帮助你及时交付功能强大而且界面美观的应用程序,能为我们的社区吸引更多的成员。与往常一样,我们非常期待你的反馈,可以在 论坛 发言或者直接联系我们。

2赞