Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Skyway Builder Community Edition Supports Code Generation For Spring Applications

Skyway Builder Community Edition Supports Code Generation For Spring Applications

Leia em Português

This item in japanese

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.

Rate this Article