Nelson, an independent developer and director of the Cincinnati Java Users Group, is the founder of the Trails framework, a new open-source framework aimed at making Java easier for developers.
Some might call Nelson a flatterer, as imitation is considered the finest form of flattery and Trails gets some of its notions from the popular, though non-Java, Ruby on Rails framework. But Nelson said Trails was simply "inspired" by Ruby on Rails but is not a Java-based clone of it.
"Developing J2EE [Java 2 Platform, Enterprise Edition] is just too hard," Nelson said in a talk at TheServerSide Java Symposium here on March 23. "Things like Hibernate, Spring, etc., make it easier, but its still too hard. Ruby on Rails raises the bar," he said.
However, that leaves three choices: "Switch to Ruby on Rails, suffer, or make Java better," Nelson said.
Nelson noted that aside from frameworks such as Spring, other methods also have been used to simplify Java development, but they, too, fall short.
He said typical RAD (rapid application development) tools may look slick, but they do not generate a real domain model, they dont scale up in complexity, they require manual user interface design, and they dont leave the developer with a solid architecture.
Code generation is another example of a method to simplify development, but "thats a lot of code," Nelson said. "What if you want to change it? You still have to maintain it. Model-driven architecture [MDA] takes this approach. It tends toward complexity."
The solution is domain-driven development, which is developing an application with a rich domain model. You can "develop the domain model and have the rest of the app be automagically created," Nelson said, adding that domain-driven development is another name for object-oriented development.
"Trails is a domain-driven development framework inspired by Ruby on Rails, but is not a port of Rails."
Indeed, Trails started as an experiment, with Nelson asking, "What can Java learn from Rails?"
Nelson said Trails brings all the pieces together. It uses Hibernate for persistence, Tapestry for component-oriented Web MVC (model-view-controller), Spring for dependency injection and Acegi for security.
"Dont reinvent; integrate the best solutions," Nelson said. He called Trails a "metaframework; a framework of frameworks."
Nelson said he has a 0.9 version of Trails ready this week, but the 1.0 version should be ready for beta in May for the JavaOne conference.
His goal is to get Trails as mature as possible and then start to support other frameworks, possibly JavaServer Faces with Facelets, he said.
Future directions for Trails include instance-based security, support for method invocation, more documentation and more demos, Nelson said.
The Trails project can be found at here.