闲鱼技术2022年度白皮书-KUN主题-大终端领域的新物种-KUN(上)

简介: 闲鱼技术2022年度白皮书-KUN主题-大终端领域的新物种-KUN


 

作者:吉丰

 

一、 KUN的背景/动机

 

即使已经到了2022年,在面向复杂多变的用户端开发领域,我们依然绕不开一个问题?我们选择什么技术更适应我们的业务场景,不管是通用还是独特。这回到一个问题的原点,每一种技术都有它的局限性(短板)。

 

1. 单一技术的缺陷

 

1) Native技术的局限性

 

尽管Native技术在用户体验上有绝对的天然优势,但在工程化,部署效率,敏捷上又有天然的短板。

 

工程化效率低

 

工程复杂度高,由于天然的把所有的业务集成在一个工程里,依赖复杂性,工程复杂度高

编译效率低,切环境,编译打包,效率低。这显著影响实际的开发效率。

 

部署效率低

 

由必须依赖用户的安装更新,生效周期长,导致实际迭代效率慢。

 

2) Web技术的局限性

 

尽管Web技术是当今最流行的GUI技术,但受限于浏览器架构/渲染模型,使其在体验上有天然的劣势。特别是在强调“图片/动画/视频控制、长列表容器、多Tab容器”等场景显得力不从心。

 

涉及底层基础能力,必须依赖Native技术的增强。

 

更广义而言,这是C/S架构和B/S架构技术对比的缩影,历史上从以C/S架构为开始,到以B/S架构的大流行。而PC互联网时代后,Native技术和Web技术在移动互联网上的继续相爱相杀。

 

2. 烟囱式多种技术并存的挑战

 

技术上的乌托邦,理想的情况,我们期望日常的业务软件开发关注于业务本身的复杂度(比如前台而言关注与,核心关注于业务模型复杂度/展示复杂度/交互复杂度),而不是更多的关注于技术工具本身的复杂性。

 

但实际的情况却相反,我们往往考虑技术工具的问题,比如什么场景下适合使用什么技术?什么时候使用native技术,什么时候使用web技术什么时候使用非web的跨端技术,什么时候使用某些特定领域的技术,随着业务场景越来越多,越来越复杂,我们的技术工具的数量也在不断的上升。

 

每多增加一种技术工具,背后需要额外的投入,

 

如何学习熟练掌握一种技术工具。

如果不断优化提升技术工具,使之在质量和效率上不断提升。

技术工具之间的耦合关系使得复杂度进一步上升,为了解决这部分复杂度所需要的额外的成本。

组织效率的降低,容易形成更多的开发瓶颈。

 

技术的割裂,对中小规模的技术团队的影响更加明显,因为技术的割裂,更加容易产生因为技术本身导致的人力瓶颈。

 

有没有一种技术,在效率、体验、通用性取得最大化的平衡。甚至打破传统按技术栈粒度进行划分的职能边界,统一到普遍意义上的终端开发工程师职能上。

 

3. KUN是什么

 

KUN是一个让开发者使用Javascript,HTML,CSS进行开发,使用Flutter进行增强的跨端开发框架。

 

它最早的雏形是来自Kraken,正如鲲这个名字所内涵的:北冥(Kraken)有鱼,其名为鲲(Kun)。Kraken将Flutter技术引入并应用于Web技术栈,而在和Kraken团队的交流中吸取了大量的优秀知识。

 

但我们并不希望去做一个仅仅基于Flutter渲染带裁剪的Web浏览器。相反,我们试图去完美融合Web生态和Flutter生态。我们希望在面向中小规模的大前端/大终端的组织中,找到一种真正适合的,长期性的,通用型解决方案。来解决包括我们闲鱼技术团队在内的,大前端/大终端所面临的前端用户体验低、客户端效能低、团队技术割裂、技术协作成本高等一系列问题。

 

KUN项目组是一个技术栈高度互补的团队,包含flutter、前端、native多技术栈的关键专家开发者,在这个过程中,缺少任何一方都将大幅度的降低所能达到的上限。

 

就像KUN Logo所隐喻的,它既像一条大鱼又像一个猫身,它是对立和统一的结合体。

 

二、 KUN的独特价值

 

既然已经有了React Native,WEEX2.0,Kraken等跨平台开发框架,我们为什么还需要KUN?

 

React Native试图去混合和连接JS生态和OEM的GUI生态(Android生态&iOS生态)。但最大的问题在于其不同OEM生态之间天然的差异,去抹平它们之间的差异,是一件极具挑战的目标。而舍弃操作系统GUI生态,试图去重新构建一套独立完整的GUI系统去对接JS生态,是一件非常有抱负的目标。它可能意味着在对齐W3C标准上的更高的上限,但同样这个方向上,挑战重重。


1. KUN站在巨人的肩膀上,做出独特的价值-开放性

 

image.png


1) KUN从一开始就不试图去达到完备的W3C的标准。

 

接受达到W3C标准(包括html标签标识,CSS样式标准,WebAPI标准)的必要的子集对我们而言充分的。我们在一开始就对我们的目标做取舍和精确的定义。

 

2) KUN基于Flutter GUI系统和其生态,以极低的扩展成本,向上层JS运行时提供大量丰富的扩展标签/组件。

 

KUN不试图去构建全新独立的GUI系统,也不去试图抹平多个操作系统GUI之间的差异。最大程度结合JS技术/生态和Flutter技术/生态,取长补短,优势互补。

 

KUN的开放性是KUN最显著的特征。通过更加开放和轻量化的容器设计和实现。KUN试图通过更加开放性的架构设计,去混合兼顾JS&Flutter。开放性,技术上意味着

 

有更广泛的通用性

更大的生态/社区的支持

有更敏捷的响应性

有更长期的成长性

 

结合闲鱼技术在flutter技术领域的天然优势,去混合连接JS生态&Flutter生态,通过更加开放&更加轻量化的设计,在效率,体验,通用性上去取的最佳平衡。

 

基于将Flutter生态融入到Web生态中,同时高度的开发性,有着更加广泛的通用性,使得从技术和组织的各种为政,从烟囱式的多技术栈,有机会向分层的技术融合转变,走向技术统一,最后进一步到组织融合成为可能。不再按细粒度的技术栈划分职能岗位,而是统一为职能更大类的终端开发工程师或者开发工程师转变。

 

这尤其在中小规模的技术团队组织中,产生更加显著的价值。

 

当然就这一融合目标的达成,需要考虑至少三个因素:

 

技术方案能不能行

组织内同学愿不愿意

外部环境趋势是否符合

 

接下篇:https://developer.aliyun.com/article/1225898?groupCode=idlefish

相关文章
|
4月前
|
人工智能 机器人
智能体来了|AI智能体时代的趋势与机会(2025趋势解读)
智能体不是AI终点,而是人与智能共生的起点。2025年,AI从工具进化为“行动伙伴”,重塑工作与学习方式。「智能体来了」推动全民智能体教育,助力个人转型、企业升级,抢占未来红利。
|
6月前
|
架构师 前端开发 程序员
低代码 VS 全栈开发,2025年了,程序员到底该如何选择?
在技术管理领域深耕十年,作者指出工具之争毫无意义,关键在于如何使用。本文深入解析低代码与全栈开发的本质、区别与融合,探讨在快速变化的技术环境中,程序员该如何选择发展方向,实现效率与深度的平衡。
|
机器人 API Python
智能对话机器人(通义版)会话接口API使用Quick Start
本文主要演示了如何使用python脚本快速调用智能对话机器人API接口,在参数获取的部分给出了具体的获取位置截图,这部分容易出错,第一次使用务必仔细参考接入参数获取的位置。
822 1
|
安全 Linux 程序员
一招解决开发环境问题——远程容器开发指南
使用C++作为主要开发语言的程序猿们应该会认同搭建开发环境是一件烦人的事情。笔者在运营iLogtail开源社区的过程中发现开发和调试环境问题也是成员问的最多的问题之一。利用 VSCode 的 Remote-Development 插件可以使整个开发环境运行在远程容器中,利用容器技术做到一致、可移植、天然隔离的环境开发编译。本文由浅到深带大家搭建这样的远端容器开发环境。
|
存储 Windows
移动硬盘数据恢复 详细操作指南 (6种方法)
很多情况下,移动硬盘丢失的数据是可以恢复的。本文将给大家详细介绍移动硬盘数据恢复的完整过程,帮助大家有效应对数据丢失问题。
|
传感器 监控 UED
基于STM32的智能停车场管理系统设计与实现
基于STM32的智能停车场管理系统设计与实现
1085 1
|
Web App开发 移动开发 Dart
闲鱼技术2022年度白皮书-KUN主题-大终端领域的新物种-KUN(中)
闲鱼技术2022年度白皮书-KUN主题-大终端领域的新物种-KUN
582 0
|
算法 Java C语言
蓝桥杯-03-蓝桥杯学习计划
蓝桥杯-03-蓝桥杯学习计划
|
Java 应用服务中间件 HSF
走进HSF源码
前言本文源自一次组内分享,于是接着这个机会,将HSF的源码阅读过程记录下来,以供自己温故而知新。如果有哪些地方理解不到位的,还请诸位批评指正!简介HSF (High-speed Service Framework),高速服务框架,是在阿里巴巴内部广泛使用的分布式RPC服务框架。众所周知,HSF一款与我们的日常生活密不可分的RPC框架;所谓RPC——远程过程调用,就是指像调用本地方法一样调用远程的方
2035 0
走进HSF源码
|
敏捷开发 自然语言处理 Java
Cucumber -基于 behave 自动化测试指南 (一)
基于 behave 自动化测试系列教程