 |
On Fat Cats and Fat Clients
Posted by campbell on March 09, 2004 at 09:08 PM | Comments (16)
Return To Hot Chicken (Noodle Soup)
I'm a bit under the weather this week, which is really quite unfortunate since said weather is amazingly springlike here in San Francisco. Illness seems to hamper my coding abilities, so I figure I'll take this time to catch up on my blogging.
Whatever Happened To Pong?
So what's new in the world of client side Java, you ask? The best place to start is the recent first-beta release of J2SE 1.5, codenamed "Tiger". (Tiger's a big release, and it's just about the only thing bigger than my 18 lb. kitty named Toledo.) I know plenty of people have blogged about all those new snazzy language features, but there's so much more, especially for rich client developers:
- a new OpenGL-based Java 2D pipeline (my little baby's all growns up, bringing all sorts of performance gains)
- new BMP and WBMP plugins for the Image I/O framework
- BufferedImage: now even better than butter!
- new and updated Swing look-and-feels (Ocean, GTK, Windows XP, Synth)
- a new X11-based toolkit (called XAWT) that reduces footprint and improves AWT performance on Solaris and Linux
- improved text rendering performance and many enhancements for international text
- support for CUPS printers on Solaris and Linux
- improved desktop integration for Java Web Start
- performance, ease-of-use, and stability improvements for Java Sound
- hundreds of other ease-of-use enhancements and bug fixes
Calvin Austin summarized these and many other new features in J2SE 1.5 in a Nutshell. You can also refer to the full list of enhancements for more details on individual features.
Black Math
I've heard through the proverbial grapevine that there have already been hundreds of thousands of downloads of the J2SE 1.5 SDK. That's a pretty big number, but we all know there are millions of Java developers. So if you do the math (don't forget to carry the one), you may come to the conclusion that there are still a number of developers who have not yet downloaded 1.5-beta!!
You! Yes, you behind the bikesheds! Run, don't walk, to java.sun.com and download the 1.5-beta SDK. Play with it. Love it. Be it. Try out the new language features (don't forget to use "-source 1.5"). Hammer on the new APIs. Make sure your existing apps are running better on 1.5... If you find a boo-boo, now is the time to report it! If you start testing your apps now on 1.5, there's a much better chance we can resolve your issues in the 1.5-beta2 or final release.
Don't Bring Me Down, Bruce
The year is 2004. The Java platform is maturing into a robust core of goodness. So why are rich client developers writing such low-level code? ... Tearing their hair out trying to connect a JDBC backend to a simple JTable? ... Agonizing over the best way to add an animation or video to a JPanel? ... Crying uncle when all they want to do is customize their L&F with some snazzy graphics techniques?
It's time we all move up in the world. I'm talking about higher level libraries for rich client developers. The reason developers are struggling is entirely our (meaning Sun's, and the community's) fault. Our bad. Fear not, however. We've been working on some exciting new projects that should make it much easier for Java developers to quickly whip up rich, media-friendly, networked, easily-deployable applications.
One part of this effort is called JDNC. Amy wrote a nice article last summer about this project. It's come a long way since then, and hopefully developers will be able to start playing around with these technologies in the not-so-distant future.
I recently came across this well-written article summarizing the author's "concerns" about the current state of rich client development in Java. I feel confident that many of his concerns will be addressed by the aforementioned projects. We'll be looking into ways to get the community involved in this effort, so stay tuned...
I've also blogged in the past about the various media API offerings from Sun. If we do our jobs properly, these libraries should play better together, and the API's should be more seamless. More to come.
In my ears: Frank Black, "Teenager of the Year"
In my eyes: Michael Chabon, "The Amazing Adventures of Kavalier and Clay"
In my mouth: Riiiiiicooooollaaaaaa
Bookmark blog post: del.icio.us Digg DZone Furl Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment
-
bah humbug
Like a lot of client developers I gave up on Java a long time ago. I appreciate the power of Swing and Java 2D, and I put a lot of time into using them, but it didn't matter because users clearly perceived the poor quality, performance and look and feel of Java.
I keep downloading JDK's hoping things are finally fixed, but still even in 1.5beta:
- Performance; acceptable, but still lacking in areas like menus; footprint is still huge
- No ClearType, 3 years after it shipped in XP!
- Windows Look and Feel still not up to snuff - you still have projects like winlaf trying to fix the blindingly obvious bugs Sun should fix
- Poor Windows integration; still have to resort to JNI or other solutions to leverage COM, the Windows shell,
- Inconsistency; Swing has not kept up with thest rest of the platform; still doesn't use Collections API, JavaBeans don't leverage JSR 175
- Lousy quality. the only decent release in memory was maybe 1.3. JDK 1.4 was awful until 1.4.2-- a lot of new features (NIO) simply did not work
- Compatibility; continually broken, like adding abstract methods to Graphics in 1.2 or all the breaking focus changes in 1.4; not expecting much better from 1.5
Our end users expect quality apps that look and behave like other apps on their desktop. They are sick of hearing things like 'wait til 1.4 mouse wheel support' or ' wait until 1.6 for ClearType'. Sun is always two or three years behind the curve on the basic stuff that users expect.
Even though WinForms and .NET are years behind Java(layouts, MVC, pluggable LAF) they get the job done quicker and act and integrate the way users want. Sun does not seem to understand that if it wants Swing to succeed it has to be as good as .NET on Win32 first, with cross-platform being the icing on the cake.
Posted by: gordongecko on March 10, 2004 at 12:19 AM
-
bah humbug
You're a little inconsistent, so perhaps you could clarify. You say that Sun is "always two or three years behind," but also say that "WinForms and .NET are years behind Java." And then that Swing has to be as good as .NET. And if the goal is to "act...the way users want" (which I interpret as matching the native platform), why is .NET behind by not supporting pluggable LAF? If the goal is to match the native platform, what need is there for a pluggable LAF?
Overall, I think you raise some very good points, so I would sincerely like some clarification.
Posted by: jimothy on March 10, 2004 at 08:20 AM
-
trolling?
...and you continue to spit dirt on Java and trying to make .net look like a new toy in town.
Why waste your time? Code yourself in .net, if it's so cool.
Posted by: whizzy on March 10, 2004 at 08:37 AM
-
bah humbug
Perhaps the Java misunderstanding is because of a bad message from Sun marketing?
Java is good for corporate software, for applications developped by internal IT developpers. End users are well controlled and you can lower their expectations.
If you want to write commercial software, don't select Java or prepare yourself to encounter limits: bad integration with platform UI or other native applications, bugs staying opened for years in the Bugs database, memory hog... For commercial software for the Windows platform (>90% users), Microsoft tools are more adapted.
This has long been discussed, even on this site last week (http://www.softwarereality.com/soapbox/swing.jsp on March 04). But as long as Sun does not understand that rock solid Java and Swing libraries are mandatory to succeed with the rich client promise, they will lose developpers.
Posted by: genepi on March 10, 2004 at 10:03 AM
-
also on the subject of Swing lacking things..
one specific thing I came across today is the lack of a JTristateCheckBox - there was an enhancement request raised in 1997 about this...
i think with the amount of articles on *sun's own website* questioning Swing in multiple areas the Swing Team should write a "In Reply To.." article
Swing does plenty of things well, but its frustrating not being able to know whether some areas are not improving because other things are taking priority (not nec. within the Swing world) or because they are being ignored
Posted by: asjf on March 10, 2004 at 10:37 AM
-
bah humbug
To clarify, Sun is almost always behind in things that _end_users_ care about. Swings MVC architecture and portability are great for developers, but users don't see that in any direct way. They see more mundane things, like the fact that Swing edit fields don't have the context menu that every other Windows app does.
Pluggable LAF is nice to have for certain apps. A few non-mainstream Windows apps (WinAmp, WMP, Encarta, Money etc) do use custom look and feels. It is hard to do this kind of app in Win32, MFC or WinForms. MS is talking about app-specific LAFs in LongHorn (as opposed to theming), but that is far off. So Sun is ahead in an area that is not important to users today, but may well be in the future.
So pluggable LAF is nice, but actually having a properly done Windows LAF is essential. They keep saying they're putting a lot of effort into it, but it sure doesn't show. I don't think it's impossible to make Swing behave like Windows. Mozilla, QT and various other toolkits emulate Windows widgets a lot better than Swing does. Mozilla has proper edit context menus, shadows under the menus, uses the real system file dialogs etc etc. They have just paid more attention, probably because they are writing an app they want people to use, instead of creating elegant API's.
I frankly find things like JDNC discouraging. It seems like they're off to do the 'new new thing' rather than finish what's already there. Like whatever happened to tool support for JavaBeans XML serialization? That puttered along for years, came out in 1.4, and nobody uses i!.
I think it's pretty clear that Sun is engineering driven, not user driven. I'm not saying they're sitting around going 'lets do fun stuff and screw users', but I don't think they have the corporate DNA to do quality client software.
Posted by: gordongecko on March 10, 2004 at 01:34 PM
-
Java Web Start fat clients rock!
After several years of hard-core swing programming I have learned considerable respect for it. However, my thoughts about Swing are:
The attitude seems to be to design components thinking, "the developer can just extend this component to do more useful things". Yet, I never really want to have to do this. I wish Sun would use the posts to the Swing forums as feedback to learn what common GUI tasks developers are having a hard time with and extend Swing accordingly. Maybe the JDNC will help out a lot, but if it's JDBC-centric then I feel they have missed the boat. (and should spend more time reading the swing forums)
Too often I extend a Swing class, only to find that it's like pulling a shirt sleeve out of a dryer. I just want the shirt, yet I get the entire load. Also, in the process critical methods are often marked private and I have to copy them into my project so I can modify them. Shame....
Having said this, I'm pleased by what I have been able to accomplish with Java 1.4, and everything looks much nicer in Java 1.5
With fat JWS clients, if I fix a bug the entire global userbase gets the fix the next time they restart. That's truly powerful. Can .NET do that? I'd really like to know.
WRT speed, Swing is capable of providing instantaneous responses as long as you use something like SwingWorker. (The JTable RowHeader seems to have a 200ms delay in updating with the rest of a table, but that's about the only slowdown I've seen that Swing is actually responsible for). I think Sun should actually challenge developers to prove otherwise to finally put this myth to sleep.
Ramble ramble...
Posted by: markswanson on March 10, 2004 at 03:14 PM
-
trolling?
No its not a troll. Its pointed criticism. I am enumerating various problems in JDK 1.5 and previous releases hoping to shame Sun into fixing them. I'm not dumping on Chris Campbell. There is definitely good stuff in 1.5, but XAWT/OpenGL/JDNC or whatever they add don't mean anything unless they fix the more mundance issues that users (not developers!) run into.
My perspective is as a commercial 'shrinkwrap' developer; somewhat different than internal corporate apps. After 8 years of Java there are still very few commercial Java apps. Take out dev tools and there are even fewer. People have voted with their feet; it will take a lot of effort to win them back.
I am coding in client side in .NET, server stuff in J2EE. I very much want to see client Java succeed, but I know that if I want _my_ product to succeed I have a much better chance on .NET. I cannot go to my boss and make a case for using Java/Swing. It simply does not do what users want, and whats more we've been burned by broken promises all the way back to JDK 1.0.2. We don't have time to be zealots.
Java doesn't get hurt by constructive criticism. It gets hurt by ignoring real world issues.
Posted by: gordongecko on March 10, 2004 at 06:06 PM
-
Java Web Start fat clients rock!
Yeah .NET can deploy rich clients over HTTP like Web Start.
They don't have some stuff that JWS does, like Start menu integration, or clipboard access from inside their sandbox. On the other hand, apps start up a heckuva lot quicker. They promise much more stuff along these lines with 'ClickOnce' deployment in early 2005.
As for performance, Swing is pretty good now. But menu performance still sucks even on moderately old HW (P3/800). Unlike Windows or the Mac or even Motif, they don't cache the obscured bitmap behind the menu so dismissing one causes a full repaint.
Posted by: gordongecko on March 10, 2004 at 06:17 PM
-
Don't Bring Me Down, Bruce
I agree!! Sun should have released reference implementations of a file explorer, image viewer, audio player, e-mail client, sql-query to sortable table etc. etc. with usable classes years ago.
Posted by: jancarel on March 11, 2004 at 06:43 AM
-
bah humbug
Along the same lines of your argument, I feel that engineering resources to develop both the PLAF framework and the LAFs themselves (and JDK 1.5 is bring us more LAFs) could have been better spent developing better and more convincing native LAFs.
Then, I read between the lines of the new LAFs in 1.5/Tiger, and I think that Sun has realized two things (though they're not likely to admit it): Emulating the native UI in Java/Swing is difficult (and a moving target as the OS vendor tweaks the platform UI), and Metal is ugly. So, it's probably a step forward to have a Java application that still sticks out like a sore thumb, but at least an attractive sore thumb.
Posted by: jimothy on March 11, 2004 at 08:33 AM
-
trolling? Bogus.
Hmmm.... a commercial shrink wrap programmer coding in .Net and J2EE... People have voted with their feet...sounds kinda fishy.
Most shrink-wrap developers wouldn't touch .Net, VB or a VM for that matter.
"I know that if I want _my_ product to succeed I have a much better chance on .NET"
And I guess you will use Mono if you want it to succeed on Linux?
Posted by: d_bleyl on March 12, 2004 at 12:51 PM
-
trolling? Bogus.
No I wouldn't use Mono, because the WinForms implementation is not up to snuff. Its a difiicult thing to make WInForms work on another platform.
Mono seems fine for core business logic and perhaps ASP.NET. SourceGear Vault is one product I know of using it.
You are right in that most commercial developers are not jumping on to .NET. It is not worthwhile to rewrite your product for .NET for few discernible end-user benefits. In our case, we are doing a major new product and need some particular .NET features, like easy deployment. We also have lots of Java experience which can be leveraged into .NET and C#.
And we are using J2EE on the server because cross-platform is essential in that market. Our customers (like the market at large) has 90-100% Windows desktops but a heterogeneous mix of servers. Often Windows for mail and ASP.NET, but Linux, Solaris and HP/UX for databases, CRM and other enterprise apps. They don't want to be locked into Windows on the server because they have a choice. On the desktop, they are already locked in, and there are not, from their point of view, good alternatives.
So what's so bogus about all this?
Posted by: gordongecko on March 12, 2004 at 02:38 PM
-
trolling? Maybe it's not bogus.
I suppose we just have different definitions for shrink-wrapped.
I'm one of the skeptics who think that .Net portabililty won't get there, so why not write your frontend UI's in C/C++? Pure native code with subclassed native widgets? Or QT or wxWindows, and skip the .Net install. With all the installers on the market today, deployment is not much of an issue. A good build management team could ensure that.
Posted by: d_bleyl on March 15, 2004 at 05:20 AM
-
trolling? Maybe it's not bogus.
Well my definition is you'll be able to buy our standalone desktop version at BestBuy. Our higher end server enabled editions will be sold direct. Or at least that's what they tell me. I don't pretend to understand the machinations of marketing.
If we cared at all about portability we wouldn't be doing the desktop in C#. Just in case though we are keeping our core stuff independent of WinForms. So in a theoretical future where desktop Linux matters to us, we might combine our core C# logic with a Mono/GTK# front end.
The thing that annoys me about all this is that it would far easier for Sun to make Swing a top-notch Windows experience than it would be for MS or Mono to make WinForms a good x-platform solution. The Swing design is fine, if complicated.
But they always screw up the implementation. Like not using the platform font renderer, so we don't get ClearType. Or not testing their stuff on 120dpi displays (screws up file dialogs). Or apparently, not reading the Windows UI guidelines ever...
Sigh.
Posted by: gordongecko on March 15, 2004 at 09:36 AM
-
bah humbug
If you'd like Cleartype rendering support, vote for this RFE at the bugparade: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4726365
It's already ranked in 9th place, but with more votes, we can get it higher up.
Posted by: iampivot on September 02, 2004 at 10:10 AM
|