- Subversion - Git is so much better in so many ways (it goes without saying that CVS should be allowed to die)
- JUnit - TestNG does all that JUnit does and more; what does JUnit even have to offer these days?
- Java 1.4 - Java without generics is just so much pain
- Java Web Frameworks - As far as I can tell, none of them adequately address one of the fundamental problems in web development, which is to simplify the creation of the UI.
- Ant - Ant has always been the world's worst build automation language; who creates a build tool without variables, loops and conditionals? We can do better (and Maven doesn't appear to be it)
- Checked exceptions - java.lang.Exception is possibly the worst class in the Java library; should never be caught nor thrown1
- Misuses of XML - XML has a purpose, and it's not as a programming language or configuration file format. Any notion that XML is anything other than a binary format is misguided
1API developers should be allowed to declare that they throw Exception to allow subclasses to throw whatever they want with impunity, however Throwable is the preferred thing to catch for catch-alls, and the entire exception mechanism in Java is woefully broken.