Even before Oracle’s purchase of Sun Microsystems, Java was at some serious crossroads.
For some brief history, Oracle bought Sun in January of 2010. Â The move led to questions of why Oracle would buy Sun. Â The answer has come in the form of lawsuits and the discontinuation of 2 high profile open source projects, OpenOffice and OpenSolaris. Â The most worrisome lawsuit is Oracle’s suit against Google’s Java based Android operating system. Â Oracle contends that Google can not use Java as the language for a mobile platform because Java’s license forbids it.
This news was followed up with Apple deprecating Java. Â The has the effect of prohibiting Apps written for the new App Store from using Java as the programming language. Â Their developer agreement says:
3.3.1Â Â Â Â Applications may only use public APIs and frameworks included in the default installation of Mac OS X or asÂ bundled with Xcode as provided by Apple, deprecated technologies (such as Java) may not be used.
Apple seems to be giving Java the Flash treatment. Â I am curious what Steve Jobs will give as an excuse for inhibiting developers from using Java. Â For Flash, it was battery, multi-touch, and user experience. Â As far as I know, Java doesn’t have these limitations. Â I think the real reason is cross-platform code is bad for Apple domination. Â Over the past few years, Apple had committed itself to Java. Â Apple knew that their market share was not enough to get developers to write code that would only work on Mac OSX. Â Java came to theÂ rescueÂ by allowing a developer to write once, test everywhere, and deploy on Windows, Linux and MacOSX. Â Now, they feel their market share is enough to force developers to write directly for their platform.
These are definitely the darkest days for Java since Microsoft tried to kill it. Â But is Java dead?
Oracle has submitted the feature sets for JDK 7 and JDK 8. Â JDK 7 will improve the performance of dynamic languages Ruby or Groovy running in a JVM. Â JDK 8 will have the most anticipated features. Â It will improve the dreadful Calendar object. Â IMHO, the biggest feature will be the addition of Lambda Expressions which will give Java more functional programming features like closures.
But there is a big bump in the road to ratifying JDK7 and JDK8. Â The JavaÂ CommunityÂ Process (JCP) ExecutiveÂ CommitteeÂ needs to approve the features. Â The Apache Foundation, a member of the Â JCP, has already announced their intention to leave it because of Oracle’s recent moves.
While the future of Java is murky, there are rays of hope. Â Java, as a language, has not changed much over the years. Â In comparison to itsÂ derivativeÂ C#, it has changed even less. Â C#’s syntax has evolved and improved over the years, and Java lacks most of these new features. Â Groovy allows Java programmers access to many of the language features that C# has. Â Groovy allows access to functional programming and operator overloading now and it runs along Java code. Â I’ll save the particulars of Groovy for another post, but Groovy allows Java to have the features that it needs.
I am very concerned about the future of Java. Â It faces problems from the company who owns it, its community, and its future technology direction. Â Since Java is an open platform, new things, like Groovy, can be created. Â There are high quality, open source virtual machines. Â Java will live on, but it is up to Oracle to give Java an open and bright future.