I recently spoke at JavaOne India 2011 held in Hyderabad on 10-11 May 2011. While Sun had been holding a similar event for several years, this was the first time the event was under the Oracle banner. It was also repackaged & rebranded as JavaOne + Oracle Develop.
The conference naturally had many talks from Oracle about various technologies, including Java & the various developments in that space. I thought it would be interesting for developers to hear an independent overall perspective on Java. So my talk at the conference was titled “An independent, “ear to the ground” report on Java”.
Through IndicThreads.com, the IndicThreads Conferences as well as my association with Oracle ACE Director & the Java Champion program, I usually get to know user perspectives and the official vision from Oracle. So based on this, I presented a talk mostly addressing developer perceptions and recent developments. This article is based on that presentation.
Lets begin by what I think are some of the key challenges facing Java, especially over the past few years.
Uncertainty: Java developers’ sentiment over the past couple of years is perhaps akin to what a share broker would experience if he had invested heavily in what he believed was a sure winner, but is now getting all kinds of news & opinions, making him uncertain and jittery. This uncertainty I think has been the biggest challenge for Java over the last 2 years. Oracle has tried through its forums & events to address concerns, and things have improved in 2011 however there’s still sometime to go before people would be sure about the future of Java and Oracle’s commitment to it.
Fragmentation: Until a few years back, there were maybe 5 or 6 large corporates driving Java and while there were differences that got reported from time to time, it wasn’t felt that each had it’s own distinct agenda for Java. However today it is felt that Oracle is the primary force behind Java and you don’t hear much about Java from the other long time Java companies.
The fragmentation on the technology front is another challenge for developers. However this challenge is in a way a good one for the Java ecosystem. A few years back, especially with JavaEE there was a clear understanding on what were the technologies & architecture to use. An overwhelming majority of Java enterprise apps were built with Servlets, JSP & EJB. Today there are maybe 10-15 commonly used variants of technologies & approaches.
While this competition is good , it does pose a challenge as with no clear Java frontrunner, companies & architects today don’t just look at options within the Java world, but also those beyond.
Drop in Cool Quotient: This is a major challenge cause these days I hardly ever come across students in universities & institutes thinking of Java as the cool thing they should be working on. This hasn’t happened overnight or because of the Oracle acquisition but been a gradual process. It perhaps has been fueled by the lack of any game-changing Java news for several years.
When was the last time you read a positive report or blog about the Java language? For years now, the Java language has only had people writing about how it lacks X construct or Y syntactic sugar and how a certain language Z is going to take care of the woes of Java developers. I suspect that only those starting off with Java read good things about the Java language, in their text books.
So is the language & the syntax really that important? Or are the libraries, the capabilities, the ease of use & development the things that really matter to developers. Especially in the Indian context where most people work in large software companies with 200+ people and teams of 20+ , the language is really not that important. There are a zillion ways & tools to ease & speed up Java development. The language is certainly an important aspect of Java but IMHO its importance is overestimated. To repeat, it’s the libraries, the capabilities, the ease of use & development that matter most to maybe 95% of developers.
It does seem like maybe about 5% of influential writers & speakers in the community have taken up Java language bashing with all sincerity and their efforts have led to a perception that the Java language is an aging war horse & well past it’s prime.
An incident at JavaOne India 2011 was I thought reflective of the gap between reality & perception about the Java language. In a talk on Java 7, the speaker asked how many had heard of closures. As many readers might be aware, the lack of closures is something that is regularly held against Java. However of the about 500 in the hall, only 10 people said that they had heard of closures.
If you were to follow blogs & articles you would think that an overwhelming majority of Java developers are desperate for closures in Java.
This to some extent can be attributed to the fact that Java in India or China or Russia isn’t the same as Java in the US. In India and other places you have code factories where Java is meant to be robust, reliable, secure & easy to adopt. Developers out of college learn Java, use it for about 5-8 years and then move on to become managers. Few care about fancy additions or syntactic sugar.
Coming to enterprise Java, a blog stating that “Java Is A Dead-End For Enterprise App Development” was widely circulated in late 2010, which was followed by a poll on Java.net where over 70% disagreed. A few years back even the question would have been unimaginable. However it’s a fact that Java is being questioned today in all its forms including in the enterprise where Java has pretty much ruled for a long time.
So is Java a dead end for the enterprise? I think there is no evidence to believe that is the case. With JavaEE 6 developing enterprise Java apps is easier than ever before and combined with powerful tooling on Netbeans, Eclipse & other IDEs, JavaEE continues to be a formidable if not the best option for enterprise Java development. JavaEE has also adopted the good ideas from other frameworks, standardized those ideas and continues to be a great option for building robust & portable enterprise apps. JavaEE has also looked at streamlining things with the introduction of the Web Profile.
Again, if one wants to always build with the ultra latest idea in software development, that’s unlikely to happen with JavaEE considering the rather slow processes through which new changes make it to Java. However for software companies building enterprise apps, the latest idea or paradigm in software development is far less important that the product they build being easy to build, secure & robust.
Mobile is where Java has the most answering to do. It’s true that Java is still being shipped on millions of phones worldwide. However if you ask any small startup on their mobile strategy, the answer invariably is that they are looking to make it accessible via a mobile web browser, an Android app & an iPhone app. Even for mobile apps that are being built for large corporates, most are again looking to only support mobile web browser, Android & iPhone. So from a developer perspective, it today makes great sense to build expertise on Android & iPhone.
It is true that there are millions of feature phones and smart phones only make a small portion of the mobile market. However if we look at the apps market, smart phones constitute a far bigger share than they should considering their numbers. Also if you look at the trends, there’s a sharp upward trend on smartphone penetration as well as apps on smartphones, particularly Android & iPhone.
JavaME mobile apps continue to be built. However I suspect most of the interest is from phone vendors & network operators who want to provide those apps to sell more phones or want people use the apps & consume bandwidth. Other corporates, small biz, medium biz, startups are mostly looking at Android, iPhone apps and maybe also keeping an eye on Adobe Flash on mobile.
Oracle Google lawsuit would be putting some constraint on what Oracle can & cannot say about Google, however Oracle has to keep in mind that everything they say about JavaME is being compared with what Android & iPhone. Unless JavaME can demonstrate & project that it is not just good enough but a better option to develop with, it would be tough to get developers interested.
As regards Rich Internet Application platforms, there has been no real competitior to Flash for a long time. Java which provided in a sense the original RIA has long faded out of web frontends. However with the new JavaFX 2.0, Oracle is taking a fresh shot at RIA. JavaFX is nowhere near a serious competitor to Flash as yet, however I think it is something to watch out for the following reasons.
- Version 2.0 has moved to the Java language, dropping JavaFX script, while certainly will ease the learning curve.
- The ability to leverage other Java libraries & existing Java skills will get people & companies to try it out.
- It does have a good range of capabilities and is expected to be far more responsive than any Java web UIs in the past
- Except for maybe Microsoft, Oracle is best placed to get the JavaFX runtime to a large number of users. So in all probability, JavaFX apps will run fine on many machines.
A few days back Oracle has released a beta version of JavaFX that you could try out.
Cloud Computing has been one of the major transformations in software in recent times. While earlier everyone struggled with deploying, servicing and maintaining applications, you can now outsource them to an IAAS (infrastructure as a Service) or even a PAAS (Platform as a service) solution.
However both with Infrastructure & platform, come limitations of the cloud provider, especially with a PAAS. So unless a platform says that it supports a particular technology stack, it might not be possible to use that cloud provider. In this context Java is very well placed as most of the cloud providers do provide good support for Java. This is not the case with most other languages & technology stacks, giving Java a significant edge.
Another impact of Cloud Computing on Java is that even individuals, small companies which often stayed clear of Java as they did not have the capabilities to run the Java server infrastructure, now can freely develop with Java & then just run it on the cloud. Another impact this is bound to have is that while earlier only large IT services companies landed Java enterprise projects, we will now see even small & mid sized companies being more active in the enterprise space, powered by their new found ally in the cloud.
Developers tend to be very passionate, even fanatical at time when it comes to languages. So writing anything about any language is tricky business. People get offended even if you refer to a language as a scripiting langauge or dynamic language So I will stick to the term ‘other’ languages for the JVM.
These languages are great for Java as they bring in fresh ideas and trigger innovation. Also considering Java is friendly to these languages, they give developers the option to develop with Groovy, Scala, Clojure… and then deploy & run the application on their tried and tested Java infrastructure.
So over the past couple of years we have seen a flurry of articles about how X language is far superior to Java and might even replace Java. However as yet there is no evidence to suggest that is happening. While all the languages continue to enjoy loyal & passionate communities around them, none are anywhere near being compared with the presence and reach that Java enjoys, neither have any of them shown any real trend to break through & challenge Java. I wrote an article about this a few years back which could be relevant reading “Kill The Java Language – A Message For Scripting Language Leads”
There are some suggestions that polyglot programming (using multiple languages based on the need) will soon become the norm. Again I see no facts or trends to believe that such a thing will happen. A small minority might take up polyglot programming but considering that most developers struggle to learn & use one programming language, I really cant see them using multiple & switching as required. I am not blaming the developers, it is just human nature.
NetBeans & Glassfish
Almost everyone seems to have a different take on what Oracle stands for and what it hopes to do & achieve with Sun products. Many had expected NetBeans & Glassfish in particular to be gradually phased out by Oracle.
However so far we have seen that both these products continue to develop and do well. My personal take is that Oracle is putting forth the (Weblogic + JDeveloper) story to the traditional Oracle developers who come from Forms or similar bakground. Whereas (NetBeans + Glassfish) continue to be projected to the more techie communities & Java geeks. So while NetBeans & Glassfish work to implement the latest, JDeveloper & Weblogic seem to move in a more regulated fashion.
Riding The Change
Riding the Change was the theme for the 5th Annual IndicThreads Conference On Java that was held in Dec 2010. The idea was that yes, things are changing with Java but there’s no need for Java developers to worry or panic but instead there’s tremendous scope for them to ride the change to glory.
While JavaEE continues to be strong, developers I believe need to also look at Cloud Computing & Mobile Application Development. Both these domains promise rapid growth and in both cases Java is one of the best if not the best technology available.
So… go ahead. Ride The Change!