Skip to content

rebaze/awesome-osgi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 

Repository files navigation

Apache 2.0

Awesome OSGi Awesome

Useful resources for working with OSGi

Inspired by the awesome list thing.

Framework Implementations

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.

Major Open Source implementations

  • Apache Felix - OSGi Core 6 compliant Implementation from Apache Community.
  • Eclipse Equinox - OSGi Core 6 Reference Implementation from the Eclipse Community.

OSGi based Containers

Apache Karaf

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.

First class bundles

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).

High quality bundle distributors

  • 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.

Web related bundles

  • 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

IDE Support

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)

Testing

  • Pax Exam - IDE independent OSGi and JEE integration testing framework.

Dependency Injection with DS

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.

Guides

Blogs to follow

Build Tools

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.

License

Apache License 2.0

About

A curated list of resources for OSGi Starters

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published