Is Bruce Eckel Right? Maybe not.

Bruce Eckel has written an interesting piece about Java and user interfaces. I’d recommend that you read it, as it’s pretty thought-provoking. Bruce knows a lot about Java, and a lot about software, so he’s always a good read. In this piece he covers a lot of ground, much of which is correct. However, at it’s core, this piece is really about Flash being “better” than Java for building user interfaces – and I’m afraid this is just fundamentally wrong . Here’s why…

Let’s start with a quote from Bruce’s piece which, I think, goes right to the heart of the issue:

You can’t deny that Flash produces very pleasing user interfaces.

Well, I think you can. In my opinion, there are actually very few examples of pleasing user interfaces being built by using Flash. On the whole, pieces of Flash software have horrible, “hard to learn”, “hard to use” interfaces. GUI toolkits in Java Swing, .NET Forms, QT, GTK+ are all intrinsically far superior.

Bruce suggests that you shouldn’t learn to use these libraries because they’re difficult to use. Well, that used to be the case; but not anymore. Certainly with Java Swing and .NET Forms, Netbeans and Visual Studio make it simple and quick to build compelling user interfaces. I suspect the same will be true of Microsoft’s new technologies WPF and WPF/E.

So, I would assert Bruce is plain wrong when he says that:

Flash has always been all about cross-platform… user interfaces

It hasn’t. Flash has always been about cross-platform multi-media and graphics, yes. But not user interfaces. Java Swing is currently the best GUI toolkit – by a long way – if you want to build cross-platform user interfaces. Incidently, it’s also the most popular, too.

Of course, we have to be careful not to ignore the elephant in the room here. I’m not suggesting that, for many Internet applications, Flash isn’t a better choice than Java for building “Rich Internet Applications”. It is. And that’s why people choose to use it. But it’s a better choice not because Flash applications are so great. It’s because they’re so easy to deploy reliably.

That’s it. It’s an application deployment issue. Plain and simple. Java Web Start doesn’t cut it – it asks the user too many “hard to understand” questions before running (that means it’s fine for experts, but regular people just get confused), it looks ugly at start-up, and, even more importantly, people want applications that run inside the browser.

Java applets could cut it… yes, I know applets are a dity word, but they really could. I believe they might be starting to get good enough with the release of Java 6. But Sun just move so damn slowly…

For example – you want Java 6? It was released in December. But, if you buy a new Dell computer today, it comes bundled with Java 5 (we just bought a bunch of Dell laptops, so I have up-to-the-minute data). And worse that than, if you go to www.java.com, to get the “latest and greatest” Java, you get Java 5 there too! It doesn’t seem even possible to download and install the Java 6 JRE from anywhere – you have to download the whole JDK which is a much bigger download.

Sun is doing interesting work with Java Kernel edition (see this thread on java.net), which could make Java applets even more compelling, but that won’t be out until Java 7. However, if Sun would make the Java 6 JRE as easy to install as Flash, it would be a big help. These days, with broadband, the size of the JRE isn’t too big a deal. It just needs to be easily deployable, so that it gets widely deployed.

The bottom line of all this is that the battle for being the Rich Internet Application Platform of choice is on-going, and the truth is, there might not be a “one size fits all” choice for a while… although it might be that Micrsoft’s WPF/E emerges as strong contender for this title pretty soon.

Trackbacks & Pings

  1. Madarco DevBlog » Blog Archive » Bruce Eckel on Flash on 18 Feb 2007 at 11:42 am

    [...] Simon Brocklehurst pointed out that there are more ugly Flash interfaces than good ones, although I think he is talking about the old do-all-by-yourself hackery of Flash 7-8 since there isn’t many Flex 2 web apps out there yet. I wonder if he saw Picnik. [...]

  2. Vinny Carpenter’s blog » Daily del.icio.us for Feb 17, 2007 through Feb 19, 2007 on 20 Feb 2007 at 12:32 am

    [...] Is Bruce Eckel Right? Maybe not. at Simon?s Blog – Bruce Eckel has written an interesting piece about Java and user interfaces. I?d recommend that you read it, as it?s pretty thought-provoking. [...]

Comments

  1. evanx wrote:

    why do people want all applications to run inside the browser? I’m happier with my email (thunderbird), office (openOffice), iTunes, etcetera, running outside the browser. I think the lines between desktop applications and RIAs will blur. The browser is a poor replacement for the desktop/OS, for managing and partitioning applications/resources

  2. J.T. Wenting wrote:

    people in general couldn’t care less. It’s system administrators who want everything “thin”.
    And people running “services” companies want their customers to be able to use their services without having to install software to do so (especially if those customers are companies where the system administrators want everything “thin”).

  3. dersteppenwolf wrote:

    Maybe you should try flex 2…

  4. simon wrote:

    @1. evanx, clearly you’re right. Not *everyone* wants all applications to run inside the browser. Lots of people do… and lots of people don’t. I think the issues here are quite subtle, and quite complicated – I think it’s all to do with how comfortable people are using modern computer desktops.

    @2. J.T., I think that people do care. If people had to install a piece of software every time they visited a web-site, they would get fed-up pretty quickly.

    @3. Yep… Clearly, Flex is a big step forward. Being able to do “real” programming will certainly enable more usable applications to be built.

  5. Uordek wrote:

    I think; I’m afraid, your article is just fundamentally wrong.

    1- Developer (business) code and interface code should seperate each other. (So say we all..:p)

    2- GUI development is a job for Graphical or Industrial Designers. Not for a any kind of software developer.

    3- Software development is a job for Software Developers. Not for a any kind of Graphical or Industrial Designers.

    The bottom line of all this is that the battle between Ajax and Flash.

    Probably Ajax goes to win this battle. But all of us know the truth that Flash is the best GUI tool ever made.

    In basic, Ajax is a Flash’s cheap copy. All of Ajax capabilities have blongs to Flash since 2002.

  6. simon wrote:

    Hey Uordek… I disagree ;-) I think you’re confusing the *presentation* (that is, how pretty the button looks e.g. reflections, shading etc.) with the *workings* of the user interface. Part of the reason that so many Flash user interfaces are so bad is that they’re built by graphic designers.

    Now, I have often said that software engineers don’t know enough, or think enough, about about user interface design. But the truth is: graphic designers tend to know orders of magnitude less about user interface design than software developers do.

    And, as for your bottom line. I think it’s a mistake to ignore WPF/E. It’s looking pretty powerful… and you can bet that it will be widely deployed….

  7. Madarco wrote:

    I agree with dersteppenwolf, Flex2+Flash9 has the power of Swing, since it has a full set of components. You can build a complete GUI with a wysiwyg (Eclipse) like you do with Java.
    The pros is that ActionScript is simplier, Flash plugin is smaller than jre and to build new components is easier.

    The cons? AS simply hasn’t the “guts” of Java. I won’t do a full fledged app in flash, and yes, this “software in a browser” thingy will blur.
    In the meantime, look for Apollo.

  8. simon wrote:

    Hmmmm…. I’m not an expert on this, but as I understand it, Flex2+Flash9+ActionScript3 is still single-threaded. I know you can do asynchronous calls; but it’s really not the same thing.

    So, I do agree it’s a powerful combo (you can build amazing apps with that combo), but it doesn’t “have the power of Swing”…

  9. Uordek wrote:

    Hey Simon, :) I am not “confusing”..

    In bad hands, any kind of tool cause bad solutions. I’m writing about 2 Advanced and like that.

    May be you should check out, these kind of sites. may be you should check out The FWA.. and you may see the next step of web desing & development.

    And, you can be sure. I going to check out WPF/E. May be we can talk about this subject later.

  10. AN wrote:

    Flex is a plausible choice for web UI development. One of the main downsides is that software developers (as opposed to graphic designers) have virtually no experience with Flash or Flex. Meanwhile, a fair number of developers have spent the last year getting acquainted with Ajax programming (or related toolkits like Atlas or Rails), and obviously, a vast number of developers are already experts in Java or .net, so solutions like WPF/E have a head start for a developer base.

    While Flex is an interesting alternative, I think it will be a tough sell, given all the other alternatives. And with toolkits like Dojo and YUI, Flash’s lead over Ajax in interface design isn’t what it used to be even a year ago.

  11. deng wrote:

    in fact, flex 2 is much more advanced than swing, try it yourself before writing an article which is fundamentally wrong…

  12. simon wrote:

    Deng, in what ways do you think that Flex2 is “much more advanced” than Swing?

    Can you point to some examples of graphical user interfaces built by using Flex2 that *demonstrate* these unique, advanced capabilities?

    Nothing I’ve seen supports your assertion… but I’m more than happy to be proved wrong.

  13. Panagiotis wrote:

    Flash applications:
    easier to use
    easier to deploy
    better integrated with it’s environment
    more capable at producing complex applications
    easier to update
    larger user base

    it’s as simple as that. Java was created to provide one solution to all the problems and needs of computer applications in terms of software. In an ever evolving and demanding environment such as the Internet, java has failed despite the nobility of it’s cause. The reasons of that failure are many but at the same irrelevant to the degree that they don’t help us discover a way to improve java for RIAS or just admit that it’s better of another field of applications.

  14. Jan wrote:

    The dark side of my dual boot Laptop runs Windows 2000 and just the other day I was at map24.nl. Like any body else I was anoyed that the Applet took so lang to start. I decided to change to IE and use MS JVM instead of the 1.5.0_10 plugin. Wowww that was fast. No noticeable load-time and instant play. An experience way different than the 1.5 SUN plugin. This goes to show that applets can be fast and if applets would be allowed to load stuff from different domains via the crossdomain.xml contruct that Flex uses Applets CAN be RIA.

    So I agree with the author that Webstart sucks and Applets too, but that it doesn’t hev to be that way. I would love to build a presentation layer in swing xml layout tags and have all my business-logic on the server. Than I would’nt need XUL or MXML.

  15. Keith W wrote:

    Bruce Eckel is being paid by Adobe to promote its new “Flex” stuff.

    From now on, all of his technical opinions on the product are tainted and would best be ignored.

  16. BlogReader wrote:

    On the whole, pieces of Flash software have horrible, “hard to learn”, “hard to use” interfaces. GUI toolkits in Java Swing, .NET Forms, QT, GTK+ are all intrinsically far superior.

    That has absolutely zero to do with the framework but rather the individual programmer. It is like blaming a hammer because you have stonemasons using them.

    t hasn’t. Flash has always been about cross-platform multi-media and graphics, yes. But not user interfaces.

    What do you mean by that? A flash game / program looks different on a Mac vs Windows?

  17. simon wrote:

    @16

    Do you know what a graphical user interface toolkit is? If you do, you will be well-aware that Flash didn’t start out its life with the aim of building GUIs. When it started life, Flash was all about vector graphics animations. These are not the same thing…

  18. William Tracy wrote:

    > Flash applications:
    > easier to use

    BS. Flash apps are laggy, and almost always unintuitive.

    I’ve always been an apologist for cross-platform LAFs, but I swear that 90% of Flash developers go out of their way to demonstrate how NOT to create cross-platform LAFs.

    > easier to deploy

    Agreed.

    > better integrated with it’s environment

    Show me a Flash app that can be deployed across multiple operating systems with native-looking and acting buttons, scrollbars, and drop menus. Just show me a single Flash app that can handle the damn mouse wheel correctly.

    Show me a Flash app that can use the native file chooser or color picker.

    If that’s not what you mean by “better integrated”, I would love to know what you do mean.

    > more capable at producing
    > complex applications

    What are you smoking? Show me one Flash app with over fifty widgets that doesn’t suck. If that’s not what you mean by “complex applications”, I would like to know what on earth you *do* mean.

    > easier to update

    Agreed.

    > larger user base

    Ditto.

    William

  19. Jesse Kuhnert wrote:

    Haha …Someone equivocated swing as being superior than “anything” at all. That is funny. Really. Ha…

    And have you all done anything in Gtk btw? It’s not exactly fun either. Qt is my favorite of the bunch, but I think we can do a hell of a lot better with desktop apps. Down with the desktop, it must die. ;)

  20. simon wrote:

    @19. LOL! Not a Swing fan then?! You know Swing actually *is* a great GUI toolkit. But, I’m not gonna try to persuade you.

    I agree with you about GTK+ vs Qt though…

  21. Kishore wrote:

    We are all completely biased, we don’t like to see any other technology than JAVA.

    We need to quickly develop cross browser consistent GUI, with little code.
    Which are the best options,

    [-] HTML + JavaScript(AJAX) = Cross browser issues, Inconsistent Look, unexpected JavaScript bugs.

    [-] Java Applet and Swing = How many got JRE(at least JRE 1.4) on client PC’s. Installing is headache for non-programmers.Developing Swing based applications needs lot of knowledge of inner working of Swing Architecture, Patters, too many Listeners, Inner-Classes.Has to write too much of code for even small tasks.

    [-] Flash: download is small, installation is smooth.
    Consistent looks across browsers, OS.
    Easy to develop GUI’s.
    ActionScript with Version 3.0 is not a joke, checkout its features.Their JIT compiler is fast enough to do any kind of client processing.

    Old Flash is different, try the latest, Flex 2.0.Developing custom components is easy.
    Getting 3rd party components on Flex is just a matter of time.

    Adobe(or Macromedia) they have done a good Job with the latest version of Flash. They no more want to stick their names for simple, cool looking animation products.

  22. Ubiquitous wrote:

    I can’t get Java web start or Flash to run on my PDA without jumping through hoops. Then I have to port my application to Java ME or Flash Lite. So what’s the point of all this arguing.

Post a Comment

Your email is never published nor shared. Required fields are marked *

*

*