Daniel John Debrunner wrote:
Jeremy Boynes wrote:


David W. Van Couvering wrote:


Can't you have the situation where common 10.2 and common 10.3 are
both included in the classpath (by accident, as Dan brings up)? Wouldn't you end up with order dependencies then?


I feel my scenario keeps being misrepresented by the choice of terms
used to decribe it. Using 'accident' makes it sounds as though it's not
an important problem to deal with, as seen in Jeremy's reponse here:


To what extent do we need to cater for accidents?


The end user didn't accidently install two applications, they chose to
and didn't realise/know that one used client at version 10.2 and one
used engine at version 10.3. In many cases the use of Derby engine is
hidden by the application developer.


I actually thought "accident" was appropriate here :-) The collision in Derby versions is "an unexpected and undesirable event, especially one resulting in damage or harm"[1] arising from the installation of two applications.

I would assign fault here to the application providers who are not allowing for other applications using a common shared resource - the system or user classpath; it's like if they both insisted in being installed in the same directory.

I would also say that most application providers are aware of this problem (usually from some unfortunate prior experience) and take explicit control of the classpath using mechanisms described elsewhere. Their end-users are unaffected by this scenario.

So whilst there is high impact from your scenario, it applies to end-users who install multiple applications that do not exhibit classpath discipline and which happen to use different versions of Derby client and engine (but not two different engine versions or two different client versions). And never mind that these users may be affected by any other libraries these applications use.

Rather than address this ourselves (and just for Derby) by convoluted code-rewrites and avoidance of third party libraries we should encourage the application providers avoid this entirely by exhibiting discipline when using shared resources. We can even point them at something like:
http://classworlds.codehaus.org/

--
Jeremy

[1] http://dictionary.reference.com/search?q=accident

Reply via email to