术致科技

您现在的位置是:首页 > 字体 > 正文

字体

skia(我们还需要另一个跨平台开发框架)

爱字体2023-01-25字体322
不久前,谷歌正式推出JetpackCompose1.0版本。近日,JetBrains在此基础上发布了ComposeMultiplatformAlpha版本,旨在将Compose扩

不久前,谷歌正式推出jetpack compose 1.0版。最近,JetBrains在此基础上发布了compose multiplatform alpha版本,旨在将compose扩展到桌面和web

skia(我们还需要另一个跨平台开发框架)

compose multiplatform由桌面版和web版组成。它通过kotlin多平台支持多种不同的平台。其中,compose desktop采用谷歌的skia图形库在windows、MacOS和Linux上实现UI呈现,从而在所有受支持的操作系统中提供统一的体验,类似于Flatter的实践据kotlin团队称,compose multiplatform将在内存消耗方面具有更明显的优势,与electron框架相比,安装规模和UI呈现性能更高。随着alpha版本的发布,compose multiplatform也收到了新的Android studio插件,包括在IDE中显示组件预览的支持,以及通过本文提供的许多附加功能,我们希望帮助您进一步了解compose的跨平台功能,以及JetBrains将compose从Android扩展到其他平台的主要驱动力是什么

基于jetpack compose 1.0的jetpack compose,由谷歌构建,是在Android应用程序中构建用户界面的官方框架。1.0版上周刚刚发布。与此同时,代号为“extreme Fox”的Android studio的第一个稳定版本2023.3.1也正式发布了。

虽然它刚刚推出了1.0,但谷歌表示,“目前,play store中有2000多个应用程序正在使用compose,更重要的是,就连play store本身也在使用compose。”谷歌还表示,“我们一直在与一些顶级应用程序开发人员合作,他们的反馈和支持帮助我们使1.0版更加强大。”

compose是一个声明性框架。它最大的特点是摆脱了传统Android方法中的层次结构,即布局和控制树。compose用户界面是通过编写带有@composable注释(用于描述屏幕状态)的函数来定义的,即所谓的函数生成用户界面。谷歌的安卓开发团队解释道,“随着应用程序状态的改变,你的用户界面将自动更新,这使得快速构建用户界面变得更加容易。”

jetpack compose for Android推出了1.0版

compose是基于kotlin开发的,kotlin和Android studio(即官方指定的Android IDE)都来自开发工具制造商JetBrains。尽管jetpack compose是为Android设计的(不同于谷歌的fluent框架),JetBrains坚信compose可以完全获得跨平台功能,用于桌面:这只是一个开始

compose multiplatform可以说是框架为MacOS、Linux、windows和web打开的一个端口。目前,它刚刚发布了1.0 alpha版本。尽管它仍处于早期开发阶段,JetBrains表API的使用为开发者带来了“基本的安全性”

注册者要求JetBrains的compose项目负责人尼古拉·伊戈蒂(Nikolay igotti)理解,除了为桌面应用程序开发一个跨平台Java框架之外,该公司为什么还要努力开发桌面应用程序的compose,该框架已在IntelliJ IDE和许多丰富的变体中广泛使用。伊戈蒂的回答是,“旧的Java框架基本上是swing的一个修改版本。swing属于默认的JDK UI框架swing和AWT(抽象windows工具包).写作完全是另一回事。当然,我们在设计中也考虑了互操作性要求。。。swing框架太旧了。它最早出现在20世纪90年代末。多年来,人们对UI的设计理念发生了翻天覆地的变化,swing显然无法满足需求。“

JetBrains ide中的桌面项目compose和swing有一个共同点:它们不同于其他使用本机控件的跨平台框架,例如Java的SWT(标准小部件工具包)还有微软的xamarin。他们选择自绘制控件。compose使用的skia开源图形库也广泛用于Google Chrome、fluent和许多其他框架。这是否意味着复合应用程序将没有自己的原生外观?Igotti回答说:“这取决于开发者的选择以及他们如何为应用程序设置主题。在这方面,compose与其他框架(如fluent)没有什么不同。”

compose for desktop应用程序是否依赖于运行的JVM(Java虚拟机)?Igotti说,“我们也知道JVM应用程序的发布可能会很棘手。因此,我们提供了自己的gradle插件,它使用jpackage和JLINK在JVM应用程序的基础上生成本机应用程序。可以实现Mac.DMG、windows MSI、Linux DEB包等,所以你不必担心JVM。”

换句话说,开发结果将是一个精心包装的JVM应用程序。JetBrains还有一个kotlin/native编译器来解决这个问题,“预计将来会发布,或者专门用于桌面开发。”

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

那么web应用程序呢?Igotti回答说:“我们使用kotlin/JS编译器。”compose的web版不如桌面版高级。说明文件还警告说,“API尚未最终确定,预计会有重大变化。”此外,尽管web版本使用compose模型,但API完全不同,使用HTML和CSS。因此,根据igotti的说法,应该有更少的代码可以在web版本和compose for desktop之间共享, “compose代表了对应用程序的另一种思考方式。状态是UI的真正来源,而UI本身是无状态的,它的表达总是由状态来计算。在这方面,compose for web采用了相同的原语集和完全相同的状态管理思想。然而,对于小部件的具体收集和排列,web版本和桌面版本reall你们不能互相交流。“

说到这里,为什么要为安德烈作曲oid是否扩展到许多其他平台?“Compose的目标受众主要分为三类。第一类是使用kotlin和Compose的Android开发人员,他们希望将开发结果交付给其他平台;第二类是纯kotlin开发人员,他们希望以“一次编写,随处运行”的方式开发新的应用程序;第三类是不熟悉kotlin或Compose,但希望开发出漂亮的UI的用户可以为他们提供实现目标的工具。“

伊戈蒂没有给出具体的发布日期,但表示希望测试版能在今年秋天发布。”我们还希望在今年内推出1.0版。“项目本身是完全开源的。”在21世纪,这个框架不应该在大多数人的眼中受到指责。我们只是想开发一个长期缺失的软件“来补充JetBrains当前商业模式中的工具链。应该注意的是,compose不提供视觉设计师。Igotti提到,“大多数开发人员不喜欢图形化UI生成器”,而声明式UI和设计内容预览是最流行的解决方案。”因此,我们提供了一种预览机制。您可以在可组合函数上添加注释,并在不运行应用程序的情况下快速预览。“

JetBrains认为当前的工具市场没有为桌面应用程序开发人员提供足够的支持,公司组织的内部开发人员调查也在一定程度上证实了这一结论。”桌面开发现在意味着“二等公民”。。。这是一个需要高度关注的利基市场。“

JetBrains会在其他工具中使用compose吗?事实上,他们的JetBrains工具箱(用于管理已安装的IDE)已经在使用compose,但igotti表示,compose无法在短时间内取代IntelliJ idea等现有框架。”编辑器是最复杂、最重要的组件之一。经过20年的发展和演变,我们几乎不可能半途而废。JetBrains和我个人都不打算强迫每个人改写。我们的目标是为无法满足原始框架选项的用户提供新的解决方案。“

skia(我们还需要另一个跨平台开发框架)

写在结尾

那么,除了fluent,我们为什么还需要另一个跨平台的框架呢?虽然谷歌最初主要针对移动设备,但它也开始进军台式机和IOS,甚至比compose领先一步。然而,根据stackoverflow的最新调查,fluent使用的语言是dart;尽管dart的受欢迎程度正在增长(由Flatter驱动),它仍然无法与kotlin相比

更重要的是,compose有着强劲的发展势头——其GitHub回购协议赢得了5000多颗星,并报告了大量问题。尽管许多问题代表着不断的“麻烦”,但它也表明这是开发人员渴望关注的方向。

compose代表了一种独特的UI构建方法。或许最期待compose跨平台功能的观众是在Android上使用过它的开发人员,尤其是喜欢这种UI构建体验的开发人员。要了解有关compose的更多信息,国内Android开发人员可以访问以下链接查看中文手册:https://compose.net.cn/扩展阅读:

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