说说iDempiere = OSGi + ADempiere的OSGi
怀揣着为中小企业量身定做一整套开源软件解决方案的梦想开始了一个网站的搭建。 |
我对iDempiere还完全摸不着头脑,正好在学习之际,应erp100的@纵横四海 邀请,以一个初学者的身份来开始
写一下自己的学习过程。本文同发这里和erp100,erp100的网页地址如下:
【[分享知识 原创连载] iDempiere = OSGi + ADempiere 一款ERP系统、助力中小企业发展 】
在我发了第一篇iDempiere简介之后,@纵横四海 又帮忙添加了OSGi这个标签,那这次就让我说一说我对OSGi的
认识吧。毕竟iDempiere = OSGi + ADempiere这个等式的存在也意味着OSGi的重要性,所以我开始尝试理解这
里的OSGi对iDempiere到底有什么帮助、如何让iDempiere更具有生命力。
- 什么是OSGi
好象很久前就开始知道这个词,但是由于它和JavaEE(J2EE)走的是两条路,而我更关注企业级解决方案,
所以也没有太多关注。但是OSGi优秀的机制是很多解决方案无法简单比拟、超越的,应该是在2000前后年
吧,有很多人追求可热插拔机制在企业级应用中的使用,于是OSGi无疑成了一些大牛们的选择(例如
Richard S. Hall?)。同时大家好象都说应该是Eclipse给了OSGi活跃发展的一个强大契机,Eclipse的插
件系统就是完全基于OSGi的杰作,如今OSGi更是企业级解决方案中重要的基础平台之一,并且OSGi也从
“JAVA虚拟机中的SOA”走到了今天这个真正的SOA的高度。非常惭愧、似乎什么也没有吹出来,但是还是要抓紧说一下OSGi到底是什么?让我引用【OSGi in Action】
这本书的说明。著者:Richard S. Hall、Karl Pauls、Stuart McCulloch、David Savage
首先:
NOTE Once upon a time, the letters OSGi were an acronym that stood for the
Open Services Gateway Initiative. This acronym highlights the lineage of the
technology but has fallen out of favor. After the third specification release,
the OSGi Alliance officially dropped the acronym, and OSGi is now a trademark
for the technology.
也就是说由于OSGi发展已经超越了最开始的定义,所以Open Services Gateway Initiative已经不合
时宜,OSGi只是一个标识这个伟大平台的标志而已。注:当写到这里的时候突然发现,原本想把书中OSGi的定义拷贝下来,但是发现一旦拷贝到这里来的话,
似乎很容易让人误解OSGi并么有什么了不起,毕竟这里不是说OSGi的地方。我还是介绍我买的两本
书,如果想知道OSGi的伟大的话,还是从书中找答案吧(只是想宏观看的话,新华书店站一站,只
看OSGi in Action的第一章就可以让你汹涌澎湃了吧) - ADempiere+OSGi → iDempiere有什么好处?
这里应该是想要说的重点,我个人觉得由于让ADempiere基于OSGi,不仅仅是ADempiere的架构更加合
理,因为这点毕竟主要是对系统工程师比较有意义,对更多人来说更有意义的可能是用热插拔方式来动态
扩展ADempiere,同时针对添加的OSGi组件,如果方法得当的话很有一定的可能绕过GPLv2的限制,实
现组件商业化。
注:我不太确定这点,还需要去咨询法律顾问,让他们来考虑并给出个可信的回答啊。 - iDempiere = OSGi + ADempiere
写到第2节,其实就可以结束了,这里只是追加做点说明,让人对iDempiere的OSGi有点可视化的印象。
当你用Eclipse打开iDempiere源码后,完全可以使用PDE Incubator Dependency Visualization来可
视化的看看他的架构。这里以把我平时写的一小段博文贴进来,分享一下。
iDempiere OSGi Bundle的倚赖关系可视化分析(使用Eclipse PDE Dependency Visualization)
虽然这个等式iDempiere = OSGi + ADempiere代表着全面拥抱OSGi,可惜还是没有搞明白,
还好参看IBM的网站,找到了可以对OSGi Bundle倚赖关系进行可视化分析工具(PDE Incubator Dependency Visualization)
的相关说明。针对org.adempiere.server的分析结果如下:
原文地址:http://www.cnblogs.com/Yu/archive/2013/06/06/3121249.html
- iDempiere架构到底怎么样?
OSGi是牛的,但是并不等于iDempiere架构一定是牛的,就好像用C++也完全有可能写出比VB更慢的软件
一样。至少从我个人掌握的内容来看,iDempiere 也不是让人感觉很满意。这也许是iDempiere牛人时间
不够的原因,更有可能是我比较弱没有理解人家深刻的含义。不过,自己到底不满意什么呢,仔细想想,
其实不外乎一个词儿,粒度太粗。但是谁需要更细粒度、更优雅呢?粒度更细本身就代表着一个错误的方
向也说不定。至少对大多数人来说,说的极端一点的话,可能我只需要一个可扩展的Bundle,他的名字叫
ERP就行了也说不定。更进一步说,这样的架构已经足以PK掉很多开源ERP软件,足以用这样的架构来助力中小企业发展。
说说iDempiere = OSGi + ADempiere的OSGi的更多相关文章
- iDempiere = OSGi + ADempiere 一款ERP&CRM&SCM系统、助力中小企业发展
怀揣着为中小企业量身定做一整套开源软件解决方案的梦想开始了一个网站的搭建.http://osssme.org/ iDempiere = OSGi + ADempiere 一款ERP&CRM&a ...
- iDempiere VS ADempiere
怀揣着为中小企业量身定做一整套开源软件解决方案的梦想开始了一个网站的搭建.http://osssme.org/ 第三篇:iDempiere VS ADempiere 一直以来,什么谁谁谁VS谁谁谁的, ...
- [OSGI]Eclipse4.2 OSGI依赖Bundle
Eclipse 4.2 OSGI 依赖的Bundle: org.eclipse.osgiorg.apache.felix.gogo.runtimeorg.apache.felix.gogo.comma ...
- OSGI入门笔记
OSGI框架为Java定义了一个动态模块化系统,它使你可以更好地控制代码结构,动态管理代码的生命周期,并且提供了代码写作的松耦合方式:更值得称道的是,它的规范文档描述详尽.--<OSGI实战&g ...
- OSGi——面向服务架构规范简述
OSGi——面向服务架构规范简述 去年我们组要开发一个新的产品,在讨论产品架构路线的时候,美国的架构师向大家征集了架构设计思想(我推荐了SCSF),有一位工程师向他推荐了OSGi.以前我还没有听过OS ...
- OSGi 的核心配置、动态化及问题
一.OSGi的核心组件Bundle,与java中jar包的差别就是元数据配置: 常用的Bundle元数据定义: a) Bundle-Activator:定义Activator的实现全 ...
- OSGi 的由来和本质特性
OSGi 的由来 随着科技和需求的发展和变化,现在的软件变得越来越庞大.这样,随之而来的最大挑战就是软件在设计上的越来越复杂和维护上的越来越困难.为了解决这个问题,软件架构师将软件切分成比较小的并且易 ...
- Eclipse插件开发之基础篇(4) OSGi框架
转载出处:http://www.cnblogs.com/liuzhuo. 1. 什么是OSGi框架 OSGi(Open Service Gateway Initiative)框架是运行在JavaVM环 ...
- OSGI.NET 学习笔记--应用篇
关于osgi.net ,想必大家也听说过,以下是自己在学习osgi.net 过程中整理出来的内容,供大家学习参与使用. 1. OSGI.NET 与UIOSP OSGi是Open Service Ga ...
随机推荐
- 【HDU 5730】Shell Necklace
http://acm.hdu.edu.cn/showproblem.php?pid=5730 分治FFT模板. DP:\(f(i)=\sum\limits_{j=0}^{i-1}f(j)\times ...
- [Nescafé41]异化多肽(多项式求逆元)
2015年的题,应该是将形式幂级数引入国内的元老级题目. 大意:给定一个大小为m的正整数序列和n,问有多少种选法可以凑成n,每个数可以选多次,种类不同算不同方案.$n,m,C \leqslant 10 ...
- 【动态规划】POJ3280- Cheapest Palindrome
[题目大意] 给出一个字符串,可以删除或添加一些字符,它们各自会消耗价值.问最少消耗多少价值,可以使得字符串变成回文的. [思路] 事实上删除或添加字符的价值只需要保持较小的那一个.假设当前要将(j, ...
- Erlang学习记录(三)——表达式大集合
Erlang中的表达式必须以.结束才会去执行.如果不加.你在编译环境下按多少次Enter,表达式都不会执行,表达式之间可以用,分隔,以.结尾后所有的表达式都会执行,但是只有最后一个以.结尾的表达式会在 ...
- Codeforces Round #345 (Div. 2) A. Joysticks dp
A. Joysticks 题目连接: http://www.codeforces.com/contest/651/problem/A Description Friends are going to ...
- php应用数据库连接中的单例模式
所谓的单例模式简而言之就是某个类在运行过程中只有一个实例,并且能够自行实例化并为整个系统的运行提供这个实例.在数据库连接中使用单例模式实例化数据库连接对象主要是可以避免重复的实例化对象而造成资源的浪费 ...
- Eclipse使用maven创建struct2项目及遇到的各种坑
参考创建教程:http://www.jb51.net/article/45138.htm 坑一: Eclipse创建maven项目报错:Could not resolve archetype or ...
- CSS3 @media 查询,根据屏幕screen大小调节前端显示;媒体查询方法的使用
------------------- 1.媒体查询方法在 css 里面这样写 -------------------- @media screen and (min-width: 320px) an ...
- vim的批量列编辑
使用快捷键:control+v进入状态“VISUALBLOCK”,然后使用方向键向下选择,选择多行,向右选择,选择多列,使用快捷键d删除所选. 再次进入VISUAL BLOCK状态,选择多行多列, 使 ...
- [转] SQL SERVER拼接字符串(字符串中有变量)
本文转自:http://blog.csdn.net/sikaiyuan2008/article/details/7848926 SQL SERVER拼接字符串(字符串中有变量)对我来说是一个难点,总是 ...