I, Me and Myself

Twitter Clients:Adobe Air is Java Swing all over again!

In Technology on April 25, 2009 at 3:33 pm

I was looking at a listing of the most popular twitter clients as of April 25.

Here is what is interesting. The second most popular client is TweetDeck, an Adobe Air application, which by the way can run on any OS. Incredibly just behind TweetDeck is Tweetie a native Mac OSX client, that too with about 10% market share. The thing is Tweetie didn’t even exist 7 days ago. It was launched few days ago, got some momentum from a Techcrunch coverage, and here we are 7 days later; it is among the top of the leader board. WOW!

This also confirms one of my theories. People hate Abode Air apps. First there is the obvious reason. AIR apps take bucket loads of RAM, and are comparatively slow to respond to user actions. The second  issue is a subtle one. An AIR app does not look like a native application, mainly because it uses a different font rendering mechanism. The GUI therefore looks alien and non native-sh.

So why is TweetDeck at number two? Simple, there are no native Windows clients worth using. Blu and Digsby could be game changers, but they still need some refinement. There are no twitter clients for Windows, which you can compare to native Mac OSX clients like  Tweetie or Nambu. The user experience is just awsome. The day Digsby or any other native windows client can offer the same functionlity as TweetDeck, users will flee these Adobe Air applications like plauge.

The other interesting thing about the list, is the number of iPhone apps that people are using to connect to twitter. TwitterBerry a blackberry app is popular too. At this rate Apple and RIM should rename their phones to Twitter Phone 1 and Twitter Phone 2 respectively!

But back to the main issue. Why is Adobe making the same mistake that Sun made with Java Swing? I think they even hired Dr Hans Muller, who used to head the Swing Team at Sun. No disrespect to him though. Genuinely nice person and a visionary in his own right.

A bit of background. I have written applications like Graph Editors, Data Entry Forms and Visualization Tools usign Java Swing for about 6 years while I was at Connectiva Systems, so I know S-W-I-N-G.

When I look at Adobe Air, it reminds me of the same problems that plauged Swing circa 2004. No native font rendering, bad start up times, inaccurate simulation of native widgets, slow paint and redraw times….

Swing back then, was just not good enough. It took Chet Haase at Sun (who too is now at Adobe) years and years of hardwork to do native font rendering, graphics accleration and better integration with native themes, so as to make Swing Applications look, feel and perform like native apps. Today’s Netbeans and Intellij which are built on Java Swing, are a lot more usable than say in 2004.

Of course, Adobe Air has it’s strenghts. The same strenghts that Swing had. Visualization Tools, Graph Editors, Dashboards and Scorecards, just rock on Air, as they did with Java Swing; but not Twitter Clients, Text Editors or Data Entry Tools. They are much better done in native code. The success of Tweetie confirms this.

So, now that the whole Swing team is at Adobe; How long will it take for them to fix AIR?

Well I don’t know about you, but I am running out of air.

  1. I guess you are mistaking, there are 2 things that adobe air managed to solve that swing did not:

    1) Install anywhere
    2) Run anywhere

    This only because of the flash player’s ubiquity, a reach that java and silverlight only dreams/dreamed at.

    It is true that anywhere means only win,mac and lin, but what else would AVERAGE JOE’s use ?

    Regarding performance, it will always increase with time and competition, once silverlight becomes an internat windows requirement, the directx support it will have will make that ideal for intensive/responsive GUIs

    • Swing can also run anywhere. Portability was never an issue with Swing. It was integration with the host OS, which was the problem.

      On, the distribution front. Yes you are right. AIR is better distributed and is more or less painless to install. But again, that’s only one problem solved.

      What about the rest?

      It has been more than 4 years since Flex/AIR has been released.

      • AIR is not better distributed. It’s as easy/difficult to distribute as a Swing app. The problem is the disconnect between Swing and Java Webstart. When people think of AIR they note both the framework and the distribution medium where as Swing and Webstart somehow get pushed into separate corners.

        AIR == Java Webstart for Flash/AS

  2. Not AIR is the one well distributed, but the flash player, and adobe has a way of deploying air apps (together with air when you dont have it) that can make you asume AIR is everywhere.

    The deployment of AIR apps is hassle free, unlike for java webstart which … it is a huge pain.

  3. @Neel, AIR 1.0 was released in February LAST YEAR. The runtime itself is very new technology although the Flex framework is a few years older.

    @Swapnonil, this statement is really poor logic, “This also confirms one of my theories. People hate Abode Air apps.” This doesn’t confirm anything. Maybe it’s just that the developers of Tweetie are far better at UI design than the devs of most of the other clients?

  4. Also, you failed to consider that most of Tweetie’s traffic would be from the very popular iPhone app which has been out for about 6 months. TwitterBerry is on that list too so it clearly includes mobile clients.

    P.S. Are Neel and Swapnonil the same person? I just noticed the small text under ‘Possibly related posts’ that says ‘Written by Neel’.

    • Darren,

      Yes Neel and Swapnonil are the same person :) .

      It’s just that WordPress had this Nickname setting, and also a Display Name setting. So, due to this I was constantly fighting with my alter ego.

      Thanks for pointing this out though.

  5. Darren,

    People hate AIR apps due the same reason they hated Limewire and Azerus. You see when uTorrent came along, these things were just blown away.

    Memory may be cheap in the US, but not where I live. You have to realize that are governments that levy VAT on even life saving drugs.

    There could be two cures for this memory consumption issue, which I can think of, but I am sure there are many more.

    Better Garbage Collection.The Flash VM (and hence AIR) does have a garbage collector. But one thing is for sure. Modern Garbage Collectors like the one found in the JVM and .Net are really really difficult to build. Even Apple does not have a mature garbage collector for it’s Objective-J environment, so I am told.

    So how good is the garbage collector in the Flash VM. I don’t know. Let people find that out from practical usage.

    Shared VM. You run just one instance of the Flash VM, and keep it always on. This will allow mutliple AIR apps to launch of this single VM. This has the potential to dramatically lower “Cold Startup” times. I know Sun toyed with this idea for their JVM, but it never materialized

    You are right about the Tweetie stats. I was unaware of the fact that their iPhone app goes by the same name. But even then, it is an impressive debut for a desktop app. Desktop Apps never get featured at Techcrunch, do they?

    • Java VM does run great. It is a really solid technology, but swing support on multiple platforms is crap. It works fine in windows. Webstart works in windows. Try mac os on tiger (jdk1.5 – applet support and web start is terrible). The latest stuff the jdk can do – pull out of browser and run as standalone. Thats great. But its not 100% on all platforms ? why – sun don’t control all platforms (ie. apple is always a year or more behind – JDK 1.6 is only available in Leopard, and the latest JDK from sun may not even show up in apple) In corporate world – you can rely on java. They have standard build env’s for desktops. But your customers in the consumer market are different. What machines do you develop on at home ? Mac Os X tiger and leopard, windows XP, vista , Linux (which one)? (for us each developer uses all 5. usually one main one, but all tests and code must run and look the same on each machine). In fact, we have just made the move to adaobe from java, because for RIA’s – it works great. Who said it had to be everything to everyone. That’s the thing with flex/AIR/flash – its not everything. It’s actually a very focused runtime. It works best with a web backend ( you do you jdbc say in the web tier, in java). Flash is designed mainly to be a FRONT END technology. Not an OS replacement. Java is a full OS replacement. its great. Sun just didn’t take control on ALL platforms, so you get fragmentation. Microsoft realise this, that’s why they are doing silverlight (including codec’s) on all platforms. unlike JavaFX where even the codec support is platform specific (again flash solves this by only supporting a few codecs, but everywhere – and it works – just look at YouTube).

      Talk to customers, watch user acceptance testing – they don’t care about native look and feel – in fact most 18-35’s (the one’s that mainly spend on the net) like funky. They equate funky with solid, innovative, cool. I put it to you that its more about effective Design than native look and feel.

      Adobe actually has an okay JIT, that will just get better. In fact the harmony project for mozilla (js jit) is based in part on the adobe AS runtime. And people generally speak pretty highly about harmony (the benchmarks are pretty amazing, you should checkout some of Ben Galbraith blogs and podcasts about the place to see what they are doing with js jit in general and some of the stuff harmony can do with on the fly optimization, way out there, even ahead of jvm).

      How much memory are you talking about ? JVM / Swing uses it fair share of memory also.

      • Don’t forget Java6 on Mac is only available on 64bits architecture, so what to do with the 32bits (core duo, core solo) and PPC users that are on mac and still stuck at Java5 ?
        That one reason why I choosed AIR over JAVA/Swing for my desktop applications… Apple killed Java on MacOsX

  6. It’s ok to me that you like Swing. But, don’t tell the world because of this AIR is crap. All your arguments show me that you never had a real look at AIR/Flex. But, one thing is pretty clear: if Swing, Web Start, Applets and all the other Java client stuff would be as good as you tell us, why do we have Flex/AIR, Silverlight, etc. on the horizon? You’re talking about the past, not the future. I was Java Architect at Sun and had a look inside their client-side philosophy. No surprise, that we use other technologies than Swing in Applets these days. They never understood what is important to establish a technology at the client-side.

    • Hi Rainer,

      I never said I like Swing. In fact I never said I dislike AIR either.

      I am just pointing out that AIR, faces the same problems and obstacles as Swing did, and still does.

      The guys in Sun’S Swing team, managed to solve some of the problems, but not all. Swing failed to become mainstream as it was perceived to be “Slow”. I really hope AIR does not fall into the same trap.

      It would be a shame, if that were to happen, because I really appreciate the development tools Adobe have brought forward for Flex/AIR. I mean, since early release they have almost all widgets, a charting library, good integration with J2EE. From a developer’s point of view, Flex Builder was a great tool to work with.

  7. [...] sketpicism seems to be modulating towards something altogether more positive, as well as some unprompted feedback to rival RIA technologies. Of course the latter comparison is with the Swing of 5+ years ago: today it looks much different. [...]

  8. So whats the problem with swing again ? If java is not allowed to work with Os X properly is that problem of Sun or Apple ?
    I like swing and the power of java which is irreplaceable with Adobe Air. People say java is slow blah blah,,I use linux and air plugin and air platform is a memory and CPU hogger(bug).
    I mean, I really don’t understand why people have to bash swing, to be honest swing is still great and is used my many banks, trader platforms etc as a front end.
    Is AIR ready for this kind of real time env .