Modernization Toolkit

Automate up to 80% of your legacy Java code migration, preserving functionality
while dramatically reducing time, cost, and errors.

swing-to-vaadin
80%
or more of the code can be
automatically converted
60%
lower cost of modernizing
a Java Swing app
80%
lower effort of developers
and testers over rewrite
SEAMLESS UPGRADES

Maintain structure and clarity
in your transformed code

We built the Modernization Toolkit to produce code humans can read and maintain. Your transformed application sources retain the original structure, naming conventions, comments, and whitespace. Changes made by the transpiler are almost always applied within the same line of code, meaning your developers can confidently take ownership. Compare the Swing to Vaadin Flow migration example below.

Swing

          
            public VoyageView() {

              String[] locations = new String[]{"Bayonne", "Berlin", "Bern", "Bilbao", "Birmingham", "Bremen", "Brussels"};
              JList<String> departingCity = new JList<<String>();
              departingCity.setListData(locations);
              JList<String> arrivingCity = new JList<<String>();
              arrivingCity.setListData(locations);

              this.setLayout(new BorderLayout());
              JButton searchButton = new JButton("Search");
              JButton cancelButton = new JButton("Cancel");
              JPanel citySelection = new JPanel(new GridLayout(0,2));
              citySelection.add(departingCity);
              citySelection.add(arrivingCity);
              JPanel buttonBar = new JPanel();
              buttonBar.setLayout(new BoxLayout(buttonBar, BoxLayout.Y_AXIS));
              buttonBar.add(searchButton);
              buttonBar.add(cancelButton);
              this.add(buttonBar, BorderLayout.WEST);
              this.add(citySelection, BorderLayout.CENTER);
              departingCity.addListSelectionListener(new ListSelectionListener() {
               @Override
                 public void valueChanged(ListSelectionEvent e) {
                  if (arrivingCity.getSelectedValue() == null) return; 
                  if (arrivingCity.getSelectedValue().equals(departingCity.getSelectedValue())) {
                    arrivingCity.clearSelection();
                  }
              }
          });
          }
        
        
          
        

Vaadin

          
            public VoyageView() {     

              String[] locations = new String[]{"Bayonne", "Berlin", "Bern", "Bilbao", "Birmingham", "Bremen", "Brussels"};
              ListBox<String> departingCity = new ListBox<String>();
              departingCity.setItems(locations);
              ListBox<String> arrivingCity = new ListBox<String>();
              arrivingCity.setItems(locations);

              this.setLayout(new BorderLayout());
              FButton searchButton = new FButton("Search");
              FButton cancelButton = new FButton("Cancel");
              Panel citySelection = new Panel(new GridLayout(0,2));
              citySelection.add(departingCity);
              citySelection.add(arrivingCity);
              Panel buttonBar = new Panel();
              buttonBar.setLayout(new BoxLayout(buttonBar, BoxLayout.VERTICAL));
              buttonBar.add(searchButton);
              buttonBar.add(cancelButton);
              this.add(buttonBar, BorderLayout.WEST);
              this.add(citySelection, BorderLayout.CENTER);
              departingCity.addValueChangeListener(new HasValue.ValueChangeListener<HasValue.ValueChangeEvent<String>() {
                @Override
                 public void valueChanged(HasValue.ValueChangeEvent<String> e) {
                    if (arrivingCity.getValue() == null) return;
                    if (arrivingCity.getValue().equals(departingCity.getValue())) {
                         arrivingCity.setValue(null);
                      }
                 }
              });
            }
          
        

Take the first step with the Modernization Toolkit Analyzer

Ready to bring your legacy Java applications to the web? The free Modernization Toolkit Analyzer audits all the ways your application code depends on the libraries you are moving away from, and estimates from this audit how much of the transformation can be automated based on known specifications. This report doesn’t take the place of an expert opinion but gives you a good starting point to have a discussion with your stakeholders.

Available as a Maven plugin in the Vaadin directory and a plugin in the Eclipse Marketplace, the Modernization Toolkit Analyzer helps you save time, reduce risk, and modernize with confidence. Try it today and take the guesswork out of your Java migration.

Run the Analyzer using your preferred tool:

Maven Eclipse

Ready to kill the tail on legacy dependencies and bring your Java Swing application to the future?

Download our white paper, ‘Modernizing Java Swing Applications: A Five-Step Blueprint for Decision-Makers,’ to learn how to automate your Swing-to-Web migration with the Vaadin Modernization Toolkit.
Vaadin Modernization Toolkit

Give your application’s features
a new life on the latest
web standards

Vaadin Flow is one of the most comprehensive and modern Web frameworks for building enterprise-critical applications available today. Companies are able to include the latest Java features, W3C specifications, and many best practices in their applications simply by migrating to Vaadin Flow. Vaadin Modernization Toolkit makes the migration easier than ever to accomplish.
Diagram Image

Get the job done with automation

Many conventional Java modernization projects adopting a phased approach can take years to complete, and developers often lack the motivation to finish. The automation provided by the Vaadin Modernization Toolkit can refactor the bulk of your Java code so you can quickly kill the tail of legacy dependencies and move forward with an architecturally coherent new application.
automation-img-12

Fully customizable transformations

The Vaadin Modernization Toolkit includes a default set of transformation capabilities, enabling the most common features found in legacy frameworks. These can be extended with the APIs used in your application or customized if your application has tailored the legacy technology with non-standard behavior.
customizable-img-12

Trusted by award-winning companies to create award-winning software

From the list of the most influential FinTechs to the Best SaaS from the Cloud Awards, companies rely on Vaadin to create cutting-edge applications that make a big impact. The Vaadin Modernization Toolkit gives you a boost to accelerate your Java migration to modern web apps.
award-winning-img-12

Java migration, not emulation

The Vaadin Modernization Toolkit helps migrate Java applications to Vaadin Flow, Vaadin’s open-source framework for building web applications with Java. After the migration, there will be no remaining dependencies on old frameworks such as Swing, SWT, or JavaFX. The Toolkit supplies useful features familiar to developers from old frameworks in a Feature Pack, but it does not emulate technologies like Swing.

Code readability built-in

We built the Modernization Toolkit to produce code that humans can read and maintain. Your transformed application sources retain the original structure, naming conventions, comments, and whitespace. Changes made by the transpiler are almost always applied within the same line of code, meaning your developers can confidently take ownership.

Fine-tuning: Reach your target automation with a fixed-price guarantee

The engineers at Vaadin offer a fixed-price Fine-tuning service to improve the Standard Rules, Custom Rules, and Feature Pack to reach a higher degree of automation for your application. The transpiler can also be iteratively improved to automate a higher percentage of the work.
Customer case

Procountor made a UX-first accounting software with Vaadin

When Apple dropped support for their own JVM, we had to start supporting a Swing version of our app as well. The abstraction layer made it a natural choice for us to do the same with Vaadin, knowing that the API was so similar to both Swing and AWT. And that's what we did. Quite successfully I might add.

Lauri Lehtonen
CTO, procountor
lufthansa
rockwell
primerica
hsbc
tsystems
jnj
Talk to our Team

Modernization, not just migration

Book a free consultation with our expert to learn more how the Modernization Toolkit turns your old apps into modern web apps.

Make the app usable with modern
devices on web browser
A cost-effective transition
Improved look and feel
Faster performance
Moving the app to run in the cloud