为什么除了Flutter之外,我们还需要另一个跨平台开发框架?(flutter为什么可以跨平台)

不久前,谷歌正式推出 Jetpack Compose 1.0 版本。近日,JetBrains 在此基础上发布了 Compose Multiplatform Alpha 版本,旨在将 Compose 扩展到桌面和 Web 端。

Compose Multiplatform 由 Compose for Desktop 和 Compose for Web 组成,通过 Kotlin Multiplatform 支持许多不同的平台。其中,Compose Desktop 采用 Google 的 Skia 图形库,来实现在 Windows、macOS 和 Linux 上的 UI 绘制,借此在所有支持的操作系统中提供统一的体验,类似于 Flutter 的做法。

根据 Kotlin 团队的说法,相比起 Electron 框架,Compose Multiplatform 在内存消耗、安装大小和 UI 渲染性能等方面将有更明显的优势。随着 Alpha 版本的发布,Compose Multiplatform 还收获了新的 Android Studio 插件,包括对在 IDE 中显示组件预览的支持以及许多附加功能。

我们希望通过本文帮助大家进一步了解 Compose 的跨平台能力,以及 JetBrains 将 Compose 从 Android 扩展到这些其他平台背后的主要驱动力是什么。

基于 Jetpack Compose 1.0

由谷歌打造的 Jetpack Compose 是一款用于在 Android 应用程序之内构建用户界面的官方框架,上周刚刚发布 1.0 版本。与此同时,Android Studio 代号“极狐”的首个稳定版 2020.3.1 也正式亮相。

尽管才刚迎来 1.0,但谷歌表示“目前 Play Store 中已经有超过 2000 款应用程序在使用 Compose——更重要的是,就连 Play Store 这款应用本身也在使用 Compose。”谷歌方面还表示,“我们一直在与一些顶级应用的开发人员进行合作,他们的反馈和支持帮助我们使 1.0 版本更加强大。”

为什么除了Flutter之外,我们还需要另一个跨平台开发框架?(flutter为什么可以跨平台)

Compose 是一套 声明式 框架,其最大特色在于摆脱了传统 Android 方法中的层级结构,或者说布局与控制树。Compose 用户界面通过编写带有 @Composable 注释的函数(用于描述屏幕状态)来定义,也就是所谓函数生成用户界面。谷歌 Android 开发团队解释道,“随着应用程序状态的变化,你的 UI 也会自动更新,这让快速构建 UI 变得更加简单。”

为什么除了Flutter之外,我们还需要另一个跨平台开发框架?(flutter为什么可以跨平台)

Jetpack Compose for Android 迎来 1.0 版本

Compose 基于 Kotlin 开发,而 Kotlin 与 Android Studio(即官方指定的 Android IDE)均来自开发工具厂商 JetBrains。虽然 Jetpack Compose 专为 Android 打造(与谷歌的 Flutter 框架不同),但 JetBrains 公司坚信 Compose 完全能够获得跨平台能力

Compose for Desktop: 这只是开始

Compose Multiplatform 可以说是该框架面向 MacOS、Linux、Windows 以及 Web 开设的一个端口,目前刚刚发布 1.0 Alpha 版本。虽然尚处于早期开发阶段,但 JetBrains 表示,其已经“为开发人员带来能够基本安全使用的稳定 API”。

TheRegister 就此事询问了 JetBrains 公司 Compose 项目负责人 Nikolay Igotti,希望了解为什么该公司在拥有了已经广泛应用于 IntelliJ IDEA IDE 及多种丰富变体的桌面应用程序跨平台 Java 框架之外,还要费力开发 Compose for Desktop。Igotti 的回答是,“旧有 Java 框架基本上就是修改版的 Swing。Swing 属于默认 JDK UI 框架,Swing 和 AWT(Abstract Windows Toolkit,抽象窗口工具包)。Compose 则完全是另一码事,当然我们也在设计中考虑到了互操作性需求……Swing 这套框架太陈旧了,最早出现在上世纪九十年代末。多年来人们对于 UI 的设计思路已经天翻地覆,Swing 显然满足不了要求了。”

为什么除了Flutter之外,我们还需要另一个跨平台开发框架?(flutter为什么可以跨平台)

JetBrains IDE 中的 Compose for Desktop 项目

Compose 与 Swing 有一个比较大的共同点:与其他使用本机控件的跨平台框架,比如例如 Java 的 SWT(Standard Widget Toolkit)以及微软的 Xamarin 有所不同,它们选择自主绘制控件。Compose 使用的 Skia 开源图形库,也在谷歌 Chrome、Flutter 及其他众多框架当中得到广泛应用。那这是否意味着 Compose 应用程序将没有自己的原生外观?对此,Igotti 的回应是,“这取决于开发人员的选择,取决于他们如何为应用程序设置主题。在这方面,Compose 的情况与 Flutter 等其他框架没什么区别。”

那 Compose for Desktop 应用程序是否依赖于 JVM(Java Virtual Machine)运行?Igotti 表示,“我们也知道,JVM 应用程序的发布情况可能比较棘手。因此我们提供自己的 Gradle 插件,其使用 jpackage 与 Jlink 以 JVM 应用程序为基础制作原生应用程序。Mac 的.dmg、Windows 的 MSI、Linux 的 deb 包等均可实现,大家用不着担心 JVM。”

也就是说,开发成果将会是一款被精心包裹起来的 JVM 应用程序。JetBrains 还有一款用于解决这个问题的 Kotlin/Native 编译器,“预计将在未来发布,或者专门用于桌面开发。”

为什么除了Flutter之外,我们还需要另一个跨平台开发框架?(flutter为什么可以跨平台)

对应用程序的另一种思考方式

那 Web 应用程序方面呢?Igotti 回应称,“我们使用 Kotlin/JS 编译器。”Compose 的 Web 版本不如桌面版先进,说明文档中也警告称“API 尚未最终确定,预计会发生重大变化。”此外,虽然 Web 版本确实使用 Compose 模型,但 API 却完全不同,而且会使用 HTML 与 CSS。所以,Web 版与 Compose for Desktop 之间能够共享的代码应该比较少。

据 Igotti 介绍,“Compose 代表着一种不同的应用程序思考方式。状态即 UI 的真实来源,而 UI 本身是无状态的,其表达永远由状态计算得出。在这方面,Compose for Web 采用一组相同的原语,完全相同的状态管理思路。但是对于具体的小部件集合与排列方式,Web 版与桌面版之间确实无法互通。”

说到这里,为什么要把 Compose for Android 扩展到多种其他平台之上?“Compose 的目标受众主要分为三类。首先是使用 Kotlin 与 Compose 的 Android 开发人员,他们希望把自己的开发成果交付至其他平台;其二是纯 Kotlin 开发人员,他们希望以‘一次编写、随处运行’的方式开发新的应用程序;第三则是那些不太熟悉 Kotlin 或者 Compose,但又希望开发出精美 UI 的用户,我们希望能为他们提供实现目标的工具。”

Igotti 并没有给出具体的发布日期,但表示自己希望 Beta 版能在今年秋天发布,“我们也希望能在今年之内推出 1.0 版本。”项目本身是完全开源的,“二十一世纪了,框架在大多数人们心目中就不应该收费。我们只是想开发一款长期缺失的软件”,补足 JetBrains 当前商业模式中的工具链。

需要注意的是,Compose 并不提供可视化设计器。Igotti 提到,“大多数开发者都不喜欢图形 UI 构建器”,声明式 UI 与设计内容预览才是最受欢迎的解决思路。“因此我们提供预览机制,您可以在 composable 函数上添加注释,并在无需运行应用程序的前提下快速预览。”

JetBrains 认为目前工具市场对于桌面应用程序开发者的支持并不到位,公司组织的内部开发者调查也在一定程度上证实了这个结论。“桌面开发现在有点‘二等公民’的意思……这可是个需要高度关注的小众市场。”

那么,JetBrains 会在自己的其他工具中使用 Compose 吗?事实上,他们的 JetBrains Toolbox(用于管理已安装的 IDE)已经在使用 Compose,但 Igotti 表示短时间内 Compose 还无法取代 IntelliJ IDEA 等现有框架。“编辑器是其中最复杂也最重要的组件,经历了 20 年的发展演进,我们几乎不可能在中途进行重写了。无论是 JetBrains 还是我个人,都不打算强迫每个人都转而使用 Compose。我们的目标是为原有框架选项满足不了的用户提供新的解决方案。”

写在最后

那么,为什么除了 Flutter 之外,我们还需要另一个跨平台框架?虽然谷歌的 Flutter 最开始主要面向移动设备,但现在也开始向桌面及 iOS 进军,甚至比 Compose 还抢先了一步。不过,根据 StackOverflow 的最新调查,Flutter 使用的语言为 Dart;尽管 Dart 语言的人气正在增长(正是受到 Flutter 的推动),但仍然无法与 Kotlin 相提并论。

更重要的是,Compose 的发展势头颇为强劲——其 GitHub repo 拿下 5000 多个星,上报问题的数量也非常多。虽然诸多问题代表着“麻烦”不断,但也恰恰说明了这是开发者们所热切关注的方向。

Compose 代表着一种独特的 UI 构建方法,也许最期待 Compose 跨平台功能的受众,正是那些曾在 Android 上使用过它、又特别喜欢这种 UI 构建体验的开发者。

想要进一步了解 Compose,国内 Android 开发者可访问以下链接查看中文手册:https://compose.net.cn/

延伸阅读:

https://www.theregister.com/2021/08/06/compose_for_desktop_kotlin_framework/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2024年5月6日 下午3:32
下一篇 2024年5月6日 下午3:45

相关推荐

  • 温州医科大学自然科学二等奖

    温州医科大学自然科学二等奖 温州医科大学自然科学二等奖是由温州医科大学评审委员会评定的一个国家科学技术进步奖,旨在表彰在自然科学领域做出杰出贡献的个人和团队。本文将对温州医科大学自…

    科研百科 2024年10月7日
    23
  • 2023企业缺进项有哪些原因?如何解决(2023企业缺进项有哪些原因-如何解决呢)

    财税规划的前提是,事前规划,事先搭好业务框架;以真实业务为依托,具备完整的“四流合一”,从而合规合法地享受税收优惠。更多税筹方案了解《伴税成》,欢迎讨论2023你关心的企业无票支出…

    科研百科 2024年4月19日
    75
  • 四川省教育科研成果库(四川教育科研项目结果公布)

    近年来,四川教育事业取得了显著的发展成果。在省领导的正确领导下,社会各界的广泛支持和广大教育人士的辛勤付出下,四川教育科研项目取得了一系列重大的进展和成果。 近日,四川省教育科学研…

    科研百科 2024年4月4日
    99
  • 机不可失!想去百色市委组织部上班的请点击这里(百色市委组织部地址)

    为扩大选人用人视野,提高组工干部队伍的整体素质,根据工作需要,中共百色市委组织部决定面向全市公开选调直属事业单位工作人员。现将有关事项公告如下: 一、选调岗位及名额 百色市委组织部…

    科研百科 2024年6月27日
    65
  • 生产进度跟踪软件

    生产进度跟踪软件 随着企业的生产过程变得越来越复杂和高效,生产进度跟踪软件变得越来越重要。这些软件可以帮助企业实时监控生产过程,及时发现问题并采取措施,从而提高生产效率和质量。 生…

    科研百科 2024年8月31日
    36
  • 系统项目进度管理

    系统项目进度管理 系统项目进度管理是项目管理中非常重要的一部分,能够帮助项目团队更好地控制项目进度,提高项目完成的效率和质量。在系统项目进度管理中,我们需要考虑到项目的整体计划,任…

    科研百科 2024年9月1日
    36
  • 在线协同办公哪家好

    在线协同办公哪家强? 随着数字化时代的到来,越来越多的企业开始采用在线协同办公的方式来提高生产力和工作效率。然而,对于企业而言,选择合适的在线协同办公平台并不容易。今天,我们将为您…

    科研百科 2024年8月26日
    33
  • 低代码平台技术栈

    低代码平台技术栈是近年来快速发展的一种软件开发工具。它通过简化开发过程,提高开发效率,降低开发成本,为企业提供了更快速、更灵活的解决方案。本文将介绍低代码平台技术栈的概念、特点以及…

    科研百科 2024年3月1日
    148
  • 教育部“松绑”科研经费管理:高校自主确定差旅费劳务费报销标准

    2014年至今,在科研经费管理方面,国家密集出台了一系列“松绑”政策。 但实践中发现,仍有部分高校在贯彻落实科研自主权过程中有顾虑,不敢接、不会接、不愿接,导致政策红利没有充分释放…

    科研百科 2024年6月19日
    74
  • 东北农业大学保研率2024

    东北农业大学保研率2024 近年来,随着东北农业大学的不断发展和进步,保研率逐渐提升,成为学校的一项重要指标。2024年,东北农业大学的保研率将会达到多少?让我们来一起了解一下。 …

    科研百科 2024年10月21日
    1