Compuware Corporation today announced the availability of Compuware OptimalJ 2.2, an MDA-based gui environment that generates J2EE applications. It includes a business rules editor, pattern-driven code generation, synchronization of code with model and automatic deployment.
Using a "pluggable pattern architecture" you can use OptimalJ 2.2 to upgrade an application from EJB 1.1 to EJB 2.0 simply by installing the EJB 2.0 pattern.
OptimalJ 2.2 also supports Borland's JBuilder and NetBeans.
Read Compuware's Press Release
Find out more about OptimalJ here
Anybody care to comment on experience using OptimalJ on real-world projects? Have you seen any productivity improvements or does it just get in the way? I'm generally skeptical of code generation IDEs like this, but I'd be interested in success stories.
How does OptimalJ compare with products such as BEA WorkShop or AltoWeb?
Anyone have any experience with these? The marketing messages are similar?
Unlike most other tools, OptimalJ is focused around a semantic data model. So while other products model page flows, OptimalJ models data and business rules. So it is a higher level tool, and for the right sort of applications promises to be very productive.
It is written in The Netherlands by the same people that wrote Uniface.
It is basically back to the future. I think that we will see more of these tools eventually. You should not have to write code or specify detailed page flows just to implement a simple order entry system.
(Caveat: I have not actually used the tool, but do like the design principal.)
OptimalJ uses a domain model (mostly a UML class diagram that includes only business classes) to create a J2EE model and then code. OptimalJ includes transformation patterns that create working application that can then be customized. It offers a mechanism that preserves customization when going through another iteration of code generation.
The transformation patterns contain a lot of the application logic, the tool provides the ability to extend the out-of-the-box patterns so that particular standards and best practices are enforced.
The press release mentioned some sort of integration between
OptimalJ and Jbuilder. Is OptimalJ a plugin that can be installed on top
OptimalJ is built on top of NetBeans. The plugin gives the possibility to use JBuilder to customize the code and have these changes preserved in the next iteration of the generation. It also includes the integrated testing environment with Tomcat and JBoss.
I've used Optimal J quite a bit. In addition to whats already been said here, I'd say two things. First, OJ's biggest strength for me came in its ability to customize its code generation. For larger applications, its not uncommon to care about the patterns and layout of generated code. From OJ's model I was able to generate templates that followed the J2ee patterns, and internal formatting that we required. A class represented on the screen generated its value object, DAO, PL/SQL stored proceedures, and DDL, right up through jsp custom tags for representing it in the front end.
Once the patterns were coded, new objects could be fronted to UI people with no coding at all of IO. For custom object behavior, OJ tracks "free" sections in the generated code that it wont clobber on later regeneraton.
From a modeling perspective there are a couple of things I'd like to be able to represent better, or never figured out how to do using the product (but worked around). However, from a code generation perspective the product is way ahead of everything else I've seen.
Finally, OJ is based on netbeans. So, if you drink the netbeans koolaid, you get all the benefits of a well understood, supported IDE.
Ed Barron wrote:
From a modeling perspective there are a couple of things I'd like to be able to represent better, or never figured out how to do using the product (but worked around)
Ed, could you give us some example problems?
I agree with most that this new design paradigm pretty cool.
But this product still amateur.
I feel it has to go through atleast couple of version upgrades before it can be put to use for production.
Drawbacks I found:
1. you can not start design from an existing database model. You can ofcourse upload db model and try to design, but you encounter lots of problems by doing that. I think future versions might solve this problem.
2. Some softwares are integrated into the product. we cannot decouple and plugin new versions. Ex: Struts and Tomcat. They are integrated into the product. You cannot unplug that version and plugin new versions of tomcat or struts.
There are some other minor things also.. which I think can be fixed only fierce competetion.
I am curious about the issues you had when importing from a database. But maybe OptimalJ support site javacentral.compuware.com is a better forum for that.
With release 2.2 of OptimalJ, we offer the concept of joinpoints. These are hooks into our implementation patterns that allow you to override the default generated code in a granular fashion. If you want to use third party software that we don't support yet or will not suppport, that would be a potential solution for you.
Hope this helps,