赞
踩
目录
2022年3月8日,世界上最大开源基金会之一Eclipse宣布,Bosch,Benz,MicroSoft,ZF,Cariad,Harman等共同成立Eclipse软件定义汽车工作组(Software Defined Vehicles)。
Eclipse 软件定义汽车工作组旨在促进汽车软件开源和开放。其目的是为个人和组织提供一个论坛,为全球汽车行业市场构建和推广开源解决方案。SDV 相关项目采用“代码优先”方法,专注于为新型汽车的核心功能构建业界首个开源软件堆栈和相关工具。
当前的汽车行业模式对实现 SDV 愿景提出了挑战。智能汽车包含许多来自供应商的定制软硬件组件,硬件和软件组件紧密集成并同时发布,这会导致碎片化和整体式编程框架。开源是应对这种复杂性和异构性的一种方式。在技术框架(例如通用 API 和硬件抽象)上进行协作意味着 OEM 和其他行业参与者无需重新发明轮子,从而可以将更多资源用于差异化功能和技术进步。开源生态系统还具有加速创新的潜力,使世界各地的开发人员能够在汽车领域解决问题并创建应用程序。
图1. Eclipse基金会在汽车软件行业的地位
在国内的汽车工具链软件行业,由于知识产权和商业信誉等方面的因素,优秀商业软件一旦开源就意味着其将免(白)费(嫖),这也是汽车行业资源闭塞且重复造轮的根本原因,属于低效内卷和无效加班。很多OEM和Tier One也“想尽办法”并“用尽手段”从软件公司或者个人获取软件方面的知识产权,行业内流传诸多案例。既然如此,独乐乐不如众乐乐,笔者将在Eclipse平台上的所学、所见、所思和所用与读者同行们分享,正所谓“曾经沧海难为水,除却巫山不是云”。
Eclipse 最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,2001年11月贡献给开源社区,它由非营利软件供应商联盟Eclipse基金会(Eclipse Foundation)管理。Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。更多信息可以从Eclipse的官网获得:ww.eclipse.org。
根据携带的插件不同,Eclipse区分出不同的开发环境,分别命名为Eclipse IDE for Java Developers,Eclipse IDE for C/C++ Developers,Eclipse IDE for RCP and RAP Developers,Eclipse Modeling Tools等,如Eclipse IDE for C/C++ Developers是在Eclipse平台上安装C/C++ Development Tools,Git integration for Eclipse等插件,而Eclipse IDE for RCP and RAP Developers是在Eclipse平台上安装Plug-in Development Environment(PDE),Java Development Tools,Maven Integration for Eclipse,XML Editors and Tools等插件。所以,无论下载哪个开发环境的Eclipse,只需要再额外安装对应的插件即可实现开发预期目的,这就是Eclipse框架内在插件机制的魅力!
图2. 根据携带的插件不同,Eclipse分为多个开发环境
Eclipse的构成分为Workbench工作台、Workspace工作区、Help帮助系统、Team团队支持系统和Platform run-time 运行平台等五大部分。
图3. 构成Eclipse的五大部分
Workbenck工作台为 Eclipse 提供用户界面。它使用标准窗口工具包(Standard Widget Toolkit,SWT)和一个更高级的API(JFace)构建,其中,SWT 是 Java Development Kit自带的 Swing/AWT GUI API 的非标准替代者, JFace则建立在 SWT 基础上提供用户界面组件。SWT比Swing 或 AWT 更紧密地映射到底层操作系统的本机图形功能,这不仅使得 SWT 更快速,而且使得 Java 程序具有更像本机应用程序的外观和体验。
Workspace工作区是负责管理用户资源的插件。这包括创建的项目、项目中的文件,以及文件变更和其他资源。工作区还负责通知其他插件关于资源变更的信息,比如文件的创建、删除或更改。
Help帮助组件具有与 Eclipse 平台本身相当的可扩展能力。与插件向 Eclipse 添加功能相同,Help帮助组件提供一个附加的导航结构,允许工具以 HTML 文件的形式添加文档。
Team团队支持组件负责提供版本控制和配置管理支持。它根据需要添加视图,以允许用户与所使用的任何版本控制系统交互。
Platform run-time 平台运行库是内核,它在启动时检查已安装了哪些插件,并创建关于它们的注册表信息。为降低启动时间和资源使用,它在实际需要任何插件时才加载该插件。除了内核外,其他组件都是作为插件来实现。Platform run-time平台实现了OSGi协议,OSGi(Open Service Gateway Initiative) 技术是 Java 动态化模块化系统的一系列规范,为大型分布式系统以及嵌入式系统提供一种模块化架构,从而大大降低了软件的复杂度。
综上,Eclipse提供桌面级二次开发平台,并支持OSGi协议插件机制,能够构造出扩展能力强、性能优秀、并给用户提供良好体验的RCP应用。
富客户端(Rich Client Platform, RCP)出现于20世纪90年代的桌面程序开发过程,随着桌面应用程序数量不断增长,各种各样的应用程序孕育而生,小到 Windows 自带的扫雷游戏,大到企业级桌面 ERP 系,富客户端提供给用户高质量的用户体验,能让界面元素更加丰富,用户更容易操作,使应用程序的设计体验贴近用户。
在汽车工具链软件中,大部分都是基于Eclipse RCP平台开展二次开发。如在AUTOSAR配置工具中,Vector公司的Davinci Configurator,ETAS公司的RTA-CAR ISOLAR AB,Elektrobit公司的Tresos等;在通用编译器中,HighTec公司的HighTec,NXP公司的CodeWarrior和S32Design Studio,TI公司的Code Composer Studio等。
基于Eclipse RCP开发工具链软件的优势众多,简单提炼后列举三点如下:(1)Eclipse是开源的框架,工具链软件厂商可以深度二次开发。比如,Vector公司对workbench、workspace、help,log4j,guava等组件进行大量深度定制,从而,用户在使用Davinci Configurator时几乎感受不到Eclipse平台的存在。(2)Eclipse的核心开发语言是Java,天生具备优良的跨平台特性,且RCP平台的插件开发机制让面向服务开发(Service-oriented architecture,SOA)的理念得到践行,工具链软件厂商可以按照模块化和服务化理念逐步开发单个组件,再形成完整应用。(3)Eclipse是由基金会管理并免费向商业和社区开放,同时,Eclipse积累了大量第三方Java组件,工具链软件厂商只要遵守知识产权要求可以直接复用,而无需支付任何费用。
图4. Vector公司的Davinci Configurator
图5. Elektrobit公司的Tresos
为积极响应Eclipse软件定义汽车工作组倡导的开源精神,考虑到在中文语法环境中Eclipse RCP平台的开发资料极度稀缺,汽车基础软件公众号陆续发布一系列的原创文章,深入介绍基于Eclipse RCP平台的汽车工具链软件开发方法。
敬请关注微信公众号以获取更多精彩内容。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。