Return-Path: Delivered-To: apmail-jakarta-avalon-dev-archive@apache.org Received: (qmail 17222 invoked from network); 14 Nov 2002 00:13:27 -0000 Received: from unknown (HELO nagoya.betaversion.org) (192.18.49.131) by daedalus.apache.org with SMTP; 14 Nov 2002 00:13:27 -0000 Received: (qmail 15008 invoked by uid 97); 14 Nov 2002 00:14:28 -0000 Delivered-To: qmlist-jakarta-archive-avalon-dev@jakarta.apache.org Received: (qmail 14992 invoked by uid 97); 14 Nov 2002 00:14:28 -0000 Mailing-List: contact avalon-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Avalon Developers List" Reply-To: "Avalon Developers List" Delivered-To: mailing list avalon-dev@jakarta.apache.org Received: (qmail 14980 invoked by uid 98); 14 Nov 2002 00:14:27 -0000 X-Antivirus: nagoya (v4218 created Aug 14 2002) Sender: greg@home.nest.cx To: "Avalon Developers List" Subject: Re: services, bundles and versioning References: <1037192966.988.59.camel@jaques2> X-Key-fingerprint: 2DD1 7CD1 D3C9 FC81 FA66 69B4 7629 A1AE BDA1 1D2E X-Key-available: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x8DF5A1B From: Greg Steuck Date: 13 Nov 2002 16:13:46 -0800 In-Reply-To: <1037192966.988.59.camel@jaques2> Message-ID: <86heelxb2d.fsf@home.nest.cx> Lines: 62 User-Agent: Gnus/5.0808 (Gnus v5.8.8) XEmacs/21.4 (Honest Recruiter) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N >>>>> "Jakob" == Jakob Praher writes: Jakob> One of the problem is that the java versioning mechanism is I Jakob> think too weak. Loading is not effected by versioning since Jakob> Class.forName or ClassLoader.loadClass only take a FQCN. Versioning in general. I may be terribly off mark here and my green underbelly may be showing, but I don't understand the need for versioning. What problem is versioning supposed to solve? I see only one answer: * name space extension, in other words, not only do you specify that you need X you also specify that you want X-V. Then we add some arbitrary rules saying that V is compatible with a range of values that client specifies in during lookup (i.e. lookup for 3.0 can be satisfied by 3.anything) Versioning in Avalon. The only place in Avalon where versioning I see applies is component versioning. But we have better ways of determining component compatibility: component roles. So, instead of creating versioned interfaces we simply create *different* interfaces (java interfaces). The Role interface becomes fixed once and for eternity along with all contracts surrounding it. Event that normally triggers incompatible version bump up is an incompatible interfaced change, but in this case you simply produce a *different* Role interface. The old client wouldn't be able to use the new implementation anyway (it's incompatible). What's wrong with this model? Jakob> And, the Package class (in the reflectioning api) is only Jakob> available, when a class of that package already got loaded so Jakob> you could only do versioning by using a separate "throw away" Jakob> class loader, in order to get rid of a class that does not Jakob> have the right version. And class level is not the right place to put versioning at all in my view. Moreover, having explicit versions specification in the code is a plain violation of IoC (or so my understanding of IoC tells me). Jakob> this (.NET) I think ressembles more the shared object (or Jakob> dll) view, where you first load the shared object and then Jakob> look into the shared object to find the function pointer (or Jakob> in our case the type). Anybody else feeling that those are hacks from pre-historic era of weakly typed dynamic libraries don't apply anymore? Jakob> and the problem is you have to wrap everything to be used in Jakob> netbeans, to be used in osgi and to be used in eclipse in a Jakob> different way. Most likely because they have totally different component models, no? Thanks Greg -- To unsubscribe, e-mail: For additional commands, e-mail: