重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。(-中文网;-英文网)
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了乐亭免费建站欢迎大家使用!
Flutter是一种趋势,势必会取代RN,成为最主流的跨平台开发框架,基于Dart语言。ios开发必须Mac电脑。android开发window、linux、Mac均可。
不久前,谷歌正式推出 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 版本更加强大。”
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 显然满足不了要求了。”
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 编译器,“预计将在未来发布,或者专门用于桌面开发。”
对应用程序的另一种思考方式
那 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 当前商业模式中的工具链。
那么,JetBrains 会在自己的其他工具中使用 Compose 吗?事实上,他们的 JetBrains Toolbox(用于管理已安装的 IDE)已经在使用 Compose,但 Igotti 表示短时间内 Compose 还无法取代 IntelliJ IDEA 等现有框架。“编辑器是其中最复杂也最重要的组件,经历了 20 年的发展演进,我们几乎不可能在中途进行重写了。无论是 JetBrains 还是我个人,都不打算强迫每个人都转而使用 Compose。我们的目标是为原有框架选项满足不了的用户提供新的解决方案。”
写在最后
那么,为什么除了 Flutter 之外,我们还需要另一个跨平台框架?虽然谷歌的 Flutter 最开始主要面向移动设备,但现在也开始向桌面及 iOS 进军,甚至比 Compose 还抢先了一步。不过,根据 StackOverflow 的最新调查, Flutter 使用的语言为 Dart;尽管 Dart 语言的人气正在增长(正是受到 Flutter 的推动),但仍然无法与 Kotlin 相提并论。
Compose 代表着一种独特的 UI 构建方法,也许最期待 Compose 跨平台功能的受众,正是那些曾在 Android 上使用过它、又特别喜欢这种 UI 构建体验的开发者。
想要进一步了解 Compose,国内 Android 开发者可访问以下链接查看中文手册:
延伸阅读:
编程语言是程序员(开发人员)用来与计算机进行通信的计算机语言。它是用任何特定语言(C、C++、Java、Python)编写的一组指令,用于执行特定任务。编程语言主要用于开发桌面应用程序、网站和移动应用程序。以下是 2022 年最流行的顶级语言。
Python
Python 是由 Guido van Rossum 于 1980 年代后期在荷兰构建的。Python 最初是作为 Java 在行业中的竞争对手而构建的,后来逐渐流行起来。目前,Python 在研究人员和开发人员社区中都非常受欢迎。Python 在 IEEE Spectrum 的语言排名中名列前茅,得分为满分 100。此外,Python 也很受尊重,支持率高达 44.1%。
Python 几乎适用于任何事物。Django 和 Flask 可用于 Web 开发,而 Jupyter 和 Spyder 等科学工具则用于分析和研究目的。如果您喜欢自动化,Selenium 可以帮助您!该语言的灵活性使 Python 几乎可以在任何地方使用。到目前为止,这些是 Python 中比较流行的产品。Python 的巨大支持基础(仅次于 JavaScript)产生了大量使用该语言的包、框架,甚至是成熟的开源软件。
总的来说,Python 可能对数据科学和机器学习有最大的支持。虽然还有其他语言(如 R 和 MATLAB)提供竞争,但 Python 是数据科学领域的严格统治者。机器学习中使用的大多数框架和库都仅用 Python 编写,如果想要学习机器学习(或一般的数据科学),它可能是最好的语言。
JavaScript
JavaScript 在这一点上几乎是行业领导者。JavaScript 最初于 1994 年作为 Netscape Navigator(当时最好的浏览器之一)的脚本语言而构建,它迅速崛起。直到 2008 年,Google 才在为 Google Chrome 构建 V8 引擎时设计了现代 JavaScript。最初由 Netscape 构建为 Java 的竞争对手,JavaScript 现在在开发领域拥有自己的空间。JavaScript 因其流行而被广泛认为是“互联网语言”。JavaScript 在开发者社区中的支持率最高——高达 67.7%。一般来说,JavaScript 适用于任何类型的开发活动,如移动应用程序开发、Web 开发、桌面应用程序开发等。
JavaScript 有各种各样的库和框架,可以在开发过程中使用。有用于前端开发的 Angular、Vue 和 React,而 Node.js 是一种用于后端开发的非常灵活的语言。Jest 和 Mocha 是两个灵活的工具,可帮助设置单元测试以检查功能是否按预期工作。当然,如果您对其中任何一个都不太满意,您可以在前端使用普通的 HTML、CSS 和 JavaScript——就这么简单!由于来自世界各地开发人员的巨大支持,JavaScript 拥有任何语言都可以夸耀的最多数量的支持包。尽管如此,人们继续构建越来越多的包,以增加使用该语言的便利性。
Java
Java 由 James Gosling、Mike Sheridan 和 Patrick Naughton 于 1991 年构建为“Oak”语言,是第一种在全球产生重大影响的语言。虽然新的编程语言使用与 C/C++ 相同的格式,但它融入了某些新思想,使其对更多人更具吸引力。Java 运行的原则是“一次编写,随处运行”——这意味着具有不同硬件和操作系统配置的系统可以轻松运行 Java 程序。
Java 也有各种各样的库和框架,它们在底层使用 Java。Java 用于通过 Spring 和 Hibernate 进行应用程序开发。JUnit 帮助我们为 Java 项目设置单元测试。最重要的是,Java 被用于开发原生 Android 应用程序(Android SDK 本身由 Java 开发工具包或 JDK 提供支持)。Java 可能是大多数人在大学或学校的计算机编程入门课程中被介绍的语言。Java 是用于向大众教授面向对象编程的语言。
Java 在分析和研究领域也备受推崇。Java 唯一的问题是目前该语言的支持包和项目很少。很少有社区参与——这是大多数主流语言都有的。尽管如此,Java 是一种非常容易掌握和学习的语言——这在一定程度上解释了该语言的吸引力。但是,要掌握某种形式的语言确实需要一些时间。
C++
也许人们在本文中可以期待的最令人震惊的答案之一是 C++。尽管是大多数人用来学习数据结构和算法概念的语言,但该语言本身在实际世界中却很少使用。C++ 最初由 Bjarne Stroustrup 于 1982 年创建,作为 C 编程语言的扩展,在接下来的几年中继续声名鹊起。
C++ 可用于分析、研究以及 游戏 内开发。流行的 游戏 开发引擎——虚幻引擎——使用 C++ 作为脚本语言,用于构建 游戏 时可以定义的所有功能。C++ 在软件开发中也有广泛的用途。介于面向对象方法和面向方法方法之间,C++ 可以灵活地使用它生成的软件的性质。在 TIOBE 指数中排名第 4 意味着 C++ 至今仍具有吸引力。C++也广泛用于系统软件开发,比其他语言更容易理解。在操作系统等敏感领域使用 C++ 的主要原因是 C++ 程序的编译时间非常短。
C++ 可能拥有所有语言中最大的学习社区。大多数学生会开始他们的算法课程,用 C++ 构建树、链表、堆栈、队列和许多其他数据结构。当然,只要注意细节,它就很容易上手和学习,也很容易掌握。
Typescript
TypeScript 是 JavaScript 的超集,具有与 JavaScript 几乎相同的应用程序。TypeScript 可用于 Web 开发、移动应用程序开发、桌面应用程序开发等。在 StackOverflow 的最受欢迎语言列表中,TypeScript 是第二受欢迎的语言,受到 67.1% 的开发人员的喜爱(仅次于 Rust)。
TypeScript 主要是一种用于开发的语言,因此它对科学界没有太大吸引力。但是,由于 TypeScript 的新功能,可以预期它可能会激发更大程度的研究兴趣。该语言的技能上限比 JavaScript 低得多——并且 JavaScript 的许多“难以理解”的行为已在 TypeScript 中得到简化。换句话说,您将头撞到墙上的机会略小。
Golang
新语言正在迅速崛起,新的竞争者即将挑战 JavaScript 和 Python 拥有的宝座。由谷歌(两者的名字中都有“Go”!)主要是为了推进函数式编程的事业,Golang 在短时间内建立了大量的追随者。Golang 已经成为 StackOverflow 第五大最适合学习的语言,受到 62.3% 的开发人员的喜爱。
Golang 用于多个领域,用于开发强大的软件以及用于 Web 和移动应用程序的后端。目前,Golang 甚至支持一些基本的 Web 开发。虽然它仍处于取代 JavaScript 作为网络语言的阶段,但它正在迅速成为支持下一阶段网络的语言。
Golang 比此列表中的其他语言更难学习。此外,Golang 是一种开源语言,每次重大更新都会频繁更改,因此保持更新是必要的。
Dart
Dart 是工业领域发展最快的语言之一。谷歌在语言领域的贡献显着增加,以与微软的 TypeScript 日益流行的竞争相抗衡。Dart 因其简单性而受到世界各地程序员的高度喜爱。
Dart 用于多平台应用程序开发。与 JavaScript 一样,Dart 用于构建任何人都可以使用电子设备运行的软件。目前 Dart 最著名的用途是 Flutter 框架,Flutter 是一种用于移动应用程序开发的语言。最近的谷歌趋势表明,Flutter 尽管是一个较新的框架,但比 React Native 更受欢迎,后者是业界已经建立的移动应用程序开发框架。
Dart 比 JavaScript 更容易学习,并且能够很好地简化甚至难以理解的案例。随着市场上的 TypeScript 和 Dart 的出现,程序员在选择一种他们真正想要学习的语言时会面临多种选择。