Skip to main content

Which language feature would you like to see removed from Java?

21% (196 votes)
1% (9 votes)
11% (103 votes)
11% (107 votes)
5% (46 votes)
Something else
5% (47 votes)
I don't want any language feature removed
46% (426 votes)
Total votes: 934


Ditch annotations

Annotations/metadata have no place in a programming language.
They're there purely to move the burden of work from the editor/compiler/IDE onto the programmer.
True metadata shouldn't exist mixed in with real code. If you want it, use external files which software can read and interpret. Just when (most) everyone had stopped hardwiring tons of stuff in their code and started using properties and XML configuration files, Sun goes ahead and reverses the world by dictating that all that should now be part of annotation classes which are hardwired into the rest of the source for the ease of creating tools.

Another thing that should be ditched is the constant feature bloat of every new version.
And while we're at it let's also ditch every single deprecated method and class, and a lot of legacy classes that are not deprecated but long since replaced by more appropriate alternatives (think StringTokenizer, Vector, and the like).
I'll let you keep the XML and RegExp libraries for now, though IMO those should also not have been included as core language features but as optional addons.

Something Else

For those who voted "something else" please list them. My two biggest complaints are the distinction between primitives and objects and static imports. I have yet to see a good argument for the use of static imports. This construct polutes the namespace and makes it harder to track down where something is defined (unless using an IDE). It's just as well that I'm not forced to add static imports into my own code (but I still must understand them). Auto-boxing was a half-baked concept to remove the distinction between primitives and objects. Make Integer et al mutable and be done with primitives.

What is the point of removing any features?

Since every feature added in Java is backward compatible; even the most controversal feature can be de-coupled from the rest without any pain.

As a result, people who are not entirely comfortable with, or are finding it hard to learn, a certain feature in the Java Language could just go away and ignore such feature without disabling them to use Java at all.

These people just need to bear the consequences of not being able to, or inefficiently to, perform certain tasks that the ignore features have to offer. Period

What is the point of removing any features?

You cannot just ignore some features. For instance auto-boxing will allow you make an error, like performing arithmetic on an Integer object within a loop, which would have been caught by the complier in the past. You could easily end up creating many needlessly objects, and you'd never realize unless it was profiled.

What is the point of removing any features?

If you need to use an API that uses enums, how do you avoid the use of enums yourself? Backward compatibility allows old code to run, but does not guarantee that you can avoid new features in newly written code.

What is the point of removing any features?

The parent post is plain wrong. Programming is not only about writing the code but also about reading other people's code. If the other people start using the esotirc features everyone has to learn them. So such "features" introduce really big cost to the projects written in java. Period. (sorry but I could not resist).

What is the point of removing any features?

exactly - otherwise people wouldn't complain about C++ being too large a language. I have seen readable perl code written by disciplined coders, but that doesn't mean half (most? all?) of perls language features should not be removed