-no closures
Wrong.
- no lambdas
Useless.
>- no properties
Syntactic sugar.
- no templates
Wrong.
- no delegates, events
Delegate functionality can be achieved with reflection and Method class' methods.
- no partial classes
Wrong.
- no deterministic finalization
Wrong.
- no LINQ
https://github.com/nicholas22/jpropel-light
- no extension methods
Useless.
- no implicit interface implementations
You're right there.
- no optional parameters
Useless syntactic sugar.
- no adequate memory usage
Same with C#
- no fast applications
Java is quite fast.
- no sane IDE, no standart GUI
Eclipse is a better IDE than VS will ever be, not that you need an IDE at all. Swing (that can look native nowadays) is the standard GUI framework.
- no anonymous data types
Useless.
- no operator overloading
Useless syntactic sugar that makes your code unreadable and horrid; the lack of this is a Good Thing.
- no tail call optimizations
JVM can optimize recursion on return, wrong.
- no Silverlight, Windows Forms, WPF, WCF, XNA
Lack of this proprietary filth is a bonus.