Jerry 在加入 SAP 电商云 Spartacus 开发团队从零开始学习 Angular 时,对这款出身名门的前端开发框架的来龙去脉,做了一些简单的了解。

本公众号一万多粉丝里,有不少朋友都在日常工作中使用 SAP UI5 开发前端应用,但可能并不是每一位朋友对 SAP UI5 的前世今生都熟悉,因此我想用本文对 SAP UI5 的发展历史做一个简单的介绍。

本文部分内容来自 SAP UI5 开发人员 Andreas Kunz 的一篇 SAP 社区博客。大家可以点击文末的"查看原文"访问原始的英文博客。

同目前国内外流行的前端开发框架的三驾马车 Angular,React 和 Vue 一样,SAP UI5 也是一款基于 JavaScript 的前端开发框架。同这三个同行相比,SAP UI5 在面向企业级用户的前端应用开发领域更具优势,主要体现在以下这些方面:

  • 长期兼容性和可维护性(long-term compatibility & maintenance)
  • 丰富的开箱即用的面向企业级前端应用的控件
  • 国际化(internationalization)的支持
  • 应用的健壮性和安全性(robustness and security)的支持
  • Accessibility
  • SAP UI5 开箱即用以及周边社区提供的诸多开发和 support 工具

SAP UI5 也是 SAP Fiori 设计理念和设计系统钦点使用的应用开发框架。

SAP UI5 起源 - 凤凰计划(Phoenix)

SAP UI5 最早的起源要追溯到 2008 年 11 月。来自 SAP 不同开发团队的几位员工,挤进了一间只能容纳四人的小会议室,被授予一项秘密任务:创建一种新的 UI 开发技术。这个项目当时的代号是 Phoneix.

这个代号对应的凤凰图标一直沿用至今,成为 SAP UI5 的 Logo,如下图左上角所示:

这种新的 UI 开发技术,必须具备灵活、可扩展、现代并且独立于后端实现技术等特性。

我们不妨回忆一下,2008 年时期的 SAP 生态圈,有哪些技术栈,活跃在前端开发舞台上?

当时 Jerry 刚刚加入 SAP 成都研究院一年多的时间,从事 SAP Business ByDesign 开发。2008 年 SAP BYD 还没有进入 Feature Pack 2.0 的 LeanStack(精简技术栈) 时代,仍然基于 ABAP 和 Java 双栈并存(Dual Stack)架构,UI 开发采取 Visual Composer + Java Webdynpro 的方式。

与此同时,SAP CRM On-Premises 仍然处于新功能的持续开发阶段,底层基于 SAP Business Server Page(BSP) 技术的 WebClient UI 框架,为了顺应当时企业级应用从 Client/Server 往 Browser/Server 架构迁移的历史潮流,被用来开发新的 SAP CRM 应用,以替换原本运行在 SAP GUI 中的事物码。

WebClient UI 的孪生兄弟,ABAP Webdynpro,辅之以 FPM(Floor Plan Manager),在 SAP SRM UI 开发领域的表现也丝毫不逊色于 WebClient UI. 如今这一对略显"高龄"的双子星,仍在 SAP 产品 UI 开发大家族中占据一席之地。

Jerry 目前工作的 SAP Commerce Cloud,其前身在遥远的 2008 年称之为 Hybris,UI 采用的是更古老的 JSP 技术。

分析这些前端技术,它们都有一个最大共同点:同后端系统具有强耦合关系。SAP BSP,WebClient UI,ABAP Webdynpro 开发而成的应用,只能在 ABAP 系统运行。Java Webdynpro 和 JSP 页面,也没法脱离 JVM 而单独运行。同后端系统的强耦合,给企业用户带来的一大挑战就是 UI 技术的可升级性。例如要升级 WebClient UI 和 ABAP Webdynpro 的版本以获得更多特性的支持,就得升级 ABAP Netweaver 对应的 Software Component.

SAP WebClient UI / Webdynpro 的编程范式,使用其提供的开发框架,在应用开发人员和浏览器原生支持的 API / CSS 样式处理之间竖立了一道屏障。这道屏障是一把双刃剑:一方面,它使得应用开发人员能够专注于应用的业务逻辑开发,而无需花精力去考虑企业级前端应用开发中至关重要的安全性,国际化,性能和 Accessibility 等产品标准该如何实现;另一方面,也给某些确实需要对 UI 框架进行扩展,以充分利用现代浏览器提供最新特性的需求实现,带来了一些挑战。

比如 Jerry 还在 SAP 成都研究院数字创新空间团队工作时,曾经做过一个原型开发,在 SAP CRM WebClient UI 里引入一个基于 WebGL(Web Graphics Library) 标准的第三方库,Three.js, 来渲染一个不断旋转的 3D 足球效果。当时确实费了一些功夫,才让这个效果在 WebClient UI 应用里正确渲染出来。

SAP 架构师团队睿智而又富有远见的架构师们,早就意识到 2008 年当时使用的 SAP UI 技术,存在上述一系列局限,SAP UI5 就是带着解决这些问题的使命而诞生于世的。

SAP UI5 正式为外界所知,是 SAP 2013 年 5 月在 Orlando SAPPHIRENOW 上发布的关于 Fiori 的通告。随着第一批总共 25 个基于 SAP UI5 开发而成的全新 Fiori 应用问世,SAP UI5 接过了 SAP 前端领域的开发大旗。

处于萌芽发展时期的 UI5,其编码实现全部出自一个成熟的 Scrum 开发团队之手。随后团队不断发展壮大,拆分成一个 Core(核心)团队,和另一个负责创建 “sap.m” 控件的团队。起初 sap.m 命名空间下的控件,仅用于移动设备,m 代表 mobile, 后来被重新定义为 UI5 的跨设备主控件库:main control libraries across devices.

拥抱开源 - OpenUI5 的诞生

Phoenix 计划时期,SAP UI5 的创始者们都是忠实的开源项目爱好者。项目启动伊始,就在考虑将其开源,以便能更轻松地与前端社区协作,更早地获得用户反馈和错误报告,以及更有效地将 UI5 推广到 SAP 开发生态圈。

2013 年 12 月 11 日,SAP 宣布,UI5 将在 Apache 2.0 开源许可下,以 OpenUI5 的形式进行开源,也就是如今大家在 Github 上看到的这个代码仓库:

https://github.com/SAP/openui5

2014 年 10 月,这个代码仓库产生了第一行代码提交。到了 2022 年 3 月,代码提交的数量,增长到了 78657.

OpenUI5 包含了 SAP UI5 框架的核心实现和大部分控件库。这些核心实现和控件库开发,基本上全由 SAP UI5 团队完成。有一小部分 SAP UI5 控件库,由 SAP UI5 之外的其他产品开发团队负责实现,这些控件库有的仅仅在某些极特殊的场景下使用,有的包含特殊的知识产权,没有计划在开源许可下提供,因此并未包含在 OpenUI5 之内。

SAP UI5 的高速发展和成熟期

随着 SAP 旗舰级产品 S/4HANA 将 SAP UI5 选为其前端开发技术方案,通过大量的 SAP Fiori 应用的开发,交付和客户使用过程中获得的反馈,SAP UI5 进入了高速发展时期,涌现了一大批围绕 SAP UI5 的开发工具,访问模块和基础设施层,比如 Fiori Launchpad,SAP WebIDE,Chrome 开发者工具扩展 UI5 Inspector,端到端测试框架 UIVeri5,以及 UI5 项目构建和启动命令行工具 UI5 Tooling 等等。这些新的工具本身也标志着 SAP UI5 和其社区走向成熟。

如今在 Github 上由 SAP 主导的开源项目中,多达 10% 的代码仓库都和 SAP UI5 相关。

SAP UI5 不仅仅在功能和控件库的数量上有所增加,其核心也在不断的进化,体现在核心更细粒度和更严格的模块化设计,更合适的依赖声明方式,更能发挥现代浏览器异步请求执行能力的编程方式等方面。这些进化发生在 UI5 核心,不会对已有的 SAP UI5 应用正常运行造成影响。

驱动 SAP UI5 进化的另一个来源是 Fiori 设计准则的不断发展。从诞生之初的 Fiori 1.0 到最新的 3.0 版本,Fiori 始终朝着向用户提供更 Coherent,更 Simple 和更 Delightful 的应用而努力。Fiori 设计准则本身在发展,作为实现该准则的技术框架,SAP UI5 也不断调整自身以达到完美实现 Fiori 设计准则的目标。

和最初仅能通过离线压缩包的交付方式相比,如今 OpenUI5 支持众多的分发和交互渠道可供应用开发人员挑选:从部署在 CDN(Content Delivery Network,内容分发网络)上的引导文件 sap-ui-core.js,到 npm registry 上的 openui5 package.

在前端开发生态圈评选出的 9 大 Web Components Libraries 名单里,UI5 Web Components 始终占据一席之地。

UI5 Web Components 是一组独立的基于 Web Components 标准开发而成的 UI elements,这些元素将样式和行为完全封装在自定义 HTML 标记中,因此可以不依赖于 SAP UI5 框架而被单独使用。某些企业用户可能并不需要 SAP UI5 框架提供的全部功能,或者已经拥有运行在 Angular,React 或 Vue 框架之上的前端应用,但是这些用户仍然希望在其应用里使用 UI5 控件。这种情况下,UI5 Web Components 是一种极佳的补充方案。

关于 UI5 Web Components 的详细介绍,请参考我的文章:Fiori Fundamentals和SAP UI5 Web Components.

SAP UI5 的未来

如果大家持续关注 SAP 官方社区上具有 SAP UI5 Tag 标签的博客,就会发现以下两个方向是 SAP UI5 生态圈讨论得比较多的话题:

  • 继续推进 UI5 Web Components 的发展

  • 继续完善 SAP UI5 对 TypeScript 的支持

其中 SAP UI5 对 TypeScript 支持的更多细节,请参考我的文章:SAP UI5 未来发展的趋势之一:拥抱 TypeScript.

Evolution Never Ends.

如果大家对于 SAP UI5 将来的发展方向感兴趣,可以登录 SAP 官方的产品路线图网站,输入 SAP UI5 关键字来查阅 SAP UI5 未来即将支持的新特性。

感谢阅读。
https://roadmaps.sap.com/

SAP UI5 的前世今生相关推荐

  1. 172. SAP UI5 两大表格控件 sap.ui.table.Table 和 sap.m.Table 的使用场景辨析

    文章目录 sap.ui.table.Table sap.m.Table 总结 笔者曾经发表过一篇文章 SAP UI5 的前世今生,介绍过 SAP UI5 的诞生历史: SAP UI5 最早的起源要追溯 ...

  2. 在Kubernetes上运行SAP UI5应用(下): 一个例子体会Kubernetes内容器的高可用性和弹性伸缩...

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇文章 在Kubernetes上运行SAP UI5应用(上),我介绍了如何在Docker里运行一个简单的SAP UI5应用 ...

  3. OPEN(SAP) UI5 扫盲

    1 扫盲 什么是SAP Fiori? 了解SAP UI5必须要从SAP Fiori开始,两者概念经常被混淆,而两者也确实有着非常紧密的关系. 用过SAP的同学们都对SAP的传统的界面(SAP GUI) ...

  4. 有选择性的启用SAP UI5调试版本的源代码

    在低版本的SAP UI5应用中,我们一旦切换成调试模式,那么应用程序源代码和UI5框架程序的源代码的调试版本都会重新加载,耗时很长. 我最近发现UI5新版本1.66.1提供了选择性加载调试版本的源代码 ...

  5. 对 SAP UI5 一无所知的新手,从哪些材料开始学习比较好?

    这是 Jerry 2021 年的第 32 篇文章,也是汪子熙公众号总共第 308 篇原创文章. 我经常收到不少朋友这样的问题:如果对 SAP UI5 一无所知的新手,想学习 SAP UI5,从哪些材料 ...

  6. SAP UI5 应用开发教程之六十九 - 如何从 SAP UI5 Not Found 页面跳转回到正常的应用页面

    本系列的前一篇文章,我们学习了 SAP UI5 自定义 Not Found 页面的实现方式: SAP UI5 应用开发教程之六十八 - 如何实现 SAP UI5 路由失败时显示自定义的 NOT Fou ...

  7. SAP UI5 应用开发教程之六十八 - 如何实现 SAP UI5 路由失败时显示自定义的 NOT Found 页面

    我们平时访问的不少网站,在浏览器地址栏故意输入一个不存在的页面地址时, 都会自动跳转到一个自定义的 NOT Found 页面,比如: 我们在本系列第 31 个步骤学习了 SAP UI5 应用的路由功能 ...

  8. SAP UI5 数据绑定中的工厂函数

    工厂函数是一种更强大的从模型数据创建控件的方法. 为控件聚合的每个条目调用工厂函数,开发人员可以决定每个条目是否应由具有不同属性的相同控件表示,甚至每个条目由完全不同的控件表示. 工厂函数带有参数sI ...

  9. SAP UI5 应用开发教程之六十七 - 基于 OData V4 的 SAP UI5 List-Detail(列表-明细)布局的实现方式试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

最新文章

  1. Dcloud课程1 APP的架构有哪些
  2. 如何使用GitHub Action自动发布JAR到Maven仓库
  3. python难嘛-为什么说python入门很简单,但是在你这很难?
  4. 比特币钱包(3) BIP32 HD钱包之密钥树
  5. 案例 | 日活提升 50%,海尔智慧厨房平台如何引领行业革命?
  6. java设置项目根目录 工作目录 working dictionary
  7. 利用OpenCV的Haar特征目标检测方法进行人脸识别的尝试(一)
  8. python经典书籍:Python编程实战 运用设计模式、并发和程序库创建高质量程序
  9. gc:C语言的垃圾回收库-中文
  10. 多元回归模型与热力图绘制
  11. python实现自动打电话软件_用Python实现的Internet电话软件(P2P-SIP)开源
  12. JDY-24M蓝牙应用探索
  13. 【java】PageHelper.startPage
  14. 网站建设的完整教程以及步骤,建议收藏!
  15. XYNUOJ 第四次比赛 懒省事得小名
  16. win10下如何装win7
  17. Gerrit error:remote: ERROR: The following addresses are currently registered:XXX
  18. 【EasyUse】一键式检索框-界面美化参考。MFC自绘对话框加图和Button
  19. mysql全部加两岁,mysql数据库课堂笔记2
  20. 劳动仲裁解除劳动关系要多长时间

热门文章

  1. Extjs09 双击事件
  2. linux 声卡权限,archlinux的声卡问题如何解决
  3. find命令的exec参数使用---Linux学习笔记
  4. C#异常--System.IO.FileLoadException:“混合模式程序集是针对“v2.0.50727”版的运行时生成的错误...
  5. 04 canvas——位移画布和旋转缩放
  6. Android使用SVG矢量图打造酷炫动效!
  7. one microblog from 任志强
  8. 浅谈JavaScript作用域,关于Java的学习路线资料
  9. VS2015中的项目类图
  10. Java堆、栈、内存分析