Useful resources for working with OSGi
Inspired by the awesome list thing.
OSGi framework implementations are the kernel of your OSGi runtime. While you compile against APIs specified by the OSGi Alliance you always need a concrete framework implementation.
- Apache Felix - OSGi Core 6 compliant Implementation from Apache Community.
- Eclipse Equinox - OSGi Core 6 Reference Implementation from the Eclipse Community.
Apache Karaf is an opinionated OSGi distributions that comes with read-made solutions for common operation topics such as:
- Hot deployment
- Complete Console
- Dynamic Configuration* Advanced Logging System
- Provisioning
- Management
- Security
- Cloud deployment
As such, Karaf might be your first choice when selecting OSGi as a runtime and you do not want to create all of the above yourself.
Karaf works on small devices (perfect for IoT) as well as part of a cloud container deployment.
Bundles are regular jars with extra Metadata. This list contains libraries that provide first level OSGi citizens. So not just wrapped java libraries but implementations of OSGi standards (e.g. from the OSGi Compendium Specification).
-
OSGi enRoute - Set of APIs and Implementations for getting started with OSGi quickly.
-
Apache Felix - Felix is not just an OSGi framework implementation (read above) but also host of many super useful OSGi bundles for parts of the OSGi specification such as Logging, Web Servers, Configuration and Shell bundles. Most notably:
- Felix ConfigAdmin - Implementation of the OSGi Compendium Configuration Admin Service.
- Felix SCR - Implementation of the OSGi Declarative Services Specification.
- Felix GOGO Shell - Implementation of OSGi RFC 147, the standard shell for OSGi-based environments.
-
Apache Aries - OSGi Enterprise Bundle Implementations (e.g. JPA, JTA etc.)
-
Amdatu - Amdatu is a set of open source components and tools to build modular applications in Java. E.g. Components for multi tenancy, blobstores, MongoDB integration and RESTful web services.
-
OPS4J - Pax is the umbrella project for all OSGi bundles and tools at the OPS4J Community.
- Pax Web - OSGi R4 Http Service and Web Applications (OSGi Enterprise Release chapter 128) implementation using Jetty 9 and Tomcat 7.
- JAX-RS Connector - An OSGi - JAX-RS 2.0 Connector
Without any doubt, the ultimate tooling is the one that is deeply integrated with your IDE. As of now (June 2016) only Eclipse has a production ready IDE integration. And its not PDE (the Eclipse Plugin Development Tooling) but Bndtools.
- Bndtools - Lipstick for BND in Eclipse (quote: Neil Bartlett)
- Pax Exam - IDE independent OSGi and JEE integration testing framework.
DS stands for Declarative Services. It is the OSGi-way of doing dependency injection as opposed to other, more classic dependency injection frameworks that not OSGi-"native" such as Spring. Even with Blueprint (the remains of Spring-DM after SpringSource - back then - lost interest in OSGi) Spring and OSGi are not a good match at all.
If you seriously consider adopting OSGi consider using Declarative Services over Spring.
- http://blog.vogella.com/2016/06/21/getting-started-with-osgi-declarative-services/
- http://enroute.osgi.org/services/org.osgi.service.component.html
- http://www.aqute.biz/Bnd/Components
- Where to Find Stuff - The enRoute directory of OSGi related resources.
- enRoute Appnotes - A directory of discussions to OSGi related topics. A very worthy read!
- Official OSGi Blog - Official OSGi Blog. Mostly articles by Peter Kriens.
- Neil Bartlett - Neil Bartlett, creator of Bndtools.
- Know How Lab - Dmytro Pishchukhin writing about OSGi tooling, libraries and AWS.
How do you create OSGi components? How do you work with external, non bundle dependencies? There are quite many tools out there that let you work with your tools of choice (Maven, Gradle, any other scriptable environment) to work on OSGi projects.
- BND - BND is the engine behind a number of popular software development tools that support OSGi.
- Maven Bundle Plugin - The classic maven plugin for creating OSGi metadata.
- bnd Maven Plugin - A new (introduced in 2015) take on bnd library integration as a maven plugin. Neil Bartlett introducing the new maven plugin in his blog.
- BND Indexer Maven Plugin - Create OSGi R5 Repository indexes from Maven Dependency/pom.
Apache License 2.0