谷歌flutter鸿蒙,chrome 鸿蒙

为什么Flutter开发APP性能最接近原生,前端程序员请关注

Flutter是谷歌公司推出的跨终端的开发框架,支持Android、iOS和WEB终端。1.0版在2018年12月5日发布,目前的最新版本是1.5,它采用的开发语言是Dart,Dart也是谷歌开发的计算机编程语言,语法类似C,是编译型语言:

创新互联业务包括:成品网站、企业产品展示型网站建设、高端网站设计、电子商务型网站建设、外贸网站建设(多语言)、电子商务商城网站建设、按需网站策划、营销型网站等。效率优先,品质保证,用心服务是我们的核心价值观,我们将继续以良好的信誉为基础,秉承稳固与发展、求实与创新的精神,为客户提供更全面、更优质的互联网服务!

hello world例子,打印字符串“Hello World!”:

1、没有桥接层

React Native、Weex等技术都是跨终端的框架,然而性能跟原生App存在很大差距。这是由于它们的工作原理决定的:

React Native、Weex等技术多了一个桥接层,所以界面渲染会慢一些,由于UI渲染非常频繁,想要不卡顿,基本上比较难,性能和用户体验跟原生代码有差距。而这恰恰是Flutter的优势所在:

Dart可以被编译成不同平台的本地代码,让Flutter不通过桥接层直接跟平台通信,自然性能会快一些。

2、编译执行

JavaScript是解释执行的,Dart是编译执行的,性能谁好一目了然。

3、Flutter Engine虚拟机

Flutter是依靠Flutter Engine虚拟机在iOS和Android上运行的,Flutter Engine使用C/C++编写,开发人员通过Flutter框架直接和API在内部进行交互,所以具有输入低延迟和UI渲染高帧速率的特点。除了这特点之外,Flutter还提供了自己的小部件,Flutter小部件是使用从React获取灵感的现代框架构建的。 中心思想是您使用小部件构建UI。

窗口小部件根据其当前配置和状态描述了它们的视图。 当窗口小部件的状态发生更改时,窗口小部件会重建其描述,框架将根据前面的描述进行区分,以确定底层呈现树从一个状态转换到下一个状态所需的最小更改。可以直接在OS平台提供的画布上进行描绘,也就是一些核心类库直接放到虚拟机里面,调用起来更快。

从它的系统结构可以看出,类似安卓的ART(Android Run Time)虚拟机,同样采用AOT(Ahead of TIme)技术,会在APP安装时就编译成机器语言,不再解释执行,从而优化了APP运行的性能。

4、自带渲染引擎

Flutter使用谷歌自己的Skia渲染引擎,而Android系统自带Skia引擎,iOS平台上Flutter也会把Skia引擎打包到APP中,从而实现了高效渲染。而React Native通过桥接层访问原生UI,操作频繁就容易出性能问题。

综合所述,Flutter 是性能最接近原生代码 的一种开发框架,未来也会是构建谷歌Fuchsia应用的主要方式,前途不可限量,唯一的问题就是需要学习一门新的语言:Dart,而有Java或者C#语言基础的程序员会比较容易学习。

苹果在为“人工智能”不停收购, 谁能再做一个谷歌与Facebook在人工智能方面的收购清单?

在通往人工智能的路上,Google一直在不停地买买买。而且Google在人工智能领域的收购其实从2006年就开始了。

DeepMind(2014年1月26日被Google收购)

Deepmind可以说是当下最火的人工智能初创公司,于2014年1月26日被Google收购。

虽然被谷歌收购,但是DeepMind一直是独立运营的,他们的目标是开发能够“独立思考”的软件。为了能够开发这种类型的人工智能软件,DeepMind在海量数据集合的帮助下使用机器学习等技术训练自己的人工智能去完成某些工作任务。

api.ai(2016年9月19日被Google收购)

api.ai的API可以透过语音辨识、意图辨识和上下文语境理解等技术,让电脑理解人类语言并转换为行动,协助开发者打造类似Siri的对话式智慧助理,可用于聊天机器人、App、智慧家电等。

api.ai已经证明他们可以协助开发者设计、开发和不断改进会话式界面。超过6万名开发者正使用API.ai的工具开发会话式体验。api.ai提供了业界领先的会话式用户界面平台,能够协助谷歌指导开发者持续开发优秀的自然语言界面。

Moodstocks(2016年7月6日被Google收购)

Moodstocks公司成立于2008年,作为一个小的创业公司,他们的规模并不大。

Moodstocks公司是以图像识别技术为主,并推出了智能手机的图像识别应用程序Moodstocks Notes。在加入谷歌在巴黎的研发团队之后,他们将继续研发自己的视觉图像识别工具。

Dark Blue Labs(2014年10月23日被Google收购)

Dark Blue Labs是一家深度学习公司,主要从事数据架构以及算法开发工作,被收购后并入DeepMind。

Jetpac(2014年8月17日被Google收购)

总部位于旧金山的Jetpac通过Instagram等社交图片分享工具制作城市导游服务。通过分析食品、装饰和人物图片,Jetpac的软件便可对城市的各种特点进行分析。

Jetpac被收购前有三款智能手机应用,包括一款城市导游助手、一款图片分析器和一款图片探测工具,被收购后并入Picasa中。

Emu(2014年8月6日被Google收购)

Emu是一个类似语音助手Siri但却是“通过文本消息服务的内置助手”。

它整合了类似Siri个人助理的功能,将会根据你的聊天记录,自动执行移动助理的任务。比如自动建立日程、设置时间提醒、甚至还能帮你预定餐馆。

Emu被Google收购后主要用于Google Hangouts以及Google Now中。

Flutter(2013年10月2日被Google收购)

Flutter2010年底由Navneet Dalal和Mehul Nariyawala创办,利用计算机视觉技术结合手势监测识别技术,使得用户可以用简单的手势来操控电脑和移动设备。

Flutter被Google收购后主要应用在Android以及Google X项目中。

Wavii(2013年4月23日被Google收购)

Wavii是一家成立于2009年3月的自然语言处理技术公司,总部位于西雅图。

Wavii主要做的是扫描网络、寻找新闻、然后进行总结,并附上文章来源的全文链接。

Wavii被Google收购后主要应用在Google Knowledge Graph(Google知识图谱)中。

DNNresearch(2013年3月12日被Google收购)

DNNresearch公司是由深度学习大神Geoffrey Hinton与他的两个研究生Alex Krizhevsky和Ilya Sutskever成立。由于谷歌在本次收购中没有获得任何实际的产品或服务,所以本次收购实际上属于人才性收购,收购的主体是为了这三人团队。

Viewdle(2012年10月1日被Google收购) 

Viewdle是一家成立于2006年的乌克兰公司,被收购前主要做的是增强现实和面部识别。

Viewdle曾经推出的应用包括SocialCamera和Third Eye,Social Camera是其推出的首款应用,用户只需通过Faceprint教会你的相机识别好友,此后只要照片中出现了这些好友,SocialCamera就可以自动为他们打上标签。

Viewdle被Google收购后主要应用在Android中。

Clever Sense(2011年12月13日被Google收购)

Clever Sense是本地推荐应用Alfred的开发商。Alfred的独特之处在于它将人工智能和机器算法有机结合,为用户提供个性化的场所推荐,推荐的场所包括附近的餐馆、咖啡厅、酒吧和夜店。

Clever Sense被Google收购后主要应用在Android中。

PittPatt(2011年7月23日被Google收购)

PittPatt是一家由卡耐基梅隆大学孵化的专注于人脸识别和模式识别公司,其开发了一项能在照片、视频和其他媒介之中识别匹配人脸的技术,创造了一系列人脸检测、跟踪和识别的算法。

PittPatt的人脸检测和跟踪的软件开发工具包(SDK)能在照片中确定人脸的位置,在视频中跟踪人脸的移动情况。

PittPatt被Google收购后主要应用在Android中。

SayNow(2011年1月25日被Google收购)

SayNow是一家成立于2005年的语音识别公司,总部位于美国加州帕罗奥托(Palo Alto)市。

SayNow的平台可将语音通讯、一对一通话和集团通话整合到Facebook和Twitter等社交网站,以及Android和iPhone手机应用中。

SayNow被Google收购后主要应用在Google Voice中。

Phonetic Arts(2010年12月3日被Google收购) 

Phonetic Arts公司是一家位于英国的语音合成技术厂商。被Google收购前Phonetic Arts公司的语音合成技术主要用在游戏中,但谷歌希望将该技术用于其电脑声音自动输出系统,以使机器合成的人声更像人类的声音以及更加流利。

Phonetic Arts被Google收购后主要应用在Google Voice和Google Translate中。

Metaweb(2010年7月16日被Google收购)

Metaweb是一家从事语义搜索(Semantic Search)技术开发的风险企业,目标是开发用于Web的语义数据存储的基础结构。

Metaweb被Google收购后主要应用在Google Search中。

Neven Vision(2006年8月15日被Google收购)

这个可以说是Google最早在人工智能领域的收购了,可以追溯到2006年。

Neven Vision是一家图像识别技术公司,其能自动从图片里提取信息、并且辨认图片的内容,被收购前主要应用于手机以及美国政府和执法部门的计量生物学应用中。

Neven Vision被Google收购后主要应用在Picasa以及Google Goggles中。

为什么除了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 版本更加强大。”

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 开发者可访问以下链接查看中文手册:

延伸阅读:

华为鸿蒙系统Harmony OS真的让谷歌慌了吗?

在讨论Harmony OS是否真的让谷歌慌了之前,我们先来对比一下两个操作系统,从架构出发对比一下两个操作系统的设计理念和目标是否是一样的。

HarmonyOS整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 子系统 功能/模块”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块。HarmonyOS技术架构如下所示。

系统服务层是HarmonyOS的核心能力集合,通过框架层对应用程序提供服务。该层包含以下几个部分:

根据不同设备形态的部署环境,基础软件服务子系统集、增强软件服务子系统集、硬件服务子系统集内部可以按子系统粒度裁剪,每个子系统内部又可以按功能粒度裁剪。

框架层为HarmonyOS应用开发提供了Java/C/C++/JS等多语言的用户程序框架和Ability框架,两种UI框架(包括适用于Java语言的Java UI框架、适用于JS语言的JS UI框架),以及各种软硬件服务对外开放的多语言框架API。根据系统的组件化裁剪程度,HarmonyOS设备支持的API也会有所不同。

应用层包括系统应用和第三方非系统应用。HarmonyOS的应用由一个或多个FA(Feature Ability)或PA(Particle Ability)组成。其中,FA有UI界面,提供与用户交互的能力;而PA无UI界面,提供后台运行任务的能力以及统一的数据访问抽象。FA在进行用户交互时所需的后台数据访问也需要由对应的PA提供支撑。基于FA/PA开发的应用,能够实现特定的业务功能,支持跨设备调度与分发,为用户提供一致、高效的应用体验。

Fuchsia OS整体也采用分层架构设计,也被分为了4个不同层次。

对于不太了解内核作用的同学简而言之,Zircon之于Fuchsia,恰如Linux之余于Android。Linux内核驱动了多个操作系统,很多操作系统构建在它之上,比如 Ubuntu、Android、Manjaro、ArchLinux、Debian、Red Hat、SUSE 甚至 Chrome OS ,所以我们也可以大胆预测,如果未来Fuchsia OS 发展良好, Zircon 内核也被证明好用,那么很有可能有更多的操作系统采用这一新内核。

系统服务层(Garnet)

也是直接构建在 Zircon 上的一层名叫 Garnet。 Garnet 包含各种操作系统所需的各种底层功能,包括硬件的驱动程序(网络,图形等)和软件安装。这一层最激动人心的事情是 Escher(图形渲染器),Amber(Fuchsia 更新程序)和Xi Core,它是Xi文本和代码编辑器的底层引擎(今年早些时候已经发布了)。

模块管理层(Peridot)

Peridot 是接下来的这一层,主要处理Fuchsia的模块化应用程序设计, Peridot的另外两个主要组件直接用于模块。 Ledger 可以跨设备保存您在应用/模块中的位置,并同步到您的Google帐户。Maxwell 是一个更复杂的主题,需要更多进一步地深入研究,但是 Maxwell 极有可能是让 Fuchsia 充分施展魔力的点睛之笔,可以提前透露的是,Maxwell 的厉害之处包括 Kronk,也是大家熟知的 Google Assistant。

应用层(Topaz)

Topaz,是这个 Layer Cake 蛋糕的顶层,也是对开发者和用户直接影响最大的一层。Topaz 提供 Flutter 支持,而有了Flutter 的支持,各种华丽的应用程序,可以帮助充实地提供日常使用的功能齐全的应用程序。比如,现在最令人印象深刻的当然是 Armadillo UI,它是 Fuchsia 的主要用户界面和主屏幕。

可以做一个类比,Topaz 这一层在 Android 中可以找到一个对照,这将是你的必备应用程序,如联系人,音乐,文件管理器和文本编辑器 Xi(Topaz中的可视前端连接到Garnet的后端)。即使没有你需要的东西,你也可以简单方便地安装。

Harmony OS 与 Fuchsia OS的主要相同点:

Harmony OS 与 Fuchsia OS的主要不同点:

个人认为Harmony OS成功的可能性更大。虽然从生态上来说,谷歌可以利用Android建立的生态伙伴优势推广Fuchsia OS,但也恰恰是Android完善的生态会给Fuchsia OS的推广造成最大障碍。

相反Harmony OS从架构上更符合物联网时代的需求,然后华为作为主导者具备强大的硬件制造能力,Harmony OS在华为很多手机上已经推送,国内很多公司的冰箱、空调等也都在采用华为鸿蒙系统。这些都有利于Harmony OS系统的产业化发展。

当然,从全球大环境来说,Harmony OS可以在国内做成功,但是要想在国际上推广难度是非常大的。美国的 科技 霸权,导致计算机诞生以来底层技术很少在美国之外的公司诞生并发扬光大。Lua、Ruby等编程语言,Intellij IDEA等算是为数不多的例子。


分享文章:谷歌flutter鸿蒙,chrome 鸿蒙
网页URL:http://azwzsj.com/article/dsgsioo.html