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)
lib188K
ext588K

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/file40K 
connectors/http1.2M 
connectors/iot16K 
connectors/iotf3.0Mrequires connectors/iot
connectors/jdbc24K 
connectors/kafka13M 
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
analytics/math32.0M 
analytics/sensors16K 

Util Modules

UtilitySize (bytes)Notes
utils/metrics24K 

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/iot16K 
connectors/iotf3.0Mrequires connectors/iot
connectors/jdbc24K 
analytics/math32.0M 
analytics/sensors16K 
   
Total~5.7MA 75% space reduction compared to the full java8 distribution size of 23.0M
  • No labels