The Source for Java Technology Collaboration
User: Password:



Kirill Grouchnikov

Kirill Grouchnikov's Blog

Java desktop applications - the state of the nation

Posted by kirillcool on May 22, 2006 at 12:53 PM | Comments (31)

As Hans has posted on his blog a few months back, "Java Swing with 47% use, has surpassed WinForms as the dominant GUI development toolkit, an increase of 27% since fall 2004". This has raised quite a few eyebrows, with the most common argument being "name one popular Java desktop application". "Not one, but two", retorted many, pointing to LimeWire and Azureus. Some even take Azureus as an example that SWT is more popular than Swing. A funny example, given that seven out of ten most downloaded projects on Sourceforge are file-sharing applications (with all three top spots all-time and all four top spots last week). I doubt that SWT guys would want to use Azureus (at least in its current UI state) to argue SWT's superiority over Swing for desktop world. Did you see the UI? It's even worse than Ocean (no offense to both sides meant). Just see this layout monstrosity:

azureus2.png

And this hideous creature (is supposed to show you the map of the clients you're currently peering with - my eyes, my eyes ...:)

azureus1.png

Is it me, or are these applications popular because they allow sharing illegal content quickly and freely around the globe?

The above-mentioned 47% (many of which is 90% iceberg part under the corporate intranet water) spot some great-looking apps (see Swing Sightings), but I'm sure that the majority is quick Ocean-powered UI thrown over a custom database / backend / ... and left to intranet users that don't really have a choice (you know, the deadlines and such...)

JavaOne 2005 was my first one. If i had to choose one session that i looked most forward to, it would be without doubt "Looking Good". Java client team spent few months pumping up the expectations, requesting the community to propose bland-looking apps that would be turned to sleek state-of-the-art beauties. Finally, Chet has announced that they decided to take a "common" IM client (that they actually wrote) and show how it can be spiced up. Huh? Guys? Do i need to point any further than Java's own JConsole? It was a perfect candidate for this session a year ago, and it still is now (that's two strikes in a row and 2007 is coming...)

Not only that, the code to the application has never been released (i follow both Chet and Romain blogs, and to my best knowledge it wasn't). I understand that the original code (or at least some portions of it) was thrown together in haste to meet the deadlines. I understand that the intent was to sit down and clean it up. I understand that were other (note that i don't say more important, but i'll come to that later) issues after JavaOne. So, it remained what it was - a demo. A bunch of screenshots, a bunch of unanswered requests to post the code, a bunch of code snippets on the slides. Here, guys, it can be done. Well, we kinda know (with all the Swing Sightings).

This year has brought Aerith and (yet again) a non-existing "common" mail application beautified. Again, promises to release the code. It'll take a bit. We need to clean it up first. Well, not all of it... (Didn't you say that it is all based on available technologies?) So, one more demo. Once more a bunch of screenshots. Still more requests to post the code. Still more code snippets on the slides. Here, guys, it can be done. We just need to sit down and clean it up a bit. Ah, right, we have this Mustang beta release and the official one and tons of bugs that we need to fix. And that small SwingLabs project that takes years until its 1.0 release (did somebody say that not having stuff under JDK takes much less time?) So, my vote goes to Aerith remaining in its current state (that being demo) until the next JavaOne.

I go back to five years being an MFC programmer. Along with a bunch of other stuff including Delphi 6, Ada (oh, the horror of IBM debugger) and Java (oh, the so beautiful JBuilder 2 and 3). You know what sets Microsoft development suite apart from Java suites (that being Eclipse / NB / JDeveloper / IDEA / ...)? Four magic letters (well actually seven) - MSDN DVD. Back in 1999 i had a Visual Studio 6.0 installed along with complete version of MSDN. Not once did i have to go online to find code samples. That's what a 1.5GB of code samples give you. And those code samples come straight from the source - the Microsoft itself. Not javaalmanac, not krugle, not sun java forums (when you cross the fingers and hope that the code you just copied compiles, works and is not copyrighted). Straight from the source. You have examples that not only work, but show how it should be done. And you get it with your Visual Studio installation.

We can have all the refactoring in the world, but until Sun provides tons of well-written, thoroughly-documented and polished Swing applications (and i'm not talking about SwingSet2) and all we're going to have is architecture series that dies quicker than NBC sitcoms and a collection of concept proofs... It can take man-years to come up with anything that remotely matches the wealth of information in MSDN, but if Sun wants to compete on Windows desktop (if Sun indeed does)... Not "somewhere along the road", not "it's a mostly working application". Release the code at the same time you show the application. This is how it is done in Redmond and all its PDCs. This is how you use the momentum to its fullest while you have the attention of the developers. We want the source now, while we're appreciating the screenshots. Not after Windows Media Player 11 (which looks suspiciously like Aerith) is released (well, too late for this), not after Office 2007 dark glass theme and Vista are released (and that will be in only six months). Like Jack Bauer says Now. Like him, you don't have much time. The XAML is coming.

If you think that having the OpenGL pipeline in Mustang is enough to make people install Mustang right away on millions of computers, then you're wrong. Screenshots don't cut it in the world of translucent animation and 3D integration. We want to run the demos, to take the code, to copy it and change it to fit our needs. If you need to, pay Dell and Lenovo to have Mustang pre-installed on desktop computers. If you need to, pay hundreds of qualified Swing engineers to sit all day and make fully-working applications for Mustang that show everything we need to know. If you need to, pay all the software journals to bundle DVDs with that code with all the 2006-2007 monthly issues. Make the desktop forums, personal weblogs with code snippets and code-harvesting engines obsolete. Yes, the MSDN costs Microsoft a fortune. Ever wonder why big companies and legions of individuals are happy to pay for it? Do you think that Microsoft loses money on Visual Studio line? Still convinced that the free tools are the only way to go?

You can have hundreds that are happy to hunt down the right way to do Swing (ever wonder why only 20 third-party look-and-feels in 10 years?), but you lose hundreds of thousands that turn to Redmond pastures just because of the documentation.

Bookmark blog post: del.icio.us del.icio.us Digg Digg DZone DZone Furl Furl Reddit Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment

  • I see your points, Kirill. I've seen several discussions and blog entries during the past few months all sticking their fingers in Java's open wound: the client side.
    Over the past couple of years Sun, the industry and many many contributers did some great work in creating server applications, tools, libraries, frameworks and standardization. Most of them are strongly related to server side development and while even experts find it more and more difficult to keep up with latest developments, good client side solutions remain a rare exception.
    When Microsoft released their Community Technology Preview 1 of their upcoming 'Expression' tool for creation of WinFX based GUIs, I was pretty stunned after taking it for a test ride. While Apple and Microsoft did some serious thinking about next generation GUIs and their development, Sun may have seen Swing as something to power Netbeans, aimed mostly at server side developers. Matisse is great, but it does not add anything to Swing, nor is there any kind of low-level client application framework, guidelines, tutorials, .. so give client side developers something at hand to start from, building robust applications and not having to re-invent the wheel for every new project or create another isolated internal closed source framework themselves.
    So we currently have two deficits which both need to be adressed. I like the works of Romain Guy and so many others who show others what can be achieved with a little more brainwork than I am capable of (or maybe with different priorities at work). But what we don't want is another demo, another snippet, another blog entry here and anotehr there. I read about a lot of good ideas and their implementation from the likes of Romain and others over the past few months in the blogosphere, but why should we be forced to google it all up and try to make picture when most pieces of the puzzle just don't fit? Looking at what the SwingLabs team is able to do shows me that Sun has got the right people with the right ideas. Unfortunately some kind of process seems to prevent that those ideas and people come a little more into the light and give their voices more weight.
    Java's client side needs more than just a few more widgets. It needs a vision and a concept and - most of all - it needs a commitment! Back to the comparison to server side java a Cranberries' album title comes into my mind:
    Everybody else is doing it, so why can't we?

    Posted by: pronger on May 22, 2006 at 02:01 PM

  • Kirill, I won't even follow-up your comments about the "ugliness" of other apps given the screenshots you show for Substance. Instead, let me follow-up on Aerith. We said the source code will be available and it will. We want to clean it up but only for legal reasons. For instance, we use a couple of classes that come from Sun's JDK private implementation and those cannot be open sourced.

    And please, spare us your accusations ("which looks suspiciously like Aerith") that add nothing to the debate. Insulting me (I designed the UI for Aerith) won't help getting things done faster.

    That said, I agree with you. There should be more examples out there. The Java Client Group wants this, they just lack the time and resources.

    P.S: When I say "we," I mean my former colleagues and I. I am not working for Sun anymore right now.

    Posted by: gfx on May 22, 2006 at 02:03 PM

  • Oh, didn't know you're not with Sun anymore. You're a client geek, Romain and maybe alike Karsten Lentzsch you have some .. hm.. 'style', when it comes to designing UIs. I'm pretty confident you have some wishlist and for sure some insights that make it easier for you than for me to estimate the probability for certain features to be included with Java or released as its own project.
    Will you go on focussing on the exploration of possibilities or do you envision something bigger?

    Posted by: pronger on May 22, 2006 at 02:19 PM

  • Romain,
    Please forgive me if the line about Aerith and Microsoft tendency for stain-glass in the last couple of years came out as accusation - no such thing was intended (some of my work in Substance borrows quite heavily from Vista design ideas, so i would be the last to start finger-pointing). I appreciate the work that you and other SwingLabs / Sun clientside team are doing over the last two years and hope that the collective brain-storming in this area continues. The demoes you showcase on your blog have made me go "why didn't i think about this before" much more than once. Once again, please accept my apologies since the words on Aerith were not meant to sound insulting.
    However, going to the main message of this entry - demoes that i have seen (and plenty of them) over the past year, haven't (until now) gotten us too far. When i say us, i mean post-Mustang client-side developers. Yes, everything can be done with custom painting, glass pane and a few assorted tricks up our sleeves. But how much many can be of this group (that have something up their sleeves) with Sun-funded documentation and code. Not just the screenshots and a promise of the code. The screenshots and the code at the same time. Plenty of code. Code that i can see, copy and use. Not scratch my head and wonder how it was done. Code that i can see and wonder at its beauty and say "why didn't i think about this before".

    Posted by: kirillcool on May 22, 2006 at 02:22 PM

  • Kirill, don't worry, I get excited very easily when I just woke up :-)

    "and wonder at its beauty", that is why source code might no be released. Because it is not beautiful and because the Swing team doesn't want to show the bad way to do things. I would love to get our source code out there. Besides, I get so many requests from so many people concerning the Extreme GUI Makeover talks demos... I have tried many times this year to get the code out but I will try again until it's done ^^ By the way, we did release Joplin last year :)

    pronger: I have to leave for a few months because of visa issues. Joshua Marinacci, Richard Bair and I have many ideas we'd like to achieve that would make Swing GUI development easier. And I'm sure the NetBeans guys do as well (take a look at NetBeans 6 roadmap, it's really cool).

    Posted by: gfx on May 22, 2006 at 02:33 PM

  • Romain, about Substance screenshots. Swing codebase is extremely well-organized. The only problem with it is that you have to know it (not the API, the core code).. You have to read the code, think (i know, that can be a problem), see the code written by others before you (hope that somebody written it, hope that it's a correct way to do it and hope that the license is OK) and only then you can do it yourself. Countless times over the past year of Substance development i have thought to myself - this shouldn't be so hard (maybe i am the problem :). Swing exists for ten years, sure they have gazillions of detailed up-to-date walk-throughs, tutorials and free as in air applications (they meaning Sun). Well, you know... Even such a corner block of Java2D as composites. Have a document (perhaps it exists, i don't promise to eat my hat) with images that show the effect of every one of them. Don't make me brush up on my university courses. Don't make me compile, run and cross fingers hoping that the damn translucency will come out right. You know - show me the way...
    With MFC / GDI / XAML you get the API and examples of how to use it. You don't worry about how it works inside. You don't need to. Paint by the numbers, it's what works on the mass scale.

    Posted by: kirillcool on May 22, 2006 at 02:51 PM

  • *sigh*

    I understand that legal reasons need to be ironed out before posting source code, but to say that you don't want to release source code because it's not "pretty" enough? That's exactly *why* it should be posted online for all to see. It's only when people see how painful it is to get their apps to look nice that they'll jump to another language. =)

    Just kidding. I honestly believe that complex code can get simpler with more minds grinding away on it. Someone out there will come out with a new abstraction or build a slick util class to make hard things easier.

    Keeping things locked down until it's "people ready" just doesn't cut it for me.

    Posted by: wireframe on May 22, 2006 at 02:59 PM

  • wireframe: That is not what I meant actually. By "making it pretty" I mean remove a package-private variable that should be private for instance. Or don't access a private variable through reflection. That kind of pretty :)

    Posted by: gfx on May 22, 2006 at 03:09 PM

  • I understand unwillingness of ugly code release. Those people who got it made are those who understand at best what's going on in the sources, how it works and why it works at all. Although I am very curious I don't see a problem in being patient for a little while. Bad code won't help anyone I guess.
    In a perfect world someone only had to push a button to upload all the beautiful source after the presentation was done at JavaOne. In a perfect world I'd have all the time I want to finish and polish my work until I hand out our customers our new product. In a perfect world there would be no need for such a demo, everything would be published ready-to-work.
    Sad but true this world ain't perfect because we ain't. We have to rely on those who are less imperfect than we are ;)

    Posted by: pronger on May 22, 2006 at 03:11 PM

  • In my opinion, if it's good enough to demo, it's good enough to reveal the code. except for legal reasons of course.

    Posted by: wireframe on May 22, 2006 at 03:21 PM

  • wireframe, pronger: That's why I have no problem with releasing the source code. Heck, Richard Bair and I released Joplin which source code must be the ugliest I ever wrote (well, tight schedule on this one :). But there is a valid point here: we don't want to show people the wrong way to do things. I personnally think that you guys want the source code to see the effects/renderings more than how we architectured the application. And because of that I think the source code is good enough to be released (the rendering code is always good, the ugly parts lie in what we do to make the overall thing work :).

    Posted by: gfx on May 22, 2006 at 03:24 PM

  • A couple of things, guys. We released the Joplin source with out any cleanup and without it really even being runnable and it went no-where in the community. We don't want that to happen with Aerith. However, I assure you we will release the code once the legal issues are worked out (mainly the google stuff). And if we can't then we will release the code without those parts.

    The second thing, I don't think this was addressed in any of the discussion above. Aerith is the photo/mapping demo shown during the keynote. The mail application is a completely separate demo created for the Extreme Gui Makeover talk. They are completely separate things (though Romain and other Swing Team members worked on both of them).

    I agree with you that we need more example applications and more code. The real issue is simply time. The client developer team is smaller than you think and the server side has taken the stage for the last five or six years. I think this is a great time to be a client developer, though. Desktop Java (Swing + Java2D + AWT + i18n, etc) is really coming into it's own and I think we will see a lot of cool applications and technologies over the next couple of years.

    Interestingly I'm finishing up all of the articles in my queue and I'm looking for some ideas for new things to write about. It sounds like you might have some requests! :)

    Posted by: joshy on May 22, 2006 at 06:24 PM

  • joshy: You know what I'm going to suggest... write about JAXX! :-)

    Posted by: enicholas on May 22, 2006 at 08:42 PM

  • Joshua,
    I spoke about both Aerith and the mail application. Your words just give more weight to what i said - they both (at least in the current stage) are no more than demoes. You know, the reverse 20/80 law, 80% functioning applications that were written in 20% total time. The cleaning will take four times as much... What's the point of making this demo at all? We kinda know it can be done, but if the Sun client team needs too much time to make this done correctly (i asked Chet about this on 2005 J1's BOF and he kinda dismissed it on the spot, but i got the javadesktop.org-powered pen), what do you expect from the rest?

    Posted by: kirillcool on May 22, 2006 at 11:29 PM

  • Kirill,

    Once again, those demos are created to show very specific points: how to customize a tree, a table, how to create a nice drag and drop, how to add animations, etc. Why write demos? Because we need to show how to do those things, how to use our APIs to go beyond the basic usages. Cleaning the code just means cleaning the application parts, not the parts that we talk about during our talks. We all know that writing applications correctly takes time and that's the point: it takes the Swing team a lot of time it does not have. As Joshua said, this is quite a small team. Believe me, everybody wished the team had the money and the human force of Microsoft's :)

    Posted by: gfx on May 23, 2006 at 12:06 AM

  • Kilrill, look whts romain saying :

    /* But there is a valid point here: we don't want to show people the wrong way to do things. I personnally think that you guys want the source code to see the effects/renderings more than how we architectured the application. And because of that I think the source code is good enough to be released (the rendering code is always good, the ugly parts lie in what we do to make the overall thing work :). gfx */

    Romain,

    Your point > "I personnally think that you guys want the source code to see the effects/renderings more than how we architectured the application." is completely true & everyone else need to understand that. UI Design( painting ) and UI Architecture are two completely diffrent things as Allan Cooper pointed on uidesign.net interview. We ( i expect ) don't need to know how you architecture application because we know ( or can try to learn ) to design good architectured applications. Just release source code even application part is most uglier in world, its also our (client side community) responsibility to improve architecture part. As i previously commented in Scott's architecture series, Sun need to appoint developers who can develop well architectured , complete, well behalved , well designed, working, applications for us.

    Posted by: hithacker on May 23, 2006 at 01:41 AM

  • Romain: Because we need to show how to do those things, how to use our APIs to go beyond the basic usages. So, we're still waiting for the source of "drag with style" and curvy tree connectors from the last year. If you put all the source now and say "look, only treat the painting as high-quality code", people will understand. That's what they want to see, the graphics part, not the architecture that you can refine later (in the coming days / weeks). Spruce your code with comments that say "this is temporary" / "this is how it's done". But making people wait (and speaking for myself, i'm very disappointed following the 2005 "Looking Good" promises left infulfilled), you're not "showing how to do those things".

    Posted by: kirillcool on May 23, 2006 at 01:49 AM

  • Hey editorial staff of java.net ROCKS, they formatted my comment, thanks guys.

    I think when girlfriend is waiting it's better to reach there looking ugly than making her wait.( kilrill can think of better example ;) )

    Posted by: hithacker on May 23, 2006 at 02:36 AM

  • About comment formatting - i took the liberty of adding a few br tags in your comment to make it look the way you intended to.

    Posted by: kirillcool on May 23, 2006 at 02:41 AM

  • Kirill: I told you, I've been trying to get this code out for quite a while now. I don't care whether the application part of the code is ugly or not but others do and since this is not only my code, I cannot just release it without their consent. Also, we still highlight the most important points in our slides.

    Posted by: gfx on May 23, 2006 at 02:45 AM

  • But what we don't want is another demo, another snippet, another blog entry here and anotehr there. I read about a lot of good ideas and their implementation from the likes of Romain and others over the past few months in the blogosphere, but why should we be forced to google it all up and try to make picture when most pieces of the puzzle just don't fit? Looking at what the SwingLabs team is able to do shows me that Sun has got the right people with the right ideas. Unfortunately some kind of process seems to prevent that those ideas and people come a little more into the light and give their voices more weight.
    Has anyone given any kind of thought to a seriously managed wiki for Swing? JavaDesktop has one, but it is seriously lacking in content and organization. Yet, a wiki seems to be exactly what is called for here. If it was well managed could be an invaluable community source. Have it start with the basics of building with Swing sure, but devote an equal amount of effort to really putting swing through it's paces. -Glen

    Posted by: arei on May 23, 2006 at 11:30 AM

  • That is cool: http://files.blog-city.com/files/aa/1263/b/swingrocks2.html

    Posted by: gfx on May 23, 2006 at 11:35 AM

  • I wholeheartedly support the idea of a wiki. I'd be willing to spend a lot of effort working on it, and I imagine so would a lot of other people.

    Posted by: enicholas on May 23, 2006 at 12:19 PM

  • It seems at least one person had the idea of a swing wiki before us: http://www.swingwiki.org

    Posted by: pronger on May 23, 2006 at 02:17 PM

  • gfx, but "you" currently do show people the wrong way to do things. Look at the jfc demos delivered with the JDK.

    Sun has no problems with releasing that junk code for years in one JDK release after the other. So why do you think some additional ugly code would change anything to the worse? It can't become worse.

    Posted by: ewin on May 23, 2006 at 03:43 PM

  • @ewin: The faults of others should not serve as excuse for our very own. My experience is that noone new to Java takes a look at the JDK examples anyway. Personally I can totally understand if someone is not willing to show others bad code. You wouldn't take your first date home just after a bomb went off in your appartment, would you?

    Posted by: pronger on May 23, 2006 at 04:52 PM


  • If we were on SlashDot I would be rating this blog posting as flame bait.


    Java Swing is an AWESOME API. You can read the source and if you don't like something you can extend and change it. I did just that today with the default JTree implementation. I don't like how they display an empty node. And I did what any good Jedi would have done. I will give you a hint: Use the source Luke
    I had to add one line of code and over ride a single method AND the Sun web site told me everything I needed to do.
    http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4199956
    I guess if Scott or Hans would have typed it in for me it would have been easier. ;-)


    Java is a COMMUNITY process. So shouldn't everyone be asking what they can do to make things better? Throwing stones seems like such a waste. If you don't like it change it. There was a famous quote that really fits here: Ask NOT what your API can do for you but what YOU can do for you API!


    If you don't like to type or read documentation maybe you should find something else to do? Seriously, maybe the next killer Java application is one that allows you to code by Google using simple cut and paste hot keys?


    Kirill,
    So doing MFC/C++ was better? That stuff was pure cut and paste crap! Not to mention MS did NOT give you the MFC.DLL widgets that were in MS Office. So how many software startups appeared just to help people do a simple JTable in MFC? I can think of 3 with the one that I knew very well being StingRay.

    To end this on a positive note:
    Java One ROCKED this year. Best one yet if you do Java Applications. Everyone was working hard making things better. I saw a lot of the Swing guys putting very cool stuff out on java.net for everyone to give feedback on. I think their intention was for people to use it first and make an honest effort before giving feedback. ;-)

    I came away from JavaOne this year feeling that my 6 years have been well spent and it is only getting better.

    Posted by: cupofjoe on May 23, 2006 at 06:39 PM


  • What got cut above:

    Java is a COMMUNITY process. So shouldn't everyone be asking what they can do to make things better? Throwing stones seems like such a waste. If you don't like it change it. There was a famous quote that really fits here: Ask NOT what your API can do for you but what YOU can do for you API!

    Posted by: cupofjoe on May 23, 2006 at 06:52 PM

  • One more thing I'd like to point out. We all just spent over a week doing 16 hour days for JavaOne. We're tired and many of us are on vacation. (I'm currently on a layover in the Salt Lake City airport surfing from my phone). Please give us some time to pull everything together. I'm working on the legal issues right now.

    thanks,
    Josh

    Posted by: joshy on May 24, 2006 at 08:59 AM

  • Come on people, please be a bit nicer to romain guy and those people who created that nice demo for JavaOne. I am just as interested as you
    about how they made that nice demo, I also can hardly wait to see the code but I don't scream at them. If you scream at them you aren't giving them any respect for there work.

    Thanks,
    Evert

    Posted by: carmello on May 24, 2006 at 03:13 PM

  • yes let's enjoy swing team a nice vacation. one thing i will like to add that now swing team have developed more than enough super-cool utilities ( i don't wanna say demo ;) ), so now they can concentrate on developing some opensource realworld ( professional ) applications by using new cool components and effects and smash MS.

    Posted by: hithacker on May 25, 2006 at 06:57 AM





Powered by
Movable Type 3.01D
 Feed java.net RSS Feeds