【问题标题】:Can Haskell implement OSGi?Haskell 可以实现 OSGi 吗?
【发布时间】:2012-03-29 22:38:02
【问题描述】:

我的问题是由 Peter Kriens 的帖子引发的:What If OSGi Ran Your Favorite Language?

那么,Haskell 是否有可能实现OSGi specifications?如果不是,为什么?

【问题讨论】:

  • 太酷了,相关文章 从头开始的动态应用程序 citeseerx.ist.psu.edu/viewdoc/… 让 Haskell 的 Yi 编辑器从头开始“动态化”。
  • 您是在谈论在单个 Haskell 应用程序中实现 OSGi,还是在向其他 OSGi 实例公开和使用分布式 OSGi uService?
  • 我认为这将是答案的一部分:它将探索可以做到这一点的不同方式,或者这意味着什么,以及每种方式的优缺点。
  • 由于 OSGi 是一个 JVM 平台,你不妨看看jaskell.codehaus.org

标签: haskell osgi


【解决方案1】:

我猜你是问是否有适用于 Haskell 的 OSGi(问题 1),而不是 Haskell 是否可用于实现 OSGi 规范(问题 2)。

关于1:我认为不设置多层间接是不可能的。为编程语言实现 OSGi 所需的最重要的语言特性是在运行时动态加载和卸载模块。现在,OSGi - 以一种简单的方式 - 是使用 Java 类加载器来实现这一点的一种巧妙方法,而代码的开发人员并没有注意到它,而是继续使用“import com.mypackage...”。

我不知道足够多的 Haskell,但我怀疑 Haskell 是否有让外部库进入 Haskell 解释器的挂钩点,以便可以拦截加载模块并动态重新路由到另一个 haskell 文件。

关于 2:如果您愿意妥协语言支持,但可以通过字符串文字加载模块,那么实现 OSGi 的核心思想并在 Haskell 中使用它将是一个不错的小项目。

我最喜欢的插件框架实现(在精神上接近 OSGi)是Java Plugin Framework。比预期更少的代码。

【讨论】:

  • Java 插件框架的好技巧——我不知道!对于我未来不允许使用 OSGi 的项目来说,这看起来像是一个很棒的小库。
  • OSGi 最酷的方面(最解耦的部分)是服务。 JPF 的大小大约是 Apache Felix OSGi 框架的一半,但对于那些额外的字节,您可以获得正式的标准、并行版本控制、不断增长的生态系统和服务。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-18
  • 1970-01-01
  • 2012-12-10
  • 2017-12-17
  • 1970-01-01
  • 2020-03-24
相关资源
最近更新 更多