Date: Fri, 28 Jun 2002 17:10:20 -0500 (CDT) From: John Utz <john@utzweb.net> To: j mckitrick <jcm@freebsd-uk.eu.org> Cc: freebsd-java@FreeBSD.ORG Subject: Re: Anything like COM in Java? Message-ID: <Pine.LNX.4.44.0206281627291.29068-100000@jupiter.linuxengine.net> In-Reply-To: <20020628185157.A33576@dogma.freebsd-uk.eu.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 28 Jun 2002, j mckitrick wrote: > | with the risk of being overly flip; you like COM because you haven't > | written any full size multiple developer products with it yet! > | > | it get's very fragile and fiddly when you get up to the multiple 100's of > | interfaces. > > We have quite a few in ours, but not hundreds. There are basically 2 > things I like about it: > > GUIDs, so if I say I want a certain version of an interface, > the GUID guarantees it is. really? promise? nobody ever adds a new method to the same interface? your dev team get's it perfect the first time? if they dont get it right the first time ( a typical case in any development effort ) what happens then? new interface and new guid? or does the new method just get added to the same guid? has anybody been dumb enuf yet to think that if they dont tell anybody about a method that they added, then it's 'secret'. hoho. it's secret until somebody runs that broken-ass* ObjectView?(is that it, i cant recall) thingy and gets themselves a new header and idl file complete with the 'secret' methods. *in vc6, which was the last platform i used COM on extensively, the idl wouldnt compile because it was broken. i actually got hired into a new group at my old job based on the fact that i figured this out and fixed the mis-emitted idl so i could use it. > It breaks down to straight function calls for in-process servers. No > overhead, less work than CORBA. hmm, it breaks down to a call to a function pointer in a vtable, so it's not *quite* that simple...but certainly less involved then CORBA, at a cost of being trapped in a single OS. There *was* a DCOM port to a few things, but it met with less than enthusiastic support. > | i could explain some more practical and pragmatic challenges associated > | with COM ( which i agree is pretty darn nifty in theory ), but this is the > | freebsd java list. > > Please, email me privately. ;-) > > | umm, CORBA? are you trying to interoperate with a non java app? any non > | java app has to speak the same binary interfacing standard. > > What I really want is the total separation of functionality that > components can provide. Now, the ugly part of COM is the type library. > That's the necessary link. yes, and you may eventually find yourself groaning vigourously when you realize that a needed interface change is going to require you to trivially edit and rebuild a whole bunch more files than you would have otherwise because of this additional requirement. this is what i meant about being fiddly. with the caveat that i have only read about it and not coded with it, the broker idea in corba seems to me to be a better solution; u do it your way, he does it his way, code the broker to sort it out. > What can I do in Java that would allow one class to dynamically bind > (early) to another? > > I'm rather convinced at this point that components dramatically improve > project organization beyond a certain point. organization is more rigidly enforced, but *changes* to organization are a more annoying pain in the ass, and in a development environment ( *not* a *product* interoperability environment ) that counts for a lot. > My current project uses a great deal of inheritance, but components > really separate functions into contract interactions. eek, worst of both worlds in my opinion, but it's only my opinion. now you have to go back and fiddle with even more things if you decide that you want to push back some funtionality into a parent class, or to completely rethink the problem (refactor). I think that this at some point becomes a /usr/X11/bin vs usr/bin/X11 issue, which is my shorthand for the idea that the pain is the same, you just are choosing your pain budget differently then i do. i am sure that over the course of the next few weeks, other things will come up, but i think that i've hit the hi points from my perspective. > How can I do this in Java? i'm guessing EJB, but that's a guess absent experience. > Do Interfaces work well enough for this? no, i dont think so, because the implementation of the classes that you are passing as arguments to the methods that implement the interfaces are uncontrolled. > Is there a Java binary equivalent, so the binding takes place at > run-time rather than compile-time? let me know what you come up with. to return to my thoughts on COM, i think that it's really quite cool for defining inter *product* interfaces. for example, it's tres bitchin' to think of being able to add a new secure vpn mail protocol to outlook as a COM object and have it automagically show up ar a replacement toolbar for the default toolbar in outlook. it's also worth recalling that WinAmp and XMMS and gimp and anything that has 'plugins' have a similar interface. but, to return to my outlook example, *Nobody's* Done It! furthermore, nobody sell's 'improvements' that i am aware of ( by that i mean a 'thing' that implements a GUID and is cooler than the original implementation so you want to buy it and replace the old one. COM was a solution to a problem that nobody has really seemed to care about MSFT continued to fiddle with it so that it would be simpler to use, but they've basically given up. there is an absolutely hilarious verity stob essay that i shared with some of my other COM aware collegues: http://www.ddj.com/documents/s=1504/ddj0108vs/0108vs001.htm hope u get a laff. it's been fun to think of this again... > jm > -- John L. Utz III john@utzweb.net Idiocy is the Impulse Function in the Convolution of Life To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-java" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.LNX.4.44.0206281627291.29068-100000>