8

Gemini is the reference implementation for OSGi blueprint container, and Apache Aries is another blueprint container that is widely used...including within Apache Karaf.

If I'm starting a new project (with open source technologies as a requirement) and plan to use blueprint, what should be my considerations when choosing between these two?

Is the choice based on what OSGi container will be used, where:

  • for Virgo then Gemini is your best/only? blueprint container choice
  • for Apache Karaf, then Apache Aries's blueprint container if preferred choice

Does it even matter? i.e. Can I just code against blueprint specs, and let the deployment decide what DI container is used in production?

Sorry if this question is not very specific, but the topic itself is rather confusing for me.

kctang
  • 10,894
  • 8
  • 44
  • 63

1 Answers1

5

If you're only using Blueprint, then your idea of coding against the specification and deciding at deploy time is a good one. The behaviour of the two implementations should be identical. If you're unlucky you'll find different bugs in the two, but hopefully not since both implementations are mature. One factor which might influence your eventual decision is that you may find the performance is different between the two. (But for performance, measure, don't guess!)

If you're going to do things beyond core Blueprint, like container managed JPA and JTA you'll find there are more obvious differences between Aries and Gemini. I know Aries has a number of Blueprint extenders in this area, for example (I'm an Aries committer).

In principle Aries should run in Virgo and Gemini in Karaf, but I'm not sure I'd fancy trying it myself, since things in both stacks do build upon Blueprint.

--

http://www.manning.com/cummins - Enterprise OSGi in Action

Holly Cummins
  • 10,767
  • 3
  • 23
  • 25
  • wouldn't differences like [this one](https://bugs.eclipse.org/bugs/show_bug.cgi?id=351755) make it not possible in practice to push the decision until deployment time? – eis Dec 05 '12 at 08:46
  • If you're coding strictly against the spec, you can push the decision to deployment time. If you want to take advantage of extensions to the programming model, you're right that an earlier decision is needed. – Holly Cummins Dec 06 '12 at 07:14