Chapter 1. Introduction

1.1. About the Windup User Guide

This guide is for engineers, consultants, and others who want to use Windup to migrate Java applications or other components. It describes how to install and run Windup, review the generated reports, and take advantage of additional features.

1.1.1. Use of WINDUP_HOME in This Guide

This guide uses the WINDUP_HOME replaceable value to denote the path to the Windup distribution. When you encounter this value in the guide, be sure to replace it with the actual path to your Windup installation.

  • If you download and install the latest distribution of Windup, WINDUP_HOME refers to the windup-distribution-3.0.0.Final folder extracted from the downloaded ZIP file.
  • If you build Windup from GitHub source, WINDUP_HOME refers to the windup-distribution-3.0.0.Final folder extracted from the windup-distribution/target/windup-distribution-3.0.0-SNAPSHOT-offline.zip file.

1.2. About Windup

Windup Logo

What is Windup?

Windup is an extensible and customizable rule-based tool that helps simplify migration of Java applications.

Windup examines application artifacts, including project source directories and application archives, then produces an HTML report that highlights areas needing changes. Windup can be used to migrate Java applications from previous versions of Red Hat JBoss Enterprise Application Platform or from other containers, such as Oracle® WebLogic Server or IBM® WebSphere® Application Server.

How Does Windup Simplify Migration?

Windup looks for common resources and highlights technologies and known trouble spots when migrating applications. The goal is to provide a high-level view into the technologies used by the application and provide a detailed report organizations can use to estimate, document, and migrate enterprise applications to Java EE and JBoss EAP.

1.2.1. Windup Features

Windup provides a number of capabilities to assist with planning and executing migration projects.

Planning and work estimation
Windup assists project managers by detailing the type of work and estimation of effort to complete the tasks. Level of effort is represented in Windup reports as story points. Actual estimates will be based on the skills required and the classification of migration work needed.
Identifying migration issues and providing solutions
Windup identifies migration issues and highlights specific points in the code where an issue occurs. Windup suggests code changes and provides additional resources to help engineers resolve the specific issue.
Detailed reporting
Windup produces numerous reports to give both high-level views of the migration effort and details of specific migration tasks. You can view migration issues across all applications, charts and summary information about issues in an application, a breakdown of issues by module in the application, reports of technologies used, and dependencies on other applications and services. You can also examine source files to see the line of code where an issue occurs.
Built-in rules and migration paths
Windup comes with a core set of rules to provide migration assistance for several common migration paths. These rules identify the use of proprietary functionality from other application servers or deprecated subsystems from previous versions of JBoss EAP. Windup also contains rules to identify common migration issues, such as hard-coded IP addresses and JNDI lookups.
Rule extensibility and customization
Windup provides the ability to create powerful and complex rules. You can expand upon the core set of rules provided by Windup and create rules to identify additional issues that are important for your migration project. You can also override core rules and create custom rule categories. See the Windup Rules Development Guide for more information on customizing Windup rules.
Ability to analyze source code or application archives
Windup can evaluate application archives or source code, and can evaluate multiple applications together. It can identify archives that are shared across multiple applications, which can help with more accurate effort estimation.

1.2.2. Windup Rules

Windup is a rule-based migration tool that analyzes the APIs, technologies, and architectures used by the applications you plan to migrate. In fact, the Windup analysis process is implemented using Windup rules. Windup uses rules internally to extract files from archives, decompile files, scan and classify file types, analyze XML and other file content, analyze the application code, and build the reports.

Windup builds a data model based on the rule execution results and stores component data and relationships in a graph database, which can then be queried and updated as needed by the migration rules and for reporting purposes.

Windup rules use the following rule pattern:

when(condition)
  perform(action)
otherwise(action)

Windup provides a comprehensive set of standard migration rules out-of-the-box. Because applications may contain custom libraries or components, Windup allows you to write your own rules to identify use of components or software that may not be covered by the existing ruleset. If you plan to write your own custom rules, see the Windup Rules Development Guide for detailed instructions.

1.3. Supported Configurations

1.3.1. System Requirements

1.3.1.1. Software

  • Java Platform, JRE version 8+
  • Windup is tested on Linux, Mac OS X, and Windows. Other operating systems with Java 8+ support should work equally well.

1.3.1.2. Hardware

The following memory and disk space requirements are the minimum needed to run Windup. If your application is very large or you need to evaluate multiple applications, you may want to increase these values to improve performance. For tips on how to optimize performance, see Optimize Windup Performance.

  • A minimum of 4 GB RAM. For better performance, a quad-core processor with 8 GB RAM is recommended. This allows 3 - 4 GB RAM for use by the JVM.
  • A minimum of 4 GB of free disk space. A fast disk, especially a solid-state drive (SSD), should improve performance.

1.3.2. Supported Migration Paths

Windup supports application migration from several platforms to Red Hat JBoss Enterprise Application Platform (JBoss EAP). See the below table for which JBoss EAP version is currently supported by Windup for direct migration from your source platform.

Source PlatformMigration to JBoss EAP 6Migration to JBoss EAP 7

Oracle® WebLogic Server

IBM® WebSphere® Application Server

JBoss EAP 4

[a]

JBoss EAP 5

JBoss EAP 6

N/A

[a] Although Windup does not currently provide rules for this migration path, Red Hat Consulting can assist with migration from any source platform.

You will specify the source and target technologies by passing the --source and --target arguments to the Windup command.

Example Windup Command: WebLogic to JBoss EAP 6

$ WINDUP_HOME/bin/windup --source weblogic --target eap:6 --input /path/to/application.war

Example Windup Command: JBoss EAP 6 to JBoss EAP 7

$ WINDUP_HOME/bin/windup --source eap:6 --target eap:7 --input /path/to/application.war

See Run Windup for more information on running Windup.