Java Application Frameworks (Not Only Client Side …)

Tags:

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):

  1. NetBeans RC Platform, my IDE is build on this ;-)
  2. Eclipse RC Platform, has an interesting 'subproject' called Riena
  3. Spring RC, at the moment my favourite used in TimeFinder
  4. AppFramework which won't be in JDK 7, but has a lot of derivatives
    1. Swing application framework fork
    2. Guice Utilities & Tools Set
    3. Better Swing AppFramework
    4. ... with OSGi
  5. JVx, looks very nice! Makes fast development of Swing applications possible (with db support)
  6. OpenXDev a framework which could be used as a base for your next Swing project
  7. Genuine is a client framework for Java Swing applications for which it provides basic infrastructure
  8. Genesis with Swing and SWT binding; Easy, transparent remoting; etc
  9. GWT (although only intented for javascript widgets it could theoretically being used as a rich client running in the jvm)
  10. OpenSwing Framework is an open-source suite of advanced graphics components based on Swing toolkit
  11. Leonardi Framework
  12. Jspresso is a framework for building rich internet applications
  13. XUI is a Java and XML RIA platform
  14. Swing + XUL = SwiXAT looks interesting but dead, the same for the next:
  15. Swing + XML = SwiXml a small GUI generating engine.
  16. 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 AndresAn 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.
  17. JMatter is a software framework for constructing workgroup business applications based on the Naked Objects Architectural Pattern.
  18. Metawidget is a 'User Interface widget' that populates itself, at runtime, with UI components to match the properties of your business objects.
  19. 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:

  1. Aviantes-Business-Application-Framework
  2. Jide Desktop Application Framework
  3. Jazz

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)

From http://karussell.wordpress.com/

0

One spare time killer for me is my timetabling open source project TimeFinder. I work for Pannous GmbH and I would like to teach you or your developer here in Germany about Java, Algorithms, Design Patterns or TDD. Peter is a DZone MVB and is not an employee of DZone and has posted 27 posts at DZone. You can read more from them at their website.

(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

GWT? I love it, but it's really not more than a widget toolkit, spiced up with some nifty facilities for doing RPC and I18N...

Peter Karich replied on Thu, 2009/10/08 - 9:03am

Yes true. But I added it because in theory you could do pure Swing based desktop apps communicating with the server (okay with RPCalls, but its okay ...)

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

The same question raises for OpenXava: Will the client need the jvm or a browser?

Greg Brown replied on Fri, 2009/10/09 - 9:10am

Not sure exactly what your criteria is, but you might also want to consider Pivot:

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

Sorry, no... posted too soon.

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.santosjr 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.

 

 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.