1-基于Eclipse RCP平台的汽车工具链软件开发方法概述

目录

1、汽车软件的新趋势:开源

2、Eclipse 简介

3、Eclipse 构成

4、汽车工具链软件现状:基于Eclipse开发

5、笔者目的:介绍Eclipse RCP开发方法,抛砖引玉


1、汽车软件的新趋势:开源

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平台上的所学、所见、所思和所用与读者同行们分享,正所谓“曾经沧海难为水,除却巫山不是云”。

2、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分为多个开发环境

3、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应用。

4、汽车工具链软件现状:基于Eclipse开发

富客户端(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

5、笔者目的:介绍Eclipse RCP开发方法,抛砖引玉

为积极响应Eclipse软件定义汽车工作组倡导的开源精神,考虑到在中文语法环境中Eclipse RCP平台的开发资料极度稀缺,汽车基础软件公众号陆续发布一系列的原创文章,深入介绍基于Eclipse RCP平台的汽车工具链软件开发方法。

敬请关注微信公众号以获取更多精彩内容。

  • 24
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 1.富客户端平台 1 1.1.概述 1 1.2.Eclipse RCP 建设风格——插件,扩展和扩展点 1 2.创建你的第一个RCP程序 1 2.1.创建一个RCP程序 2 2.2.启动你的RCP程序 5 2.3.应用程序VS 产品 6 3.应用程序里的插件ID 7 4.Actions的用法(菜单和工具栏) 7 4.1.概述 7 4.2.通过编码添加 8 4.3.由“扩展”方式向程序添加菜单和工具栏 11 5.添加组合键 19 5.1.概述 19 5.2.声明actions的组合键 19 6.系统托盘 24 7.外观 30 7.1.向程序中添加视图模板 31 7.2.向应用程序添加VIEW 36 7.3.向VIEW里添加action 40 8.和编辑器一起工作 51 8.1.概述 51 8.2.创建工程 51 8.3.创建并准备domain 模型 51 8.4.在视口中使用domain模型 57 8.5.加入编辑器 58 8.6.调用编辑器 66 8.7.向编辑器提供内容 70 9.对话框 71 9.1概述 71 9.2.预定义的对话框 71 9.2.1.概述 71 9.2.2.创建工程 71 9.2.3.声明action 71 9.2.4.调用对话框 71 9.3.用户自定义对话框 74 9.3.1.概述 74 9.3.2.创建工程 74 9.3.3.声明action 74 9.3.4.声明action 74 9.3.5.创建对话框 75 10.向导(wizard) 77 10.1.概述 77 10.2.例子 77 11.首选项 85 11.1 首选项 85 11.2.使用首选项 85 11.3.首选项页 91 12.添加状态条 97 12.1.安装状态条 97 12.2.共享状态条 98 13.透视 103 13.1.向你的程序中添加透视图 103 13.2.使透视图可选。 107 13.2.1.使透视图可由一个coolbar可选 107 13.2.2.使透视图可通过菜单选择。 109 14.进度报告 112 15.将外部类包含进你的程序 118 15.1.概述 118 15.2.向构建路径中添加jar 118 15.3.使jar在你的运行路径里有效 119 16.提示和策略 120 16.1.控制台日志 120 16.2.保存用户的布局 121 16.3.获得display 122 16.4.使用eclipse的“保存”action 123 16.5.装载模型 127 16.6.向你的程序添加错误日志视口 127 17.制造一个产品 129 17.1.概述 129 17.2.创建一个工程 130 17.3.测试你的产品 134 18.商标 134 18.1.欢迎页面 134 18.2.商标 135 18.3.风格化launcher 136 19.发布你的产品 137 20.发布引入外部jar的产品 141 20.1.整合外部jar和第三方库 141 Tip 142 21.1.创建一个新工程 144 21.2.创建一个产品 144 21.3.添加依赖性 145 21.4.向程序中添加action 146 21.5.创建一个帮助插件工程////原著写的不好 149 22.附录:配置文件 152 22.1.概述 152 22.2..project 153 22.3.Manifest.MF 154 23.附录:使用接口技术 154 23.2.Jface 154

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值