Java Swing Frameworks and Libraries

Today I am looking around which library or framework could make my life easier while developing with Swing.

For Swing I need nice components, dialogs, wizards, background threads, etc.

In additation to this I will need ‘easy’ logging, ‘easy’ translation, beans binding and so on. The final requirements are not fixed at the moment so I will take just a survey ;-)

So whats the difference between an ordenary ‘libray’ and the hip ‘framework’?

I think the main difference between a framework and a library is, that you have to call the libraries methods directly from code. Swing itself is a framework, so it calls your methods; e.g. your ActionListener’s listen to an action from Swing and will be called from Swing. That means a framework uses the hollywood principle or sometimes called dependency injection.

Let me start with the ‘EierlegendeWollmilchsäue’ (the more bigger frameworks):

  • Spring richclient (Apache License 2.0). Actions, bars and more via spring beans, data binding and validation, view management, dialogs, wizards, progress bars, simple I18N etc. Start with the documentation there or here.
  • OpenSwing Framework: a lot of components, beans binding, ORM classes, spring integration, authorization management, logging, translation. See here for more information.
  • The dev.java.net bundle; namely: Swing Application Framework and Beans Binding (LGPL). The AppFramework is currently not active, but nevertheless it offers some nice features.
  • Genuine (LGPL) is a client framework for Java Swing applications for which it provides basic infrastructure.

There are some smaller, but very nice libraries and frameworks:

Do you know other free libraries or frameworks, which could be useful for Swing development?

15 thoughts on “Java Swing Frameworks and Libraries

  1. GUI Commands is cool lightweight action manager.
    http://pietschy.org/software/gui-commands/index.html

    GlazedLists is integrated in Spring RCP, but is also useful on its own
    http://publicobject.com/glazedlists/

    MiG layout is an evolutionary improvement of JGoodies layout, allowing alignment of components belonging to different panels.
    http://www.miglayout.com/

    Jide Common Layer contains high quality components and utilities, open-sourced from their superb commercial product.
    https://jide-oss.dev.java.net/

  2. Pingback: Top Posts « WordPress.com

  3. Pingback: roScripts - Webmaster resources and websites

  4. @Dimitar What components are in the jide common layer? Could you explain your favourites? And is GUI Commands similar to the spring rich clients commands? Or even the same?
    @Frank Is it possible with your file chooser component to set the details view as the standard view? (Because this is what I failed to do for the JFileChooser)
    @Harald Thanks a lot for this information! Could you please describe the differences to e.g. the spring rich client project?

  5. Hi Peter! Compared to other frameworks (like Spring RCP) Tentackle is — what I call — a “top-down” framework. It’s much more like Rails is for Ruby than Spring is for Java. In fact, you’ll find many concepts and ideas of Rails in Tentackle (although it’s older). The way of thinking is pretty much the same: getting things done! There is a tutorial covering most of Tentackle’s goodies:
    http://www.tentackle.org/html/en/tutorial.html

  6. Hi Harald!

    I never thried Rails, although I should. But I took a quick look at tentackle: It seems to be well integrated into NetBeans – thats a great news for me :-).
    But does tentackle supports me to use JPA or JDO for the persistence layer? (I will tell you later what one can do with spring rich client…)
    And what about docking framework, is there any?
    And let me ask a last question about security: Is it really secure? I mean, you achieve the security on application level, right? Does this mean, if I would have an open source app, someone could come, change the methods, compiles it and then has access to all the stuff he wants?? Or did you mean application level on the server side?

  7. Hi Peter! Indeed, Netbeans provides a few nice features. Most important for Tentackle are the guarded blocks to lock generated code. Concerning the persistence layer: Tentackle provides its own layer based on the active record pattern (quite similar to Rails). As a consequence, using POJO-based persistence frameworks doesn’t make much sense. AR is a completely different approach and much more lightweight than POJO.
    There are pros and cons for either approach, but that’s a separate discussion ;)
    Security: the rules apply to the client _and_ the server! It won’t help to tweak the client in order to bypass security. As transactions run in the server, the server will enforce the security.
    However, you can implement additional rules in the client. For example, consider master data like currencies. All users must be able to work with currencies (hence, they need server-side read access), but only a few users should be able to view the attributes for each currency in a certain panel.
    Docking: there is no special support in Tentackle. However, it’s not rocket science to integrate with some RCP platform. Although I wouldn’t do so, because of Tentackle’s outstanding small footprint. You just need tentackle.jar (1.5 megs) and the JRE. That’s it. I personally don’t like architectures you have to throw a whopping 100 megs of jars at to get your app running ;)

  8. Pingback: Java Application Frameworks (not only client side …) « Find Time for Java and more!

Comments are closed.