I am researching ways to reduce code development time. Things have progress a lot over the years. When I first look at code generation back in 1998, there are few choices, and all of them are commercial. Thanks to open source movement. I see many varieties and options in the public domain.
I found Code Generation Network. This portal has the most comprehensive information on code generation. And I learn to use several tools from their website.
I try these tools so far. And none of them win my vote of confident.
Dot Net Based
- MyGeneration
I like this a lot. It has many user-contributed templates on object-relationship mapping framework. It’s very flexible, and have non ORM related sample to follow. One of my favorite is Insert SQL generation.
Unfortunately, the program stability is questionable. I have a Core 2 Duo Thinkpad T60p, and I try to fetch insert SQL on a sizable table in my SQL Server. MyGeneration keeps popping up a message box, and I was forced to kill the process. - CodeSmith
This is a popular commercial tool. Our local user group will demonstrate its usage this month. I thought about trying it out. But pass it. - Codus
it has nice and clean user interface, but few templates. All template are ORM oriented.
Java Based
Frankly, I didn’t spend as much time in the Java. So far, none of the Java based tools share the same intent as the Dot Net based tools.
To be investigated
I have yet to find my ideal tool. So, I will research these tools in later day. MDA becomes an important consideration. But object modeling is not the only objectives I want to accomplish.
My Reflection
After going through my research, I realize my objective must enlarge. Initially, I tried to find an ad hoc code generation tool. But the state is not sophisticated enough.
Let’s put it another way. Why should I use code generation? And what purpose do I try to accomplish?
So far, most code generation tools focus on these area of technologies.
- Template engine
- Object relationship mapping
To make these code generation more robust. It needs improvement in these area.
- A mechanism of describing class definition
- Data oriented SQL statement manipulation
- Finer grain of control on object relationship mapping
- …More
More reflection to come…