Eclipse Ganymede:深入Equinox p2(供应平台)

Eclipse p2 是一个用于供应基于 Eclipse 应用的框架,旨在替代原有的更新管理器(UpdateManager)。p2 提供了自动重试下载、最佳镜像选择等功能,并支持在多种环境下运行,如 Web 应用、无界面环境等。此外,p2 还解决了原有更新管理器存在的问题,并计划进一步集成到 e4 中。

http://www.infoq.com/cn/news/2008/06/eclipse-ganymede-p2


P id=rf-f5>作为预定6月25日发布的Eclipse Ganymede的一部分,Infoq将推出一系列Eclipse子项目的相关报道。今天,我们将探讨的子项目是Equinox p2(供应平台),它是供应基于Eclipse应用的框架。Infoq采访了 Jeff McAfferPascal Rapicault以了解更多关于p2及其功用的信息。

 

在谈到p2给Eclipse带来的实际功能时,Rapicault表示p2的1.0版其实是为替代已有的更新管理器(Update Manager——UM)而设计的。McAffer反复重申了以下几个特性:

  1. 在所有可用资源范围内自动重试下载
  2. 自动选择最佳镜像
  3. Bundle共享允许在多个eclipse实例范围内共享插件
  4. 管理完整安装(exe、ini、etc)的能力
  5. 无需运行即可管理和更新Eclipse实例的能力
  6. 易于创建无界面(headless)和定制更新用户界面
  7. 校验插件间依赖。因此只需安装协同工作的插件,而且一旦安装就能运行
  8. 多线程下载加快下载速度
  9. 只安装所需插件,减少安装的插件总数
  10. 创建知道如何从多个资源获得插件的强力更新(uber-update)站点
  11. p2意味着无需重新安装Eclipse,只需更新即可
  12. 一个可以作为常规Java应用或使用Java Web Start来运行的安装程序。它可用来安装和配置Eclipse的所有内容。
  13. 更干净的终端用户工作流程

当被问到p2的诞生是为了解决UM存在的哪些问题时,McAffer说上面列出的这些特性其实非常紧密地结合了UM所存在的问题。Rapicault指出UM无法随着Eclipse平台的进化而发展,使得很少开发团队选择使用UM。设计P2的其中一个目标就是为了同时吸引终端用户和平台开发者,Rapicault这样说道:

我们必须使那些从未真正购买UM的人们相信我们能够给他们提供实际的帮助,这是一个巨大的挑战。由于他们已经习惯我们目前提供的操作方式,再让这群习惯了使用UM来应付各种工作流程的人们做出改变非常困难。

P2还给Eclipse带来了新的在线安装的能力,只需一个简单的小安装器和可定制的Java Web Start安装程序即可。该安装程序将被集成到一个新的由clipse Packaging项目所创建的基于Web的安装向导中。McAffer还提到这些安装程序只是p2为基于Eclipse和基于OSGi系统提供的供应功能的“冰山一角”。Rapicault补充说,那些希望扩展p2的人会惊喜地发现p2拥有一个模块化的、成套的功能“积木”,无论这个应用是运行在桌面、服务器还是手机上,都可以用来管理基于OSGi的应用。McAffer指出p2不是Eclipse特有技术,它可以在Web应用中运行、可以在无显示环境中(headless environments)运行、可以是像Eclipse IDE这样一个大应用的一部分、也可以作为独立个体单独运行。McAffer还补充说:“无论是p2的设计理念还是最终实现,都使得p2可以为任何类型的应用提供支持”。

McAffer还详细描述了如何在Web应用中运行p2的过程:

p2可以被打包在Web应用中。你也知道,Equinox这个支撑Eclipse的OSGi实现如今在服务器上使用得相当广泛。某些情况下,它可以作为应用服务器和其他应用的实现,程序员能够清楚地看到OSGi模型和Equinox功能。Equinox servlet bridge的使用可以帮助开发员在一个WAR中获得Equinox和OSGi的所有功能和灵活性。例如,你可以部署一个简单的标准WAR,在这个WAR中只包含Equinox和p2,然后用p2供应技术去配置和运行真正的Web应用,最后得到的这些应用可以被动态扩展和更新。

在p2的开发过程中,开发团队曾面临过几个大的挑战。InfoQ分别向McAffer和Rapicault了解了他们当时遇到的一些挑战以及最终选择的解决方案,McAffer这样回答:

这个问题问得很好。我们的团队是幸运的,我们从UM和其他供应解决方案中学到很多东西。我举几个例子来说明当时遇到的一些挑战以及对应的解决方案。

元数据(Metadata)——直接或间接的元数据结构和格式耗费了我们好几个月的时间。许多人问的第一个问题是“你们的元数据格式(即XML)是什么?”或者“我能看一下大纲吗(schema)?”。我们的回答基本上(分别)是“我们没有指定”或“不行”。规定格式的问题在于你是在假定你定义的格式它恰恰就是那个能够在任何情况下都适用的格式。可现如今,这根本不可能。有许多老的更新站点、OSGi Bundle库、Maven库……终端用户需要连接所有这些库或者更多其它的站点。我们最终的答案是在API级指定元数据,把格式细节的定义留给提供仓库的人。开发人员只需实现几个简单的接口,就能提供一个仓库。当然,我们也提供了一个拥有p2所有特性的仓库实现。p2与传统更新站点和其它捐献的仓库实现都配合得非常好。 

仓库(Repositories)——我们认为仓库灵活性是使用和采纳p2的关键。许多人都有现存的存储、格式或系统,而p2不会去取代这些已有的东西。此处的关键是分离元数据和制品结构。事实证明,只有在新建数据存储或重用已有数据存储方面赋予p2绝对的灵活性,p2才能取得成功。我们还打算在p2中逐渐渗透仓库的概念。当你安装bundle时,这些bundle实际上会进入仓库,轮流供应其他配置或其他系统。组成系统的组件的配置也是一个仓库。为了实现刚刚提到的这些操作,我们使用了处处镜像(mirroring everywhere)的概念。实际上,大部分时候你都不是真正地从存储源下载,而是从其他人的镜像下载,同时你下载的东西也为别人提供了镜像。我们还抽象出来了制品格式的概念,这样一个制品仓库可以存储同一个制品的多种形式。例如,标准的JAR文件和一个使用Pack200打包的JAR文件,这两个制品版本的二进制比较是有差异的……尽管存有差异却能共存于同一仓库。在供应一个给定系统时,p2会选择最有效的形式。 

约束解析(Constraint resolution)——在基于OSGi的系统中表达基本依赖集相对比较简单,然而还是有许多其它约束需要定义,而供应真正的企业系统则截然不同。我们选择了通常使用的“请求和供给”形式来约束系统,但最酷的部分还是伪布尔约束引擎(pseudo-boolean constraint engine)——SAT4J,我们用它选择组件来构建系统。其实一般的约束都会被影射成为一些伪布尔等式及表达预期结果的权重集合。SAT4J以这个权重集合为输入,返回一个解决方案。这个方案会被影射回组件以告诉p2要安装什么、卸载什么或更新什么。所有这些又简单又快速。更好的是方案可以通过适当使用不同的函数进行优化。比如你可以编写一个空间优化(安装最小配置)函数或改动最小的函数……有一些活跃的研究团队正在关注这类东西,而p2已经开始使用这些结果。 

灵活的架构(Flexible architecture)Eclipse的应用范围很广,从嵌入式系统到富客户端应用、再到工具、服务器端。这就对供应基础架构的灵活配置提出了更多要求。可插拔仓库、不同的供应策略、多路传输、多个机器上的供应逻辑定位、远程管理……为了实现这些功能,我们在设计和实现上都采用了高模块化的方法。大多数更新管理用户应该都很熟悉Ganymede里的P2结构,这个结构在“平凡的外表”之下有着非比寻常的灵活性。

Rapicault接着补充道:

对我来说,更新管理兼容性以及共存(cohabitation story)方面(UM/p2处于同一个系统,这是SDK默认的)可能是最大的挑战之一。UM在它业已7年的生涯中提供了很多方法来管理系统,其中不乏一些方式从p2的角度来看会显得非常怪异。为此,我们针对错误、代码和其它我们所能找到的相关文档进行了研究,以确保不遗漏任何用例。这样,我们成功地在一年内完全替换了这个已经使用了7年的老产品。 

另一个挑战是跳出“原型”或“让我们构建一个真正灵活的超级平台”这样的思维定势,把注意力集中在到ppl可用的一些东西上。为此我们经常问自己,“这是UM中的东西吗”?这样经常性地自问自答保证了我们在开发的过程中没有偏离“正道”。

从纯粹的内在复杂性来讲,解析器也极具挑战。经过几个月的研究和原型搭建,我们发现了两篇研究论文不异而同地谈到了SAT求解程序在类似情况下的使用。当时立马就觉得这就是我们一直在寻找的解决方案,于是我开始使用SAT4J创建原型。一旦PMC确信放置一个求解程序来处理eclipse的NP完整性问题是正确的方向,我们就开始动手了。我们也庆幸以 Daniel Le Berre和Anne Parrain为代表的SAT4J团队,带给我们许多信息并给我们提供了大量的帮助。在这次开发中,我们建立了真诚的双边协作关系。现在再回想之前种种,我真的很高兴当时我们做出了这样的选择。我们计划借助更多的求解程序能力来改进未来版本中成套插件和产品的工作方式。

从头建立一个社区也是一个挑战。在某种意义上,它对我们来说是新生事物,我们必须从项目诞生之日起就要与社区一起工作。我们很幸运可以在供应研讨会上见到许多未来的贡献者,而且后来在聚集了这一领域专家/志士的equinox峰会上,我们也得以和大家分享我们的愿景。付出总会有回报,目前已经有一个公司在p2的基于上开发了一个商业产品;还有另一家公司正在针对他们的商业产品编写基于p2的安装程序,该产品除了基于Eclipse的应用外还包括其他组成部分。

至于p2的未来计划,McAffer指出1.0版的目的是建立一个基础架构,在这个基础构架上将来还会有更多的开发。工具、供应策略、性能提升以及扩展至更多运行时系统,这些都在p2的功能列表中,p2的应用范围将非常广泛。Rapicault补充说,随着社区及供应行为的不断成长,p2与桌面的集成也被纳入计划。McAffer还说,就像Eclipse团队不会为Eclipse IDE能够支持的所有语言提供支持一样,p2团队也将给来自社区的其它团队留出空间,使其能够在p2的基础开发出定制的解决方案。

当问到p2将如何集成到e4中,以及p2有没有受到e4的影响时,McAffer 说:

从一开始我就把p2看作是e4的成果。只是由于偶然,它的出现比预计要来得更早一些,刚好可以被Eclipse 3.x采用,但我们的设计也考虑到了包括类似e4的一些场景。E4被定位为更动态、更具模块化及更加松耦和。这些特性在彰显众多机会的同时也带来了巨大的挑战。我们希望p2能够尽可能贴近终端用户和系统集成者,也给人们带来管理e4的高集成系统的能力。p2将会是e4的主要组成部分。

本系统采用Python编程语言中的Flask框架作为基础架构,实现了一个面向二手商品交易的网络平台。该平台具备完整的前端展示与后端管理功能,适合用作学术研究、课程作业或个人技术能力训练的实际案例。Flask作为一种简洁高效的Web开发框架,能够以模块化方式支持网站功能的快速搭建。在本系统中,Flask承担了核心服务端的角色,主要完成请求响应处理、数据运算及业务流程控制等任务。 开发工具选用PyCharm集成环境。这款由JetBrains推出的Python专用编辑器集成了智能代码提示、错误检测、程序调试与自动化测试等多种辅助功能,显著提升了软件编写与维护的效率。通过该环境,开发者可便捷地进行项目组织与问题排查。 数据存储部分采用MySQL关系型数据库管理系统,用于保存会员资料、产品信息及订单历史等内容。MySQL具备良好的稳定性和处理性能,常被各类网络服务所采用。在Flask体系内,一般会配合SQLAlchemy这一对象关系映射工具使用,使得开发者能够通过Python类对象直接管理数据实体,避免手动编写结构化查询语句。 缓存服务由Redis内存数据库提供支持。Redis是一种支持持久化存储的开放源代码内存键值存储系统,可作为高速缓存、临时数据库或消息代理使用。在本系统中,Redis可能用于暂存高频访问的商品内容、用户登录状态等动态信息,从而加快数据获取速度,降低主数据库的查询负载。 项目归档文件“Python_Flask_ershou-master”预计包含以下关键组成部分: 1. 应用主程序(app.py):包含Flask应用初始化代码及请求路径映射规则。 2. 数据模型定义(models.py):通过SQLAlchemy声明与数据库表对应的类结构。 3. 视图控制器(views.py):包含处理各类网络请求并生成回复的业务函数,涵盖账户管理、商品展示、订单处理等操作。 4. 页面模板目录(templates):存储用于动态生成网页的HTML模板文件。 5. 静态资源目录(static):存放层叠样式表、客户端脚本及图像等固定资源。 6. 依赖清单(requirements.txt):记录项目运行所需的所有第三方Python库及其版本号,便于环境重建。 7. 参数配置(config.py):集中设置数据库连接参数、缓存服务器地址等运行配置。 此外,项目还可能包含自动化测试用例、数据库结构迁移工具以及运行部署相关文档。通过构建此系统,开发者能够系统掌握Flask框架的实际运用,理解用户身份验证、访问控制、数据持久化、界面动态生成等网络应用关键技术,同时熟悉MySQL数据库运维与Redis缓存机制的应用方法。对于入门阶段的学习者而言,该系统可作为综合性的实践训练载体,有效促进Python网络编程技能的提升。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
在当代储能装置监控技术领域,精确测定锂离子电池的电荷存量(即荷电状态,SOC)是一项关键任务,它直接关系到电池运行的安全性、耐久性及整体效能。随着电动车辆产业的迅速扩张,业界对锂离子电池SOC测算的精确度与稳定性提出了更为严格的标准。为此,构建一套能够在多样化运行场景及温度条件下实现高精度SOC测算的技术方案具有显著的实际意义。 本文介绍一种结合Transformer架构与容积卡尔曼滤波(CKF)的混合式SOC测算系统。Transformer架构最初在语言处理领域获得突破性进展,其特有的注意力机制能够有效捕捉时间序列数据中的长期关联特征。在本应用中,该架构用于分析电池工作过程中采集的电压、电流与温度等时序数据,从而识别电池在不同放电区间的动态行为规律。 容积卡尔曼滤波作为一种适用于非线性系统的状态估计算法,在本系统中负责对Transformer提取的特征数据进行递归融合与实时推算,以持续更新电池的SOC值。该方法增强了系统在测量噪声干扰下的稳定性,确保了测算结果在不同环境条件下的可靠性。 本系统在多种标准驾驶循环(如BJDST、DST、FUDS、US06)及不同环境温度(0°C、25°C、45°C)下进行了验证测试,这些条件涵盖了电动车辆在实际使用中可能遇到的主要工况与气候范围。实验表明,该系统在低温、常温及高温环境中,面对差异化的负载变化,均能保持较高的测算准确性。 随附文档中提供了该系统的补充说明、实验数据及技术细节,核心代码与模型文件亦包含于对应目录中,可供进一步研究或工程部署使用。该融合架构不仅在方法层面具有创新性,同时展现了良好的工程适用性与测算精度,对推进电池管理技术的进步具有积极意义。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
代码转载自:https://pan.quark.cn/s/9e296fe8986c 实验题目为“复杂模型机的设计与实现”。 _1. 实验目的与要求:目的:1. 熟练掌握并达成较为复杂的计算机原理。 2. 本实验增加了16条机器指令,全面运用所学的计算机原理知识,借助扩展的机器指令设计并编写程序,然后在CPU中执行所编写的程序。 要求:依照练习一和练习二的要求完成相应的操作,并上机进行调试和运行。 2. 实验方案:……实验报告的标题设定为“广东工业大学计组实验报告复杂模型机的设计与实现六”,主要围绕计算机组成原理中的复杂模型机设计和实现展开。 实验的宗旨在于让学生深入理解和实际操作计算机原理,特别是通过增加16条机器指令,来全面运用所学知识设计程序,并在CPU中运行这些程序。 实验的具体要求包括:1. 掌握复杂的计算机工作原理,这要求学生不仅具备扎实的理论知识,还需要拥有将理论转化为实际操作的能力。 2. 实验中增加了16条机器指令,这涉及到计算机指令集的扩展和设计,可能包含算术运算、逻辑运算、数据传输和控制流程等指令。 3. 学生需要运用扩展的机器指令编写程序,并通过CPU进行运行和调试,这涉及到编程、汇编和CPU执行流程的理解。 4. 依照练习一和练习二的要求完成操作,这表明实验包含分阶段的练习任务,需要逐步完成并验证。 实验方案包括:1. 实验连线:保证硬件连接准确无误,这是任何电子实验的基础,对于计算机实验,这通常涵盖CPU、内存、输入/输出设备等组件的连接。 2. 实验程序:提供了范例程序,包括机器指令程序和微指令程序的微代码。 这部分内容展示了如何利用扩展的机器指令编写程序,以及对应的微指令实现,有助于理解计算机内部的低级操作。 在实验结果和数据处理部分,学生需要:1. 在程...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值