您建议在Java中进行模块化开发。 OSGI很棒,但它对JPA的支持是可怜的。我真的不想再编写另一个框架,但似乎不可避免。
答案 0 :(得分:5)
模块化开发的最佳方法:先考虑,稍后编码,经常重构。世界上没有可以取代思维的框架/图书馆。
答案 1 :(得分:1)
考虑一下你想要实现的目标,并尽可能地将概念与技术分开。然后尝试寻找适合您想要实现的技术。如果没有一套技术/工具/框架能够满足您的需求,那么请进行一些重新思考,并在中间的某个位置寻找概念和实现来满足。
答案 2 :(得分:0)
我认为问题不在于OSGI对JPA的支持,而是在OSGI类加载器的JPA实现中缺乏支持。无论如何我离题了。
使用OpenJPA和OSGI可能会成功。最新版本已经打包为OSGI捆绑包。我还留下了link,解释了如何让OpenJPA在Apache Felix中运行。
答案 3 :(得分:0)
您的问题的答案非常依赖于您正在构建的应用程序。 Java EE,ESB和OSGi都是适用于某些问题的模块化部署策略。
构建面向企业服务的软件与可插拔客户端应用程序是不同的应用程序与不同的解决方案。
我目前正在开发一个项目,该项目使用后端的Java EE部署服务和使用这些服务的基于Eclipse / OSGi的富客户端。设计和部署在后端服务(Java EE),基于客户端的服务(纯OSGi)和UI组件(Eclipse插件)之间非常模块化。
使用这些技术可以克服的最大因素是了解它们的工作方式,并适当地设计应用程序以在其约束条件下工作。如前所述,类加载对于这些环境中的任何复杂应用程序来说都是一个非常一致的问题,但预先了解这些问题将允许为该技术设计适当的软件。
像Spring这样的框架的使用在很大程度上编写了能够减少对底层技术的依赖的代码,但仍然能够利用其独特的功能。
答案 4 :(得分:0)
我猜OSGi是当今Java EE的主流。而且它是构建模块化应用程序的正确选择。是的,平台成熟度和接受度存在一些问题,但请注意社区的努力和意愿(例如,SpringSource,Eclipse)以使其更好。这些实现是开源的,许多IDE都支持OSGi开发。我建议采用其中一个OSGi实现,而不是开发自己的框架,即使存在当前的限制。