Java's modules rock? (was Re: election details *PLEASE READ*)
stephane.ducasse at free.fr
Sat Mar 10 15:33:09 UTC 2007
On 9 mars 07, at 09:16, Andreas Raab wrote:
> It depends on what you mean by "absolutely forbid to mess each
> other up". What I would expect from the "perfect" module system is
> to allow me the formulate the equivalent of both, saying "I want
> these two modules on different computers", in other words
> "perfectly isolated" or alternatively to specify "I want these
> modules to affect each other", in other words "patch module X with
> module Y". Both are perfectly reasonable, and I simply don't get
> why you completely disregard the former in favor of the latter.
> There is *nothing* utopian about it - I run different versions of
> modules on different computers all the time and I patch modules
> with others all the time. And they communicate with each other all
> the time.
At berne guys have been working on changeboxes: having multiple
versions of a module running in the same image, and I'm trying to
digest what I would gain to be able to do that. Because I could build
applications as on my mac that uses different version of components
having to have them all at the same time in the same applications.
Did you encounter cases where you would have like to have different
versions of the same component/modules running in the same image.
>> Believe me, I do not mean to beat up on your simplification here.
>> It's just a simplification. Perhaps, though, if you try to be more
>> precise here, then there is a deeper understanding to be had. What,
>> precisely, does it mean for modules to allow *limited*
>> interaction, as
>> opposed to the extremes of non-interaction or blatantly stepping all
>> over each other?
> I would define "limited interaction" as: Limited to *explicit*
> interaction, e.g., sending messages requesting services contrasted
> with *implicit* interaction, caused merely by loading a code base
> that has an (unintended) side effect on another module. In other
> words, if module A uses a public API to tell module B it wants
> "Foo" to mean "Bar" that is much more acceptable than the effect
> that merely loading A has the effect of "Foo" meaning "Bar" (the
> simple reason being that module B can deny the request if it is
> explicit; and that other modules are aware that Foo may mean Bar
> and can guard against that possible problem).
More information about the Squeak-dev