There is a lot of people in these forums that have claimed their animosity towards the aparently weakness of the java language when compared with other oo languages.
The biggest offender is the last implementation of java temaplates and still the lack the multiple inheritance.
However you guys have a possible exit in Eiffel. More precisely the freeware SmartEiffel compiler:
This is not a compiler in the proper term but a frontend to c++ and a compiler for java classes.
This languages is being developed by some univ dudes as a research project and suports the entire Eiffel architecture. See research papers in the middle of this page:
http://smarteiffel.loria.fr/technical/technical.html
Eiffel suports multiple inheritance, rewriting of class and member function names, and full generics.
What got my atention is not only the possibility of creating java aplications with Eiffel but the way they handle templates an inheritance. Aparently Eiffel can do a couple of nasty and very tasty tricks like:
-> Turning virtual methods static when the compiler detects they don’t use/require dynamic binding.
-> Inlining of previous methods.
-> The compiler can detect when generics can be decided staticaly at compile time. If this is not possible the compiler will resolve generics at runtime by adding he required code.
-> When using SmartEiffel as a frontend to ansi-c it will attach the SE library to it that will do grabage collection in c code by a method explained here:
http://smarteiffel.loria.fr/papers/papers.html#ISMM98
Mark and Sweep algorithm anyone ?
What may be vexing to Sun is how SmartEiffel implemented generics. In Eiffel generics are neither static or decided at runtime. The policy of the creators of that language is that they should NOT throw to the backs of programmers the decision of when to use static generics (decided at compile time) or dynamic generics with runtime info attached to the classes. It’s the compilers that does this automaticaly with no sacrifice for performance.
It seems a good idea. Im willing to guive a try to SmartEiffel. Besdies there is also the bonus to be able to translate Eiffel to both ansi c or java classes without having to change the code and it’s possible to easly interface to c code and java code with a minimal lost of performance when doing it or so they say.