Apache Edgent is designed as a modular SDK so that only required code needs to be deployed to a device to reduce footprint.

The downside to this is that Edgent' distribution contains main JARs, at least one per module.

JAR layout in a distribution

The core JARs in a distribution are under lib and their dependent third-party JARs are under ext.

Optional modules are under category/module, for example connectors/http with their Edgent & third-party JARs in the sub-directories lib & ext respectively, e.g. connectors/http/lib and connectors/http/ext.

Note all JAR sizes are at the time of writing, and are subject to change.

Core JARs

DirectorySize (bytes)

The only optional JAR in the core set is for the DevelopmentProvider : org.apache.edgent.providers.development.jar. This is only 4K so removing it from you distribution to a device is a minimal saving.

Connector Modules

ConnectorSize (bytes)Notes
connectors/iotf3.0Mrequires connectors/iot
connectors/mqtt204Krequires connectors/iot

To reduce footprint the simpliest approach is to remove the modules not needed in a device deployment. Note the biggest saving is removing the Kafka connector, which is typically an enterprise connector rather than an IoT one.

Analytic Modules

AnalyticSize (bytes)Notes

Util Modules

UtilitySize (bytes)Notes

Other Modules

ModulesSize (bytes)Notes
console1.8MRequired by development provider
samples648KSample applications, typically not required for real applications
scripts160KScripts for sample applications, typically not required for real applications

Example Device Deployment

Here's an example set of JARs for use by a Edgent application on a device that uses IBM Watson IoT Platform to communicate with back end systems, JDBC for a local data store and all the analytics Edgent currently provides.

ModulesSize (bytes)Notes
core lib184KDevelopment provider not included
core ext588K 
connectors/iotf3.0Mrequires connectors/iot
Total~5.7MA 75% space reduction compared to the full java8 distribution size of 23.0M
  • No labels