This is an overview of the main desktop features in Java 6 that should make it more appealing to desktop users. As with the Windows LAF, the GTK LAF in Java 5 struggled to match fidelity with the GTK toolkit. For Java 6, the GTK LAF will also utilise proper native GTK widgets rather than emulating them.
I’ve kept up with recent Java 6 builds, and Swing apps can almost pass for a native widget application now.
But it probably won’t lead to some resurgence of interest in Java as a thick client. Windows developers will just use .NET and Unix open source desktop developers will continue to use whatever they’ve been using (which is basically anything but Java).
Swing is a flexible API, but Sun (until recently) never paid attention to putting a RAD layer on top of it. Actually, Sun should probably put a RAD language on top of the JVM, but that’s another topic.
Hi,
well it always depends on the target platform. I agree, that .NET is the platform for windows development.
For Unix it is not clear. You can use Mono with gtk#, Qt and so on.
But what, if you wanna develop applications for several platforms? Mac, Windows, Unix/Linux?
Of course you have several possibilities e.g.:
Mono (works on Mac, Linux and Windows)
– With Gtk#
– With Winforms
Winforms are working, but the newest versions are not completed. Gtk# works on all platforms, but maybe some developers don’t like the look and feel of gtk on Windows, or Mac.
Alternatively you can use Qt, or WxWidgets. They both work well on all platforms. But maybe not everyone wants to write a application in C++. Yeah there is a Java binding for Qt now too, I know.
I don’t wanna say, that there is the one and only framework for cross platform development. I wanna clarify, that there are several choices.
But as you see: Java is one big player, if you wanna write your application once and use it on several platforms. And Swing worked well on all platforms, but the native Look and Feel was missed by many developers.
Swing now becomes more and more what SWT already is. And eclipse as a SWT application is a big success. It runs well on several platforms and looks nice on every one. But SWT isn’t installed by default with the Java JRE.
So I agree, that it is a bit late for swing, because of SWT and .NET, but it is not too late.
(It’s never too late )
I believe that these are great news for developers, who wanna develop cross platform. (For me they are )
Greetings
Mike
Hi Mike
So I agree, that it is a bit late for swing, because of SWT and .NET, but it is not too late.
(It’s never too late )
It’s almost always too late;) It’s not just the visual fidelity to the native platforms. It’s the Swing APIs, it’s the Java language itself, it’s the perceptions of Swing and Java, as well as the investment in other technologies. I’ve always said that Java 5 was the last chance that Sun had with Swing making an impact as a thick client technology. I’m not backing away from that now.
Of course the unknown factor is what impact an open source Java will have. And when I mean Java, I don’t mean the Java language. Java just isn’t a RAD language.
Hi,
I agree that Java doesn’t have a good image as a platform for thick clients, especially from the users view.
But what is the problem with the Swing API and Java itself?
What is a RAD language for you? Python, Ruby? Is C# a RAD language? Imho no. Doesn’t it depend on the IDE too?
And yesy: An open source Java could change something on the java on the desktop side.
Beside this: What do you think about Java on the server side? JSP + JSF and so on? Do you think the same here too? At this domain Java has a much better position than on the desktop. Or are .NET and other frameworks (Ruby on rails) superior to Java?
Don’t wanna discuss this in depth, I am only interested in your opinion about this.
Greetings
Mike
But what is the problem with the Swing API and Java itself?
They both suffer from a lot of boilerplate. Swing is a flexible API, but until recently Sun wasn’t working on a layer on top that would ease building normal apps.
What is a RAD language for you? Python, Ruby? Is C# a RAD language? Imho no. Doesn’t it depend on the IDE too?
Python and Ruby would be RAD languages. At the very least a RAD language needs type inference if it’s statically typed. Boo is a nice example of a RAD language with good IDE support.
Beside this: What do you think about Java on the server side? JSP + JSF and so on? Do you think the same here too? At this domain Java has a much better position than on the desktop. Or are .NET and other frameworks (Ruby on rails) superior to Java?
Obviously, Java has done very well on the server side. I prefer frameworks like Echo2 over JSP/JSF.
Don’t wanna discuss this in depth, I am only interested in your opinion about this.
Put it this way. Do you think applets will make a comeback? There are a lot of advantages of Java applets over AJAX. But despite that, I don’t think applets will make a comeback. It’s one of those time to market and momentum issues.
Definitely tcl/tk . Just kidding..
But what, if you wanna develop applications for several platforms? Mac, Windows, Unix/Linux?
There RealBasic http://www.realbasic.com which is a cross platform IDE
Edited 2006-09-19 20:28
But it probably won’t lead to some resurgence of interest in Java as a thick client. Windows developers will just use .NET and Unix open source desktop developers will continue to use whatever they’ve been using (which is basically anything but Java).
Well, is it just me or the number of open source projects done in Java have been growing lately?
Swing is a flexible API, but Sun (until recently) never paid attention to putting a RAD layer on top of it.
Swing has had a RAD layer for years, since about NetBeans 3 I think (back in 2000). Not to mention all the proprietary IDEs that had RAD tools (JBuilder springs to mind).
What they’ve done is two things:
1) Swing uses native widgets whenever possible, only drawing it’s own if the native widget set can’t create a widget with the given settings
2) Swing has been expanded to use System fonts, instead of the usual cross-platform fonts that came with Java.
2) Swing uses a new Layout engine – GroupLayout – which knows about each desktops default widget spacing and placement rules. Developers just throw their widgets into the layout in Matisse, and then when the app is started the layout engine places the widgets the way the native apps normally do it.
Actually, Sun should probably put a RAD language on top of the JVM, but that’s another topic.
Like JRuby for example?
I work in a large corporation that did do a surprising amount of swing java development. There is now a big shift to .NET because of performance, memory footprint, lack of RAD etc…. Nothing SUN does now will change that.
I am not sure what people mean by RAD (I’d think that Ruby,Perl, etc are RAD), but with netbeans 5.0 and above, java has been very simple to develop for and easily accessible. Netbeans is also cross platform. Java at least as RAD as C#.
I saw someone mention memory footprint between Java and .Net. Now I have been on a few Desktop .Net projects and I did not notice much of a memory footprint difference between Java and .Net applications, for large complex applications. Now if you are talking about small applications (one screen and a few buttons), then yeah, the memory footprint is unacceptable in Java as appose to .Net (well, at least in comparing 1.4, I have not checked a native 1.5 app)
If Java becomes open-source like SUN promises then we may see a increased uptake in the open-source world. Mono is gaining popularity too. Look at Beagle, F-Spot, SkyNET, and Muine.
One just need compare the number of responses to this story with the number of responses to any Vista story to understand the lack of excitement generated by the thought of Java on the desktop. Until this thing grows from a set of potentially useful technologies to a set of actually useful end-user applications (like Beagle, F-Spot, SkyNET, and Muine), it’s too abstract for anyone to care.
I use Mercury and aMSN frequently to video conference with friends who are on Windows. These are Java applications (Mercury definitely is, aMSN looks Java-ish) and they are a God send for Mac users who wish to video conference with others who aren’t on Macs.
“I use Mercury and aMSN frequently to video conference with friends who are on Windows. These are Java applications (Mercury definitely is, aMSN looks Java-ish) and they are a God send for Mac users who wish to video conference with others who aren’t on Macs.
Try Skype Beta 2
Fully native (Cocoa) btw.
Back on topic, unless you are making a multiplatform app, I’d stick with Cocoa on Mac, QT/GTK on Linux & .NET on Windows. Java on the desktop just gives you the minimum common denominator, and in many cases that is not acceptable.
i fail to see your logic.
>Java at least as RAD as C#.
Definitely not, the approach taken to implement GUI RAD is completely different between the two. C# GUI development is very much the same model used by Delphi which permits very rapid devlopment The Java pproach is more like QT which is much more awkward.
As for rapid programming, C# an Java are comparable though the way events are handled by both are quire diferent, with I feel C# taking an easier approach (again modeled on Delphi).
For the desktop client that is.
Something like Python would be nice.
JIT compiler is just a need for most applets.
You will probably disagree.
There should be an option to the user to go for JIT or interperated and quick start up.
Just a thought.