JAG 6.0 released: Tapestry 4, XFire SOAP & Acegi Security

Discussions

News: JAG 6.0 released: Tapestry 4, XFire SOAP & Acegi Security

  1. JAG is a Swing application that creates complete, working J2EE applications from a database or UML model.
     
    JAG 6.0 adds support for Java5-based templates. The template makes extensive use use of Java 5 annotations and generics and uses Hibernate 3 for persistence. For the presentation tier, either Tapestry or Struts can be selected.

    The following improvements have been made in the 6.0 release:
    • Tapestry 4 support
    • XFire SOAP framework (based on STAX)
    • Acegi security login
    • Rome RSS feed support
    • Many to many relations support
    • Jasper PDF Reports
    • generation of a Intellij 5 project file for a web application
    JAG is licensed under the GPL and is free for download.
  2. I've been following JAG for the last three years as well as many other code generation tools. I've found JAG to be the simplest and most complete code generation tool of all the ones I have used. It does a nice job of following best of breed practices as defined by core J2EE Patterns. Currently, I am using JAG to generate a web application of various catalogs I'm creating for SOA.

    http://www.soamodeling.org/techmapping.html

    I create my DB tables and their relationships, then generate an admin web application and a view only web application. The nice thing about it is that I don't write a single line of code or deal with any deployment descriptors.

    JAG does currently have some problems dealing with foreign keys that I had to work around. I had to fall back to older versions of the generation templates. All in all, JAG is an impressive open source code generation tool.

    Danny
  3. I've been following JAG for the last three years as well as many other code generation tools. I've found JAG to be the simplest and most complete code generation tool of all the ones I have used. It does a nice job of following best of breed practices as defined by core J2EE Patterns. Currently, I am using JAG to generate a web application of various catalogs I'm creating for SOA.http://www.soamodeling.org/techmapping.htmlI create my DB tables and their relationships, then generate an admin web application and a view only web application. The nice thing about it is that I don't write a single line of code or deal with any deployment descriptors.JAG does currently have some problems dealing with foreign keys that I had to work around. I had to fall back to older versions of the generation templates. All in all, JAG is an impressive open source code generation tool.Danny

    Nice to hear you've been following JAG all this time and to see it in action on your SOA catalogs site.
    I would be interested in hearing about the problems you encounterd with the foreign keys. Maybe you could submit them as a bug.

    Rudie.
  4. Congratulations! Having worked on a similar product myself, I know how complex some of this stuff is (and interesting too!)

    3 questions:

    1. I could see no mention on the website, but are non-EJB templates provided out of the box or would I need to develop them myself?
    2. Do you generate base bean classes and extend them with empty actual bean classes, such that a developer could hand-modify an actual bean class without disturbing the generated base class?
    3. Any plans to support RIA-type interfaces (eg. DHTML/AJAX, Flash, OpenLaszlo)?

    Best wishes
    Kit
  5. Congratulations! Having worked on a similar product myself, I know how complex some of this stuff is (and interesting too!)3 questions:1. I could see no mention on the website, but are non-EJB templates provided out of the box or would I need to develop them myself?2. Do you generate base bean classes and extend them with empty actual bean classes, such that a developer could hand-modify an actual bean class without disturbing the generated base class?3. Any plans to support RIA-type interfaces (eg. DHTML/AJAX, Flash, OpenLaszlo)?Best wishesKit

    Thanks for the good questions:
    The 3 Answers:

    Answer 1. The short answer is yes, those templates are available. The long answer:
    There are currently 2 "template trees". The first tree contains the traditional 3-tier layer model with a very strict seperation of those tiers using interfaces to allow switching different persistence or presentation tiers. This template supports Entity EJBs or Hibernate for persistence and Struts for presentation and Spring or a ServiceLocator as service layer. This is the "old" template tree which has been available for some time.

    Since JAG 6.0 a 2-tier template has been added requiring java5 and uses Hiberate 3, Tapestry 4 or struts and Spring or a ServiceLocator as service tier.

    Answer 2. No we don't, but it's quite easy to adjust the templates so they will use your custom beans. We use Velocity as template language, so they can be easily changed. Just copy an "existing template tree" and change it to your project needs.

    Answer 3. No, currently no plans for a RIA-type interface.

    Rudie.
  6. This is the first I have heard of JAG, but this is something that I have wanted to have before in a number of cases. If it's as good as advertised, I'm really excited.

    Kudos aside, I hope I don't start a flame war here, but is there any chance you'll be support JSF on the front end at some point?
  7. This one also caught me by surprise. That's at least three (open source) projects I know of using Tapestry as the web front end for this kind of domain-driven or model-driven database application generation.
  8. This one also caught me by surprise. That's at least three (open source) projects I know of using Tapestry as the web front end for this kind of domain-driven or model-driven database application generation.

    Hi Howard,

    I guess you mean Trails and AppFuse? Trails is on my wishlist to support in a future release of JAG, but i'll wait for the final release.
    P.S.: Thanks for the great Tapestry 4 product!

    Rudie.
  9. Actually, I should have said four, including AppFuse. I was talking about Cognition, which looks very similar to your product (but uses an Eclipse plugin).

    I'm very interested in a time when others are doing the most interesting work in Tapestry, not me :-). Right now, I'm doing some initial forays into Tapestry 5 and it's got me incredibly pumped. All the joy of Tapestry 4 and more, and none of the pain (that's the goal).
  10. any chance you should start a thread on the forums (here or elsewhere) describing the improvements of t5 over t4? It'd be good to hear more, but I don't think this thread should be hijacked.
  11. I hope I don't start a flame war here, but is there any chance you'll be support JSF on the front end at some point?

    No flamewar required. In essence JAG can (and should) support anything anyone is willing to build support for.
    I've worked with Rudie on the same project for a while. I did most of the front-end work on that project using Tapestry 3 (T4 was still in beta).
    I promised Rudie I would work on Tapestry support for JAG and after I implemented the initial version, Rudie tweaked it and added more stuff and fully intergrated it into JAG.

    I don't know much about JSF (yet), but if anyone is willing to write JSF support, I'm sure Rudie would love to add it. There may just be customers that want their front-end done in JSF, just like there may be customers wanting to have a Struts- or Tapestry front-end.

    Maybe in the future if I can find some spare time again, I may work on Wicket support as well. It looks very interesting.
    Or maybe even support my own webframework if I _ever_ finish that one :oD
  12. Why is it GUI driven?[ Go to top ]

    JAG looks great at first sight. But why is it dependent on a GUI application? That could become cumbersome for larger projects.
  13. Why is it GUI driven?[ Go to top ]

    JAG looks great at first sight. But why is it dependent on a GUI application? That could become cumbersome for larger projects.

    JAG was never intended to be part of a build proces, it generates one. It has primarily been designed as a one shot generator. Adding some sources incrementally is still possible, but there is no roundtrip generation.
  14. Why is it GUI driven?[ Go to top ]

    JAG was never intended to be part of a build proces, it generates one. It has primarily been designed as a one shot generator. Adding some sources incrementally is still possible, but there is no roundtrip generation.

    Do you mean that JUGs is a passive code generator (that is a mega-wizard)?

    Thanks
  15. Why is it GUI driven?[ Go to top ]

    Do you mean that JUGs is a passive code generator (that is a mega-wizard)?Thanks

    It is indeed a passive code generator. There are some features to allow some updating, like alerting you that the generated file will be overwritten and showing you a diff for it. But in essence it's a passive code generator using a UML model or database model.