Friday, April 9, 2010

Further Analysis of Java Platform Survey Results

I wrote about some initial observations and issues with a recent Java platform survey earlier today, but couldn't help myself and downloaded the raw data and did some further analysis myself and came across some additional interesting observations.

First, I dug into the Java EE app server data and like Rich fixed some of the grouping, specifically trying to get proper JBoss and Tomcat numbers.  Our numbers differ a bit as I think he may be double counting a bit for Tomcat and JBoss which I made sure not to do.


I've ignored Jonas/JRun/Jetty/Orion so the other likely represents GlassFish and Geronimo.  My chart shows JBoss behind WebSphere but ahead of WebLogic.

Since multiple answers were allowed though, it is interesting to see which combinations are most common.


Here, Tomcat is clearly the preferred second app server in a dual strategy, but perhaps surprisingly, there is a fair number that have both WebSphere and WebLogic.

Last, I took a closer look at the operating system data.  I first combined the different Linux responses into a single one.


As I mentioned in my earlier entry, Linux usage is nearly surpassing Windows and Solaris is well behind those two.

Next I looked at what operating systems were commonly included in the same response.



Not surprisingly Windows and Linux are the most common combination and the combinations with Solaris fall behind with Linux and Solaris slightly behind.

These results may match what you'd intuitively expect, but it is always good when the data backs up your intuition.

Java Platform Survey Results - Flaws and Observations

I love surveys and analyzing the resulting data from them, so was interested to take a look at Replay Solutions write up from their 2010 Java Platform Survey.  Unfortunately, as is the case with many survey's, the way the data is presented has some issues that could result in folks making the wrong conclusions.

Rich correctly pokes holes in the report pointing out the strange grouping of results, the significant "other", and the egregious omission of GlassFish from the survey (quite possibly the bulk of the 18% "other").  If GlassFish was even only half of the "other" it would be 9% and equal to Jetty and way ahead of Jonas/JRun/Orion (which were grouped together for some reason) and Resin, each at only 2%, which would seem to clearly justify GlassFish being called out on its own.  They do provide the raw data which is fantastic, but re-analyzing the data can't fix not asking the right questions.

But there were a few other items in the report that I found interesting.

The "most important Java IDE in 2010" is, no surprise, Eclipse, but NetBeans is a pretty solid #2 at 17% ahead of JDeveloper at 12%.  This would seem to support Oracle's decision to not kill NetBeans, but it is still unfortunate that it appears to be being relegated to a minor role.

And given all the noise about the Cloud, only 14% of the respondents indicate they will be deploying to the Cloud in 2010 with an astounding 67% having no plans.  Now I'm sure the adoption is still way up from 2009 and 14% is still significant, but the IT industry still appears to be cautious about going hole hog into the Cloud.  For those looking to use the Cloud, Amazon EC2 is still dominant at 13% but with "other" at 14% there seems to again be a missing option in the questions.

As far as operating systems for deployment go, Windows is no surprise leading at 57% but with Red Hat Linux at 35% well ahead of Solaris (18%) and other Linux variants close behind Solaris (SUSE 12%, other Linux 16%), Linux is arguably threatening Windows for the #1 spot.

Last, it is a bit of an odd question on frameworks and services as options to answer included everything from Spring to JMS to ESBs, but it is interesting to see that messaging/integration technologies like JMS and ESB at 29% and 24% are well ahead of Swing and JPA (21% and 15%) and not that far behind Spring and Hibernate (36% and 37%).

As always, data is fun to look at.

Thursday, April 8, 2010

links for 2010-04-09: iPad review; Google Trips/Tricks/Hacks; iPhone Dev Agreement bans code gen; GrandCentral to Google Voice; ELB Sticky Sessions; iPhone OS 4.0 "me too"

First impressions of Amazon Simple Notification Service

Amazon introduced their new Simple Notification Service (SNS) earlier this week and with a background and interest in integration and messaging I had to take a look.

The sign-up process is simple enough and I added access to it from my existing Amazon Web Services account and was pleased to see that current pricing includes a Free Tier that provides 100K requests and notifications (1K e-mail notifications) for free.  With that, I launched into the getting started guide.

I downloaded the CLI (minor nit, the guide gave the wrong pointer to where to download it, but was easily found), already had Java installed, so I set the required environment variables and was off an running.  There was a mention that the CLI was for Windows and Linux, but I forged ahead on my Mac figuring it would just work, and thankfully it did.

I followed the guide to create a topic, subscribe to it using e-mail, publish a message, and get the notification.  It all worked very nicely and as one would expect.  So, it works, but using a command line tool to send myself an e-mail isn't terribly useful or interesting and if that is all I did, this would be a pretty boring blog entry!  How about something more interesting then?

I have a weather station set up at home along with a web-site for viewing the current weather and uploading historical data to the Weather Underground.  I find myself checking the current conditions periodically, but polling for that kind of thing is a bit cumbersome.  It seems like having a notification pushed to me when certain conditions occur might be more useful and enter SNS to help solve that for me.

So, I wrote a script that I have cron run every 10 minutes that checks the temperature and pressure and if the change is greater than a certain threshold, publishes a notification to my "Weather" topic.  I'm then able to subscribe to the topic so that I'm sent an SMS when a weather notification is published.  Using SNS, I was able to set this up in a matter of minutes and now have something that will just run for me from now on.  Note that I did this on Linux as that is what is running on the machine my weather station is connected to so indeed it does work on both OS X and Linux.

One might ask, why use SNS to do the notification when I could have just had my script do it?  Great question, and if my only goal was to do just this notification for just myself, just hardcoding it in the script would be fine.  But using SNS decouples the components of the application that gives more flexibility and allows the consuming services to be independent of the producer.  It enables new styles of programming centered around asynchronous messaging.

For example, what if others want to also get the notification?  Or if rather than just sending an e-mail I'd like to have a consuming service log the notifications or perform some other processing on the data?  By using SNS to decouple the services, this is easily possible by simply adding subscriptions for each new consumer and I can avoid having to modify or maintain my script with details it really shouldn't be concerned with.

With SNS Amazon has a nice complement to the Simple Queue Service (SQS) that has been around for a little while.  Interested in learning more about asynchronous messaging?  Give one or both a try.

links for 2010-04-08: C overtakes Java; Amazon SNS; Statistics and Data; Oracle and MySQL; iPhone OS 4

Tuesday, April 6, 2010

links for 2010-04-06: Amazing photos; GlassFish Roadmap; Germany anti Google; No Flash on iPad, no problem; BPM about to explode

Monday, April 5, 2010

links for 2010-04-05: Limits and π; Everything a game?; Rimini vs Oracle

Friday, April 2, 2010

links for 2010-04-02: Integration is the new Innovation; Danger of Freemium; Should you buy an iPad?

  • Integration is the new innovation - It is true.  Name an application that is written from scratch.  The majority are an assembly that use a web/app server, some middleware, frameworks, libraries, etc. along with some new code to deliver an integrated solution.
  • A case study: The danger of freemium - Letting people use your service for free does introduce a different dynamic that must be addressed.
  • Should you buy an iPad? - Your answer in a tidy flowchart.

Thursday, April 1, 2010

links for 2010-04-01: NoSQL = Manual vs Auto; Automated Journalism; Scatterplots with R; Will the cloud rain cash?; Bing killing OpenOffice?; Logarithms