Skip to content

Commit 24f6665

Browse files
Merge pull request #280737 from brunoborges/patch-2
Update AppCAT for Java documentation
2 parents 36b7901 + 0db59f5 commit 24f6665

File tree

1 file changed

+71
-39
lines changed

1 file changed

+71
-39
lines changed

articles/migrate/appcat/java.md

Lines changed: 71 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -5,58 +5,62 @@ author: KarlErickson
55
ms.author: antoniomanug
66
ms.service: azure
77
ms.custom: devx-track-java, devx-track-extended-java
8-
ms.topic: conceptual
9-
ms.date: 03/25/2024
8+
ms.topic: overview
9+
ms.date: 07/12/2024
10+
#customer intent: As a developer, I want to assess my Java application so that I can understand its readiness for migration to Azure.
1011
---
1112

1213
# Azure Migrate application and code assessment for Java
1314

1415
This guide describes how to use the Azure Migrate application and code assessment tool for Java to assess and replatform any type of Java application. The tool enables you to evaluate application readiness for replatforming and migration to Azure.
1516

16-
`appcat` is a command-line tool from Azure Migrate to assess Java application binaries and source code to identify replatforming and migration opportunities for Azure. It helps you modernize and replatform large-scale Java applications by identifying common use cases and code patterns and proposing recommended changes.
17+
The `appcat` command line interface (CLI) is a command-line tool to assess Java application binaries and source code to identify replatforming and migration opportunities for Azure. It helps you modernize and replatform large-scale Java applications by identifying common use cases and code patterns and proposing recommended changes.
1718

18-
`appcat` discovers application technology usage through static code analysis, supports effort estimation, and accelerates code replatforming, helping you move Java applications to Azure. With a set of engines and rules, it can discover and assess different technologies such as Java 11, Java 17, Jakarta EE 10, Quarkus, Spring, and so on. It then helps you replatform the Java application to different Azure targets (Azure App Service, Azure Kubernetes Service, Azure Container Apps, and Azure Spring Apps) with specific Azure replatforming rules.
19+
The tool discovers application technology usage through static code analysis, provides effort estimation, and accelerates code replatforming, helping you to prioritize and move Java applications to Azure. With a set of engines and rules, it can discover and assess different technologies such as Java 11, Java 17, Jakarta EE, Spring, Hibernate, Java Message Service (JMS), and more. It then helps you replatform the Java application to different Azure targets (Azure App Service, Azure Kubernetes Service, Azure Container Apps, and Azure Spring Apps) with specific Azure replatforming rules.
1920

20-
`appcat` is open source and is based on [WindUp](https://github.com/windup), a project created by Red Hat and published under the [Eclipse Public License](https://github.com/windup/windup/blob/master/LICENSE).
21+
This tool is open source and is based on [WindUp](https://github.com/windup), a project created by Red Hat and published under the [Eclipse Public License](https://github.com/windup/windup/blob/master/LICENSE).
2122

2223
## When should I use Azure Migrate application and code assessment?
2324

24-
`appcat` is designed to help organizations modernize their Java applications in a way that reduces costs and enables faster innovation. The tool uses advanced analysis techniques to understand the structure and dependencies of any Java application, and provides guidance on how to refactor and migrate the applications to Azure.
25+
The tool is designed to help organizations modernize their Java applications in a way that reduces costs and enables faster innovation. The tool uses advanced analysis techniques to understand the structure and dependencies of any Java application, and provides guidance on how to refactor and migrate the applications to Azure.
2526

26-
With `appcat`, you can do the following tasks:
27+
With it, you can perform the following tasks:
2728

2829
* Discover technology usage: Quickly see which technologies an application uses. Discovery is useful if you have legacy applications with not much documentation and want to know which technologies they use.
29-
* Assess the code to a specific target: Assess an application for a specific Azure target. Check the effort and the modifications you have to do in order to replatform your applications to Azure.
30+
* Assess the code to a specific target: Assess an application for a specific Azure target. Check the effort and the modifications you have to do to replatform your applications to Azure.
3031

31-
### Supported Azure targets
32+
### Supported targets
3233

33-
The tool contains rules for helping you replatform your applications so you can deploy to and use the following Azure services.
34+
The tool contains rules for helping you replatform your applications so you can deploy to, and use, different Azure services.
3435

35-
You can use the following services as deployment targets:
36+
The rules used by Azure Migrate application and code assessment are grouped based on a *target*. A target is where or how the application runs, and general needs and expectations. When assessing an application, you can choose multiple targets. The following table describes the available targets:
3637

37-
* Azure App Service
38-
* Azure Spring Apps
39-
* Azure Kubernetes Service
40-
* Azure Container Apps
41-
* cloud-readiness
42-
* discovery
43-
* linux
44-
* openjdk11
45-
* openjdk17
46-
* openjdk21
38+
| Target | Description | ID |
39+
|--------------------------|------------------------------------------------------------------------|------------------------|
40+
| Azure App Service | Best practices for deploying an app to Azure App Service. | `azure-appservice` |
41+
| Azure Spring Apps | Best practices for deploying an app to Azure Spring Apps. | `azure-spring-apps` |
42+
| Azure Kubernetes Service | Best practices for deploying an app to Azure Kubernetes Service. | `azure-aks` |
43+
| Azure Container Apps | Best practices for deploying an app to Azure Container Apps. | `azure-container-apps` |
44+
| Cloud Readiness | General best practices for making an application Cloud (Azure) ready. | `cloud-readiness` |
45+
| Discovery | Identifies technology usage such as libraries and frameworks. | `discovery` |
46+
| Linux | General best practices for making an application Linux ready. | `linux` |
47+
| OpenJDK 11 | General best practices for running a Java 8 application with Java 11. | `openjdk11` |
48+
| OpenJDK 17 | General best practices for running a Java 11 application with Java 17. | `openjdk17` |
49+
| OpenJDK 21 | General best practices for running a Java 17 application with Java 21. | `openjdk21` |
4750

48-
You can use the following services as resource services:
51+
When the tool assesses for Cloud Readiness and related Azure services, it can also report useful information for potential usage of different Azure services. The following list shows a few of the services covered:
4952

5053
* Azure Databases
5154
* Azure Service Bus
5255
* Azure Storage
53-
* Azure CDN
56+
* Azure Content Delivery Network
5457
* Azure Event Hubs
5558
* Azure Key Vault
59+
* Azure Front Door
5660

57-
## Use Azure Migrate application and code assessment for Java
61+
## How to use Azure Migrate application and code assessment for Java
5862

59-
To use `appcat`, you must download the ZIP file described in the next section, and have a compatible JDK 11+ installation on your computer. `appcat` runs on Windows, Linux, or Mac, both for Intel, Arm, and Apple Silicon hardware. You can use the [Microsoft Build of OpenJDK](/java/openjdk) to run `appcat`.
63+
To use the `appcat` CLI, you must download the ZIP file described in the next section, and have a compatible JDK 11 or JDK 17 installation on your computer. The `appcat` CLI runs on any Java-compatible environment such as Windows, Linux, or Mac, both for Intel, Arm, and Apple Silicon hardware. We recommend you use the [Microsoft Build of OpenJDK](/java/openjdk).
6064

6165
### Download latest release
6266

@@ -69,7 +73,7 @@ The `appcat` CLI is available for download as a ZIP file from [aka.ms/appcat/azu
6973

7074
- [Azure Migrate application and code assessment for Java 6.3.0.7](https://aka.ms/appcat/azure-migrate-appcat-for-java-cli-6.3.0.7-preview.zip)
7175

72-
### Run appcat
76+
### Get started with appcat
7377

7478
Unzip the zip file in a folder of your choice. You then get the following directory structure:
7579

@@ -90,7 +94,6 @@ appcat-cli-<version> # APPCAT_HOME
9094
├── run-assessment-openjdk21
9195
├── run-assessment-zip-report
9296
└── run-discovery
93-
9497
```
9598

9699
* *docs*: This directory contains the documentation of `appcat`.
@@ -112,23 +115,27 @@ The following guides provide the main documentation for `appcat` for Java:
112115
* [CLI Usage Guide](https://azure.github.io/appcat-docs/cli/)
113116
* [Rules Development Guide](https://azure.github.io/appcat-docs/rules-development-guide/)
114117

115-
## Discover technology usage without an Azure target in mind
118+
## Discover technology usage and Cloud readiness without an Azure service in mind
116119

117-
Discovery of technologies is the first stage of application replatform and modernization. During the *discovery* phase, `appcat` scans the application and its components to gain a comprehensive understanding of its structure, architecture, and dependencies. This information is used to create a detailed inventory of the application and its components (see the [Discovery report](#discovery-report) section), which serves as the basis for further analysis and planning.
120+
Discovery of technologies and Cloud readiness targets provide great insight into application replatform and modernization to the Cloud. The tool scans the application and its components to gain a comprehensive understanding of its structure, architecture, and dependencies. It also finds potential issues that might be challenging in a Cloud environment. The `discovery` target in particular is used to create a detailed inventory of the application and its components. This inventory serves as the basis for further analysis and planning. For more information, see the [Discovery report](#discovery-report) section.
118121

119-
Use the following command to initiate discovery:
122+
Use the following command to initiate discovery and cloud readiness:
120123

121124
```bash
122125
./appcat \
123126
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
124-
--target discovery
127+
--target discovery cloud-readiness
125128
```
126129

127-
The discovery phase is useful when you don't have a specific Azure target in mind. Otherwise, `appcat` runs discovery implicitly for any Azure target.
130+
This type of report is useful when you don't have a specific Azure service in mind to deploy your application to.
128131

129-
## Assess a Java application for a specific target
132+
The tool always performs the `discovery` whether or not you include that value in the `--target` parameter.
130133

131-
The *assessment* phase is where `appcat` analyzes the application and its components to determine its suitability for replatorming and to identify any potential challenges or limitations. This phase involves analyzing the application code and checking its compliance with the selected Azure target or OpenJDK target.
134+
## Assess a Java application
135+
136+
The *assessment* phase is where the `appcat` CLI analyzes the application and its components to determine its suitability for replatorming and to identify any potential challenges or limitations. This phase involves analyzing the application code and checking its compliance with the selected targets.
137+
138+
You can select multiple targets by using a space-delimited list of values with the `--target` argument.
132139

133140
To check the available targets, run the following command:
134141

@@ -152,22 +159,37 @@ Available target technologies:
152159
openjdk21
153160
```
154161

155-
Then, you can run `appcat` using one of the available Azure targets, as shown in the following example:
162+
Then, you can run `appcat` using one or a combination of available targets, as shown in the following example:
156163

157164
```bash
158165
./appcat \
159166
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
160-
--target azure-appservice
167+
--target cloud-readiness linux azure-appservice
161168
```
162169

163-
You can run `appcat` using one of the available OpenJDK targets, as shown in the following example:
170+
You can also run `appcat` with one of the available OpenJDK targets, as shown in the following example:
164171

165172
```bash
166173
./appcat \
167174
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
168175
--target openjdk11
169176
```
170177

178+
For OpenJDK (Java) targets, we recommend you choose only one at a time.
179+
180+
### Recommendation of targets for Azure assessment
181+
182+
Whenever you assess an application for Azure deployment, we recommend you start with the following targets:
183+
184+
- `discovery`
185+
- `cloud-readiness`
186+
187+
Also, specify an Azure service for deployment, such as `azure-appservice` or `azure-container-apps`.
188+
189+
If you intend to move an application from a Windows environment into a Linux VM or container, we recommend you also add the `linux` target.
190+
191+
If you intend to move an application from an older version of the JDK to a newer version, we recommend that you pick the next major version compared to the previous version in use by the application. For example, use `openjdk11` when your application is currently deployed with Java 8.
192+
171193
## Get results from appcat
172194

173195
The outcome of the discovery and assessment phases is a detailed report that provides a roadmap for the replatforming and modernization of the Java application, including recommendations for the Azure service and replatform approach. The report serves as the foundation for the next stages of the replatforming process. It helps organizations learn about the effort required for such transformation, and make decisions about how to modernize their applications for maximum benefits.
@@ -190,7 +212,7 @@ The dashboard also shows the *story points*. The story points are an abstract me
190212

191213
### Discovery report
192214

193-
The discovery report is a report generated during the *Discovery Phase*. It shows the list of technologies used by the application in the *Information* category. This report is just informing you about the technology that `appcat` discovered.
215+
The discovery report is a report generated during the *Discovery Phase*. It shows the list of technologies used by the application in the *Information* category. This report is just informing you about technology usage that `appcat` discovered.
194216

195217
:::image type="content" source="media/java/report-discovery.png" alt-text="Screenshot of the appcat discovery report." lightbox="media/java/report-discovery.png":::
196218

@@ -286,6 +308,16 @@ After executing this rule through `appcat`, rerun the analysis to review the gen
286308

287309
The complete guide for Rules Development is available at [azure.github.io/appcat-docs/rules-development-guide](https://azure.github.io/appcat-docs/rules-development-guide/).
288310

311+
## Release notes
312+
313+
### 6.3.0.8
314+
315+
Previously, a set of targets were enabled by default, making it difficult for certain customers to assess large applications with too many incidents related to less critical issues. To reduce noise in reports, users must now specify multiple targets, with the parameter `--target`, when executing `appcat`, giving them the option to select only the targets that matter.
316+
317+
### 6.3.0.7
318+
319+
GA (Generally Available) release of Azure Migrate application and code assessment.
320+
289321
## License
290322

291323
Azure Migrate application and code assessment for Java is a free, open source tool at no cost, and licensed under the [same license as the upstream WindUp project](https://github.com/windup/windup/blob/master/LICENSE).
@@ -312,7 +344,7 @@ Q: Where can I get some help when creating custom rules?
312344

313345
The best way to get help is to [create an issue on the appcat-rulesets GitHub repository](https://github.com/azure/appcat-rulesets/issues).
314346

315-
## Next steps
347+
## Related content
316348

317349
* [CLI usage guide](https://azure.github.io/appcat-docs/cli/)
318350
* [Rules development guide](https://azure.github.io/appcat-docs/rules-development-guide/)

0 commit comments

Comments
 (0)