With tsunamis, melting nuclear power plants and Mayan prophecies aligning perfectly, the surreal is becoming real these days. Meanwhile, back in Javaland, I’m still sorting out the real from the surreal as I digest the 2011 edition of the server side Java symposium I checked out last week. I got my dose of promising ideas that will create real technologies in the next 12 months. I also got a taste of the surreal; things that just aren’t right. Here’s my distilled the list for your intellectual enjoyment.
Real - Mylyn:
A real idea whose time has come. Mylyn is a task management framework that integrates various ALM (application life cycle management) tools together. It allows you to create tasks and tie them to your code, IDE and bug tracking system. VMWare’s Code2Cloud augments this idea by integrating the entire build system – from source code to production deployment – using mylyn and other tools. It’s like having a conveyor belt for your application from your IDE to your cloud-based production environment and back again. No more building your own custom-made build, test, deployment system. You have one contiguous system from code conception to production system running on WMWare’s platform.
Surreal - My Lining
up at the Apple store to get an iPad. No product merits that kind of loyalty no matter how good. Yet, there I was, standing in line one early morning because "they just might run out
" (and they did). How can it be that a company so good at design is so bad at grasping just-in-time inventory management? Could this be a manufactured
shortage used to generate buzz? So what does this have to do with this article? Mr. Jobs has hypnotized people into doing crazy things - like parents using their toddlers to stand in line with them to circumvent the 2-ipad-per-person limit. This kind of fervor in anything is just plain dangerous because people lose perspective on things. Speaking of losing perspective, what’s with that whole closed IOS ecosystem? Ipad/Iphone apps can only be developed with Objective-C on a Mac using Xcode. Forgive my contrarian opinion but why Objective-C? It has nothing on Java – not the mind share, not the garbage collection and not the innovation occurring all around the Java ecosystem. Apple is starting look a lot like the Evil Microsoft Empire of the 1990’s it rebelled against. Never mind Gaddafi – we’ve got our own dictator to topple.
Real - Running your app on the cloud:
Sure cloud computing is still young and there are lots of design mistakes yet to be made but there’s no going back now; cloud computing is for real. Java needs to drive innovation in this space. Fortunately, it is well equipped to lead just like it did with the nascent Internet in 1996. It has a built-in hardware abstraction mindset (write-once-run-anywhere) and this is already compatible with the cloud which treats hardware as fluffy stuff you need not worry about. Java also needs to get in the PaaS space where cloud vendors offer JEE platforms upon which to build apps. One such cloud vendor is Cumulogic but more are needed. JEE 7 is said to be all about cloud integration. Hopefully, it won’t come too late.
Surreal - Testing your app on the cloud:
You engineered your app to run on the cloud and divested your racks of hardware. What about load testing hardware? It turns out the cloud is not so great after all for load tests. You never know which other tenant is sharing your physical resource and may get different benchmarks results depending on the time of day, position of the moon, etc. Plus, it costs you a fortune because you’re billed by the CPU clock. Ouch! This is one of those cloud computing gotchas that needs to be addressed.
Real - The number of languages running on the JVM:
Jruby, Scala, Groovy, Closure, Jython, Rhino and others all run on the JVM. Jruby and Scala are real languages ready to solve real problems. Jruby is pushing the envelop with scaffolding which enables developers to write web apps quickly. This kind of innovation is being fed back into Java. Closures, whose prominence came from functional languages, will be part of Java 8 (due end of 2012). As well, the JVM is being adapted so that these languages can generate their own byte code directly in the JVM (otherwise known as JSR 292 – dynamic language support). It’s a symbiotic relationship that’s good for all.
Surreal - The number of web frameworks running on the JVM:
This, on the other hand, is surreal. There are a dozen or so web frameworks for Java (Struts, Spring MVC, Wicket, JSF, Tapestry, Stripes, GWT, Grails, Rails, Flex, Vaadin, Lift, and Play) and no dominant player. Sure they each have their specific web uses but it is bad for Java because it complicates the life of software designers who have to choose the right one. Ruby has Rails and this makes it easy: one language to learn and one language to rally around and drive the ecosystem. It ends up costing market share for Java and leaves the door open for PHP and ASP to dominate (which they do).
Real - NoSQL (As in “not necessarily SQL but SQL when necessary”):
There are some problems that relational databases simply cannot solve. For example, achieving massive Internet scale has proven to be impossible. Sharding arguably gets more scaling mileage out of relational databases but becomes unmanageable as data sets expand. Working with non-relational databases, such as Hadoops’s map/reduce, Google’s BigTable, is the new reality in achieving massive scale.
Surreal - NoSQL (As in “no SQL - ever!”):
Thinking that every storage problem is well solved by cloud storage technologies approaches the surreal. The relational database will remain entrenched in enterprise computing. It is still the best way to solve problems that require synchronous consistency. It just won’t be the only game in town anymore.
Real - Java:
It's real. It’s been around for more than 15 years and continues to be the language with the biggest market share. Sometimes, it seems boring and eclipsed by other flavors of the month but hard facts say otherwise. Java even has even more market share than C which has been around for more than twice as long. It remains relevant even in the age of cloud computing and functional languages.
Surreal - Those who dismiss Java.