InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Skyway Builder Community Edition Supports Code Generation For Spring Applications

Posted by Srini Penchikala on Feb 23, 2009

Sections
Enterprise Architecture,
Process & Practices,
Development,
Architecture & Design
Topics
IDE ,
Java ,
Model Driven Engineering
Tags
Skyway Builder ,
Code Generation ,
Frameworks

The latest version of Skyway Builder Community Edition (CE) offers an open-source code generation framework for Spring based web applications. The community edition can be used to generate the code required in the application layers (Data, Service and Web layers) of a typical Spring application. Skyway Software recently announced the general availability (GA) of Skyway Builder 6.1 version.

The new Spring MVC scaffolding feature enables developers to generate a Spring-based, Java CRUD application from a domain model. JUnit test classes are also automatically generated by the tool. Skyway builder helps Java developers in the following areas of the web application.

Data Layer:

  • Data Modeling
  • Named Queries
  • Java Persistence API (JPA) including Hibernate, JPQL and SQL.

Service Layer:

  • Service Modeling
  • Operation Queries
  • Action Modeling
  • Composite Services

Web Layer:

  • Web Controller Modeling
  • Conversation Modeling
  • Action Modeling
  • AJAX Development

The new release includes support for Apache Maven for build automation as well as direct generation into Standard Eclipse Dynamic Web Java Project. It also has integration with SpringSource tools like Spring IDE and Spring Tool Suite (STS).

InfoQ caught up with Niel Eyde, product manager at Skyway Software, about the new community edition release and the future roadmap of the product.

What was the main motivation behind the release of Skyway Builder Community Edition?

Our vision is to eliminate the complexities of the software delivery lifecycle. With our free and open source offering, Skyway Builder Community Edition (CE), our mission is to enable our community members, customers and partners to reduce the cost and complexity of developing software, so that they can deliver Spring-based Java web applications on time and on budget.

Does the code generation tool follow Domain-Driven Design principles and best practices mentioned in Domain-Driven Design book?

Skyway Builder abstracts the underlying technology (Java, Spring MVC, etc.), which is consistent with the DDD notion of model-driven design. Our generated code is simply a concrete representation of the developer-defined models. If a developer is a DDD practitioner, then DDD principles and best practices would influence how the developer designs the system using Skyway Builder. When it comes to best practices of generated code, Skyway Builder generates applications according to Spring best practices as defined by SpringSource (Skyway Builder is SpringSource-certified) and the industry (community, customers, partners).

How does the tool help the Java developers who are used to writing code based on TDD (Test-driven Design and Development) principles?

Skyway Builder does not contain functionality that is specifically oriented towards TDD. At this point, our goal is simply to not become an obstacle to TDD, and a developer should be able to fully leverage TDD when using Skyway Builder. The only subtle difference is that some portion (or all) of the application code is generated instead of hand-coded. To enable TDD, Skyway Builder's code generation must be completely transparent to the developer. The generated code must be high-quality, leverage the same libraries that developers use, and not contain any custom (or proprietary) libraries. It is also important to note that the fact that code is generated in a consistent way - with less variability due to different developer styles/preferences - offers benefits to testing. With all that said, there is certainly an opportunity for adding some features related TDD to Skyway Builder.

Can the generated code be modified after it has been generated by the tool?

Yes. Developers can use Skyway Builder in a variety of ways. Some use it to define and generate the overall structure of their application, and then they implement and maintain the generated code by hand. Others use Skyway Builder for the end-to-end development of an application. In either case, developers are able to leverage pre-existing Java code/libraries, Groovy code, and Spring Beans from within the Skyway Builder environment. To modify the generated code, simply remove the @generated annotation on the code and then maintain it by hand going forward. The next release of Skyway Builder (6.2) will also let developers add hand-coded code blocks to generated methods.

How does Skyway Builder tool compare with other code generation tools like Eclipse Modeling Framework (EMF), openArchitectureWare (oAW) and AndroMDA?

These are all general-purpose code generation frameworks. While they help you build code generation solutions, these tools don't have a specific solution for generating Spring-based web applications. If a developer needs to generate a Spring MVC application or an RIA using Spring, the developer would need to implement their own code generation solution using one of these frameworks. Skyway Builder is an instantiation of EMF. We are leveraging the power of EMF to provide a solution that accelerates the development of Spring-based web applications.

Is the domain model definition created in Skyway Builder tool compliant with MDA standards? Is the model portable to other MDA tools?

The Skyway Builder metadata is defined using EMF and is transferable to other EMF-aware solutions.

What is the future road-map of Skyway Builder project?

Our road-map includes: Eclipse 3.4 (Ganymede), additional Spring MVC data binding options, Spring Web Flow, improved Groovy support, continuous code generation refactoring, and additional modeling steps.

Skyway builder CE currently doesn't support Eclipse 3.4 release yet. But the next release (version 6.2), scheduled to be available by the end of March, will support the latest version of Eclipse. It also supports the deployment to Tomcat container (versions 5.5 and 6.0) and databases like MySQL and Postgres.

Srini Penchikala currently works as Security Architect and has 17 yrs of experience in software product management.

No comments

Watch Thread Reply

Educational Content

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.

Beauty Is in the Eye of the Beholder

Alex Papadimoulis discusses ugly code, where it comes from, how to avoid it, and how to get rid of it.

Architecting Visa for Massive Scale and Continuous Innovation

John Davies examines Visa’s architecture and shows how enterprises have architected complex integrations incorporating Hadoop, memcached, Ruby on Rails, and others to deliver innovative solutions.

Max Protect: Scalability and Caching at ESPN.com

Sean Comerford unveils ESPN.com’s architecture, what components are used and why, and the current changes the website goes through.

The Seven Deadly Sins of Enterprise Agile Adoption

Are there repeated patterns of failure on Enterprise Agile Enablement efforts? Sanjiv and Arlen discuss Seven Deadly Sins to avoid when adopting Agile in an enterprise.

Questions for an Enterprise Architect

Erik Dörnenburg answers: What is Enterprise and Evolutionary Architecture?, discussing 4 issues: Turning strategy into execution, Ensuring conformance, Where do the architects sit? Buying or building?

Wrap Your SQL Head Around Riak MapReduce

Sean Cribbs explains what Map-Reduce and Riak are, why and how to use Map-Reduce with Riak, and how to convert SQL queries into their Map-Reduce equivalents.