Skip to main content

The Promise of Spring Roo

I've been thinking about a project scaffolding tool for Java for a long time now. Many modern technologies now come with CLIs that can lay down project skeletons and add conventional concerns by simply executing command line actions. This scaffolding, as it has come to be known, jump-starts project work significantly by laying down the typical boilerplate and, in many cases, simplifies the wiring of ancillary technologies.

As a top-tier technology, Java has benefited from the many available IDEs that also provide scaffolding-like functionality. These IDEs, and even Maven archetypes to some extent, provide very powerful tools for project foundations and instrumentation of specialized components. You are even able to produce your own extension, provided you're willing to figure out some of the rather obscure mechanisms to do so.

However, architectural patterns change very rapidly and IDEs fail to keep pace. Plus, the IDE capabilities are usually driven through user interface interaction, so there's no repeat-ability or auditing of the process involved with scaffolding an application. Additionally, any scaffolding system currently available falls short of delivering a complete application. In my opinion, these shortcomings result in a significantly lost opportunity.

Imagine you can define your application's domain model, behaviors, and workflows independently of technology, architecture, and patterns. Now imagine that you can run that definition through an enhanced scaffolding mechanism (ESM) capable of generating your entire application using any technology, following any architecture, and implementing any set of patterns. That would be miraculous!

I believe that Spring Roo is a technology capable of delivering on that proposition. It has the mechanisms to deliver that promise and it's up to us to unlock the potential of decoupling the application domain from its underlying architecture. This is a very tough problem to solve and many have tried.

To me, the most incredible benefit is a system that is capable of generating the entirety of an application merely from a description. Extending an application is a simple matter of adding or changing the description. Refactoring is a simple matter of updating the generation components and then passing the description through the ESM again. When you want to change the entire architecture of the deployment model, select a different ESM model. The build pipeline could just accept the application description and generate the code during the build process.

I will be conducting a series of experiments with Spring Roo and creating some "add-ons" in order to test these theories and I hope you find them interesting.

Comments

Popular posts from this blog

Training Aids and Standards Automation

While reading through a mountain of standard operating procedures related to my company's policies for the development and operation of medical devices, it occurred to me that being fully aware of and to make full utilization of sed policies requires a full-time position. This not necessarily reasonable for everyone involved in the process of engineering medical devices and information systems in support of the same. The scope and complexity of so many procedures also incurs a tremendous amount of overhead. Time and money spent performing many boilerplate tasks is time and money that can be spent providing better value elsewhere. I am reminded of AWS's "Well Architected Framework" or "Well Architected Tool" (whatever it's being called). The WAF or WATool provides a comprehensive strategy and checklist for meeting various important criteria in an AWS deployment. The content and guidance could easily be externalized and declarative and therefor easily exte...

Judging UCSD's HealthHack 2016 this Weekend

This weekend, I will have the opportunity to advise and judge some 200 UCSD engineering students during this year's HealthHack . I am excited and honored to represent my company ( ResMed ) while also getting an opportunity to meet some motivated and talented students. From the "brief" briefing I received, my responsibilities include assisting various teams of competitors develop their prototypes and judging the entries in the end to select an overall winner.

The Importance of Television

I have no intention of pontificating on the impact of television on humankind. Before TV, people went to movie theaters to get motion pictures from around the world. Before that, they attended plays and other theatrical productions. Before that, they played with sticks and rocks (known today as golf). Enough on that. Last Sunday, after Dawn and I were fortunate enough to watch Donald Trump speak at CPAC, Life, Liberty, and Levin, and Steve Hilton, our living room TV died. It wasn't necessarily unexpected as it was exhibiting turmoil prior to its final Swan Song. But, still, dissappointing. The TV was purchased six years ago at Costco. Neither Dawn nor I were happy with a TV that only lasted six years. If it made it to ten years, then that would be acceptable. Nonetheless, it's time for another television and defining the television's mission given what's now know. In particular, with regards to mission, the living room TV must not have a screen glare. The windows on the...