And incoming Clojure/Scala/Ruby comments in 3...2....1... go! :)
And incoming Clojure/Scala/Ruby comments in 3...2....1... go! :)
http://en.wikipedia.org/wiki/Java_version_history
language changes in java since 2000:
JDK 1.3 synthetic proxy classes (seldom used)
JDK 1.4 assert keyword (seldom used)
JDK 5 generics, enums, autoboxing, varargs, annotations
JDK 6 nothing
JDK 7 project coin (collection of minor language tweaks)
As for the stuff they "ripped off from C#" I'd like to see you name some examples that weren't already present in other languages. If anything it could be argued that some of the newer C# bits are just ripping off Scala features.
Also, I thought real closures were introduced in 1.7? That seems like a big change to me.
Re: C# I was mostly referring to annotations for reflection. If they ever wanted to add first class getter/setter methods that would be cool, too.
Generics are definitely the biggest change, but not so much autoboxing (something that makes little difference to 99.9% of code).
The annotations Java devs use the most are usually @Override and @Test, unless you're using bloatware like Spring/Hibernate/J(2)EE which belongs in 2004. Annotations are useful, but not really groundbreaking for most code.
http://en.wikipedia.org/wiki/Java_annotation
In terms of first class getter and setter, I'd say take a look at Scala (or Groovy). Lots of Java devs are looking beyond Java the language, mostly because it has been incredibly slow to evolve.