Eclipse 、 Equinox 和 OSGi
每个成功的男人背后,都有一个伟大的女人;每个成功的产品后面都有一套强进的架构 ---- 题记
很多Java程序员对Eclipse(日食 ,IBM 起这个名字,Sun大概有意见 )都爱不释手,在JBuilder流行、主流内存配置还在256M的日子里,当我第一次成功运行Eclipse后就把JBuilder彻底请出了我的电脑硬盘。不错,这就是Elipse的魅力。
作为程序员在感受Eclipse带来诸多好处之后,强烈的好奇心驱使我在问:Eclipse 的魅力从何而来。正如我们谈论一个美女为什么那么美一样,造成美的因素是多方面的 (上次的人物访谈说节目中说:周迅是美女,有个摄影家还用尺子量周迅鼻子到下巴的距离来证明)。在Eclipse令人称道的很多因素中,其开放性的插件架构无疑是最浓重的一笔。
为Eclipse开发一个插件并没有想象中的那么复杂,使用Eclipse 的 Rich Client Platform 开发自己的软件界面也很容易上手。为Elipse带来如此魔力的就是:Equinox (月食)( http://eclipse.org/equinox)。本文的题目还有一个 OSGi ,OSGi 和 Equinox 的关系是什么呢? 说来话长,简单的理解,相当于 JBoss 和 Ejb specification 的关系,或者 Tomcat 和 Servlet Specification 的关系。
OSGi 中的一个核心概念是: bundles 。
对于Equinox来说,bundles就是一个自描述型的jar文件,描述如下:
-------------------
Bundle-SymbolicName: org.eclipse.equinox.registry
Bundle-Version: 3.2.100.v20060918
Bundle-Name: Eclipse Extension Registry
Bundle-Vendor: Eclipse.org
Bundle-ClassPath: .
Bundle-Activator: org.eclipse.core.internal.registry.osgi.Activator
Export-Package: org.eclipse.equinox.registry
Import-Package: javax.xml.parsers,
org.xml.sax,
org.osgi.framework;version=1.3
Require-Bundle: org.eclipse.equinox.common;bundle-version="[3.2.0,4.0.0)"
Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0,J2SE-1.3
------------------
如果单纯作为一个插件机制,尽管Equinox解决方法很棒,但并没有什么过人之处,最让我感到惊奇的是他的“包容”能力。原文一句话说的好:“There are two main approaches; embedding Equinox in the servlet container or embedding the servlet container in
Equinox”。
看看下面这3个图吧:
Figure 1: Traditional web application server structure
Figure 2: Embedding Equinox in an existing application container
Figure 3: Embedding an application container in Equinox
从高内聚,低耦合到从设计模式,从 Ioc 、 Spring 框架 到 SOA 我们一步一步的抽象着、分离着。很显然,我们需要一个灵活而不失严谨的架构,需要一个功能强进而不令人生畏的产品;幸好,软件科学是正是这样一种科学,他总可以加入更多的中间层来把问题解决的更好。
原文链接:
http://www.theserverside.com/tt/articles/article.tss?l=EclipseEquinoxOSGi
http://www.theserverside.com/news/thread.tss?thread_id=43696
分享到:
相关推荐
TSS:过渡状态搜索
(darwin,windows,linux)和所需的bin目录,并根据需要修改以下命令: curl --silent --location --output /usr/local/bin/tss https://github.com/kevinburke/tss/releases/download/0.4/tss-linux-amd6
总之,`tss` 是一个强大的工具,它巧妙地结合了文本文件和TypeScript,提供了更灵活的代码组织方式。无论你是要处理HTML模板、Markdown文档还是其他文本资源,它都能帮你轻松地将它们融入到TypeScript项目中。
它实现了与 TCG TSS 工作组的 ESAPI、SAPI 和 TCTI API(可能还有更多)等效(但 API 不兼容)的功能,但接口有望更简单。 它带有 110 多个“TPM 工具”示例,可用于脚本化应用程序、快速原型设计、教育和调试。 它...
总览该存储库托管实现可信赖计算组(TCG)TPM2软件堆栈(TSS)的源代码。 该堆栈由上至下包含以下几层: 如以及中所述的 ,该API设计为非常高级的API,旨在使使用TPM进行编程变得如此简单可能。 API函数通过单个库...
$ npm install badum-tss --save # or $ yarn add badum-tss 建设者 const BTSS = require ( 'badum-tss' ) ; const tks = BTSS . go ( code [ , modules , need_to_run ] ) ; //Returns array of tokens const ...
TSS模型综合考虑了空间-时间特性以及频谱使用和特性。 在TSS模型中,主要用户出现的行为被考虑在内,即节点倾向于多次访问某些位置,以捕捉位置访问偏好。同时,模型还包括了不同移动性参数的可用频谱时间,从而在...
相反,它使用开源来提供框架和工具,供您实验自己的想法和编码。 为了模拟EM场,使用了一个简单的插件系统来动态加载以下模块:FDTD算法,边界条件,初始场值,场源以及总场/散场边界。 通过使用此插件系统,您...
Spark的大数据单变量和多变量时间序列集群库。 将其包含在您的SBT或Maven项目中 将以下内容添加到您的build.sbt文件中: resolvers + = Resolver .bintrayRepo( " unsupervise " , " maven " ) libraryDependencies ...
Stellar Turing签名服务器参考实现该TSS参考实现采用两种无服务器服务。 Cloudflare工作者和AWS lambda函数。 原因是txFunctions本质上是不安全的任意Javascript函数。 Cloudflare不允许执行此类功能,因此我们将...
它旨在作为创建Terraform提供程序的起点,其中包含: 资源和数据源( internal/provider/ ), 范例( examples/ )和生成的文档( docs/ ), 杂项元文件。 这些文件包含您需要编辑以创建自己的Terraform提供程序...
这是什么? 这是Emacs的扩展,它通过在typecrript-mode中使用typescript-tools提供完成/语法... 如果使用auto-install.el (auto-install-from-url " https://raw.github.com/aki2o/emacs-tss/master/tss.el " )(auto-in
WR-TSS(天气雷达时间序列模拟)是一组使用高斯信号模型模拟天气雷达时间序列数据的函数。 这些类型的模拟通常用于模拟天气或... 这些函数有频谱 (sp) 和自相关 (ac) 版本。 大多数情况下推荐使用频谱版本,因为如果直
标题中的"TSS.zip_tss"指的是一个以TSS命名的ZIP压缩文件,它包含了与TSS(可能是“时间序列分割”或“跟踪状态选择”等技术的缩写)相关的MATLAB源代码。MATLAB是一种广泛用于数值计算、数据分析和算法开发的高级...
例如,在构建M-Bus网络时,正确配置TSS721的引脚与外部电路的连接,确保数据传输的准确性和效率。此外,考虑到M-Bus的远程供电特性,合理规划电源路径和电压降,以维持稳定的供电水平,对于保障整个系统的正常运行至...
master_tss2_tpm2_types.h_proudnrz_tpm_”指的是一个关于TPM2.0(Trusted Platform Module)的软件开发项目,其中包含了`tss2_tpm2_types.h`这个头文件,这通常在C语言编程环境中用于定义TPM相关的数据类型和结构体...
### TSS System Level API 和 TPM 命令传输接口规范 #### 1. 概述 TSS (Trusted Software Stack) 是一套支持 TPM (Trusted Platform Module) 的软件堆栈,旨在提供一种标准化的方法来与 TPM 设备进行交互。TPM 是...
tss协议栈tss tss tss
"TSS721A 应用总结" TSS721A 是一种用于仪表总线的收发器集成芯片,具有调节仪表总线结构中主从机的电平、可通过光耦等隔离器件与总线连接、通过数据收发器由总线供电等特点。本文将对 TSS721A 的应用总结进行详细...
【tss_web:tss主页】是一个关于tss项目的官方网站,主要功能是提供tss的相关信息和服务。这个项目可能涉及到技术、服务以及社区互动等多个方面。从描述中的"用玉,咖啡,快递"来看,这可能是项目的一种象征性表述...