OSGI学习之普通jar file部署的缺陷

   在编程的世界里,每一种新的设计思想的出现,都表征着一次变革,OSGI的出现也是如此。
   首先我们来谈谈普通的java app部署的方式:以jar为单元的部署。
   在java运行期,所以的在classpath 路径下的jar far都会被JVM loaded,jar与jar之间的依赖没有规范的表述,也没有一种机制可以把jar的信息隐藏起来。
   ClassLoader的职责:通过classpath找到class file,转载到内存;讲装载到内存的byte转为Class object.ClassLoader去判定一个类是否需要加载,会去找已经加载的类,而一个类的表示就是package name+class name,这时候如果有一个A.jar and B.jar,A和B中都有一个相同名称的类C,我们想执行的是B中的C,但是当JVM先加载的是A时,我们永远无法执行我们所希望的B中的C。每一个deployed jar都缺少dependency的详细描述,一个外部jar是在不断的发展和完善的,会有很多版本,但是现在缺乏去指定dependency jar version的机制,做过SSH集成的同学都应该碰到过version不兼容的问题,这是很痛苦的。
   J2EE,java 2 enterprise edition specifications defines a platform for distributed,multi-tier computing.The central feature of the j2ee architecture is so-called "Application server" which host mutiple application compents and offers enterprise-class services to them such as transaction management ,security,high availability.Application servers also required to hava a deployment system so that applications can be deployed and undeployed,this mean app server must hava a complex class loader mechanism.

你可能感兴趣的:(osgi)