Aplikasi Azure Migrate dan penilaian kode untuk Java versi 7 (Pratinjau)
Catatan
Artikel ini untuk generasi berikutnya dari aplikasi Azure Migrate dan penilaian kode untuk Java, versi 7.x. Versi ini dalam pratinjau. Untuk versi stabil sebelumnya, versi 6.x, lihat Aplikasi Azure Migrate dan penilaian kode untuk Java.
Artikel ini memperlihatkan kepada Anda cara menggunakan aplikasi Azure Migrate dan alat penilaian kode untuk Java untuk menilai dan mereplatformasi semua jenis aplikasi Java. Alat ini memungkinkan Anda mengevaluasi kesiapan aplikasi untuk mereplatformasi dan migrasi ke Azure. Alat ini ditawarkan sebagai antarmuka baris perintah (CLI), dan menilai biner aplikasi Java dan kode sumber untuk mengidentifikasi peluang replatforming dan migrasi untuk Azure. Ini membantu Anda memodernisasi dan mereplatformasi aplikasi Java skala besar dengan mengidentifikasi kasus penggunaan umum dan pola kode dan mengusulkan perubahan yang direkomendasikan.
Alat ini menemukan penggunaan teknologi aplikasi melalui analisis kode statis, memberikan estimasi upaya, dan mempercepat replatforming kode. Penilaian ini membantu Anda memprioritaskan dan memindahkan aplikasi Java ke Azure. Dengan seperangkat mesin dan aturan, alat ini dapat menemukan dan menilai berbagai teknologi seperti Java 11, Java 17, Jakarta EE, Spring, Hibernate, Java Message Service (JMS), dan banyak lagi. Alat ini kemudian membantu Anda mereplatformasi aplikasi Java ke target Azure yang berbeda - Azure App Service, Azure Kubernetes Service, dan Azure Container Apps - dengan aturan replatformasi Azure tertentu.
Alat ini didasarkan pada serangkaian komponen dalam proyek Cloud Native Computing Foundation Konveyor, yang dibuat dan dipimpin oleh Red Hat.
Gambaran Umum
Alat ini dirancang untuk membantu organisasi memodernisasi aplikasi Java mereka dengan cara yang mengurangi biaya dan memungkinkan inovasi yang lebih cepat. Alat ini menggunakan teknik analisis tingkat lanjut untuk memahami struktur dan dependensi aplikasi Java apa pun, dan memberikan panduan tentang cara merefaktor dan memigrasikan aplikasi ke Azure.
Dengan itu, Anda dapat melakukan tugas-tugas berikut:
- Temukan penggunaan teknologi: Lihat teknologi mana yang digunakan aplikasi dengan cepat. Penemuan berguna jika Anda memiliki aplikasi warisan dengan dokumentasi yang tidak banyak dan ingin mengetahui teknologi mana yang mereka gunakan.
- Menilai kode ke target tertentu: Menilai aplikasi untuk target Azure tertentu. Periksa upaya dan modifikasi yang harus Anda lakukan untuk mereplatformasi aplikasi Anda ke Azure.
Target yang didukung
Alat ini berisi aturan untuk membantu Anda mereplatformasi aplikasi sehingga Anda dapat menyebarkan, dan menggunakan layanan Azure yang berbeda.
Aturan yang digunakan oleh aplikasi Azure Migrate dan penilaian kode dikelompokkan berdasarkan target. Target adalah tempat atau bagaimana aplikasi berjalan, dan kebutuhan dan harapan umum. Saat menilai aplikasi, Anda dapat memilih beberapa target. Tabel berikut ini menjelaskan target yang tersedia:
Nama target | Deskripsi | Target |
---|---|---|
Azure App Service | Praktik terbaik untuk menyebarkan aplikasi ke Azure App Service. | azure-appservice |
Azure Kubernetes Service | Praktik terbaik untuk menyebarkan aplikasi ke Azure Kubernetes Service. | azure-aks |
Azure Container Apps | Praktik terbaik untuk menyebarkan aplikasi ke Azure Container Apps. | azure-container-apps |
Kesiapan Cloud | Praktik terbaik umum untuk membuat aplikasi Cloud (Azure) siap. | cloud-readiness |
Linux | Praktik terbaik umum untuk membuat aplikasi linux siap. | linux |
OpenJDK 11 | Praktik terbaik umum untuk menjalankan aplikasi Java 8 dengan Java 11. | openjdk11 |
OpenJDK 17 | Praktik terbaik umum untuk menjalankan aplikasi Java 11 dengan Java 17. | openjdk17 |
OpenJDK 21 | Praktik terbaik umum untuk menjalankan aplikasi Java 17 dengan Java 21. | openjdk21 |
Saat alat menilai kesiapan Cloud dan layanan Azure terkait, alat ini juga dapat melaporkan informasi yang berguna untuk potensi penggunaan layanan Azure yang berbeda. Daftar berikut ini memperlihatkan beberapa layanan yang tercakup:
- Azure Databases
- Azure Service Bus
- Azure Storage
- Jaringan Pengiriman Konten Azure
- Azure Event Hubs
- Azure Key Vault
- Azure Front Door
Unduh dan Instal
Untuk menggunakan appcat
CLI, Anda harus mengunduh paket khusus untuk lingkungan Anda, dan memiliki dependensi yang diperlukan di lingkungan Anda.
appcat
CLI berjalan di lingkungan apa pun seperti Windows, Linux, atau Mac, menggunakan perangkat keras Intel, Arm, atau Apple Silicon.
Untuk persyaratan JDK, kami sarankan Anda menggunakan Microsoft Build of OpenJDK.
OS | Sistem | Tautan unduhan | File lain |
---|---|---|---|
x64 | |||
Windows | x64 | Unduh | sha256 / sig |
macOS | x64 | Unduh | sha256 / sig |
Linux | x64 | Unduh | sha256 / sig |
AArch64 | |||
Windows | AArch64 / ARM64 | Unduh | sha256 / sig |
macOS | Apple Silicon | Unduh | sha256 / sig |
Linux | AArch64 / ARM64 | Unduh | sha256 / sig |
Prasyarat
- Unduh dan instal Microsoft Build of OpenJDK 17. Pastikan variabel lingkungan JAVA_HOME diatur.
-
Unduh Apache Maven dan instal secara lokal. Pastikan biner Maven (
mvn
) dapat dijangkau melaluiPATH
variabel lingkungan. - Unduh dan instal Python 3.
Penginstalan
Untuk menginstal appcat
, unduh file zip yang sesuai untuk platform Anda. Setelah mengunduh file, tergantung pada sistem operasi Anda, Anda harus menemukan file .tar.gz (Linux/macOS) atau .zip (Windows).
Ekstrak biner dari file yang diunduh. Anda akan melihat struktur folder berikut:
/azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/
├── appcat.exe (Windows) / appcat (Linux/macOS)
├── samples/
├── fernflower.jar
├── LICENSE
├── NOTICE.txt
├── maven.default.index
├── jdtls/
├── static-report/
├── rulesets/
├── readme.md
└── readme.html
Menjalankan alat
Opsi 1: Jalankan appcat dari folder yang diunduh
Ubah direktori ke folder yang diekstrak:
cd /azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/
./appcat --help
Catatan
Biner appcat
pertama-tama mencari dependensinya di direktori saat ini, tempatnya berjalan, dan kembali ke skenario berikut jika tidak ditemukan.
Opsi 2: Tambahkan jalur biner appcat ke $PATH Anda
Pindahkan konten folder ke folder .appcat di direktori beranda pengguna - $HOME/.appcat di Linux/Mac dan %USERPROFILE%/.appcat di Windows.
Tambahkan folder .appcat ke variabel lingkungan Anda PATH
sehingga Anda dapat menjalankan alat dari folder apa pun di terminal.
mv <path-to-extracted>/azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/ $HOME/.appcat
Catatan
Dalam konteks ini, ketika appcat
biner dipanggil dari folder yang berbeda dari tempatnya diinstal, biner mencari dependensinya di folder .appcat di direktori beranda pengguna.
Penggunaan
Subperintah
AppCAT menyediakan dua sub-perintah untuk penggunaan:
-
analyze
: Jalankan analisis kode sumber pada kode sumber input atau biner. -
transform
: Konversi aturan XML dari versi sebelumnya (6 dan yang lebih lama) ke format YAML yang digunakan oleh versi ini.
Catatan
Untuk pengguna macOS: Jika Anda mengalami kesalahan yang menyatakan "Apple tidak dapat memverifikasi" saat mencoba menjalankan app, Anda dapat mengatasi kesalahan ini dengan menggunakan perintah berikut:
xattr -d -r com.apple.quarantine /path/to/appcat_binary
Contohnya:
xattr -d -r com.apple.quarantine $HOME/.appcat/appcat
Menganalisis sub-perintah
analyze
Subperindesa memungkinkan Anda menjalankan kode sumber dan analisis biner.
Untuk menganalisis kode sumber aplikasi, jalankan perintah berikut:
./appcat analyze --input=<path-to-source-code> --output=<path-to-output-directory> --target=azure-appservice --overwrite
Bendera --input
harus menunjuk ke direktori kode sumber atau file biner, dan --output
harus menunjuk ke direktori untuk menyimpan hasil analisis.
Untuk informasi selengkapnya tentang bendera analisis, jalankan perintah berikut:
./appcat analyze --help
Untuk memeriksa target yang tersedia untuk AppCAT, jalankan perintah berikut:
./appcat analyze --list-targets
Perintah ini menghasilkan output berikut:
available target technologies:
azure-aks
azure-appservice
azure-container-apps
azure-spring-apps
cloud-readiness
linux
openjdk11
openjdk17
openjdk21
Menganalisis Beberapa Aplikasi
AppCAT dirancang untuk menganalisis satu aplikasi per eksekusi perintah, tetapi jika Anda menggunakan opsi , --bulk
Anda dapat menganalisis beberapa aplikasi dalam satu eksekusi. Opsi ini menghasilkan satu laporan statis dalam direktori output yang menyertakan hasil untuk semua aplikasi.
Untuk menganalisis beberapa aplikasi, jalankan perintah berikut:
./appcat analyze --bulk --input=<path-to-source-A> --output=<path-to-output-ABC> --target=<targetname>
./appcat analyze --bulk --input=<path-to-source-B> --output=<path-to-output-ABC> --target=<targetname>
./appcat analyze --bulk --input=<path-to-source-C> --output=<path-to-output-ABC> --target=<targetname>
Mengubah Sub-perintah
transform
Sub-perintah memungkinkan Anda mengonversi aturan XML sebelumnya appcat
yang digunakan dalam versi 6.x ke dalam format YAML baru yang digunakan oleh versi 7.x ini.
Untuk mengubah aturan, jalankan perintah berikut:
./appcat transform rules --input=<path-to-xml-rules> --output=<path-to-output-directory>
Bendera --input
harus menunjuk ke file atau direktori yang berisi aturan XML, dan --output
bendera harus menunjuk ke direktori output untuk aturan YAML yang dikonversi.
Sampel
Catatan
Pastikan bahwa izin file untuk skrip di folder yang diekstrak diatur untuk memungkinkan eksekusi.
Di folder sampel, Anda dapat menemukan sampel aplikasi web yang disebut airsonic.war. Airsonic adalah streamer media berbasis web, menyediakan akses ke musik Anda dan memungkinkan Anda untuk membagikannya dengan teman-teman. Untuk mempelajari selengkapnya tentang Airsonic, lihat Airsonic.
Dalam direktori sampel, Anda dapat menemukan skrip berikut untuk menjalankan berbagai jenis analisis:
- run-assessment: Menyediakan laporan dengan penilaian kode dan langkah-langkah untuk memigrasikan Airsonic ke Azure App Service di Tomcat.
- run-assessment-transform-rules: Mengonversi aturan XML Windup ke aturan YAML yang kompatibel dengan analyzer-lsp.
- run-assessment-custom-rules: Menyediakan laporan penilaian kode menggunakan aturan kustom (mengubah XML ke YAML).
- run-assessment-openjdk21: Menghasilkan laporan dengan penilaian kode dan langkah-langkah untuk memigrasikan Airsonic ke OpenJDK 21.
- run-assessment-package-only: Menghasilkan laporan dengan menilai paket tertentu.
Bergantung pada sistem operasi Anda, jalankan skrip yang sesuai, seperti yang ditunjukkan dalam contoh berikut:
./samples/run-assessment
Laporan dibuat dan diluncurkan secara otomatis. Anda dapat menemukan laporan di bawah .. /samples/report-* (Linux/macOS) atau .. \samples\report-* (Windows).
Ringkasan analisis
Halaman arahan laporan mencantumkan semua teknologi yang digunakan dalam aplikasi. Dasbor menyediakan ringkasan analisis, termasuk jumlah insiden transformasi, kategori insiden, atau poin cerita.
Saat Anda memperbesar pada bagan pai Insiden menurut Kategori , Anda dapat melihat jumlah insiden menurut kategori: Wajib, Opsional, dan Potensi.
Dasbor juga menunjukkan titik cerita. Poin cerita adalah metrik abstrak yang umum digunakan dalam pengembangan perangkat lunak Agile untuk memperkirakan tingkat upaya yang diperlukan untuk mengimplementasikan fitur atau perubahan.
appcat
menggunakan titik cerita untuk mengekspresikan tingkat upaya yang diperlukan untuk memigrasikan aplikasi tertentu. Poin cerita tidak selalu diterjemahkan ke jam kerja, tetapi nilainya harus konsisten di seluruh tugas.
Laporan penilaian
Laporan penilaian memberikan gambaran umum tentang masalah transformasi yang perlu diselesaikan untuk memigrasikan aplikasi ke Azure.
Masalah-masalah ini, juga disebut Insiden, memiliki tingkat keparahan (Wajib, Opsional, atau Potensi), tingkat upaya, dan angka yang menunjukkan titik cerita. Poin cerita ditentukan dengan menghitung jumlah insiden kali upaya yang diperlukan untuk mengatasi masalah.
Informasi terperinci untuk masalah tertentu
Untuk setiap insiden, Anda bisa mendapatkan informasi lebih lanjut (detail masalah, konten aturan, dan sebagainya) hanya dengan memilihnya. Anda juga mendapatkan daftar semua file yang terpengaruh oleh insiden ini.
Kemudian, untuk setiap file atau kelas yang terpengaruh oleh insiden, Anda dapat melompat ke kode sumber untuk menyoroti baris kode yang membuat masalah.
Catatan rilis
7.6.0.1
Rilis ini berisi perbaikan dan penyempurnaan berikut.
-
--analyze-known-libraries
bendera: Sekarang berfungsi di Windows. - Pembersihan direktori: Direktori tambahan yang dibuat selama analisis pada Windows sekarang dibersihkan secara otomatis.
-
--json-output
flag: Sekarang beroperasi. - Kesalahan penguraian aturan: Kesalahan
unable to parse all the rules for ruleset
telah diatasi. - Deskripsi tab Insight: Deskripsi aturan yang hilang telah ditambahkan.
- Dependensi koneksi internet: Analisis tidak lagi gagal tanpa koneksi internet.
-
--context-lines
bendera: Sekarang berperilaku seperti yang diharapkan ketika diatur ke 0. - Menghapus persyaratan Python untuk menjalankan alat.
7.6.0.0
Rilis ini didasarkan pada serangkaian komponen proyek Konveyor yang berbeda.
Pembaruan Umum
- Mesin baru berdasarkan proyek Konveyor Analyzer LSP , dengan CLI berdasarkan proyek Konveyor Kantra .
6.3.9.0
Rilis ini berisi perbaikan berikut dan menyertakan sekumpulan aturan baru.
Pembaruan Umum
- Perubahan terintegrasi dari repositori upstream Windup (6.3.9.Rilis Akhir).
- Mengatasi tautan rusak dalam deskripsi aturan dan teks bantuan.
Aturan
- Antrean Pesan Azure: memperbarui dan menambahkan aturan baru untuk
azure-message-queue-rabbitmq
danazure-message-queue-amqp
. - Azure Bus Layanan: memperkenalkan aturan deteksi untuk Azure Bus Layanan.
- MySQL dan PostgreSQL: aturan deteksi dependensi yang disempurnakan.
- Aturan Azure-AWS: aturan yang ditingkatkan dan ditingkatkan yang ada.
- S3 Spring Starter: menambahkan aturan deteksi untuk S3 Spring Starter.
- RabbitMQ Spring JMS: menambahkan aturan deteksi untuk RabbitMQ Spring JMS.
- Aturan Pengelogan: aturan terkait pengelogan yang diperbarui dan disempurnakan.
- Aturan Penyimpanan Lokal: memperbarui dan menyempurnakan aturan penyimpanan lokal.
- Aturan Sistem File Azure: memperbarui dan menyempurnakan aturan Azure File System.
Perpustakaan
- Pustaka yang diperbarui untuk mengatasi kerentanan keamanan.
6.3.0.9
Rilis ini berisi perbaikan berikut dan menyertakan sekumpulan aturan baru.
- Mengatasi masalah dengan
localhost-java-00001
aturan. - Memperkenalkan aturan baru untuk mengidentifikasi teknologi seperti AWS S3, AWS SQS, Alibaba Cloud OSS, Alibaba Cloud SMS, Alibaba Scheduler X, Alibaba Cloud Seata, dan Alibaba Rocket MQ.
-
azure-file-system-02000
Memperbarui untuk sekarang mendukung ekstensi file XML. - Meningkatkan berbagai pustaka untuk mengatasi kerentanan keamanan.
6.3.0.8
Sebelumnya, serangkaian target diaktifkan secara default, sehingga sulit bagi pelanggan tertentu untuk menilai aplikasi besar dengan terlalu banyak insiden yang terkait dengan masalah yang kurang penting. Untuk mengurangi kebisingan dalam laporan, pengguna sekarang harus menentukan beberapa target, dengan parameter --target
, saat mengeksekusi appcat
, memberi mereka opsi untuk memilih hanya target yang penting.
6.3.0.7
Rilis GA (Umumnya Tersedia) dari aplikasi Azure Migrate dan penilaian kode.
Masalah Umum
7.6.0.1
- Bendera
--overrideProviderSettings
tidak didukung. - Masalah aturan:
-
azure-system-config-01000
,http-session-01000
,java-removals-00150
aturan tidak dipicu. -
FileSystem - Java IO
aturan tidak dipicu.
-
- Menganalisis file WAR di Windows menghasilkan kesalahan berikut:
Failed to Move Decompiled File
. Kesalahan terjadi ketika menganalisis file WAR di Windows, yang bertanggung jawab atas beberapa insiden redundan yang dibuat pada OS Windows. - Kesalahan di saluran Kesalahan Pengamat di Windows:
Windows system assumed buffer larger than it is, events have likely been missed
. Pesan kesalahan ini muncul pada baris perintah selama pekerjaan yang berjalan lama di Windows. - Ctrl+C gagal menghentikan analisis yang sedang berlangsung. Untuk mengatasinya, hentikan proses secara manual dengan secara eksplisit membunuh proses.
- Dalam laporan analisis biner, judul cuplikan kode menunjukkan jalur file yang salah atau tidak ada.
7.6.0.0
- Bendera
--analyze-known-libraries
tidak berfungsi pada Windows. - Di Windows, folder tambahan berikut dihasilkan selama proses analisis tetapi tidak dihapus secara otomatis setelah selesai. Anda mungkin ingin menghapus folder tambahan ini setelah analisis selesai.
- .metadata
- org.eclipse.osgi
- org.eclipse.equinox.app
- org.eclipse.core.runtime
- org.eclipse.equinox.launcher
- Bendera
--overrideProviderSettings
tidak didukung. - Bendera
--json-output
tidak didukung. Dalam rilis mendatang, ini menghasilkan output JSON untuk file output.yaml dan dependency.yaml . - Masalah aturan:
-
azure-system-config-01000
,http-session-01000
,java-removals-00150
aturan tidak dipicu. -
FileSystem - Java IO
aturan tidak dipicu. - Kesalahan
unable to parse all the rules for ruleset
saat menjalankan analisis. Kesalahan ini terjadi selama analisis ketika alat gagal mengurai semua aturan dalam set aturan.
-
- Menganalisis file WAR di Windows menghasilkan kesalahan berikut:
Failed to Move Decompiled File
. Kesalahan terjadi ketika menganalisis file WAR di Windows, yang bertanggung jawab atas beberapa insiden redundan yang dibuat pada OS Windows. - Deskripsi yang hilang untuk beberapa aturan pada tab Insight . Beberapa aturan tag tidak memiliki deskripsi, yang mengarah ke judul kosong yang muncul di tab Insight laporan.
- Kesalahan di saluran Kesalahan Pengamat di Windows:
Windows system assumed buffer larger than it is, events have likely been missed
. Pesan kesalahan ini muncul pada baris perintah selama pekerjaan yang berjalan lama di Windows. - Rilis ini memerlukan koneksi internet aktif untuk analisis dependensi.
- Ctrl+C gagal menghentikan analisis yang sedang berlangsung. Untuk mengatasinya, hentikan proses secara manual dengan secara eksplisit membunuh proses.
- Saat bendera diatur ke angka 0, bendera
--context-lines
tidak berfungsi seperti yang diharapkan. Bendera ini memungkinkan pengguna untuk membatasi berapa banyak kode sumber yang akan muncul pada laporan. Pengaturan ke nilai 0 mungkin tidak berfungsi seperti yang diharapkan.
Lisensi
Penilaian aplikasi dan kode Azure Migrate untuk Java adalah alat gratis berbasis sumber terbuka.