I've seen the news yesterday that Java 7 and Java 8 passed but the majority weren't very happy. Can anyone clarify what consequences does this have on Java and the community ? What licenses did Oracle change to be exact? A lot of people think that this might be the end of Java. Should I go ahead with learning Java or should I maybe move to .NET ? I don't have any preference as to one or the other, but I'm a bit concerned now with all this pressure surrounding the Java ecosystem. Since time is important for everyone and time is what I have less have these days I'd like some advices from the community here.
The major consequence is that the JCP (which ratifies JSRs) is not a completely free and open place for the various stake holders in Java to agree on technical and licensing issues. Was this ever actually the case? YMMV
A secondary consequence is that Apache foundation will leave the JCP - so that's one part of the community who won't put their vote to Java technical standards (so the community is less well represented as a whole). Other independent academics etc have also left the JCP, so arguably its dominated by corporations now (which only represent part of the community).
An arguably larger concern is the Google vs Oracle lawsuit, but that's headed into mediation, so I'm optimistically hoping that the two companies will settle out of court and get mobile Java moving again.
No license were changed by Oracle. Sun had a FOU (Field of Use) restriction on the TCK (Technical Compatibility Kit) which basically stopped a rival open source implementation of Java (Apache Harmony) from being allowed to run against the TCK and therefore call itself 'Java'. Oracle have simply chosen to continue that stance that Sun had (which many people are upset about since Oracle voted against that stance in the past).
It's absolutely not the end of Java - 10,000,000 or so developers, an incredibly diverse and vibrant community, languages on the JVM, conferences sold out in matter of days, JUGs growing, open source frameworks that don't go through the JCP have massive market share etc etc.
And besides, there's no compelling alternative to Java yet and what ever that might be it's going to have to be easy enough for 9-10 million developers to easily transition, not too mention all of the enterprises out there (you're talking trillions of $ relying on Java). I'm sure someone's going to weigh in here ;p
My advice is to learn the technology stack that you're passionate about, both Java and .NET eco-systems are going to be around for a long time yet!
Hope that helps :)
My guess here is as good as anybody else's. I also listened to Oracle keynotes to Devoxx conference (>3000 people, biggest Java conf in Europe) and to Jug leaders, and my opinion is that Java will be moved by Oracle in a model much closer to .NET that it was before.
There are good things in this as bad things, for sure it will be different.
It refused to give to ASF Harmony project (a clean room implementation of Java) a free version of TCK. Actually it didn't change anything from Sun's policy and ASF was complaining since 2007. Only that now there is no hope for a solution. At the moment project Harmony is quite useless, without TCK you're subject to Oracle lawsuits unless Oracle-Google will result in a complete discharge of Goole (unlikely). The current TCK license in OpenJdk has several limitations, for example you cannot use on embedded or mobile and you cannot implement a subset or superset of java features.
As I said before I think that it'll be a change, but in no way the end of Java. Also as Java will became more similar to .NET could be that it will be .NET to not be able to survive to a direct competition.
no company or ecosystem is perfect... java is free-er than the .NET environment that's why more used, but not total free... don't bother too much with that in your position
and you should have a prefference (therefore go make one) or just get a job in whatever [pays better] and don't care
The future is likely a higher level of abstraction/framework. Scala/Clojure on server and JS+markup client. The future on the server is highly parallel and implicitly typed (not the huge legacy painful frameworks from Java/.NET).