Java Application Frameworks (Not Only Client Side …)
In an old post I listed all Java libraries,where only two application frameworks were listed. Today it is time to list some client side Java application frameworks, because I discovered some new ones while reading the W-JAX announcement. Some of the listed frameworks will make developing application with DB easier. And some of them are real 3 tier architectured frameworks. Some of them even allow you to develop RIA’s and web frameworks at the same time.
Here is now the list of open source Java application frameworks especially for the desktop. Feel free to add some more (via comment):
- NetBeans RC Platform, my IDE is build on this ;-)
- Eclipse RC Platform, has an interesting 'subproject' called Riena
- Spring RC, at the moment my favourite used in TimeFinder
- AppFramework which won't be in JDK 7, but has a lot of derivatives
- JVx, looks very nice! Makes fast development of Swing applications possible (with db support)
- OpenXDev a framework which could be used as a base for your next Swing project
- Genuine is a client framework for Java Swing applications for which it provides basic infrastructure
- Genesis with Swing and SWT binding; Easy, transparent remoting; etc
- GWT (although only intented for javascript widgets it could theoretically being used as a rich client running in the jvm)
- OpenSwing Framework is an open-source suite of advanced graphics components based on Swing toolkit
- Leonardi Framework
- Jspresso is a framework for building rich internet applications
- XUI is a Java and XML RIA platform
- Swing + XUL = SwiXAT looks interesting but dead, the same for the next:
- Swing + XML = SwiXml a small GUI generating engine.
- But why xml if you have groovy: Griffon ;-)
Now, a nice approach would be to send/receive groovy code and build the clients' GUI on fly... this would be like replacing the browser+html+javascript system with rock solid JVM+Groovy ;-)
Another Comment from Andres: An addtional tidbit about Griffon, it can be seen as a polyglot programming desktop/RIA framework as it supports 5 JVM languages at the moment: Java, Groovy, Scala, Clojure and JavaFX. It also lets you embed JavaFX components on Swing containers. - JMatter is a software framework for constructing workgroup business applications based on the Naked Objects Architectural Pattern.
- Metawidget is a 'User Interface widget' that populates itself, at runtime, with UI components to match the properties of your business objects.
- Pivot a platform for building rich internet applications in Java
Especially JVx with a webstart demo looks very promising! It even feels better and faster than an ordinary flash application!
Commercial:
I listed only frameworks which help developers to easier build client side desktop application and only if they run in the JVM. So frameworks where the client is browser-based (aka web frameworks) are not listed here.
For a good list of J2EE frameworks go to java-source.net or to wikipedia. (Or here, or there, or even here)
- Login or register to post comments
- 11769 reads
- Printer-friendly version
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)




Comments
Karl Peterbauer replied on Thu, 2009/10/08 - 7:50am
Peter Karich replied on Thu, 2009/10/08 - 9:03am
Mike P(Okidoky) replied on Thu, 2009/10/08 - 10:55am
Swixml dead? I really like that thing! I thought it was the neatest thing. You define your gui in xml (for which you could create a tool - which people don't seem to do and instead keep editing xml raw - WHY), and through introspection it would interface with your code. It's actually more brilliant then what meets the eye. ps. this rich text editor that I'm typing my message in right now isn't behaving correctly in Opera it seems. When I hit return, it *inserts* a paragraph instead of append, weird.
Mike P(Okidoky) replied on Thu, 2009/10/08 - 11:14am
What about lift? A web framework in Scala. Scala is very suave. It's written in Scala itself, it's *fast* (unlike the unacceptably dog slow Groovy), interoperates with Java perfectly. We really ought to start seeing more Scala based frame works. I think people are too distracted with other stuff to take notice I think. If you're new to Scala, definitely check out one of Martin's presentations. I'd place him in the Jedi category for sure. There's got to be more fruit hanging off of that tree...
Andres Almiray replied on Thu, 2009/10/08 - 2:50pm
Three other open source offerings that are missing from that list:
- JMatter - JMatter is a software framework for constructing workgroup business applications
based on the Naked Objects Architectural Pattern.
- MetaWidget - Metawidget is a 'smart User Interface widget' that populates itself, at runtime, with UI components to match the properties of your business objects.
- OpenXava - OpenXava is a productive way for creating AJAX Enterprise Applications
with Java. Indeed, it's faster developing with OpenXava than with Ruby
On Rails, Spring MVC, or any other MVC
framework. This is because in OpenXava you only have to write the
Model. The Controllers are reused, and the View are generated
automatically.
An addtional tidbit about Griffon, it can be seen as a polyglot programming desktop/RIA framework as it supports 5 JVM languages at the moment: Java, Groovy, Scala, Clojure and JavaFX. It also lets you embed JavaFX components on Swing containers.Richard Osbaldeston replied on Thu, 2009/10/08 - 5:20pm
Didn't Karsten have his own fork of JSR296? is that part of his commercial Swing Suite?
Richard Osbaldeston replied on Thu, 2009/10/08 - 5:23pm
The Genesis project would also seem to fit your critearia of an application framework: http://genesis.dev.java.net/nonav/3.2/maven-site/en/index.html
Peter Karich replied on Fri, 2009/10/09 - 4:40am
Thanks Richard and Andres for your suggestions!! I will have a look at them and add them to the list!
> What about lift?
Will the client need the jvm or a browser?
Peter Karich replied on Fri, 2009/10/09 - 4:47am
Greg Brown replied on Fri, 2009/10/09 - 9:10am
http://incubator.apache.org/pivot/
Peter Karich replied on Fri, 2009/10/09 - 9:33am
> http://incubator.apache.org/pivot/
Thanks a lot for this!! I added this!
> Not sure exactly what your criteria is
Making RIA development easier (in any sense for db, swing, whatever). But the rich client should not require a browser. So it should run within the jvm.
DC Cothren replied on Fri, 2009/10/09 - 9:57am
The tox (Tomcat Oracle & XML) web archive is a foundation for development of HTTP based applications using Tomcat (or some other servlet container) and an Oracle RDBMS. Use of tox requires coding primarily in PL/SQL, JavaScript, and XSLT, but also in HTML, CSS, and potentially Java. Coded in Java and PL/SQL itself, tox provides the foundation for more complex applications to be built.
The tox framework enables the construction of applications using the model/view/controller (MVC) design pattern. With a controller that executes interpreted XML for creating the model and view, developers can construct new functionality. The model is retrieved either via includes or by the execution of Oracle's stored procedures and then passed to an XML Stylesheet transform (XSLT) to construct and return the view. Different combinations and options provide rich dynamic content.
Peter Karich replied on Fri, 2009/10/09 - 10:07am
> The tox
Sorry, I cannot understand, but does this really match the criteria defined above? (on client side no browser/ajax required?)
DC Cothren replied on Fri, 2009/10/09 - 10:09am
in response to: peathal
EG replied on Wed, 2009/11/04 - 3:38pm
You may want to add Jt to your list (jar top 25).
http://freedom.lunarpages.com/Jt
Jt - Java Pattern Oriented Framework (Jt 4.2)
Jt is a pattern oriented framework for the rapid implementation of Java applications. Jt has been utilized in several large mission critical systems. Jt implements many well-known patterns including Data Access Objects (DAO), GoF design patterns and J2EE patterns.
The framework addresses the following goals and requirements:
A) The pattern oriented framework implements and facilitates the implementation of well-known design patterns like GoF design patterns and J2EE Design patterns. The framework itself is conceived and implemented based on design patterns (from the ground up). The framework facilitates and accelerates the implementation of applications based on design patterns.
B) The framework architecture is based on a messaging design pattern: framework objects are able to interchange information and perform computations by sending, receiving and processing messages. A messaging API provides strong encapsulation and loose coupling; framework components can be easily plugged into complex framework applications using a "lego/messaging" architecture. The framework takes full advantage of the power and simplicity of the messaging design pattern.
C) The framework lego/messaging architecture provides transparent access to remote components: remote framework objects is treated as local objects. Design patterns implemented by the framework (adapters, remote proxies and facades) make this posible by hiding the complexities associated with remote APIs.
D) The framework provides transparent integration with other technologies via framework adapters, proxies and the implementation of related design patterns. These technologies include BPM, DAO implementations, MVC implementations, EJBs, JMS, XML and Web Services.
E) The framework is designed to be lightweight and fast in terms of performance (low overhead).
F) The framework messaging/lego architecture should improve and simplify design/development efforts. There should be a tight correspondence between UML design diagrams and the framework messaging based applications and components needed for the implementation. Ideally, the framework provides wizards and automated capabilities for generating framework applications. Framework components should be easily added to BPM process diagrams. In future versions of the framework, it should be possible for applications to be generated directly from the UML design diagrams.
G) The framework messaging architecture facilitates testing and debugging efforts. The framework provides capabilities for testing components independently (each component as a unit) by sending messages and verifying the reply (output) messages.
H) In order to provide additional productivity benefits, the framework is integrated with open source IDEs.
Bob Santos replied on Tue, 2009/11/10 - 10:16pm
Hi Peter,
First of all, thanks for the list. It made me aware of the existence of RIA frameworks. Right after reading your article I tried using some of the frameworks in the list. I'm great with Swing, however, let me share my experiences at the perspective of a beginner in RIA frameworks.
OpenSwing
OpenSwing is promising but lacks severely in good documentation. I had a hard time looking for information regarding classes and interfaces used in this framework, especially with their javadocs. And from what I read you can get a good documentation for a price which unfortunately I don't have money for. But what's good about it is that it's last stable release was just November 7, 2009.
openXDEV and JVX
I don't have anything to say except that their websites are written in a language I really don't understand unless I use a translator.
Genuine
Enough documentation to start with but last commit was January 2005.
I'm currently trying out Spring RC and will let you know what I think of it and the others that I will try. Most probably I will stop trying if I found one framework that a beginner like me can learn easily. Hopefully, if I found one which I can grasp easily I will help in its development.
Peter Karich replied on Mon, 2009/11/16 - 3:10pm
in response to: wwwfswcom
> Jt
Hmmh, this really matches the criteria defined above? (on client side no browser/ajax required?)
Peter Karich replied on Mon, 2009/11/16 - 3:24pm
in response to: bob.santosjr
Hi Bob!
Thanks a lot for your thoughts!
> I don't have anything to say except that their websites are written in a
> language I really don't understand unless I use a translator.
Uh, thanks for the pointer. I'll ask if English is planned.
> Spring RC
For this one please look into my link collection to get not lost as a beginner.
Please let me know if you need some code or like that ...
Warning: spring rc is very powerful, but lacks plugins at the moment. See this post for more info.