Frank Schoep recently wrote this article on the rendering improvements of Swing applications in the upcoming Mustang version of Java.
Frank Schoep recently wrote this article on the rendering improvements of Swing applications in the upcoming Mustang version of Java.
Thanks for your effort pal, this was a nice introduction on how Java is playing hard for common desktop applications. A smooth reading. You can say AJAX could be the “next big thing”, but you just can’t ignore Java, it just keeps shinning…
* Antialiasing is now RGB instead of greyscale
* MDI Window Decorations don’t theme properly
* GTK Look n’ Feel is at least mildly broken for every theme except Clearlooks
* Clearlooks now renders almost perfectly in Java
* The 64-bit JVM doesn’t work properly at all (crashes with sliders)
* There’s still no native LNF for Qt, or for any of the various other toolkits (FLTK, FOX, etc). I would complain about a lack of a LNF for BeOS, but we’d need a BeOS JVM first for that to be an issue… Some guy named Bryan Varner appears to be working on one, but no news for a couple of years…
I think that’s about it…
I’d like to know why the overwhelming majority of antialiasing font rasterizers think that hinting is useful when antialiasing. The screenshots clearly show an adoption of this fallacy.
> we’d need a BeOS JVM first for that to be an issue… Some guy named Bryan Varner appears to be working on one, but no news for a couple of years…
You mean other than today?
http://bryan.varnernet.com/
This is a good article especially about GTK improvements.
This page
http://java.sun.com/developer/technicalArticles/J2SE/Desktop/mustan…
is giving overall changes in UI infrastructure.
Mustang related news and change logs can be found here:
https://mustang.dev.java.net/
Also Recently i saw this link, a casual performance comparison of Mustang-Java 1.5 and C. might be intresting.
http://www.javalobby.org/java/forums/t49834.html
Too bad that Swing still will give Java a bad name.
It’s too bad you are ignorant and behind the times and still buying into stuff that hasn’t been true since Java 1.4
I keep hearing that the major optimizations using escape analysis are NOT in mustang yet…lock elimination and stack allocation.
Anyone know if these optimizations will make it into mustang?
“Anyone know if these optimizations will make it into mustang?”
AFAIK, yes, they will make it into Mustang. The Mustang release is still a ways off yet.
Yes, it will be in unless Sun runs into some major problems.
Notice that even though escape analysis is already implemented in Mustang, right now (b55) the optimizations that need information from escape analysis are not yet implemented; the most important are lock elimination and stack allocation. You can check the working of escape analysis with -XX:+PrintEscapeAnalysis -XX:+DoEscapeAnalysis (I think the “print” option is exclusive to the fastdebug build). If you can read Assembly, check also -XX:+PrintOptoAssembly (this is not final ASM code but it’s very close), also in fastdebug builds. Pretty hot tool to study any microbenchmark 😉
The small difference of performance that you may see in current builds, turning escape analysis on, should be due to minor effects of this analysis in lesser optimizations that already explore it. But the big bucks have yet to come. Stack allocation not only saves GC overhead, but it also opens the door to other opportunistic optimizations, by inlining object fields as local variables (which allows register allocation of the hottest fields), and simplifying (inlined) method invocations that depend only on some fields of the inlined objects. Think for instance in Iterator objects, which are ubiquitous in modern Java code, never escape methods, and are very small (typically 2-3 fields). Escape analysis + stack allocation + field inlining and other optimizations, can produce code that’s as fast as iterator-less code(*), e.g. a “for (int…)” to iterate an ArrayList.
The article was a nice one but if you’re writing on the topic of aesthetics why choose to demonstrate it with GTK apps? GTK is extremely dull (the primary color is greyish/brown). Can we see a KDE version of this article?
“if you’re writing on the topic of aesthetics why choose to demonstrate it with GTK apps?”
There is no QT theme support for swing. The closest at the moment is using the GTK LF in the mustang builds, then using the gtkqt theme for GTK2. Unsurprisingly, the results aren’t great. Still, I’d rank the results from this method as hovering somewhere around “good”. And that’s far more than I would have expected from such an indirect simulation!
gtk is nicer and more professional looking. a kde version is not necessary because gui’s with fisher-price appearences aren’t very popular these days.
hum kde have about 70% of the desktop market under linux… gnome loose market share every years…
stop the fud
According who?
A couple of geek forums?
man These trolls.
Oh really?
Would that be why most Linux distros use Gnome as the default desktop? Or maybe it is why Gnome is the standard Unix desktop that was chosen to replace CDE by HP, Sun, and IBM.
Gnome is quite a bit more popular than KDE. Please where you got that 70% figure. I suspect you got it from your ass.
Gnome is quite a bit more popular than KDE. Please where you got that 70% figure. I suspect you got it from your ass.
He may have gotten 70% out of his ass, but it’s pretty safe to assume that KDE is in the majority. Only GTK-centric sites like OSNews ever have polls that show Gnome leading. Where is your evidence to the contrary?
Would that be why most Linux distros use Gnome as the default desktop?
I suggest you go to distrowatch and check out exactly how many distros do use Gnome as the default. I think you’ll find that there aren’t very many – it’s just the commercial ones (and Ubuntu, but they also have Kubuntu to balance that out). Many of those companies you name are huge contributers to Gnome, so of course they’re going to use what they’ve paid for rather than ignoring it and going with something else.
“Where is your evidence to the contrary?”
Red Hat / Fedora is the most popular Linux distribution, and it uses Gnome as the default.
“Many of those companies you name are huge contributers to Gnome, so of course they’re going to use what they’ve paid for rather than ignoring it and going with something else.”
But why did they pick Gnome instead of KDE? Because the biggest mistake KDE made was going with Qt as the toolkit. Qt licensing is not at all friendly to commercial business because of its “GPL or shell out $3000 per developer seat” license. The Gtk licensing is much more compatible with commercial interests.
His blown up shots of greyscale and subpixel antialiasing did a horrible job of showing the differences. The colored “subpixels” appeared the same size as the greyscale pixels. The whole point of the subpixels is that they are only a third as wide as full pixels, allowing for much smoother lines. His shots don’t make that clear at all.
http://grc.com/ctwhat.htm gives a much better overview of subpixel rendering (though I’m ashamed to link to a Steve Gibson raving loon page)
I posted each text example in two sizes: one-on-one, just as you’d see it rendered, and enlarged by a factor of 8. I didn’t attempt to explain the technique behind subpixel antialiasing, I just wanted to show Java supported this now.
By enlarging the texts you can clearly see the coloured “subpixels” surrounding the text. For real life rendering, I included some twelve full screenshots with text rendered using the various JDKs and settings.
I’m sorry that I couldn’t convey my message better, but I hope it is clear now that I did not want to dissect subpixel rendering, just show that, and how, it is now supported by the Java runtime.
…that dude is talking about Mustang aesthetics yet I dont know where his sense of aesthetics comes from! Who writes an article with black font on a dark blue/indigoish background?! But yes I am looking forward to Mustang. Notably Swing improvements and performance improvements as well.
What web browser are you using?
My bad…damn browser didnt render the page properly so all i saw was blue and black! I didnt know there was white!
IMHO it is too late, if SUN create useable GUI for java in 1995 it can be very great. But now IMHO the java is never will alternative for .NET on desktop side.
“But now IMHO the java is never will alternative for .NET on desktop side.”
Well, actually, there are currently more desktop applications written in Java than in .NET. A few examples:
Limewire, Azureus, jEdit, ThinkFree Office, EIOffice
I agree.
I used to agonize over C# as Java programmer. But once you try to find, say a good, free Object Oriented Database, I can find it for Java but not for C# (the one that exists for C# is GPL so I can’t use it for commercial purposes, besides it’s a port form Java). Then I looked at the projects on SF and Freshmeat and Java is the third largest language after C and C++ (ignoring PHP, there are more PHP projects then anything else but they are mostly dead CMS projects). Even with things in C# (the language) I can’t see myself switching from Java since the preexisting projects for Java are something that C# just can’t compete with.
IE
Currently Sun spent a lot effort and time to enhance Java2D/Swing.
The reason may be the mistake in philosophy of swing on implementation/design.
In update page of Mustang.
Clearly, Sun starts to use MS’s and GTK’s API for some JFC/Swing rendering.
Before, Sun emphasizes on portability and beautiful Hierarchy (Native->AWT/Java2D->Swing).
Therefore Sun loses its points by adopting native APIs in JFC/Swing for improvement of rendering.
Even though, Swing still can’t have native look of Windows and GTK.
The enhancement just makes it look better and look like native.
Imitation will never be real.
Current change is just the first step.
The best way may be reimplement JFC/Swing in native Winodws/GTK APIs.
best regards..:)
.OR. use SWT instead. It already implements this idea.
Its a little bit off topic, but have also a look at the GNU Classpath screenshots:
http://gnu.wildebeest.org/diary/index.php?p=123
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24256
http://lists.gnu.org/archive/html/classpath/2005-10/msg00071.html
GNU Classpatgh trys to llok like Suns Java.
And Suns Java trys to bring its Gtk LAF to look tike Gtk.
GNU Classpath needs to provide all the sameLAFs that Sun provide with its JDK/JRE. So its not really >>trying to look like Suns Java<<.
This is progress? Java is over 10 years old now and we’re just getting proper anti-aliasing? What a disgrace. It’s development speeds like this that guarantee .Net will wipe itself with Java. Sun’s only hope to keep up the pace is to open up the process more, perhaps even GPL one version of java and release it as unofficial to the gcj guys or classpath.
The new process Sun has is better, but not enough to keep up.
.NET has been out for quite some time now, according to you, it should have already “wiped with java”, whereas what we’re really seeing is quite the opposite.
I can not and will not take C# or .NET seriously until it provides a viable cross platform GUI API. Right now you have Windows Forms, that’s NOT cross platform; there is only MS implementation and two broken open source ones. Then you have GTK#, better then Windows Forms but still way of the mark. How is either of them supposed to compare to SWING or SWT? Until there is a functional port of SWT (there are two dead ones) or C# guys build a new cross platform toolkit, there is just no way that C# competes with Java. Regardless of all the cool libs like LWJGL or ozone or whatever, if you are getting hung up on anti-aliasing I strongly suspect you never programmed in anything, especially not Java.
… the Java guys have copied the ClearType technology from Windows XP. Congratulations.
To my knowledge not too much has been invented in Redmond:
http://grc.com/ctwho.htm
here is the complete history…
http://www.vcnet.com/bms/departments/innovation.shtml