Monday, July 27, 2009

Java Developers' Feelings about Java SE 7

The current Java.net poll question is "What is your view of the emerging JDK 7?" As of this blog post, the results are pretty mixed. Just over 40% of the 280 votes are for strongly positive replies of "major step forward" and "important features" while another 40% of respondents have chosen the strongly negative response "most significant problems are not addressed." The rest of the votes are mostly for the lukewarm response "typical JDK release."

In some respects, I am a little surprised that there isn't a higher percentage of dissatisfied respondents. With all of the angst expressed online regarding favorite features excluded from Java SE 7, I expected greater disappointment. It may be that some have resigned themselves to missing a favorite feature or two or it may be that many Java developers feel that the features still planned for Java SE 7 are compelling enough to warrant one of the two more strongly positive results.

The comments on this poll are particularly insightful. These comments seem to validate my own experience and feelings: improved modularity is something to be excited about in Java SE 7, but it would be nice to have a better date/time API and it would be really nice to have reified generics.

In general, I could have voted on a couple of the responses. Although I would have really liked to have seen some of the cut proposed features make it into Java SE 7, I am looking forward to better modularity, null safe operators, improved exception handling, and automatic resource management support. A JVM feature outside of the Java language that I look forward to is the improved support for dynamic languages.

6 comments:

Jeremy said...

I think that people who cared left.

I still like Java, I still code Java, but I am worry about its future. The people that are leading Java seems to be more concern about keeping it it plain and old rather than keeping up with the developers requirement and styles.

Sad, but I guess everything has its life.

Anyway, I still think that Java is a good bet on the server-side.

Yardena said...

Unfortunately there was no option in the poll for "both B and D". I can explain my "positive" ("B") vote on that poll, despite my uncertainty and even pessimism regarding the future of Java. Invokedynamic. Even the poll title says JDK7, not Java 7, and though the reason for that naming may have been political (JSR/spec trouble etc.), it also reflects the reality in a way. The focus now is more on the JVM platform, than on Java the language. Invokedynamic will help many other languages on top of JVM, including (surprisingly perhaps) Scala, which might use it for better structural types implementation.

Unknown said...

If reified generics is on the top of the list, that just shows how whiny and dramatic Java devs can be...

C# has generics with no type erasure, and I've still had better experience with Java generics on real-world projects due to a cleaner syntax and better handling of certain edge cases.

For example, on a recent project, I found there is no easy way to do this in C#:

for (Class classInstance : classArray) {
genericMethod(classInstance);
}

Java devs are just more skittish and pessimistic.

@DustinMarx said...

Yardena,

I believe there are probably many Java developers who would have liked to vote for more than one option as you suggested because JDK7 is certainly a mixed bag in many peoples' opinions. Thanks for leaving the comment.

@DustinMarx said...

Giovanni,

Thanks for the feedback. It is interesting to read your comparison of C# and Java generics implementations. I certainly prefer Java with generics over pre-Java 5 without generics, but I would still be very excited to have reified generics.

Dustin

@DustinMarx said...

Jeremy,

Thanks for taking the time to provide feedback. I also still like Java, still code in Java, and definitely feel Java is one of the strongest options out there for server-side implementation. There are a lot of things I'd like to see added to Java, but it already has many great features and I really like some of the possibilities on the JVM.