Skip to content
Apache Felix Atomos
Java
Branch: master
Clone or download

Latest commit

tjwatson Index lists all content and stores only duplicates
Change the Atomos bundles.index file to list
all entries of each bundle.  Only store duplicate
paths in the atomos/ index directory.  If a resource
entry cannot be found in the atomos/ index directory
then look in the root.  Only look in the root
if the lookup path is contained in the list
stored in the bundles.index file
Latest commit ff13b0f Apr 8, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Add Android Example Mar 31, 2020
.mvn/wrapper Add maven wrapper and fix warning on version of maven-jar-plugin Oct 22, 2018
atomos.examples Make Android app work with Felix Apr 1, 2020
atomos.maven Add ability to generate atomos index outside of native-image Mar 24, 2020
atomos.osgi.frameworks Refactor for org.apache.felix namespace Feb 13, 2020
atomos.runtime Index lists all content and stores only duplicates Apr 8, 2020
atomos.substrate.config Refactor for org.apache.felix namespace Feb 13, 2020
atomos.tests Index lists all content and stores only duplicates Apr 8, 2020
.asf.yaml Add .asf.yaml file to control repository metadata Mar 5, 2020
.gitattributes Initial commit Oct 10, 2018
.gitignore Add gitpod config Mar 7, 2020
.gitpod.yml Add gitpod config Mar 7, 2020
CODE_OF_CONDUCT.md Add code of conduct and contributing pointers. Mar 9, 2020
CONTRIBUTING.md Add code of conduct and contributing pointers. Mar 9, 2020
LICENSE Update LICENSE to Apache License 2.0 Jan 16, 2020
README.md Restructure the README files for the examples. Mar 31, 2020
mvnw Add maven wrapper and fix warning on version of maven-jar-plugin Oct 22, 2018
mvnw.cmd Add maven wrapper and fix warning on version of maven-jar-plugin Oct 22, 2018
pom.xml Update Equinox Framework Mar 25, 2020

README.md

Atomos Java CI Felix Atomos Chat Gitpod Ready-to-Code

Atomos - A Java Module Runtime using OSGi Connect

Atomos requires an OSGi Framework implementation that supports the OSGi Connect Specification. The Connect Specification will be released as part of the OSGi Core Release 8 Specification which is currently in draft form available here. The Connect Specification can be found in chapter 60.

Currently snapshots of the Equinox and Felix OSGi Frameworks are being used that implement the proposed OSGi Connect specification. Source for the snapshots can be found at:

  1. Equinox - The osgiR8 branch in the git repo https://git.eclipse.org/c/equinox/rt.equinox.framework.git
  2. Felix - https://github.com/apache/felix-dev/tree/connect

The snapshot JARs and source JARs are pushed to https://github.com/tjwatson/atomos-temp-m2repo for Atomos. The Atomos build is currently configured to use this as a repository for getting the OSGi Framework implementations: https://github.com/tjwatson/atomos-temp-m2repo/raw/master/repository

Atomos is an implementation of an OSGi ModuleConnector which is defined by the Connect specification. A ModuleConnector can be used to create an OSGi Framework instance that allows a Framework to connect bundles installed in the framework to content managed outside of the Framework. Framework instances created with the Atomos ModuleConnector add support to the OSGi Framework that enables bundles to be connected to three different sources of content from outside the OSGi module layer:

  1. Module Path: Using the Java Platform Module System (JPMS) Atomos will discover the modules on the module path and will make any modules found available for installation into the Framework as connected bundles. This also allows for Atomos and a set of OSGi bundles to be packaged into a jlink image resulting in a small fit-for-purpose JVM.
  2. Class Path: When loaded from the class path Atomos will discover the JARs on the class path and will make any OSGi bundles found available for installation into the Framework.
  3. Graal Substrate Native Image: When compiled into a Substrate native image Atomos will discover the bundles that were included into the image. This requires configuration to enable the necessary reflection for things like bundle activators and declarative service components.
  4. Atomos Bundle Index: Allows a single executable JAR to contain multiple bundles. The bundles included in the executable JAR have their resources indexed to allow for duplicate resource names to be included in each bundle. For example, the META-INF/MANIFEST.MF bundle manifest file.

Build

Java 11 or higher must be used to build Atomos. Atomos build uses the 1.0.0.Beta2 version of the moditect plugin (https://github.com/moditect/moditect.git). This plugin provides some utilities for adding module-infos to existing dependency JARs and building jlink images. You can build the Atomos with the following:

./mvnw clean install -Pjava8 -Pequinox

Or if you want to use the Felix Framework

./mvnw clean install -Pjava8 -Pfelix

If you build with no profile specified then the default will build with Equinox and the resulting Atomos runtime will only work with Java 11+. The build also includes a number of example projects that showcase how Atomos can be used in different modes. The Graal Substrate native-image examples are not built by default. For information on how to build the native-image examples see the substrate README

For more information on each example see Atomos examples README

You can’t perform that action at this time.