672329 members! Sign up to stay informed.

Sponsored Links


Resources

Enterprise Java
Research Library

Get Java white papers, product information, case studies and webcasts

News News News Messages: 8 Messages: 8 Messages: 8 Printer friendly Printer friendly Printer friendly Post reply Post reply Post reply XML XML XML

OpenXava 2.0 released: Business Application Framework

Posted by: Javier Paniza on May 23, 2006 DIGG
OpenXava 2.0 is available for download. OpenXava allows you to develop J2EE business applications easily.
It's based in business components defined with XML: for example, the "Teachers" application from the OpenXava home page looks like this:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE component SYSTEM "dtds/component.dtd">
<component name="Teacher">
<entity>
<property name="id" type="String"
key="true" size="5" required="true"/>
<property name="name" type="String"
size="40" required="true"/>
</entity>
<entity-mapping table="MYSCHOOL.TEACHER">
<property-mapping
property="id" column="ID"/>
<property-mapping
property="name" column="NAME"/>
</entity-mapping>
</component>
This is not a complete configuration file, but this is enough to allow use of an application to display and edit lists of teachers. The new features of version 2.0 are:
  • Model layer generated using POJOs.
  • Persistence managed by Hibernate.
  • Works in a simple Tomcat.
Other features of OpenXava are:
  • Has been used for years to develop real applications.
  • High productivity for developing business applications.
  • Short learning curve and easy to use.
  • Flexible enough to create sophisticated applications.
  • It's possible to insert your own functionality in every place.
  • Based in the concept of business component.
  • Adapted to work with legacy database schemas.
  • Generate a full J2EE application: including User Interface and model classes (with POJOs or EJBs)
  • Supports WebSphere 6.0, 5.1 and 5.0, JBoss 4.0.x and 3.2.x using native EJB CMP2 EntityBeans.
  • Supports any application server (Tomcat, JBoss, WebSphere, etc) using POJOs + Hibernate.
  • Supports JSR-168: All OpenXava modules are standard portlets too.
  • It's tested with the portals: JetSpeed 2, WebSphere Portal and Liferay.
  • Easy integration of reports made with JasperReports.
  • Some little support for aspects.
  • Licensed under LGPL.
  • The developer can use English or Spanish.
  • All labels and messages are in English, Spanish, German, Indonesian, French and Catalan, with more coming.
What do you think about using XML to define your application? What do you think about automatic GUI generation from model? Do you really think that JavaEE 5 without additional framework is enough to afford the development of real life businees application in a productive way? What do you think about a Java5 + @annotation version of OpenXava?

Threaded replies

·  OpenXava 2.0 released: Business Application Framework by Javier Paniza on Tue May 23 04:14:16 EDT 2006
  ·  How about writing CODE? by Paul Reynolds on Tue May 23 09:35:17 EDT 2006
    ·  Re: How about writing CODE? by Kit Davies on Tue May 23 10:14:09 EDT 2006
      ·  does it have a visual model builder? by Javier Paniza on Tue May 23 11:48:59 EDT 2006
        ·  Re: does it have a visual model builder? by Kit Davies on Wed May 24 04:01:31 EDT 2006
          ·  Re: does it have a visual model builder? by Kit Davies on Wed May 24 04:04:00 EDT 2006
          ·  Re: does it have a visual model builder? by Javier Paniza on Wed May 24 05:00:05 EDT 2006
    ·  Re: How about writing CODE? by Javier Paniza on Tue May 23 11:36:03 EDT 2006
  ·  Enhorabuena by Francisco A Lozano on Tue May 23 14:59:46 EDT 2006
  Message #209432 Post reply Post reply Post reply Go to top Go to top Go to top

How about writing CODE?

Posted by: Paul Reynolds on May 23, 2006 in response to Message #209403
I'm in the minority I'm sure, but I'm of the opinion if someone has the programming chops to architect an application in XML, they'd probably be better off actually writing code themselves and getting on with their life. Yeah, yeah I know that if the model were to change, a 10 year old could probably work out the XML enough to make it. But let's face it, only programmers are going to be changing it. So let's ditch the extra layer of uncessary goop and all of the parity issues that come along with it.

That said, XML is the perfect solution for a lot of things and I use it all the time.

  Message #209444 Post reply Post reply Post reply Go to top Go to top Go to top

Re: How about writing CODE?

Posted by: Kit Davies on May 23, 2006 in response to Message #209432
I'm in the minority I'm sure, but I'm of the opinion if someone has the programming chops to architect an application in XML, they'd probably be better off actually writing code themselves and getting on with their life. Yeah, yeah I know that if the model were to change, a 10 year old could probably work out the XML enough to make it. But let's face it, only programmers are going to be changing it. So let's ditch the extra layer of uncessary goop and all of the parity issues that come along with it.

That said, XML is the perfect solution for a lot of things and I use it all the time.


I would agree with you when talking about app-specific business logic. But it seems much better to generate the boilerplate "goop" than rely on doing it by hand. Ideally, the generators should generate empty app-specific logic modules which can be modified by hand without requiring a regeneration.

Also I prefer the idea of having the app model defined once in an XML file, rather than through annotations/metadata in the source which seems too code-centric. There a many facets of a model that cut across many artifacts. Better to define them somewhere that isn't an artifact itself.

I've not looked at this project so I don't know how well it fits my needs. Looks interesting though.

Question: does it have a visual model builder?

Kit (ex VB monkey ;-)

  Message #209455 Post reply Post reply Post reply Go to top Go to top Go to top

Re: How about writing CODE?

Posted by: Javier Paniza on May 23, 2006 in response to Message #209432

they'd probably be better off actually writing code themselves and getting on with their life

I know that a lot of programmer are more confortable with Java than with XML. Java is their native language. (In fact OpenXava itself is written in Java, and Java is my native language)
The problem is when your need to write a lot of low level code for obtain a common result. Sometimes, as in case of business applications, you need a higher level of abstraction, or else the task will be impossible. XML is perfect for that.
Using OpenXava you mix XML and Java in order to develop complex application. But a lot of common tasks are already done by OpenXava.


uncessary goop and all of the parity issues that come along with it.

In OpenXava we struggle for avoid parity.
For example, the model layer is generated by OpenXava from XML definition, but you does not need to write model classes, nor modifying them.

Cheers

  Message #209456 Post reply Post reply Post reply Go to top Go to top Go to top

does it have a visual model builder?

Posted by: Javier Paniza on May 23, 2006 in response to Message #209444

Question: does it have a visual model builder?

No, at the momment.

What type of visual builder is better for you?
- UML?
- Standalone or integragate in Eclipse?
- Maybe a web application for develop web applications?
- Or do you prefer to use third party tools for model OpenXava applications?

Thanks

  Message #209486 Post reply Post reply Post reply Go to top Go to top Go to top

Enhorabuena

Posted by: Francisco A Lozano on May 23, 2006 in response to Message #209403
Congratulations for this release Javier

  Message #209531 Post reply Post reply Post reply Go to top Go to top Go to top

Re: does it have a visual model builder?

Posted by: Kit Davies on May 24, 2006 in response to Message #209456

Question: does it have a visual model builder?

No, at the momment.

What type of visual builder is better for you?
- UML?
- Standalone or integragate in Eclipse?
- Maybe a web application for develop web applications?
- Or do you prefer to use third party tools for model OpenXava applications?

Thanks


Hi Javier,

Answer: nothing too complex.

IMO, a normal scenario would be
  1. Define the structure, ie. domain classes

  2. Add domain logic by hand

  3. Add DB mapping info

  4. Pick a generation strategy, eg. EJB3, POJOs + Hibernate, whatever

  5. Generate

  6. Make any additions needed to web layer controller logic

  7. Build & run


So the key thing is the structure, mappings and generation strategy. That doesn't even need a graphical builder really, more like a hierarchical tree view of the project. It just presents things in one place. UML may be overkill, but maybe allow for XMI imports.

On a slightly different topic, the most useful tactic IMO for generation is to generate a base implementation, and an empty subclass which is the one actually instantiated and used. The base classes can be put into their own package. Modifications by hand can be made to the subclass, and the generator never overwrites any existing subclass. If this tactic is used at key points in the project (domain classes, controllers, views), it keeps things simple & productive.

Hope that's useful.

Kit

  Message #209532 Post reply Post reply Post reply Go to top Go to top Go to top

Re: does it have a visual model builder?

Posted by: Kit Davies on May 24, 2006 in response to Message #209531
  1. Define the structure, ie. domain classes
  2. Add domain logic by hand
  3. Add DB mapping info
  4. Pick a generation strategy, eg. EJB3, POJOs + Hibernate, whatever
  5. Generate
  6. Make any additions needed to web layer controller logic
  7. Build & run


Sorry, 2 should follow 5.

  Message #209542 Post reply Post reply Post reply Go to top Go to top Go to top

Re: does it have a visual model builder?

Posted by: Javier Paniza on May 24, 2006 in response to Message #209531
Hi Kit


UML may be overkill


Interesting commentary.

Time ago I used UML in this way:
- Create my model using a UML tool.
- Export to XMI.
- Import from VisualAge using a XMI to EJB converter.

Yes, this was impresive at first glance. But this approach did not convince to me.

In the other hand, TogetherJ approach liked me a lot. You can use Java or UML, it the same, UML only is a viewpoint of your code. Not code generation and UML is always in sync.

About development cycle, yours is like OpenXava:
1. Define businees component, using XML
2. Insert domain logic, customizing predefined calculators or creating new ones.
3. Generate
4. Choose your controllers, customizing predefined actions, or creating new ones.
5. Build & run

I looking for a way for removing (or reducing) the generate step. I like touch and see, touch and see, touch and see.


the most useful tactic IMO for generation is to generate a base implementation, and an empty subclass which is the one actually instantiated and used. The base classes can be put into their own package. Modifications by hand can be made to the subclass, and the generator never overwrites any existing subclass.


Seems a good technique. The important thing in an active code generator is that user never touch the generated code.
But, OpenXava uses other (maybe not better, simply different) approach. OpenXava uses strategy pattern to insert custom functionality using code generation.

For example, if you need a custom method in you generated class you can write something as this:


<component name="Carrier">
<entity>
...
<method name="translate">
<calculator class="org.openxava.test.calculators.TranslateCarrierNameCalculator"/>
</method>
</entity>
...
</component>


In this case the code for Carrier class will have a method translate which implementation is the TranslateCarrierNameCalculator.
We use this technique with success for years, and we have noted that is possible to create calculators that can be reused several times.

Kit, thanks for your comments

Cheers
Javier

New content on TheServerSide.comNew content on TheServerSide.comNew content on TheServerSide.com

Dependency Injection in Java EE 6 - Part 2

Reza Rahman continues to explore the features of the proposed JSR 299, Contexts and Dependency Injection for Java EE (CDI). When approved, it promises to be a key feature of Java EE 6. (January 21, Article)

Ted Neward Q&A: What you must know about JavaScript, Scala and more

Ted Neward is an independent consultant specializing in high-scale enterprise systems, and an authority in Java and .NET technologies. He is the author and co-author of several books, including Effective Enterprise Java. At TheServerSide Java Symposium in March, he will be presenting sessions on pragmatic architecture, ECMAScript and Scala. (January 15, Article)

Developers split on open sourcing Java

Now that Oracle is absorbing Sun Microsystems, there mixed views on what should come of the Java Community Process (JCP). While some say Oracle should become the new steward of Java and keep the JCP much as it was, others argue that it may be time to open-source this widespread language. (November 24, Article)

Dependency Injection in Java EE 6 - Part 1

Reza Rahman explores the features of the proposed JSR 299, Contexts and Dependency Injection for Java EE (CDI). When approved, it promises to be a key feature of Java EE 6. (November 2, Article)

SAML: It's Not just for Web services

SAML is an XML-based standard for exchanging authentication and authorization data between security domains. The single most important problem that SAML was created to solve is the Web browser Single Sign-On problem. Many organizations are debating whether to stay with version 1.1 or move to 2.0. This article makes observations about both options. (September 28, Article)

Programming is Also Teaching Your Team

Joe Ottinger takes a look at how people learn, and applies it to the practice of programming. He notes that understanding how people learn is an essential part of working in a programming team. (September 22, Article)

Can Java EE Deliver The Asynchronous Web?

Stephen Maryka gave us an article about the Asynchronous Web and posed a number of questions that get examined like an approach to delivering Asynchronous Web capabilities through extensions to existing Java EE technologies. (July 14, Article)

JSF Flex

JavaServer Faces Flex goal is to provide users capability in creating standard Flex components, part of flexSDK which is open sourced through MPL license, as normal JSF components. This article by Ji Hoon Kim will provide an overview of creating a simple multilingual JSF page consisting of JSF Flex tags. (June 29, Article)

The Rules of SOA - A Road to a Successful SOA Implementation

In this session Jeff explores the key characteristics of successful SOA projects. He covers some of the patterns, and anti-patterns, tool sets, and strategies that he himself learned the hard way. Last, he provides a strategy and blueprint for achieving a high likelihood of success in your SOA project. (June 23, Tech Talk)

Ari Zilka Talks About Terracotta 3.1

Ari Zilka, CTO of Terracotta, Inc., talks about the new features in Terracotta 3.1, announced during JavaOne and available now. (June 15, Tech Talk)

Enterprise Application Integration, and Spring

In this Tech Talk, Josh Long explores an integration challenge using Spring Integration and walks through the implementation, employing and expanding on the basic patterns of Enterprise Application Integration to tie together components into a function integration solution, and then demonstrates how Spring Integration helps address the integration requirements. (June 15, Tech Talk)

Google Web Toolkit: An Introduction

In this Tech Talk, David Geary teaches you: The basics of Google Web Toolkit; How to implement Ajax-enabled applications in Java; Internationalization; Hooking into the browser history mechanism; Remote procedure calls. (June 4, Tech Talk)

Just Enough Early Architecture to Guide Development

Jon Kern discusses the best architecture/technical solutions and ensure that they are repeated by all developers. By tackling the architecture up-front in a serial manner, subsequent parallel development will be much more manageable and predictable. (May 28, Tech Talk)

Productive Programmer: On the Lam from the Furniture Police

This keynote describes the frustrations of modern knowledge workers in their quest to actually get some work done, and solutions for how to guard yourself against all those distractions. Neal Ford talks about environments, coding, acceleration, automation, and avoiding repetition as ways to defeat the misguided attempts to sap your ability to produce good work. (May 26, Tech Talk)

Auto-Scaling Your Existing Web Application

Gil demonstrates how new, aggressive uses of already abundant compute capacity by common applications offer competitive value for application designers. (May 21, Tech Talk)

Automating Hibernate Mapping and Queries For Java Web Development

Chris Keene introduces WaveMaker as a new way to automate the ability to generate Hibernate classes in order to more quickly bring OR mapping into an application. (May 19, Article)

Free Book: Jakarta-Struts Live

Download the entire book of Jakarta-Struts Live and learn about Struts MVC, Tiles, the Validator, DynaActionForms, plug-ins, internationalization, and more.
(Book PDF Download)

Application Server Matrix

The Application Server Matrix is a detailed listing of J2EE vendors and their application server products, with information on latest version numbers, J2EE spec support and licensing, pricing, platform support, and links to product downloads and reviews.
(Application Server Comparison Matrix)

News | Blogs | Discussions | Tech talks | Patterns | Reviews | White Papers | Downloads | Articles | Media kit | About
Java Solutions
All Content Copyright ©2007 TheServerSide Privacy Policy
Site Map