> On Jan 21, 2015, at 7:06 PM, Gavin King <
gavin...@gmail.com> wrote:
>
> On Wed, Jan 21, 2015 at 10:21 PM, Stéphane Gallès
> <
stephan...@gmail.com> wrote:
>
>> Even if you super motivated and overcomes all the obstacles (with hacks
>> like Gradle scripts and fat-jars, been there done that) you can't really
>> publicize the result because it is
>> experimental, and it would give a bad (and frankly unfair) image of Ceylon.
>> It is a pity because the Java interop of Ceylon at the language level per se
>> is great.
>
> I'm not sure it's *that* much of a hack, in fact, I was thinking it
> was a sorta reasonable fallback solution that "always works”.
It’s a huge hack! Not only is it a PITA, but it rules out any reasonable opportunity to import *other* modules that also depend on some of the same classes. With this, there can be no ecosystem, or even loosely coordinated module sharing within a team or organization, but only monolithic beasts.
I feel that Stéphane’s comments are correct, and they perfectly describe my experience. I tried this in November, failed, posted here and got helpful and friendly responses, but ultimately moved on out of frustration until I tried again a couple days ago.
As a big fan of Ceylon the language, this is frustrating. IMHO the success of the language is currently bounded by the success of the module system.
> Still, I think that it would be nice to somehow formalize the idea of
> being able to just package up several jars onto a single classloader.
> At some stage Stef suggested doing this be default with mvn
> dependencies, but in fact I'm not sure if it needs to be specific to
> mvn. Why can't we just let you specify that certain jars all go onto
> the same classloader?
For the reasons above, and also reasons mentioned on GitHub, I’m doubtful that a hybrid system would work. It may help in some scenarios, but I wouldn’t be comfortable relying on a system that may stop working once a certain complexity is reached or when unpredictable changes occur in dependencies of dependencies.
What I would really, really like to see is an alternate “classic” mode that delegates *all* build and runtime responsibility for dependency management and classloading, allowing third party tools and execution environments to be used while Ceylon the language, Ceylon the module system, and Ceylon the platform mature at their own paces. If there’s any interest in such a thing, I’d love to share further thoughts. The idea would be to encourage the use of the current system, but not let it get in the way for projects that need more.
John