As every Java developer knows, Oracle bought Sun and the future of java looks qu
ID: 639546 • Letter: A
Question
As every Java developer knows, Oracle bought Sun and the future of java looks quite unclear, specially since Oracle wants to monetize the JVM. Java as a language has also been stale in the last few years, the non-inclusion of closures is one example (which might be included in java 1.8) At the same time, some new technologies such as Ruby, Scala and Groovy are being used to deliver complex sites.
I'm wondering if there are companies or organizations which are talking, doing spikes or starting to use a different technology, with the idea to stop using java for green field projects, in the same way that 15 years ago companies migrated form C++, perl and other technologies to Java. I'm also interested to know what are the impressions of this happening, for example: planning to migrate to a different technology in 2 years.
To be clear, I'm not asking which technology is better. I'm asking if your organization is thinking to leave Java for another technology.
Explanation / Answer
Not at all - in fact I'm investing heavily in Java as a platform at my company (a startup developing SaaS applications and tools for data mining).
Here are the reasons:
Picking Java as a platform doesn't mean you have to use Java as a language. We use Clojure as the primary application development language, occasionally dropping into Java where needed. But other JVM languages like Scala and Groovy are great as well.
I'm personally not worried about Oracle. The main implementation of Java will almost certainly continue to be open source (OpenJDK) and freely available. If Oracle did anything stupid then other big companies (I'm thinking IBM and Google in particular) have too much invested in Java to let the get away with it, and they could easily continue to develop Java without Oracle's help.
The JVM is a great execution environment. Cross platform, very high performance, extremely good optimizing JIT technology. It's close enough to native speed that I don't care about the fractional amount that it is slower than C/C++, and this overhead is more than compensated by proper garbage collection and a managed bytecode execution environment etc.
Java has a great ecosystem of open source libraries. In fact, I'd say it is the best ecosystem overall of any language. This means that most of the "heavy lifting" in terms of infrastructure has already been done, to an extremely high quality. And the fact that most things you need are open source means you don't have the cost (in terms of both money and management time) of obtaining licenses.
Eclipse is a great IDE and provides a fantastic toolchain for the development of robust enterprise applications. We use Maven, JUnit, Git/SVN integration and a host of other tools that are available as Eclipse plugins. It all "just works".
Finally, what are the other options?
.NET is the only platform with comparable capabilities and I personally like C#, but it locks you into Microsoft technologies (worse than Oracle/IBM IMHO) and doesn't have the same breadth of open-source ecosystem. Fine for Microsoft shops, but not if you want to control your own technological destiny. And yes, Mono is cute, but I can't afford to bet my business on a platform that may or may not be able to maintain a working level of compatibility with the .NET mainstream.
Then there are all the other great language that are very good at what they do (e.g. Ruby, Python, PHP, Javascript) but don't offer a compelling, comprehensive equivalent to the Java platform. The risk is that you have to start gluing a lot of things together in a slightly-less-than-beautiful architecture. Not a problem for building websites, quick and dirty apps, but less appealing for long term product development.
C/C++ is great for systems programming and games, but just too complex / costly / inflexible for modern web application development.
And then there are the beautiful languages that I love like Haskell, which are fantastic from an academic perspective but just don't have the industry adoption / ecosystem necessary to make them a credible platform choice. Also I can get most of the benefits of modern functional programming by running Clojure on the JVM.....
So yes, it's a complex decision. But I made the Java decision above all other options after a lot of considerable research and consideration. I'd still make the same decision today.
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.