[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Java interface natural history was RE: "static" declaration



At 09:00 AM 8/13/2002, Daniel Weinreb wrote:


>Anton van Straaten wrote:
>
>>
>>Oh definitely.  Not having support for any implementation reuse mechanism
>>other than single inheritance is a harsh restriction, in a system that
>>supports multiple interfaces on classes, and I'm sure it inhibits use of
>>interfaces in Java.
>I don't think so.
>
>It was my experience, though, that my co-workers were somewhat hesitant to 
>use interfaces
>to their fullest, because they considered it a drag to have to implement 
>an interface, and then
>implement a base class that contains various default behavior. Having both 
>things seemed like
>too much work for too little benefit.  I, personally, think it's the Right 
>Thing to clearly separate
>the interface (the outward-facing spec) from the base class (a particular 
>bag of default
>implementation stuff that some implementations might want to use and other 
>might not), but
>I am not unsympathetic with their point and I don't have a Great Unified 
>Answer.
>
>In none of these cases did the need for multiple inheritance come up. We 
>worked on this
>product for several years and just didn't need multiple inheritance anywhere.

Are you saying that no body with experience with Common Lisp, said to you 
something like "I miss multiple inheritance"?  And nobody complained that 
they had to implement an interface multiple times.

Maybe it's because it's just one of the burdens of Java programming.  Get 
used to it.



>>>Your message made me curious about how interfaces are actually
>>>used in Java.
>>>Here's what i found by scanning JDK1.4's rt.jar:
>>...
>>
>>>Other jars could have a higher interface ratio, and certainly user code
>>>might have more concrete classes that implement those interfaces.
>>
>>I suspect that some of the third-party libraries out there might have
>>heavier use of interfaces, and I also have the impression that newer JDK
>>code uses them more heavily than was done in earlier code that's still
>>present in the JDK.  My experience is that in "modern" Java programming (as
>>opposed to the dark ages back at the dawn of time, around 1996), interfaces
>>are being used pretty commonly and appropriately.
>>
>>Anton
>In my opinion, if you want to see "how things are really done by Java 
>programmers", it is not
>a good idea to tacitly assume that the practices seen in the rt.jar 
>builtin library are good
>predictors of what Java programmers do.  The Java libraries were built up 
>over time and
>have not (and cannot) be redone from scratch.  Using interfaces used to 
>have a severe
>performance penalty and a lot of the libraries were developed under color 
>of that
>knowledge.

My analysis of rt.jar was just an intro.  When i checked that i had several 
hundred .jar files on my machine (many more than a year old), i didn't want 
to analyze them all.

I'm open to studying whatever jar's anyone suggests, I'm interested in the 
natural history of real programs.

k