Are you thinking about how to approach your legacy application modernization project? If yes, you are not the only one. Gartner has been involved with thousands of application migration projects and in 2018 shared a free insight titled 7 options to modernize legacy systems. Gartner fans will recall a similar note they shared in 2011 that identified only 5 options. In this article we’ll review the new options that were added between 2011 and 2018 and how Vaadin helps unlock the potential of each of the latest seven modernization approaches.

WHAT STAYED THE SAME: In both instances, successful application modernization projects are the ones where the right approach is taken from the start. Getting it right is a matter of assessing an interdepartmental spectrum of criteria including functional fit, technical quality, skills availability, and present and expected value; and then selecting the approach that provides the best match.

WHAT’S NEW: The massive strides in cloud adoption since 2011 means modernization today isn’t quite as closely linked to migration “to” the cloud since many applications are already there. Side by side, and listed in ascending order of invasiveness we get the following picture:

Four core options (Rehost, Refactor, Rebuild, and Replace) remain on the list unchanged. The previous Revise option is renamed to Rearchitect with little change in meaning. Two new ones have been added namely Encapsulate and Replatform.

Let’s start with the interesting side of this list, the bottom:

Replace

WHAT IT IS: When the technical quality, functional usability and architectural fit of an application are poor all at once then you need to go back to the drawing board and make some broad strokes. SaaS options (basically the COTS of ten years ago) can be investigated for fit with your organization’s requirements. Replace is the only option in which the only way to make the existing application better is to throw it in the garbage.

HOW VAADIN HELPS: Any SaaS offering will have gaps in the features you require (or your users expect) and bridging these gaps will require customization or coding. The scalable server-side execution model in Vaadin provides developers the means to close these gaps cost-effectively. For a few examples, check out Vaadin integrations with Bluemix, SAP, and Salesforce.

Rebuild

WHAT IT IS: The Rebuild option is similar to Replace but it takes SaaS off the table and it doesn’t start by throwing the existing application away. Rebuild assumes your application has a good functional fit and is therefore valuable as a specification or blueprint for the new. The issues with the current application will be architectural (for example, when migrating from desktop to Web), the technical quality of the code may be an obstacle, or the language it was written in might not be supported or be on its way to obsolescence.

Unlike in the Replace option, COTS isn’t being considered and your team will be looking for an option that provides a full 1:1 replacement.

HOW VAADIN HELPS: Vaadin platform supports many application architecture patterns (MVC, MVP, MVVM) so rebuilding even large applications entirely from scratch and maintaining them afterwards can be straightforward to plan and put into practice. Furthermore, Vaadin platform leverages the genericity of Java and JavaScript so web applications can be built with an unrestricted range of purposes. Specifically for data-driven business applications, Vaadin’s APIs give your developers a significant productivity boost with data binding and lazy loading available out of the box.

And finally there is how the application looks. Just because you are aiming for feature parity doesn’t mean you absolutely need, or even want your new application to look exactly the same as the old one. From clean typographic hierarchy and thought-out spacing of elements to fine-tuned animations, Vaadin’s components and themes provide a comprehensive set of tools to easily achieve a modern, polished look-and-feel for any business application.

Rearchitect

WHAT IT IS: Rearchitect is the new Revise of 2011. Both Revise and Rearchitect aim to migrate the application to a new platform but recognize that the existing application is not optimally “ready” in its current state. Rearchitect works as a preventive maintenance exercise that tries to do as much as possible with the single application before the migration starts, so the effort needed when new and old exist at the same time is minimized. It can be compared to backporting followed by Rehost or Replatform because changes are put into production on the old platform.

HOW VAADIN HELPS: Migrating to Vaadin can reduce the need for backporting significantly, for two reasons. First, the server-side execution model is based on Java so you can optimally capitalize on the JVM. There is a large availability of compilers for languages into the JVM so existing legacy code can be refactored and integrated with a Vaadin application with significantly less backporting required.

Second, as we’ve seen in a number of case studies, migration transparency is successful with Vaadin. MPR, Vaadin’s transparency tool that allows Vaadin 7 views to run inside a Vaadin 14 application is just one example. This works both with a new Vaadin application serving as transparent gateway to legacy and with a legacy host doing the same to a new Vaadin application, either of which can reduce backporting work.

Refactor

WHAT IT IS: The Refactor option popped up in 2011 with a PaaS leaning. The idea was if you had an application on one platform and this platform was also available as a PaaS, you could make modifications to your application without changing its external behavior to account for the differences in the PaaS and non-PaaS variants. The Refactor option today extends beyond PaaS Rehosting to include any changes to an application that don’t affect external behavior but improve component features and structure or remove technical debt.

HOW VAADIN HELPS: Vaadin won’t directly be useful to your developers to reduce technical debt in non-Vaadin applications. Integrating Vaadin components and composites inside your application, on the other hand, can certainly enhance usability and add features. Vaadin’s architecture is especially suited for embedding either at the component or composite level. In particular the feature awaited in Vaadin 14 to enable entire Vaadin applications to be embedded in non-Vaadin web-pages is a thing to watch.

Replatform

WHAT IT IS: One of the new options, Replatform is focused on the pragmatic business of making minimal changes to the source code and structure of an application so it can compile and run on a new platform. For Replatform to be viable you typically need to be able to compile the current language on the new platform, otherwise you are stuck a few levels higher up, on the Rebuild option. If there is no way whatsoever to compile your programming language then you will have to get technically creative to make Replatform work.

HOW VAADIN HELPS: Like with the Rebuild option, the possibility of leveraging the multi-language nature of the JVM leads to better chances of code reuse. Vaadin adds to this through its architectural versatility: Vaadin blurs the lines of separation between browser and server execution as a programmer convenience, and complements core procedural Java with numerous declarative options. Developers can leverage Vaadin’s versatility to succeed in Replatforming with less effort.

Rehost

WHAT IT IS: The Rehost option takes the minimal changes of the Replatform option to the extreme and looks for migration solutions that require no changes at all to the source code. This option requires significant run-time support to be achievable and typically relies on third-party tooling. The most common form in which this appears is emulation. Emulators work and have a huge following in mission critical business applications stretching back to the terminal emulator days of the 1980s. Emulators are enticing due to their low cost of entry, but they complicate your architecture and can prove difficult to eliminate in the future.

HOW VAADIN HELPS: The best way to avoid having to Rehost your application is to make sure your application can run anywhere. Today this means browsers on desktop, servers, and devices. Vaadin achieves near universal portability through leveraging W3C standards of HTML5 and Web Components, and extending that for compatibility with the checklist of Progressive Web App criteria.

Encapsulate

WHAT IT IS: When an existing application contains useful functions and features that aren’t accessible outside it, the answer won’t lie in creating more new applications. Instead we create new interfaces within the existing applications: With the Encapsulate option we extend applications with APIs that are externally accessible, which we may also publish as services.

HOW VAADIN HELPS:Vaadin isn’t a tool for describing APIs in other applications. On the other hand, Vaadin applications leverage simple protocols and servers so they can fit the reference system architecture design required to interact with these APIs. Vaadin applications are good citizens in your strategic IT vision and help enable it, with integration requirements ranging from microservices, cloud scalability, to OAuth 2.

Conclusion

When it comes to application modernization, whatever the state of your application, there are many possible approaches that have been tried and tested before and will fit your situation. Finding out which is right for your application and how you can use Vaadin to move your plans forward can significantly reduce the effort you have to spend, and bring your strategic IT vision closer to reality.

Would you like to know more about how we approach app modernization, migrations of Java desktop apps to the web, and everything in-between?