Home » Java » OSGI Beginners tutorials are outdated. Is there a new standard?

OSGI Beginners tutorials are outdated. Is there a new standard?

Posted by: admin December 28, 2021 Leave a comment

Questions:

I have been trying to start with studying OSGI for quiet a few days now. I’ve tried many tutorials to work on eclipse especially to start with apache felix or Equinox but the step by step tutorials never take me to the end of creating even one bundle.

I even tried the console commands with no luck. Is OSGI out dated? All the tutorials on the alliance web site are also extremely old and I couldn’t follow them to the end. I also tried the BndTools Totorial here but on eclipse it couldn’t resolve “@Component” when I reach 4.3 so I stopped there. When following Osgi Book Preview, I also couldn’t find “Make Bundle” so I stopped again. I’m really frustrated. Isn’t there a way for beginners to get into OSGI?

UPDATE:

For other people who are interested in getting started with OSGI, I found the book Osgi in Action as very helpful and a good guide for beginners.

Answers:

The Bndtools tutorial was mentioned and dismissed in the original question; however we were able to resolve the issue. So I post this as an answer for others who might be looking for an introductory OSGi tutorial: check out the Bndtools Tutorial!

###

Actually there are two questions being posed here, which I asked myself recently as well, one in the title and one in the content. The question in the title seems mostly rhetorical. It expresses a notional answer for the real question that you find at the end of the text: “I’m really frustrated. Isn’t there a way for beginners to get into OSGI?”

Answer: There are ways, but they aren’t as easy as they should be. The “update” to the question mentions “OSGi in Action”. This is a good book (which I discovered too late, it’s not really on the top of the search results), but quite outdated with respect to tooling (e.g. Bndtools appears in the appendix only).

Finding no easy way for beginners, I eventually started to dig my way through the topic using an eclectic selection of resources found on the web. I documented my experience in what you might call a log of my (ongoing) journey in the hope that it may be helpful to others. I’ll leave it to you to judge whether this can be considered a shy “yes” to the question, after all.

Not having reached “the end of my journey” yet, I’m not perfectly sure why there are so few up-to-date resources for beginners to get into OSGi. I suppose that the attention that OSGi got from a lot of people because it was used in Eclipse was one of the first problems. The attempt of the OSGi alliance to align with enterprise edition features was another (there are references for this, but I’m not allowed to post more than 2 links). Both incidents led first to hype (and lots of articles) and then to disappointment. In the time following, experts understood the technology better and better and applied it successfully to the problem domains where it is of use. (And these are fewer than the initial hype suggested — or different, OSGi may regain some attention with the IoT.) But as it is often the case in such cases, the (now) experts never felt tempted to write the kind of introductions that you find during the hype-phase of a new technology.

Which brings me back to the question from the title, after all: “Is there a new standard?” (which implies whether it is worth to spend time on looking into OSGi). The answer depends on what aspects of OSGi are important to you. Project JigSaw aims to bring modules to the Java platform and to developers. With a target date of March 2017 for the central JSR 376 I’d say this might be called an “upcoming standard” (provided it gets finished). But OSGi is more than just modules. Other key features are dynamic configuration (I can’t see any competing standard regarding this feature) and micro-Services (be careful about that term, it seems to have two different interpretations currently). Eventually, you have to look a bit into OSGi yourself to decide on its usefulness for your project.

###

You can check tutorials that help you start with OSGi OSGi Tutorial: From project structure to release and OSGi Tutorial: 4 ways to activate code in OSGi bundle

###

There’s a lot of outdated tutorials out there, outdated documentation, and stuff which is deep in the Java EE thinking bog – incomprehensible if you’re not familiar with the problems arising from the solution to the problems arising from the solution to some obscure Java decision in the previous millennium, which you’re now stuck with in your mammoth EE app.

Today, there is the OSGi enRoute projects which provides a set of pretty nice tutorials, along with an OSGi “distribution” which makes dependency resolution easier. My understanding is that a lot of the additional services in enRoute are en route (ha!) to becoming the OSGi Release 7 standard.

If you want to do new development in OSGi, it’s what I would go to for sure. In fact, even if you want to use OSGi in some legacy-support function, I’d read up on the enRoute way first, before getting into all the ugly compromises needed for legacy’s sake.

###

If you are mainly looking for server side OOGi then using maven and the maven bundle plugin works very well. See http://www.liquid-reality.de/display/liquid/2011/02/15/Karaf+Tutorial+Part+1+-+Installation+and+First+application

###

Apache Karaf is an OSGi container that I believe makes OSGi, ‘easier,’ to understand and work with. You might consider getting this installed and just try it out. Documentation is pretty good as well. Take some time learning about a running OSGi container; watch it run first trying out a few commands and then deploy some simple bundles while putting a tail on the karaf.log.

Seeing Karaf running will help you understand more about OSGi and what it takes to get a bundle built and deployed/running.

IMHO: Both BndTools and Maven Bundle plugin are fantastic resources for OSGi development.