Dale LaBossiere created EDGENT-437:
--------------------------------------
Summary: Reduce the number of Edgent jars?
Key: EDGENT-437
URL: https://issues.apache.org/jira/browse/EDGENT-437
Project: Edgent
Issue Type: Wish
Components: Miscellaneous
Reporter: Dale LaBossiere
Edgent has released 3 sets of jars, one for each platform: java8, java7,
android.
Each platform-set consists of approximately 40 jars.
The new world of releasing Edgent jars to Maven Central doesn't change the
above but it now seems more in your face. Reducing the number of jars that
users deal with seems desirable.
Re: per-platform-jars
================
Presumably we could have just released a single J7-based set of jars (including
the android-specific jars in that) that would be used on J8,J7 and Android.
I'm pretty sure J8 clients can use J8-lambdas and link and run against the J7
jars.
That said, it sort of feels better to have a real J8 set for J8 execution
environments.
As for J7/Android, do we really need separate sets for both? To clarify, the
Android set is just a copy of the J7-based set, minus a couple J7-only things
(like the console, JMX, development provider) plus a couple of Android-specific
jars (edgent-android-hardware, edgent-android-topology). Would it be bad if we
combined them to a superset of the two? The documentation would address that a
couple are J7-only and a couple are Android-only.
So it seems we could reduce to either:
- a single J7-based set
- a J8-based set and a J7-based set
Thoughts on that?
I don't think it should affect the decision for the above but the complexity of
Edgent maven-based build tooling would be lessened accordingly - i.e., each
platform/set has its own set of 40+ poms so we'd be able to get rid of some.
Re: 40-jars-per-set
===============
The large number of jars was fallout from a "micro-service" point of view -
package everything as small as possible and let the developer / deployment
environment include only what's needed in order to lessen (not fully minimize)
the size of an deployment installation.
Some of the jars / features are optional - e.g., what connectors the app uses,
what analytics the app uses. And the Edgent console is generally utilized only
in a development-only context - not imagined to be deployed to a production
device execution context.
The core of the Edgent runtime itself is partitioned to facilitate alternate
implementations. At least at this time there is only a single implementation
and there aren't any discussions, etc of that situation changing any time soon.
These packages represent about 13 jars - the packages:
- api.{execution,function,graph,oplet,topology,window}
- spi.{graph,topology}
- runtime.{appservice,etiao,jmxcontrol,jobregistry,jsoncontrol}
It seems those could reasonably be bundled into a single "edgent-core" jar.
There are three provider implementations: direct,iot,development.
I'm not so sure about bundling them in a single jar (particularly development)
or in the "edgent-core" jar.
It seems appropriate to keep the connectors and analytics "optional" packages
packaged as they are today. That still leaves a fair number of jars (there
would still be e.g., 15 for different connectors, 2 for analytics, 2 for apps,
2 for utils, 1 for console). These "optional" packages are the ones that have
significant 3rd-party jar dependencies.
Thinking out loud...
If we only had to support Edgent application "uber-jars" as a deployment
packaging scheme then we could bundle all of Edgent in a single jar - the
uber-jar construction processing incorporates only "referenced" classes into
the uber-jar. Uber-jars aren't practical as "the only" deployment model.
I suppose an alternative could be to supply (or utilize) some other tooling
that could select "desired" Edgent packages (e.g., that multiple applications
on a device might use) from a single Edgent jar and compose them into a
"custom" Edgent jar for deployment purposes, thereby enabling release of only a
single Edgent jar? Note, the deployment also needs to include any transitive
3rd-party dependency jars.
Thoughts on initially reducing the number of "edgent-core" jars, etc?
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)