General Information
- When is 1.0 going to be released?
The final release date has not yet been announced, but will be shortly.
- Is SwingLabs ready for production use?
All of the components within SwingLabs are meant to be usable in production applications, however SUN MAKES NO GUARANTEES FOR CURRENT OR FUTURE SUPPORT OR DEVELOPMENT FOR ANY OF THESE COMPONENTS. Everyting in licensed under an approved OSI open source license, so you are free to take the code and modify as appropriate for your applications.
- How do I contribute to SwingLabs?
There are many ways you can contribute to SwingLabs, spanning from bug submissions to code submissions. This wiki page has more details.
- Why is SwingLabs targeted at Java 5?
SwingLabs is an open source laboratory for the Swing team. As such, it doesn't make much sense to be experimenting with an out of date JRE (Java 1.4). Further, it was believed that by the time SwingLabs was ready for primetime, Java 5 would be the prevelant JRE in use.
- Is anybody using SwingLabs?
As we near a stable release, adoption is increasing. The wiki shows a few projects which have graciously allowed us to mention them.
Data Binding
- What is databinding?
Databinding is simply associating a property of one Object (p1) with a property on another Object (p2) so that whenever the property p1 changes, the property p2 is updated to reflect that change, and vice versa. This is useful in GUI applications by automating the task of binding a UI component such as a JTextField with a data object such as a Customer object so that the text field displays the customer's "name" property. Any updates to the text field will update the "name" property of the bean, and vice versa.
- What is the state of SwingLabs databinding?
The databinding project pioneered the techniques and explored the problem space which is now being used as part of JSR 295: Bean binding. While the JSR is taking a different approach (and likely will have a different API from what we've done in SwingLabs), it is a part of the ongoing effort within SwingLabs to provide a databinding API. Since we finally have a JSR for this, we can also move forward in defining a standard binding technology.
JSR 295 is now the official vehicle for delivering databinding, and no more work will be done by Sun engineers on the current databinding code in SwingLabs. This is out of plain necessity. Developing two different API's doesn't make sense. However, if anybody in the community would like to continue work on the databinding codebase already in SwingLabs, you are free to do so (it's LGPL, after all).
- How many frameworks are you guys gonna write!?
JSR 295 is the last one. I swear. If it isn't, I quit :-)
- Is databinding mature enough to use?
Yes, with the caveat that additional work and support will not happen from Sun employees. It has/is being used in a couple applications that we are aware of, and appears to work quite well. However, it is in no way supported. JSR 295, of course will be, but there is no known ETA before Java 1.7 is released.
DataSet
- How does this relate to .NET DataSet?
It is more or less the Java equivilent, though it's simularities were genuinely accidental. Once we realized the simularity with the Microsoft .NET DataSet, we renamed a few parts of our API to use like terms.
- How does this relate to JDBC 4.0?
Not at all. During developement of our DataSet, we were made aware of the JDBC 4.0 DataSet API. Our API is more like the .NET DataSet, while the JDBC 4.0 DataSet is entirely different.
- Why did you write the SwingLabs DataSet? Isn't JDBC good enough?
Traditional JDBC is hard to use with Swing applications. The ResultSet and RowSet both throw numerous checked exceptions. ResultSet has a cursor which is often unidirectional (forward only), making it impossible to use with the ListModel or TableModel or TreeModel. As a result, developers typically copy the data from their ResultSet/RowSet into in memory data structures which are then used for displaying the data.
SwingLabs DataSet takes a different approach. It is essentially a relational data structure. In many ways it is more closely related to java.util.List and java.util.Map than JDBC. It automates the process of loading data into this data structure from a database (or other data source such as a tab or comma delimited file). It makes it easy to bind to UI components using some databinding API such as the JSR 295: Bean Binding api.
SwingLabs DataSet also has API for serializing to XML, which can be used both for web services and for persisting the data locally to disk.
Filtering/Sorting
- Why are the SwingLabs and Java SE 6 filtering/sorting API's different?
The SwingLabs sorting/filtering API was developed several years ago. Prior to being included in the JDK there were some (major) changes that Scott Violet (Swing Architect) wanted to make. He didn't feel there was time to do it both in SwingLabs and in the JDK to meet the tight Mustang release schedule, so he did it for Mustang first. Hopefully somebody in the community will step forward and contribute some code backporting it from Mustang. Sun doesn't have resource to support it at this time.
JDNC
- What happened to JDNC?
As the JDNC project started to become more successful, it also became too all encompassing. We found that it would be easier to manage growth if it were broken out into several sub projects. This, is SwingLabs. It is an umbrella project composed of what once was the JDNC project.
- Why don't you support XML GUI's anymore?
There are a ton of things we'd like to do, but don't have the time/resources to do it all. We're always looking for volunteers! We've also noticed that there are a TON of open source alternatives out there for declarative Swing programming. One recent and promising project is JAXX.
- What is the long term outlook for JDNC?
There's some more major surgery to do, but the long term outlook is pretty positive. The JDesktop Network Components project (JDNC) will eventually house components (both visual and non-visual) for working with webservices. For example, the JXMapViewer component that was shown during the JavaOne 2006 keynote as part of the Aerith project will be released as part of the JDNC project. Basically, if the component is all about webservices or working on the net, then it'll probably end up in JDNC.
SwingX
- How do I use SwingX components in my favorite GUI builder?
All SwingX components are real JavaBeans, meaning that they can be added to the pallete of your favorite IDE and used for constructing GUIs. For details on doing so with Netbeans, see this tutorial. We're looking for help from anybody running other IDEs to submit tutorials showing how to setup SwingX within that IDE. Please contact us on the forums!
- Does SwingX have a component for web rendering?
If you want to leverage the native web renderer, I recommend using the JDIC embedded browser. If you are looking for an all Java solution, I recommend the XHTML Renderer known as "Flying Saucer". There are also several commercial web renderers that are worth checking out.
- Does SwingX have a component for PDF rendering?
Yes and no. In the SwingLabs incubator there is a PDF renderer that works for very simple cases (principally, simple cases of output from the iText PDF project). Use at your own risk :-)
- Does SwingX have a component X?
If it doesn't yet, we'd love to see one in the incubator! The Wacki Wiki contains a bunch of fun ideas for components or enhancements to components that we'd love to see done. Or anything else you've got an inkling to do, we'd love to see it!