Today I was reading about JDK 7 and the new language changes and I stumbled upon this InfoQ post. But what really grapped my attention is in the first reply to the post, here: 'Funny thing about Java, it's "what you can ADD to it" culture.', Vic C said
Few minutes earlier I was reading Alex Miller - Java 7 page and was thinking to myself the same, but in the good way.
My point is:
We have been adding, looking to add, and already added lots and lots of features to the language itself and yet keeping the backward compatibility. That's a hell of a work, I must say. It's very difficult to maintain that, for sure. Sun has been doing lots of good job.
But what about the new java developers? What about the old java developers?
Old Java developers would be having to learn more and more about the language and how it works and how to use it and its features. I do not complain about learning new things, but, it's the amount of knowledge that we; old java developers; need to learn. It's so huge and getting bigger everyday.
But the only thing that makes me able to continue is that I am building over what I already have learned. It's accumulative. That's what makes it, for me at least, a little bit easy.
But I have seen some developers who does not read articles online daily and does not keep up with what's new.
Believe me, they are facing a tough time trying to catch up now.
And what about new ones? Imagine the amount of knowledge they need to learn. Imagine how much info, starting from OO concepts, variables and what they mean, and ending with..... mmmm... is there really an end? I can't see it. I have been in the area for over than 6 years now, and since I started and there are always lots of things new to learn, and that's exactly what keeps it interesting.. ;)
It's very good that we have what we have now. But instead of the current roadmap we have for the Java SE which is simply add-more; we need to have the current roadmap:
1- Stop adding new features and adding new language changes for a while.
2- Remove all things that are just kept for backward compatibility. At least incrementaly on two versions.
3- Release more two versions of Java SE that would only be having bug fixes resulted from the previous step, step 2. Which I presume will be a lot.
4- With a much more cleaner, simpler, smaller version of Java resulted from the previous 3 steps, we can go on with adding more stuff to the language.
I know that JDK 7 is almost done. So, what I am saying should be after JDK 7.
Benefits:
1- Java will be easier to learn.
2- Java will be more robust.
3- JDK will be smaller
4- New developers will be learning easily
5- Old developer will have a chance to grasp the current changes made to the language. We need a pause to grasp. (I am talking about language changes, not JDK features.. ;) )
6- We will be having another chance for going to the 'add-more' stage after taking a deep breath.
7- JDK community will have a chance to really think of the new "required" changes to be added after that.
JDK is not just a product that needs a new release every year with new features and changes. It's a 'platform' that lots of products are built-on. It needs to move with major changes slower.