写点什么

针对许可证、OSGi、以及 SpringSource 应用平台技术现状的反应

  • 2008-05-26
  • 本文字数:2571 字

    阅读完需:约 8 分钟

两周前 InfoQ率先报道了SpringSource 应用平台beta 版的发布。我们的报道引发了剧烈的讨论,在 The Server Side 上的报道同样也引发了众多讨论。在过去的两周里,开发者及业界权威的评论焦点集中在两个方面:许可证 / 一般战略以及 OSGi/ 技术的实现。

许可证及一般策略

在如此之多的评论中,人们既可以找到赞同的声音也可以找到反对的意见。Impala 项目(该项目提出了一个类似于 Spring-DM 的解决方案,采用的是 Apache License 2.0 许可证)的 Phil Zoio 在博文中这样写道

……本质上是 Spring OSGi 的强大集成。我已经表明了我的关切:与应用服务器厂商相比,普通开发者能在多大程度上接受 OSGi。一直以来,总是有人说服我说:普通的 Java 开发者都将对 OSGi 特质表现出极大的热情……有一个许可证的问题。第一次,SpringSource 推出的主要产品使用了非 Apache V2.0 的许可,取而代之,其使用了 GPL 许可证。这种主要变化反映了该公司对自己在市场定位方面的改变……最终,在我脑海中盘旋的一个问题是 Spring 框架本身如何适应这种变化。我一直认为 Spring 框架是出自 Rod Johnson 的旗舰产品……但是对于 Spring 应用框架,他们下了重注……

相反,Per Olesen 看上去对这一产品和许可证表现出极大的热情

……我已经把 spring 框架作为我使用的主要引擎,而且在 POJO ORM 道路上走了很长时间了。远早于 JEE5 和 JPA。而且我喜欢这种方式。在新产品上,我甚至放弃了 JEE5 EJB,因为我发现在许多方面 spring 模型更胜一筹。至于说它正在走向非公开化,这个平台使用的是 GPLv3 许可,我很喜欢。在我眼里,GPL 许可正好适合这类产品。它既确保了开放性,又能被他人所利用……

IBM 的 Billy Newport 从应用服务器厂商的视角提出一些意见:

……这看起来像是我和他人准备在下几年计划 / 希望要做的事情。我们大都在寻找一个具有商业友好许可的(EPL、BSD 或 Apache)基于 OSGi 的分布式平台……总之,我不认为这个平台有价值。我认为它是件商品而已。我认为 profile 和监控 profile 是有价值的东西,我更愿意看到一个具有商业友好许可的 OSGi 分布式运行环境,将它作为厂商构建中间件 /profile 的新的 JVM。假如 Spring DM 是 Apache 许可的,我就会认为在 Spring 服务器上所作的额外工作是纯净的,很快就可于以 EPL 或 Apache 许可证使用,而这将会限制出售 SpringSource 服务器的价值……我并不想贬低 SpringSource 所做的一切,它确实很好也是必须的,但是假定它的大部分组件是 Apache2.0 或 EPL 的许可,那么最终的隔阂比构建一个 Java EE 或 BPEL 流程引擎要简单的多,就这些。

IBM 的 Jerry Cuomo也作出了评论

……InfoQ 上的一篇文章带来了这则消息之后,我的收件箱里就充满了邮件。标题行这样写道——“SpringSource 向 WebSphere 宣战”。真的吗?我不这么认为。我是一个 Spring 迷,我认为 OSGi 基础和 Spring 框架这样的技术是基于 Java 应用服务的未来形式。适用于所有服务器的那种放之四海而皆准的方式已经逐步进化为针对特定类型工作负载构建专门的服务器……现在,我觉得 SpringSource 变质并在 GPL 许可下做这件事是可耻的。业界将从 Apache 许可的“参考”应用平台中获益……因此,进化为合适大小、能满足多种个性需求的平台的趋势并不会引发混乱,更不是 SpringSource 和 WebSphere 之间的一场决战——这只是业界进化的方式——或许 Java 社区可以像以前那样齐心协力,制造公平的竞争机会。我们的客户十分赞赏这一点……

最终,Marc Fleury(JBoss 创始人)的深思对众多的反应进行了总结:

事实是,我有点关心但是又不太关心。在我看来这是风险投资驱使的结果。作为一个开发框架,Spring 是一个天生的顾问,但是他们在运转过程中一直与他们的销售不断奋斗。瞧,我们现在有一个画在 OSGi 核心周围的方框……最后,我不知道这会对它与其它应用服务器的关系产生怎样的影响。他们不再中立……大伙瞧瞧,应用服务器大战曾经打响并在 2005 年结束了。现在是 2008 年了,到处都是 POJO 编程,EE 编程模型被淡化了。

OSGi 和技术现状

在对所期待的战略进行说明的同时,SpringSource 应用平台宣布也对来自众多活跃在 OSGi 社区的开发者进行了回应。 Neil Bartlett 给出了许多积极的评价,包括:OSGi 的常规使用、已宣布的 bundle 库、以及 SAP 解决了在哪里启动 OSGi 的问题。可是,他也关注新的 bundle header:

……现在,这儿有些让我紧张的事情……有两个新的 bundle headers:Import-Bundle 和 Import-Library。在我看来,Import-Bundle 与 Require-Bundle 存在同样的问题。这一新的 header 只是提供了间接引用(例如,你提供一个逻辑 bundle 名,而不是真实的 Bundle- 符号名——Bundle-SymbolicName)。这并没有修正关于绑定到一套 package 周围的 wrapper 上而不是 package 本身这个问题。Import-Library 看起来更糟,它会在整套 bundle 上立即执行 Import-Bundle!……

Peter Kriens 有着类似的想法:

……总而言之,bundle 仓库非常好。……这个 bundle 仓库必须要做一个艰难的工作。名誉!……然而,SpringSource 应用平台是一种冲击。从文档中,我发现了很多感觉像是 OSGi 的 headers,但是我并不承认,包括:Import-Library、Import-Bundle、应用等等。看起来 SpringSource 已经全面“改良”了 OSGi……

SpringSource 团队也发表了几篇博文,详细描述了应用程序平台的不同方面:

使用 SpringSource 应用平台在 OSGi 上运行 Spring 应用

  • 装载时编织(Load Time Weaving)
  • Classpath 扫描
  • 线程上下文类装载器管理

SpringSource 应用平台开发选项

  • 原始(Raw)OSGi Bundles
  • Java EE WAR
  • Web 模块(Modules)
  • 平台存到文件 (PAR)

SpringSource 应用平台 Manifest Headers

  • Import-Bundle
  • Import-Library

使用 SpringSource 应用平台的供应库(provisioning repository)

  • 运行时供应(Runtime provisioning)
  • 给供应库中增加项目
  • 在不同安装之间共享供应库

SpringSource 应用程序框架的一个主要好处是,它有按需供应依赖能力。这个好处有两方面作用:它确保了平台内存占用尽量小;不需要把所有依赖都封装到一个部署个体中(例如,一个 WAR 文件)就可以部署。为了利用这些能力,你将需要理解平台的供应库和本博文将要提供的信息……

查看英文原文: Reactions to Licensing, OSGi, and Technical Aspects of the SpringSource Application Platform

2008-05-26 09:15707
用户头像

发布了 150 篇内容, 共 44.1 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

做好项目管理,项目经理需要具备哪些优秀品质?

万事ONES

项目管理 研发管理 IT ONES 项目经理

数据结构——链表

若尘

数据结构 链表 6月日更

我的企业安全观

I

安全架构 企业安全 组织架构 安全运营 安全协作

直播连麦技术闭坑篇

anyRTC开发者

音视频 WebRTC 视频直播 视频通讯 视频连麦

项目管理复杂多变,如何成为一个好的项目经理?

万事ONES

项目管理 研发管理 ONES 开发管理

线性表、顺序表和链表,你还分不清?

华为云开发者联盟

数组 链表 指针 线性表 顺序表

字节跳动异构场景下的高可用建设实践

火山引擎开发者社区

架构 后端

Rust从0到1-函数式编程-闭包

rust 函数式编程 闭包 functional closures

除了数据恢复,EasyRecovery还有这样的功能!

淋雨

文件恢复 Easyrecovery破解 硬盘数据恢复

Apache Dubbo 3.0.0 正式发布 - 全面拥抱云原生

阿里巴巴中间件

云计算 阿里云 开源 云原生 中间件

☕️【Java技术之旅】【ConcurrentHashMap】深入浅出核心源码分析(JDK1.7版本)

洛神灬殇

Java 源码分析 ConcurrentHashMap 6月日更

译文 | 新手PM指南:你应该避开的六大常见错误

LigaAI

产品 产品经理 产品设计

云小课 | 玩转HiLens Studio之快速订购HiLens Studio版本

华为云开发者联盟

AI modelarts 华为HiLens HiLens Studio EI智能体

手写Spring,定义标记类型Aware接口,实现感知容器对象

小傅哥

Java spring 小傅哥 aware

唐庄酒业的酒怎么样?不输茅台特有面子!

Geek_50a546

实战!使用Docker在线安装OnlyOffice

一个需求

Docker onlyoffice

唐庄酒业的酒怎么样?好的酱香酒就应该和它一样

Geek_50a546

架构实战营 - 群讨论汇总(2021)

华仔

#架构实战营

带你认识4种设计模式:代理模式、装饰模式、外观模式和享元模式

华为云开发者联盟

设计模式 外观模式 代理模式 装饰模式 享元模式

带你掌握C++中三种类成员初始化方式

华为云开发者联盟

c++ 初始化 类成员初始化 声明时初始化 初始化列表

[译] D8 优化: Assertions

Antway

6月日更

项目经理的主要工作有哪些?

万事ONES

项目管理 研发管理 ONES

深度解读畅捷通云原生架构转型实战历程

阿里巴巴云原生

云原生

我去,这是出BUG了呀!

why技术

Java dubbo 后端

数字货币将给我们的生活带来什么?

CECBC

精致女孩的护牙小心机,藏在这瓶冰泉漱口水里

Geek_50a546

JAVA 面向对象 (十五)-- 异常

加百利

Java 6月日更

技术实践:教你用Python搭建gRPC服务

华为云开发者联盟

Python gRPC 语言 移动应用开发 RPC框架

记一次MySQL磁盘满了之后清理的过程

北游学Java

Java MySQL

智慧迪拜与不可或缺的区块链技术

CECBC

阿里P10热荐,面试前必看!Java高并发编程五套“完美日记”GitHub已经标星78K

Java架构追梦

Java 阿里巴巴 架构 面试 并发编程

针对许可证、OSGi、以及SpringSource应用平台技术现状的反应_Java_Scott Delap_InfoQ精选文章