Summary
JIDE Software's David Qiao spoke to Artima recently about Java user interfaces. As founder and president of a company that has been in the Swing component business for many years, Qiao offers insight into how Swing could catch up to .NET in user interface development.
Advertisement
JIDE Software announced this week the 1.9.3 release of its Java user interface framework. JIDE is best known for its docking framework, but it also includes many Swing widgets that aim to make Java UI development easier. JIDE founder and CTO David Qiao summarized the new features in this release in a telephone interview with Artima:
There are three main things we added in this release. First, we enhanced the JIDE tabbed pane component. You can give each tab a different style, greatly enhancing the visual appearance of your application. For instance, you can choose between twelve different tab shapes, giving your program an appearance similar to [Microsoft's] OneNote product. You can also display tabs in different colors.
Second, we now support most of the Java GUI builders. In order for components to work well inside those builders, you have to provide a BeanInfo [class], and we now do that. Lastly, we added support for the Synth look and feel...
Qiao noted that the rich set of components available to .NET developers inspired some of JIDE's new components, such as a Swing pivot grid:
While still in beta, we also provide now a pivot grid component that provides functionality similar to [Microsoft] Excel pivot tables. It gives you a way to analyze tabular data.
Qiao noted that Java desktop application development is still behind the maturity of the tools and components available on the Microsoft platform, including .NET:
Java is definitely catching up, although it's still not as good as .NET. One reason is that .NET has to deal with only one operating system. If you want to introduce a new component in .NET, you just have to support one operating system, and you're done. For Swing, you have to do many different things—different look and feels, and support all the operating systems... But Java components are definitely catching up. JIDE components, for instance, run very well on [Windows] Vista [release candidate 1], using JDK 6, beta 2. The Java UI has all the Vista look and feel.
We asked Qiao what challenges a desktop Java developer faces that her .NET counterpart does not have to deal with:
The biggest challenge is the GUI designer. In the .NET world, everything is just drag-and-drop, everything is visually presented when you design the user interface. In Swing, and in Java in general, probably eighty-percent of developers don't use GUI designers, and write code to assemble GUIs instead...
The main issue in Java is compatibility between the different GUI designers... There is some de facto standard, which follows the practices of NetBeans, but not all GUI builders may follow that standard. We need to have better standards in that area so that, if you create a set of components, all the GUI builders will know how to handle those components. This is an ongoing task now. [Editor's note: See Artima's earlier coverage of JSR 273, Java Rockets Closer to VB-like Ease with JSR 273
.]
Another issue is that the richness of the components in Java is not there yet... Rich clients are about having rich components to choose from. There are different levels of richness. You can have components that have a rich set of features, or composite components that include several standard components. It's as if you were constructing a building, you wouldn't necessarily want bricks, but more developed, readily made structures that you can use to assemble your building easily.
The final issue is that there should be one standard for how [Java UIs] look. If you look at the .NET platform, Microsoft has a standard for that on Windows. [While] Sun did publish a Java Look And Feel standard many years ago, it looked very ugly... What we need for Swing is not just anything, but something great. Everyone could benefit, because it would make Swing a first-class citizen.
With much improvement having gone into Swing in JDK 5 and JDK 6, what are some of your remaining Swing gripes? What do you think it would take Swing to catch up with the ease of .NET-based UI development?
I think a lot of the reason Java is behind is because historically Sun wasn't interested in meeting the needs of Windows developers.
In the early days Sun's dream was to replace Windows with Java. You can't really embrace that which you wish to destroy. So having a non-drag-and-drop approach was considered adequate for the Java true believers who shunned Windows and believed that real programmers do things the hard way even if it harms their business.