如何使用 Apache Karaf/OSGi 构建桌面应用程序?

Posted

技术标签:

【中文标题】如何使用 Apache Karaf/OSGi 构建桌面应用程序?【英文标题】:How to build desktop applications with Apache Karaf/OSGi? 【发布时间】:2013-05-03 23:54:45 【问题描述】:

我正在为while 构建 OSGi 应用程序,但我真的找不到一些教程来展示使用 OSGi/Karaf 构建桌面应用程序(任何语言)的方法。

我想使用 karaf,因为它可以包装 Felix/Equinox。我发现的大多数教程都是关于企业应用程序(WEB)的。那么是否有任何教程,讨论基于 OSGi/Karaf 构建桌面应用程序?

【问题讨论】:

我认为桌面应用程序没有什么特别之处。我只是在我的包激活器的 start 方法中创建了一个 Swing 窗口,就像我可以在我的 main 方法中一样,它工作得很好。我在激活器的停止方法中破坏了窗口。 嗨巴拉兹。这个问题启发了我,我开始在 Karaf 中玩 Swing(因为 SWT 纯 Equinox 是更自然的方法)。然而到目前为止还没有运气。能否请您粘贴您使用的代码? 嗨巴拉兹!谢谢你的评论......我也很想看看你是如何成功构建这样一个桌面应用程序的!谢谢 使用 OSGi 构建桌面应用程序的最典型方法是使用 Eclipse RCP。我不确定它与 Equinox 的关系有多紧密。 为什么要使用Karaf?它是一个服务器平台,这就是为什么您只能找到有关 Web 应用程序的教程。最好将 OSGi 与 SWT、Swing 或 JavaFX 结合使用。 【参考方案1】:

抱歉,现在 Karaf 的主要意图是用作服务器,尽管它仍然应该可以在上面启动一些 gui。由于您已经熟悉构建此类捆绑包,我相信您很可能只使用 Karaf 的次要版本并将您的捆绑包放入其中。我不得不承认我以前从未这样做过,所以我不太确定。

【讨论】:

嗨阿奇姆!所以没有其他方法或教程来展示如何使用 OSGi 构建桌面应用程序?【参考方案2】:

首先,OSGI 是一个组件框架,它还利用了 Java 自诞生以来就缺少的一个特性——运行时版本控制。如果你真的需要它(OSGI),它并不取决于你是开发 WEB 还是桌面应用程序。一般来说,我建议您查看此文档: http://fusesource.com/docs/esb/4.2/deploy_osgi/Build-ModifyMaven.html 在该链接中,您将找到如何将现有的 Maven 项目转换为捆绑包,查看更多章节 - 有信息如何部署 jar,例如Karaf(Karaf 是一个 OSGI 容器)

希望,这会有所帮助

【讨论】:

【参考方案3】:

这是一个使用 Apache karaf 的 GUI 应用程序项目示例:

https://bitbucket.org/lorainelab/igb-fx

使用 karaf 运行基于 gui 的桌面应用程序可缩短开发时间。开发人员对包进行更改,构建包,然后使用 karaf shell 命令将那个包重新加载到正在运行的应用程序中。无需重新启动整个应用程序即可查看新代码的效果。这就是为什么要使用它。

我们使用 OSGi 是因为我们希望代码库具有更高的模块化程度,并且因为我们希望支持由针对我们的基因组浏览器 API 编写的第 3 方开发人员开发的动态加载“应用程序”。

【讨论】:

以上是关于如何使用 Apache Karaf/OSGi 构建桌面应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

在apache或aws上使用docker部署反应构建

你如何清除 Apache Maven 的缓存?

Apache - 我如何将单个和/或所有模块构建为共享模块

如何在 Apache Spark 预构建版本中添加任何新库,如 spark-csv

专为实时而构建:使用Apache Kafka进行大数据消息传递 第2部分

实时构建:Apache Kafka的大数据消息传递,Part 2