[wildfly-dev] smaller footprints

Bill Burke bburke at redhat.com
Tue Mar 4 15:16:21 EST 2014



On 3/4/2014 1:22 PM, David M. Lloyd wrote:
> On 03/04/2014 08:35 AM, Bill Burke wrote:
>> Great work Stuart!  I'm really happy somebody is taking initiative on
>> this because I really think it will help a lot with Wildfly adoption.
>> Is it ready to use?  I'm willing to try it out RIGHT NOW.
>>
>> I've expressed some of these thoughts months ago when I introduced the
>> JBoss Modules artifact features, but here was my vision:
>>
>> * maven repos would become to Wildfly as /lib /usr/local/lib directory
>> structures are to unix.
>
> I'm not sure how tightly you're gripping to this metaphor, but it can
> not be exactly this because the maven dependencies do not semantically
> have the right dependency information to function 100% correctly at run
> time, which is the point of JBoss Modules and its dependency
> infrastructure in the first place.
>

I'm talking about the maven repo directory structure, not the poms! 
Being able to resolve an artifact given a base URL, artifact name, and 
version is pretty damn powerful.  Trivial, but powerful.

JBoss Modules + Maven Repo = "something better"

>> * The JBoss Module artifact feature would become the preferred way to
>> deploy Wildfly/JBoss.  This would make it really easy to support
>> multiple versions as well as different distro's of JBoss/Wildfly on the
>> same machine and save huge amounts of disk space.  If we could get a JVM
>> that could share JAR instances between processes to save on RAM, the win
>> would be even bigger!  Think of the cloud implications!
>
> Deploy, maybe in certain cases, but I don't think that using Maven repos
> is going to be preferred in the data center case or even the cloud case.
>    In both cases, in any non-trivially sized environment, the systems are
> generally going to be either built up by packages long before deployment
> time, simply replicated in whole off an image, or built up by high-level
> tooling in such a way that it doesn't really pay to "buy in" to the
> Maven repository format, which would be more useful perhaps during
> development.  In many cases, the public Internet isn't even accessible
> and a local image is necessary.  I think the usefulness of Maven is
> heavily, heavily overstated here.
>

I wasn't talking about using a *remote* maven repo to share disk space. 
  I was talking about a local repo.  You would install Wildfly jar 
dependencies into the OS image's local maven directory.  Then, different 
OS VMs could share the same disk space.


>> * JBoss Module definitions could eventually be defined in one large XML
>> file.  We would have maven/ant plugins to help build this large XML file.
>
> This would be a step backwards, especially if we ever want to support
> third-party add-ins in a uniform manner.
>
>> * This single JBoss Module XML file could be bundled within a
>> JBoss/Wildfly "executable jar".
>> * This "executable jar" could be overlayed with external JBoss Module
>> XML files or directory structures.
>> * Finally, you could create this "executable jar" for any Java project.
>
> I guess you're looking at it from the perspective of "every Java
> application is a monolithic thing" instead of "I have an installation
> which has N applications in it", which is more what my world view is.
>

I wasn't advocating one approach over another.  I'd like to be able to 
do both.  While we already have a platform that can have "N applications 
in it", we don't have a great way to bundle a "monolithic thing".  The 
ironic thing is that the users I've talked to who want the ability to 
create a "monolithic thing" are talking about applications that are at 
least 100+ meg smaller than the current Wildfly distro. :)

If Wildfly and other non-Wildfly apps used a local maven repo (or remote 
one I guess), you'd have a common cross-environment way of sharing 
dependencies on the same machine.  I'm talking more of using JBoss 
Modules as a way to create an "exeutable" for non-Wildfly applications.

> And I have in the past, and continue to believe that build and run time
> are very distinct.

And I don't think they need to be completely distinct and separate. 
Maven repo for building.  JBoss modules to bridge between the 
"versionless runtime" and the repo, to provide a logical unversioned 
view/grouping of dependencies.


-- 
Bill Burke
JBoss, a division of Red Hat
http://bill.burkecentral.com


More information about the wildfly-dev mailing list