Skip to content

h-morozumi/java-app-modernization-sample

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

8 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Java App Modernization ใƒใƒณใ‚บใ‚ชใƒณ

GitHub Copilot App Modernization ใ‚’ๆดป็”จใ—ใฆใ€2 ใคใฎ Java ใƒฌใ‚ฌใ‚ทใƒผใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใ‚’ๆœ€ๆ–ฐใฎ Java 21 + Azure ๅฏพๅฟœใซใƒžใ‚คใ‚ฐใƒฌใƒผใ‚ทใƒงใƒณใ™ใ‚‹ใƒใƒณใ‚บใ‚ชใƒณใงใ™ใ€‚


ๆฆ‚่ฆ

ใ“ใฎใƒชใƒใ‚ธใƒˆใƒชใซใฏใ€็•ฐใชใ‚‹ไธ–ไปฃใฎใƒฌใ‚ฌใ‚ทใƒผ Java ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใŒ 2 ใคๅซใพใ‚Œใฆใ„ใพใ™ใ€‚
GitHub Copilot App Modernization for Java (VS Code ๆ‹กๅผตๆฉŸ่ƒฝ) ใ‚’ไฝฟใ„ใ€AI ๆ”ฏๆดใงใ‚ณใƒผใƒ‰ใฎใ‚ขใƒƒใƒ—ใ‚ฐใƒฌใƒผใƒ‰ใƒปAzure ็งป่กŒใ‚’ไฝ“้จ“ใ—ใพใ™ใ€‚

ใ‚ขใƒ—ใƒช ็พๅœจใฎๆŠ€่ก“ใ‚นใ‚ฟใƒƒใ‚ฏ ใƒžใ‚คใ‚ฐใƒฌใƒผใ‚ทใƒงใƒณๅ…ˆ
javaee-legacy-app Java 8 + Java EE 7 (Servlet/JSP) Java 21 + Jakarta EE 10
spring-legacy-app Java 11 + Spring Boot 2.7.18 Java 21 + Spring Boot 3.5

ๅ‰ๆๆกไปถ

ๅฟ…้ ˆใƒ„ใƒผใƒซ

ใƒ„ใƒผใƒซ ็”จ้€”
VS Code (1.101 ไปฅ้™) ้–‹็™บใ‚จใƒ‡ใ‚ฃใ‚ฟ
GitHub Copilot (ๆœ‰ๅŠนใชใ‚ตใƒ–ใ‚นใ‚ฏใƒชใƒ—ใ‚ทใƒงใƒณ) AI ใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐๆ”ฏๆด
GitHub Copilot App Modernization ๆ‹กๅผตๆฉŸ่ƒฝ Java ใƒžใ‚คใ‚ฐใƒฌใƒผใ‚ทใƒงใƒณๆ”ฏๆด
Java 21 (Microsoft Build of OpenJDK ๆŽจๅฅจ) ใ‚ฟใƒผใ‚ฒใƒƒใƒˆ JDK / ใƒ„ใƒผใƒซๅฎŸ่กŒ็’ฐๅขƒ
Maven ใƒ“ใƒซใƒ‰ใƒ„ใƒผใƒซ

Dev Container ใ‚’ไฝฟ็”จใ™ใ‚‹ๅ ดๅˆ (ๆŽจๅฅจ)

ใ“ใฎใƒชใƒใ‚ธใƒˆใƒชใซใฏ Dev Container ่จญๅฎšใŒๅซใพใ‚Œใฆใ„ใพใ™ใ€‚VS Code ใฎ Dev Containers ๆ‹กๅผตๆฉŸ่ƒฝใ‚’ไฝฟใ†ใจใ€ๅฟ…่ฆใช SDK ใŒใ™ในใฆ่‡ชๅ‹•ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ•ใ‚Œใพใ™ใ€‚

ใƒžใƒซใƒใƒซใƒผใƒˆใƒฏใƒผใ‚ฏใ‚นใƒšใƒผใ‚นใฎไฝฟ็”จ (ๆŽจๅฅจ)

ใ“ใฎใƒชใƒใ‚ธใƒˆใƒชใฏ ใƒžใƒซใƒใƒซใƒผใƒˆใƒฏใƒผใ‚ฏใ‚นใƒšใƒผใ‚น ใจใ—ใฆๆง‹ๆˆใ•ใ‚Œใฆใ„ใพใ™ใ€‚java-app-modernization.code-workspace ใ‚’้–‹ใใจใ€ๅ„ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใŒ็‹ฌ็ซ‹ใ—ใŸใƒ•ใ‚ฉใƒซใƒ€ใจใ—ใฆ่ช่ญ˜ใ•ใ‚Œใ€ไปฅไธ‹ใฎใƒกใƒชใƒƒใƒˆใŒใ‚ใ‚Šใพใ™๏ผš

  • ๅ„ใ‚ขใƒ—ใƒชใ”ใจใซๅ€‹ๅˆฅใฎใƒ“ใƒซใƒ‰่จญๅฎšใƒปใƒ‡ใƒใƒƒใ‚ฐ่จญๅฎšใŒ้ฉ็”จใ•ใ‚Œใ‚‹
  • GitHub Copilot App Modernization ใŒๅ„ใ‚ขใƒ—ใƒชใ‚’็‹ฌ็ซ‹ใ—ใŸใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใจใ—ใฆ่ช่ญ˜
  • ใƒ•ใ‚ฉใƒซใƒ€ใ”ใจใซ้ฉๅˆ‡ใช Java/Maven ใƒใƒผใ‚ธใƒงใƒณใŒ่‡ชๅ‹•ๅˆ‡ๆ›ฟ

ใƒฏใƒผใ‚ฏใ‚นใƒšใƒผใ‚นใ‚’้–‹ใๆ–นๆณ•:

# VS Code ใงใƒฏใƒผใ‚ฏใ‚นใƒšใƒผใ‚นใƒ•ใ‚กใ‚คใƒซใ‚’็›ดๆŽฅ้–‹ใ
code java-app-modernization.code-workspace

ใพใŸใฏใ€VS Code ใƒกใƒ‹ใƒฅใƒผใ‹ใ‚‰ ใƒ•ใ‚กใ‚คใƒซ โ†’ ใƒ•ใ‚กใ‚คใƒซใงใƒฏใƒผใ‚ฏใ‚นใƒšใƒผใ‚นใ‚’้–‹ใ ใ‚’้ธๆŠžใ—ใ€java-app-modernization.code-workspace ใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„ใ€‚

ใƒฏใƒผใ‚ฏใ‚นใƒšใƒผใ‚นๆง‹ๆˆ:

ใƒ•ใ‚ฉใƒซใƒ€ๅ ใƒ‘ใ‚น ่ชฌๆ˜Ž
root . ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใƒซใƒผใƒˆ (ๅ…ฑ้€š่จญๅฎšใƒปใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ)
javaee-legacy-app (Java 8 โ†’ 21) javaee-legacy-app/ Java EE ใƒฌใ‚ฌใ‚ทใƒผใ‚ขใƒ—ใƒช
spring-legacy-app (Boot 2 โ†’ 3) spring-legacy-app/ Spring Boot ใƒฌใ‚ฌใ‚ทใƒผใ‚ขใƒ—ใƒช
# Dev Container ใฎ่ตทๅ‹•ๅพŒใ€SDKMAN ใงไปฅไธ‹ใŒ่‡ชๅ‹•ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ•ใ‚Œใพใ™:
# Java:  8.0.472-amzn / 11.0.26-amzn / 21.0.9-amzn
# Maven: 3.6.3 / 3.8.8 / 3.9.12

ๅ„ใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชใซ .sdkmanrc ใŒ้…็ฝฎใ•ใ‚ŒใฆใŠใ‚Šใ€cd ใ™ใ‚‹ใ ใ‘ใง้ฉๅˆ‡ใช Java/Maven ใƒใƒผใ‚ธใƒงใƒณใซ่‡ชๅ‹•ๅˆ‡ๆ›ฟใ•ใ‚Œใพใ™ใ€‚

ใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒช Java Maven ็”จ้€”
/ (ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใƒซใƒผใƒˆ) 21.0.9-amzn 3.9.12 ใƒ„ใƒผใƒซๅฎŸ่กŒ / ใƒžใ‚คใ‚ฐใƒฌใƒผใ‚ทใƒงใƒณๅ…ˆ
javaee-legacy-app/ 8.0.472-amzn 3.6.3 ใƒฌใ‚ฌใ‚ทใƒผใ‚ขใƒ—ใƒชโ‘ 
spring-legacy-app/ 11.0.26-amzn 3.8.8 ใƒฌใ‚ฌใ‚ทใƒผใ‚ขใƒ—ใƒชโ‘ก

ใƒชใƒใ‚ธใƒˆใƒชๆง‹ๆˆ

java-app-modernization-sample/
โ”œโ”€โ”€ .sdkmanrc                          # Java 21 / Maven 3.9.12 ่‡ชๅ‹•ๅˆ‡ๆ›ฟ (ใƒ„ใƒผใƒซๅฎŸ่กŒ็”จ)
โ”œโ”€โ”€ java-app-modernization.code-workspace  # ใƒžใƒซใƒใƒซใƒผใƒˆใƒฏใƒผใ‚ฏใ‚นใƒšใƒผใ‚น่จญๅฎš
โ”œโ”€โ”€ README.md                          # โ† ใ“ใฎใƒ•ใ‚กใ‚คใƒซ (ใƒใƒณใ‚บใ‚ชใƒณๆ‰‹้ †)
โ”œโ”€โ”€ .devcontainer/
โ”‚   โ”œโ”€โ”€ devcontainer.json              # Dev Container ่จญๅฎš
โ”‚   โ””โ”€โ”€ post-create.sh                 # SDKMAN + SDK ่‡ชๅ‹•ใ‚คใƒณใ‚นใƒˆใƒผใƒซ
โ”œโ”€โ”€ javaee-legacy-app/                 # ๐Ÿ”ด ใƒฌใ‚ฌใ‚ทใƒผใ‚ขใƒ—ใƒชโ‘  (Java 8 / Java EE 7)
โ”‚   โ”œโ”€โ”€ .sdkmanrc                      #    Java 8 / Maven 3.6.3 ่‡ชๅ‹•ๅˆ‡ๆ›ฟ
โ”‚   โ”œโ”€โ”€ pom.xml
โ”‚   โ”œโ”€โ”€ README.md                      #    ใ‚ขใƒ—ใƒช่ฉณ็ดฐ่ชฌๆ˜Ž
โ”‚   โ””โ”€โ”€ src/
โ””โ”€โ”€ spring-legacy-app/                 # ๐Ÿ”ด ใƒฌใ‚ฌใ‚ทใƒผใ‚ขใƒ—ใƒชโ‘ก (Java 11 / Spring Boot 2)
    โ”œโ”€โ”€ .sdkmanrc                      #    Java 11 / Maven 3.8.8 ่‡ชๅ‹•ๅˆ‡ๆ›ฟ
    โ”œโ”€โ”€ pom.xml
    โ”œโ”€โ”€ README.md                      #    ใ‚ขใƒ—ใƒช่ฉณ็ดฐ่ชฌๆ˜Ž
    โ””โ”€โ”€ src/

ไฝฟ็”จใ™ใ‚‹ใƒ„ใƒผใƒซ

GitHub Copilot App Modernization for Java

Microsoft ใŒๆไพ›ใ™ใ‚‹ VS Code ๆ‹กๅผตๆฉŸ่ƒฝใงใ€ไปฅไธ‹ใฎๆฉŸ่ƒฝใ‚’ๅ‚™ใˆใฆใ„ใพใ™๏ผš

ๆฉŸ่ƒฝ ่ชฌๆ˜Ž
App Assessment AppCAT ใซใ‚ˆใ‚‹ใ‚ณใƒผใƒ‰ๅˆ†ๆž โ†’ ใ‚ฏใƒฉใ‚ฆใƒ‰ๅฏพๅฟœๅบฆใฎ่ฉ•ไพกใƒฌใƒใƒผใƒˆ็”Ÿๆˆ
Code Transformation OpenRewrite + AI ใซใ‚ˆใ‚‹ใ‚ณใƒผใƒ‰่‡ชๅ‹•ๅค‰ๆ›
Build & Patch ใƒ“ใƒซใƒ‰ๆคœ่จผ โ†’ ใ‚จใƒฉใƒผ่‡ชๅ‹•ไฟฎๆญฃ
CVE Scan ่„†ๅผฑๆ€งใฎๆคœๅ‡บใจไฟฎๆญฃ
Unit Test Migration ๆ—ขๅญ˜ใƒ†ใ‚นใƒˆใฎ็งป่กŒ + ๆ–ฐ่ฆใƒ†ใ‚นใƒˆ็”Ÿๆˆ
Containerize & Deploy Dockerfile ็”Ÿๆˆ โ†’ Azure ใƒ‡ใƒ—ใƒญใ‚ค

ๆ‹กๅผตๆฉŸ่ƒฝใฎใ‚คใƒณใ‚นใƒˆใƒผใƒซ

VS Code ใงไปฅไธ‹ใฎๆ‹กๅผตๆฉŸ่ƒฝใ‚’ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ—ใฆใใ ใ•ใ„๏ผš

  1. GitHub Copilot โ€” GitHub.copilot
  2. GitHub Copilot Chat โ€” GitHub.copilot-chat
  3. GitHub Copilot App Modernization โ€” vscjava.migrate-java-to-azure

ใƒใƒณใ‚บใ‚ชใƒณๆ‰‹้ †

Part 1: javaee-legacy-app ใฎใƒžใ‚คใ‚ฐใƒฌใƒผใ‚ทใƒงใƒณ (Java 8 โ†’ Java 21)

Step 1: ็พ็Šถ็ขบ่ช

cd javaee-legacy-app
mvn clean package
mvn tomcat7:run

ใƒ–ใƒฉใ‚ฆใ‚ถใง http://localhost:8080/ ใซใ‚ขใ‚ฏใ‚ปใ‚นใ—ใ€ใ‚ขใƒ—ใƒชใŒ Java 8 ใงๅ‹•ไฝœใ™ใ‚‹ใ“ใจใ‚’็ขบ่ชใ—ใพใ™ใ€‚
http://localhost:8080/sysinfo ใง้žๆŽจๅฅจ API ใฎๅ‹•ไฝœใ‚’็ขบ่ชใ—ใพใ™ใ€‚

Step 2: App Assessment (่ฉ•ไพก)

  1. VS Code ใ‚ตใ‚คใƒ‰ใƒใƒผใง GitHub Copilot App Modernization ใƒ‘ใƒใƒซใ‚’้–‹ใ
  2. ASSESSMENT ใ‚ปใ‚ฏใ‚ทใƒงใƒณใฎ Run Assessment ใ‚’ใ‚ฏใƒชใƒƒใ‚ฏ
  3. AppCAT ใŒใ‚ณใƒผใƒ‰ใ‚’ๅˆ†ๆžใ—ใ€ไปฅไธ‹ใ‚’ๅซใ‚€่ฉ•ไพกใƒฌใƒใƒผใƒˆใŒ็”Ÿๆˆใ•ใ‚Œใพใ™๏ผš
    • Java 8 โ†’ 21 ใงๅ‰Š้™คใ•ใ‚Œใ‚‹ API ใฎไธ€่ฆง
    • CVE ่„†ๅผฑๆ€งใ‚’ๆŒใคใƒฉใ‚คใƒ–ใƒฉใƒชใฎๆคœๅ‡บ
    • javax โ†’ jakarta ใธใฎ็งป่กŒใŒๅฟ…่ฆใช็ฎ‡ๆ‰€
    • Azure ็งป่กŒใซๅฟ…่ฆใชๅค‰ๆ›ด็‚น

Step 3: Code Upgrade (ใ‚ขใƒƒใƒ—ใ‚ฐใƒฌใƒผใƒ‰)

Copilot Chat ใ‚’ Agent Mode ใง้–‹ใใ€ไปฅไธ‹ใฎใƒ—ใƒญใƒณใƒ—ใƒˆใ‚’ๅฎŸ่กŒใ—ใพใ™๏ผš

Upgrade project to Java 21 using Java upgrade tools

ใƒ„ใƒผใƒซใŒใ‚ขใƒƒใƒ—ใ‚ฐใƒฌใƒผใƒ‰ใƒ—ใƒฉใƒณใ‚’็”Ÿๆˆใ—ใพใ™ใ€‚ใƒ—ใƒฉใƒณใฎๅ†…ๅฎนใ‚’็ขบ่ชใ—ใ€Continue ใงๅฎŸ่กŒใ—ใพใ™ใ€‚

ไธปใชๅค‰ๆ›ๅ†…ๅฎน:

ๅค‰ๆ›้ …็›ฎ Before (Java 8) After (Java 21)
Base64 ใ‚จใƒณใ‚ณใƒผใƒ‰ sun.misc.BASE64Encoder java.util.Base64
XML ใƒใ‚คใƒณใƒ‡ใ‚ฃใƒณใ‚ฐ javax.xml.bind (JAXB) Jakarta XML Binding or ไปฃๆ›ฟ
JavaScript ใ‚จใƒณใ‚ธใƒณ Nashorn (ScriptEngine) GraalJS or ไปฃๆ›ฟ
ใƒฉใƒƒใƒ‘ใƒผใ‚ณใƒณใ‚นใƒˆใƒฉใ‚ฏใ‚ฟ new Integer(42) Integer.valueOf(42)
ใ‚นใƒฌใƒƒใƒ‰ๅˆถๅพก Thread.stop() / finalize() Thread.interrupt() + try-with-resources
ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใƒžใƒใƒผใ‚ธใƒฃ SecurityManager ไปฃๆ›ฟใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃๆฉŸๆง‹
ๅๅ‰็ฉบ้–“ javax.* jakarta.*

Step 4: CVE ไฟฎๆญฃ

TASKS ใ‚ปใ‚ฏใ‚ทใƒงใƒณใฎ Quality & Security Tasks โ†’ CVE Scan ใ‚’ๅฎŸ่กŒใ—ใ€่„†ๅผฑใชใƒฉใ‚คใƒ–ใƒฉใƒชใ‚’ๅฎ‰ๅ…จใชใƒใƒผใ‚ธใƒงใƒณใซๆ›ดๆ–ฐใ—ใพใ™ใ€‚

ใƒฉใ‚คใƒ–ใƒฉใƒช ็พๅœจใฎใƒใƒผใ‚ธใƒงใƒณ ไธปใช CVE
Log4j 1.x 1.2.17 CVE-2021-4104
Commons Collections 3.2.1 CVE-2015-6420
Commons FileUpload 1.3.1 CVE-2016-1000031
Jackson Databind 2.9.8 CVE-2019-12384 ไป–
Apache HttpClient 4.5.2 CVE-2020-13956

Step 5: ใƒ“ใƒซใƒ‰ & ใƒ†ใ‚นใƒˆ

# Java 21 ใงใƒ“ใƒซใƒ‰ใŒ้€šใ‚‹ใ“ใจใ‚’็ขบ่ช
sdk use java 21.0.9-amzn
sdk use maven 3.9.12
mvn clean package

Part 2: spring-legacy-app ใฎใƒžใ‚คใ‚ฐใƒฌใƒผใ‚ทใƒงใƒณ (Spring Boot 2 โ†’ 3)

Step 1: ็พ็Šถ็ขบ่ช

cd spring-legacy-app
mvn clean package -DskipTests
mvn spring-boot:run

ใƒ–ใƒฉใ‚ฆใ‚ถใง http://localhost:8081/ ใซใ‚ขใ‚ฏใ‚ปใ‚นใ—ใ€ใ‚ขใƒ—ใƒชใŒๅ‹•ไฝœใ™ใ‚‹ใ“ใจใ‚’็ขบ่ชใ—ใพใ™ใ€‚
http://localhost:8081/sysinfo ใงใƒžใ‚คใ‚ฐใƒฌใƒผใ‚ทใƒงใƒณๅ•้กŒใจใชใ‚‹ใ‚ณใƒผใƒ‰ใฎๅ‹•ไฝœใ‚’็ขบ่ชใ—ใพใ™ใ€‚

Step 2: App Assessment (่ฉ•ไพก)

  1. VS Code ใ‚ตใ‚คใƒ‰ใƒใƒผใง GitHub Copilot App Modernization ใƒ‘ใƒใƒซใ‚’้–‹ใ
  2. Run Assessment ใ‚’ๅฎŸ่กŒ
  3. ่ฉ•ไพกใƒฌใƒใƒผใƒˆใงไปฅไธ‹ใŒๆคœๅ‡บใ•ใ‚Œใพใ™๏ผš
    • javax โ†’ jakarta ใฎ็งป่กŒใŒๅฟ…่ฆใช็ฎ‡ๆ‰€
    • Spring Security ใฎ้žๆŽจๅฅจ API
    • spring.factories ใฎๅปƒๆญข
    • CVE ่„†ๅผฑๆ€งใƒฉใ‚คใƒ–ใƒฉใƒช

Step 3: Code Upgrade (ใ‚ขใƒƒใƒ—ใ‚ฐใƒฌใƒผใƒ‰)

Agent Mode ใงไปฅไธ‹ใฎใƒ—ใƒญใƒณใƒ—ใƒˆใ‚’ๅฎŸ่กŒใ—ใพใ™๏ผš

Upgrade project to Java 21 and Spring Boot 3.5 using Java upgrade tools

ไธปใชๅค‰ๆ›ๅ†…ๅฎน:

ใ‚ซใƒ†ใ‚ดใƒช Before (Boot 2) After (Boot 3)
Java ใƒใƒผใ‚ธใƒงใƒณ 11 21
Spring Boot 2.7.18 3.5.x
ๅๅ‰็ฉบ้–“ javax.servlet.* / javax.persistence.* / javax.validation.* jakarta.servlet.* / jakarta.persistence.* / jakarta.validation.*
Security ่จญๅฎš extends WebSecurityConfigurerAdapter @Bean SecurityFilterChain
URL ใƒžใƒƒใƒใƒณใ‚ฐ antMatchers() requestMatchers()
่ชๅฏ่จญๅฎš authorizeRequests() authorizeHttpRequests()
MVC ่จญๅฎš extends WebMvcConfigurerAdapter implements WebMvcConfigurer
Auto Configuration META-INF/spring.factories META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
Trailing Slash ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆๆœ‰ๅŠน ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ็„กๅŠน โ†’ ๆ˜Ž็คบ็š„่จญๅฎšใŒๅฟ…่ฆ
ใƒ—ใƒญใƒ‘ใƒ†ใ‚ฃ spring.redis.* ็ญ‰ spring.data.redis.* ็ญ‰

Step 4: CVE ไฟฎๆญฃ

ใƒฉใ‚คใƒ–ใƒฉใƒช ็พๅœจใฎใƒใƒผใ‚ธใƒงใƒณ ไธปใช CVE
SnakeYAML 1.30 CVE-2022-1471
H2 Database 2.1.210 CVE-2022-23221
Log4j 1.x 1.2.17 CVE-2021-4104
Commons Text 1.9 CVE-2022-42889 (Text4Shell)
Gson 2.8.6 CVE-2022-25647

Step 5: ใƒ“ใƒซใƒ‰ & ใƒ†ใ‚นใƒˆ

# Java 21 + Spring Boot 3 ใงใƒ“ใƒซใƒ‰ใŒ้€šใ‚‹ใ“ใจใ‚’็ขบ่ช
sdk use java 21.0.9-amzn
sdk use maven 3.9.12
mvn clean package

Part 3: Azure ใธใฎใƒ‡ใƒ—ใƒญใ‚ค (ใ‚ชใƒ—ใ‚ทใƒงใƒณ)

ใƒžใ‚คใ‚ฐใƒฌใƒผใ‚ทใƒงใƒณๅฎŒไบ†ๅพŒใ€GitHub Copilot App Modernization ใฎ Deploy ๆฉŸ่ƒฝใ‚’ไฝฟใฃใฆ Azure ใซใƒ‡ใƒ—ใƒญใ‚คใงใใพใ™ใ€‚

ใƒ‡ใƒ—ใƒญใ‚คๅ…ˆใฎ้ธๆŠž่‚ข

Azure ใ‚ตใƒผใƒ“ใ‚น ้ฉ็”จใ‚ทใƒŠใƒชใ‚ช
Azure App Service Web ใ‚ขใƒ—ใƒชใฎใƒžใƒใƒผใ‚ธใƒ‰ใƒ›ใ‚นใƒ†ใ‚ฃใƒณใ‚ฐ (Java 21 ๅฏพๅฟœ)
Azure Container Apps ใ‚ณใƒณใƒ†ใƒŠๅŒ–ใ•ใ‚ŒใŸใƒžใ‚คใ‚ฏใƒญใ‚ตใƒผใƒ“ใ‚น
Azure Kubernetes Service Kubernetes ใƒ™ใƒผใ‚นใฎใ‚ชใƒผใ‚ฑใ‚นใƒˆใƒฌใƒผใ‚ทใƒงใƒณ

ๆ‰‹้ †

  1. TASKS ใ‚ปใ‚ฏใ‚ทใƒงใƒณใฎ Containerize & Deploy ใ‚’้ธๆŠž
  2. Copilot ใŒ Dockerfile ใจ Azure ใƒ‡ใƒ—ใƒญใ‚ค็”จใฎ IaC ใƒ•ใ‚กใ‚คใƒซใ‚’็”Ÿๆˆ
  3. Azure ใƒชใ‚ฝใƒผใ‚นใฎใƒ—ใƒญใƒ“ใ‚ธใƒงใƒ‹ใƒณใ‚ฐใจใƒ‡ใƒ—ใƒญใ‚คใŒๅฎŸ่กŒ

ใƒžใ‚คใ‚ฐใƒฌใƒผใ‚ทใƒงใƒณ ใ‚ตใƒžใƒชใƒผ

javaee-legacy-app

Java 8  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’  Java 21
Java EE 7 (javax.*)  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’  Jakarta EE 10 (jakarta.*)
Servlet 3.1 / JSP 2.3  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’  Jakarta Servlet 6.0 / JSP 4.0
Log4j 1.x (CVE)  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’  Log4j 2.x or SLF4J + Logback
Commons Collections 3.x (CVE)  โ”€โ”€โ”€โ”€โ†’  4.x
Jackson Databind 2.9 (CVE)  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’  2.17+
tomcat7-maven-plugin  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’  Spring Boot ๅŒ– or Tomcat 10+

spring-legacy-app

Java 11  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’  Java 21
Spring Boot 2.7.18  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’  Spring Boot 3.5.x
Spring Framework 5.3  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’  Spring Framework 6.2
Spring Security 5.x  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’  Spring Security 6.x
javax.* ๅๅ‰็ฉบ้–“  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’  jakarta.* ๅๅ‰็ฉบ้–“
spring.factories  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’  AutoConfiguration.imports
SnakeYAML 1.30 (CVE)  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’  2.x
H2 2.1.210 (CVE)  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’  2.3+

ๅ‚่€ƒใƒชใƒณใ‚ฏ

ใƒชใ‚ฝใƒผใ‚น URL
GitHub Copilot App Modernization ๆฆ‚่ฆ https://learn.microsoft.com/azure/developer/github-copilot-app-modernization/overview
Java ้–‹็™บ่€…ๅ‘ใ‘ใ‚ฌใ‚คใƒ‰ https://learn.microsoft.com/azure/developer/java/migration/migrate-github-copilot-app-modernization-for-java
ใ‚ฏใ‚คใƒƒใ‚ฏใ‚นใ‚ฟใƒผใƒˆ: Java ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฎใ‚ขใƒƒใƒ—ใ‚ฐใƒฌใƒผใƒ‰ https://learn.microsoft.com/azure/developer/github-copilot-app-modernization/quickstart-upgrade
ใ‚ฏใ‚คใƒƒใ‚ฏใ‚นใ‚ฟใƒผใƒˆ: ่ฉ•ไพกใจ็งป่กŒ https://learn.microsoft.com/azure/developer/java/migration/migrate-github-copilot-app-modernization-for-java-quickstart-assess-migrate
ใ‚ฏใ‚คใƒƒใ‚ฏใ‚นใ‚ฟใƒผใƒˆ: Azure ใธใฎใƒ‡ใƒ—ใƒญใ‚ค https://learn.microsoft.com/azure/developer/java/migration/migrate-github-copilot-app-modernization-for-java-quickstart-deploy-to-azure
AppCAT for Java (ใ‚ณใƒžใƒณใƒ‰ใƒฉใ‚คใƒณ็‰ˆ) https://learn.microsoft.com/azure/migrate/appcat/java-preview
Azure App Service Java ใƒฉใƒณใ‚ฟใ‚คใƒ  https://learn.microsoft.com/azure/app-service/configure-language-java
VS Code ๆ‹กๅผตๆฉŸ่ƒฝ (Marketplace) https://marketplace.visualstudio.com/items?itemName=vscjava.migrate-java-to-azure

ใƒฉใ‚คใ‚ปใƒณใ‚น

MIT License

About

A sample Java application demonstrating modernization techniques and best practices for legacy application transformation

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors