Java sürüm 7 (Önizleme) için Azure Geçişi uygulama ve kod değerlendirmesi
Not
Bu makale, Java sürüm 7.x için yeni nesil Azure Geçişi uygulaması ve kod değerlendirmesine yöneliktir. Bu sürüm önizleme aşamasındadır. Önceki kararlı sürüm olan sürüm 6.x için bkz . Java için Azure Geçişi uygulaması ve kod değerlendirmesi.
Bu makalede, her tür Java uygulamasını değerlendirmek ve yeniden düzenlemek için Java için Azure Geçişi uygulaması ve kod değerlendirme aracının nasıl kullanılacağı gösterilmektedir. Araç, yeniden platform oluşturma ve Azure'a geçiş için uygulama hazırlığını değerlendirmenizi sağlar. Bu araç bir komut satırı arabirimi (CLI) olarak sunulur ve Azure için yeniden platform oluşturma ve geçiş fırsatlarını belirlemek üzere Java uygulama ikili dosyalarını ve kaynak kodunu değerlendirir. Yaygın kullanım örneklerini ve kod desenlerini belirleyerek ve önerilen değişiklikleri önererek büyük ölçekli Java uygulamalarını modernleştirmenize ve yeniden oluşturmanıza yardımcı olur.
Araç, statik kod analizi aracılığıyla uygulama teknolojisi kullanımını bulur, efor tahmini sağlar ve kod yeniden platformunu hızlandırır. Bu değerlendirme, Java uygulamalarının önceliklerini belirlemenize ve Azure'a taşımanıza yardımcı olur. Bir dizi altyapı ve kuralla, araç Java 11, Java 17, Jakarta EE, Spring, Hibernate, Java Message Service (JMS) ve daha fazlası gibi farklı teknolojileri keşfedebilir ve değerlendirebilir. Araç daha sonra Java uygulamasını farklı Azure hedeflerine (Azure Uygulaması Hizmeti, Azure Kubernetes Service ve Azure Container Apps) belirli Azure yeniden hazırlama kurallarıyla yeniden hazırlamanıza yardımcı olur.
Araç, Red Hat tarafından oluşturulan ve yönetilen Cloud Native Computing Foundation projesi Konveyor'daki bir bileşen kümesini temel alır.
Genel bakış
Araç, kuruluşların Java uygulamalarını maliyetleri düşürecek ve daha hızlı yeniliklere olanak sağlayacak şekilde modernleştirmelerine yardımcı olmak için tasarlanmıştır. Araç, herhangi bir Java uygulamasının yapısını ve bağımlılıklarını anlamak için gelişmiş analiz tekniklerini kullanır ve uygulamaları yeniden düzenleme ve Azure'a geçirme konusunda rehberlik sağlar.
Bununla, aşağıdaki görevleri gerçekleştirebilirsiniz:
- Teknoloji kullanımını keşfedin: Bir uygulamanın hangi teknolojileri kullandığını hızla görün. Çok fazla belge olmayan eski uygulamalarınız varsa ve hangi teknolojileri kullandıklarını öğrenmek istiyorsanız bulma yararlı olur.
- Kodu belirli bir hedefe değerlendirme: Belirli bir Azure hedefi için bir uygulamayı değerlendirme. Uygulamalarınızı Azure'a yeniden eklemek için yapmanız gereken çabayı ve değişiklikleri denetleyin.
Desteklenen hedefler
Araç, farklı Azure hizmetlerine dağıtabilmeniz ve kullanabilmeniz için uygulamalarınızı yeniden oluşturmanıza yardımcı olacak kurallar içerir.
Azure Geçişi uygulaması ve kod değerlendirmesi tarafından kullanılan kurallar bir hedefe göre gruplandırılır. Hedef, uygulamanın nerede veya nasıl çalıştığı ile genel ihtiyaçlar ve beklentilerdir. Bir uygulamayı değerlendirirken birden çok hedef seçebilirsiniz. Aşağıdaki tabloda kullanılabilir hedefler açıklanmaktadır:
Hedef adı | Açıklama | Hedef |
---|---|---|
Azure App Service | Bir uygulamayı Azure Uygulaması Hizmetine dağıtmak için en iyi yöntemler. | azure-appservice |
Azure Kubernetes Service | Azure Kubernetes Service'e uygulama dağıtmak için en iyi yöntemler. | azure-aks |
Azure Container Apps | Azure Container Apps'e uygulama dağıtmaya yönelik en iyi yöntemler. | azure-container-apps |
Bulut Hazırlığı | Bir uygulamayı Bulut (Azure) için hazır hale getirmek için genel en iyi yöntemler. | cloud-readiness |
Linux | Bir uygulamayı Linux'a hazır hale getirmek için genel en iyi yöntemler. | linux |
OpenJDK 11 | Java 11 ile Java 8 uygulaması çalıştırmaya yönelik genel en iyi yöntemler. | openjdk11 |
OpenJDK 17 | Java 17 ile Java 11 uygulaması çalıştırmaya yönelik genel en iyi yöntemler. | openjdk17 |
OpenJDK 21 | Java 21 ile Java 17 uygulaması çalıştırmaya yönelik genel en iyi yöntemler. | openjdk21 |
Araç Bulut Hazırlığı ve ilgili Azure hizmetlerini değerlendirdiğinde, farklı Azure hizmetlerinin olası kullanımına yönelik yararlı bilgiler de bildirebilir. Aşağıdaki listede kapsanan hizmetlerden birkaçı gösterilmektedir:
- Azure Veritabanları
- Azure Service Bus
- Azure Depolama
- Azure Content Delivery Network
- Azure Event Hubs
- Azure Key Vault
- Azure Front Door
İndirme ve Yükleme
CLI'yı appcat
kullanmak için, paketi ortamınıza özgü olarak indirmeniz ve ortamınızda gerekli bağımlılıklara sahip olmanız gerekir.
appcat
CLI, Intel, Arm veya Apple Silicon donanımı kullanarak Windows, Linux veya Mac gibi herhangi bir ortamda çalışır.
JDK gereksinimi için OpenJDK'nin Microsoft Derlemesi'ni kullanmanızı öneririz.
OS | Mimari | Bağlantıyı İndir | Diğer dosyalar |
---|---|---|---|
x64 | |||
Windows | x64 | Karşıdan Yükle | sha256 / sig |
macOS | x64 | Karşıdan Yükle | sha256 / sig |
Linux | x64 | Karşıdan Yükle | sha256 / sig |
AArch64 | |||
Windows | AArch64 / ARM64 | Karşıdan Yükle | sha256 / sig |
macOS | Apple Silicon | Karşıdan Yükle | sha256 / sig |
Linux | AArch64 / ARM64 | Karşıdan Yükle | sha256 / sig |
Önkoşullar
- OpenJDK 17'nin Microsoft Derlemesi'ni indirin ve yükleyin. JAVA_HOME ortam değişkeninin ayarlandığından emin olun.
-
Apache Maven'ı indirin ve yerel olarak yükleyin. Maven ikili dosyasının (
mvn
) ortam değişkeni aracılığıylaPATH
erişilebilir olduğundan emin olun. - Python 3'ü indirip yükleyin.
Yükleme
yüklemek appcat
için platformunuza uygun zip dosyasını indirin. Dosyayı indirdikten sonra işletim sisteminize bağlı olarak bir .tar.gz (Linux/macOS) veya .zip dosyası (Windows) bulmanız gerekir.
İndirilen dosyadan ikili dosyasını ayıklayın. Aşağıdaki klasör yapısını görmeniz gerekir:
/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
Aracı çalıştırma
1. Seçenek: İndirilen klasörden uygulama uygulamasını çalıştırma
Dizini ayıklanan klasörle değiştirin:
cd /azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/
./appcat --help
Not
İkili appcat
ilk olarak geçerli dizinde bağımlılıklarını arar ve bu bağımlılıklar bulunamazsa aşağıdaki senaryoya geri döner.
Seçenek 2: uygulama ikili yolunu $PATH
Klasörün içeriğini kullanıcının giriş dizinindeki .appcat klasörüne taşıyın: Linux/Mac üzerinde $HOME/.appcat ve Windows'da %USERPROFILE%/.appcat .
Aracı terminaldeki herhangi bir klasörden çalıştırabilmek için .appcat klasörünü ortam değişkeninize PATH
ekleyin.
mv <path-to-extracted>/azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/ $HOME/.appcat
Not
Bu bağlamda, ikili dosya yüklü olduğundan farklı bir klasörden çağrıldığında appcat
, kullanıcının giriş dizinindeki .appcat klasöründe bağımlılıklarını arar.
Kullanım
Alt Komutlar
AppCAT, kullanım için iki alt komut sağlar:
-
analyze
: Giriş kaynak kodunda veya ikili kodda kaynak kodu analizini çalıştırın. -
transform
: XML kurallarını önceki sürümlerden (6 ve üstü) bu sürüm tarafından kullanılan YAML biçimine dönüştürün.
Not
macOS kullanıcıları için: Uygulamayı çalıştırmaya çalışırken "Apple doğrulanamadı" hatasıyla karşılaşırsanız aşağıdaki komutu kullanarak bu hatayı düzeltebilirsiniz:
xattr -d -r com.apple.quarantine /path/to/appcat_binary
Örneğin:
xattr -d -r com.apple.quarantine $HOME/.appcat/appcat
Alt komutu analiz etme
Alt analyze
komut, kaynak kodu ve ikili analizi çalıştırmanıza olanak tanır.
Uygulama kaynak kodunu analiz etmek için aşağıdaki komutu çalıştırın:
./appcat analyze --input=<path-to-source-code> --output=<path-to-output-directory> --target=azure-appservice --overwrite
Bayrağın --input
bir kaynak kod dizinine veya ikili dosyaya işaret etmesi ve --output
çözümleme sonuçlarını depolamak için bir dizine işaret etmesi gerekir.
Analiz bayrakları hakkında daha fazla bilgi için aşağıdaki komutu çalıştırın:
./appcat analyze --help
AppCAT için kullanılabilir hedefleri denetlemek için aşağıdaki komutu çalıştırın:
./appcat analyze --list-targets
Bu komut aşağıdaki çıkışı oluşturur:
available target technologies:
azure-aks
azure-appservice
azure-container-apps
azure-spring-apps
cloud-readiness
linux
openjdk11
openjdk17
openjdk21
Birden Çok Uygulamayı Çözümleme
AppCAT, komut yürütme başına tek bir uygulamayı analiz etmek için tasarlanmıştır, ancak seçeneğini kullanırsanız --bulk
, tek bir yürütmede birden çok uygulamayı analiz edebilirsiniz. Bu seçenek, çıkış dizininde tüm uygulamaların sonuçlarını içeren tek bir statik rapor oluşturur.
Birden çok uygulamayı analiz etmek için aşağıdaki komutu çalıştırın:
./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>
Alt Komutu Dönüştür
Alt komut, transform
6.x sürümünde kullanılan önceki appcat
XML kurallarını bu sürüm 7.x tarafından kullanılan yeni YAML biçimine dönüştürmenizi sağlar.
Kuralları dönüştürmek için aşağıdaki komutu çalıştırın:
./appcat transform rules --input=<path-to-xml-rules> --output=<path-to-output-directory>
Bayrağın --input
XML kuralları içeren bir dosya veya dizine işaret etmesi ve bayrağının --output
dönüştürülen YAML kuralları için çıkış dizinine işaret etmesi gerekir.
Örnekler
Not
Ayıklanan klasördeki betikler için dosya izinlerinin yürütmeye izin verecek şekilde ayarlandığından emin olun.
Samples klasöründe airsonic.war adlı örnek bir web uygulaması bulabilirsiniz. Airsonic, müziğinize erişim sağlayan ve arkadaşlarınızla paylaşmanızı sağlayan web tabanlı bir medya aktarıcıdır. Airsonic hakkında daha fazla bilgi edinmek için bkz . Airsonic.
Samples dizininde, farklı çözümleme türlerini çalıştırmak için aşağıdaki betikleri bulabilirsiniz:
- çalıştırma değerlendirmesi: Airsonic'i Tomcat'te Azure Uygulaması Hizmetine geçirmek için kod değerlendirmesi ve adımları içeren bir rapor sağlar.
- run-assessment-transform-rules: Windup XML kurallarını analyzer-lsp uyumlu YAML kurallarına dönüştürür.
- run-assessment-custom-rules: Özel kurallar (XML'yi YAML'ye dönüştürme) kullanarak bir kod değerlendirme raporu sağlar.
- run-assessment-openjdk21: Kod değerlendirmesi ve Airsonic'i OpenJDK 21'e geçirme adımlarını içeren bir rapor oluşturur.
- run-assessment-package-only: Belirli paketleri değerlendirerek bir rapor oluşturur.
İşletim sisteminize bağlı olarak, aşağıdaki örnekte gösterildiği gibi uygun betiği çalıştırın:
./samples/run-assessment
Raporlar otomatik olarak oluşturulur ve başlatılır. Raporları .. /samples/report-* (Linux/macOS) veya .. \samples\report-* (Windows).
Analizin özeti
Raporun giriş sayfasında uygulamada kullanılan tüm teknolojiler listelenir. Pano, dönüştürme olaylarının sayısı, olay kategorileri veya hikaye noktaları dahil olmak üzere analizin bir özetini sağlar.
Kategoriye Göre Olaylar pasta grafiğini yakınlaştırdığınızda kategoriye göre olay sayısını görebilirsiniz: Zorunlu, İsteğe Bağlı ve Potansiyel.
Panoda ayrıca hikaye noktaları da gösterilir. Hikaye noktaları, bir özelliği veya değişikliği uygulamak için gereken çaba düzeyini tahmin etmek için Çevik yazılım geliştirmede yaygın olarak kullanılan soyut bir ölçümdür.
appcat
belirli bir uygulamayı geçirmek için gereken çaba düzeyini ifade etmek için hikaye noktalarını kullanır. Yazı noktalarının çalışma saatlerine çevrilmesi gerekmez, ancak değer görevler arasında tutarlı olmalıdır.
Değerlendirme raporu
Değerlendirme raporu, uygulamayı Azure'a geçirmek için çözülmesi gereken dönüştürme sorunlarına genel bir bakış sağlar.
Olaylar olarak da adlandırılan bu Sorunlar önem derecesine (Zorunlu, İsteğe Bağlı veya Olası), bir efor düzeyine ve hikaye noktalarını gösteren bir sayıya sahiptir. Hikaye noktaları, sorunu çözmek için gereken çabanın kaç kez olay olduğu hesaplanarak belirlenir.
Belirli bir sorun için ayrıntılı bilgi
Her olay için, yalnızca seçerek daha fazla bilgi (sorun ayrıntıları, kuralın içeriği vb.) alabilirsiniz. Bu olaydan etkilenen tüm dosyaların listesini de alırsınız.
Ardından, olaydan etkilenen her dosya veya sınıf için kaynak koda atlayarak sorunu oluşturan kod satırını vurgulayabilirsiniz.
Sürüm notları
7.6.0.1
Bu sürüm aşağıdaki düzeltmeleri ve geliştirmeleri içerir.
-
--analyze-known-libraries
bayrağı: Artık Windows üzerinde çalışıyor. - Dizin temizleme: Windows'ta analiz sırasında oluşturulan ek dizinler artık otomatik olarak temizleniyor.
-
--json-output
flag: Artık çalışır durumda. - Kural ayrıştırma hatası: Hata
unable to parse all the rules for ruleset
çözüldü. - İçgörüler sekmesi açıklamaları: Eksik kural açıklamaları eklendi.
- İnternet bağlantısı bağımlılığı: Analiz artık İnternet bağlantısı olmadan başarısız olmaz.
-
--context-lines
flag: Şimdi 0 olarak ayarlandığında beklendiği gibi davranır. - Aracı çalıştırmak için Python gereksinimi kaldırıldı.
7.6.0.0
Bu sürüm, Konveyor projesinin farklı bir bileşen kümesini temel alır.
Genel Güncelleştirmeler
- Konveyor Analyzer LSP projesine dayalı yeni altyapı, Konveyor Kantra projesine dayalı bir CLI ile.
6.3.9.0
Bu sürüm aşağıdaki düzeltmeleri içerir ve bir dizi yeni kural içerir.
Genel Güncelleştirmeler
- Windup yukarı akış deposundaki tümleşik değişiklikler (6.3.9.Final Sürümü).
- Kural açıklamalarında ve yardım metninde bozuk bağlantılar çözüldü.
Kurallar
- Azure İleti Kuyruğu: ve için
azure-message-queue-rabbitmq
azure-message-queue-amqp
güncelleştirildi ve yeni kurallar eklendi. - Azure Service Bus: Azure Service Bus için bir algılama kuralı kullanıma sunulmuştur.
- MySQL ve PostgreSQL: Geliştirilmiş bağımlılık algılama kuralları.
- Azure-AWS Kuralları: Gelişmiş ve geliştirilmiş mevcut kurallar.
- S3 Spring Starter: S3 Spring Starter için bir algılama kuralı eklendi.
- RabbitMQ Spring JMS: RabbitMQ Spring JMS için bir algılama kuralı eklendi.
- Günlük Kuralları: günlüğe kaydetmeyle ilgili güncelleştirilmiş ve geliştirilmiş kurallar.
- Yerel Depolama Kuralı: Yerel depolama kuralı güncelleştirildi ve iyileştirilir.
- Azure Dosya Sistemi Kuralı: Azure Dosya Sistemi kuralı güncelleştirildi ve iyileştirilir.
Kitaplıklar
- Güvenlik açıklarını gidermek için kitaplıklar güncelleştirildi.
6.3.0.9
Bu sürüm aşağıdaki düzeltmeleri içerir ve bir dizi yeni kural içerir.
- Kuralla
localhost-java-00001
ilgili bir sorun çözüldü. - AWS S3, AWS SQS, Alibaba Bulut İşletim Sistemi S, Alibaba Cloud SMS, Alibaba Scheduler X, Alibaba Cloud Seata ve Alibaba Rocket MQ gibi teknolojileri tanımlamak için yeni kurallar eklendi.
- şimdi
azure-file-system-02000
XML dosya uzantılarını destekleyecek şekilde güncelleştirildi. - Güvenlik açıklarını gidermek için çeşitli kitaplıklar yükseltildi.
6.3.0.8
Daha önce, bir hedef kümesi varsayılan olarak etkinleştirildiğinden, bazı müşterilerin daha az kritik sorunlarla ilgili çok fazla olay içeren büyük uygulamaları değerlendirmesini zorlaştırıyordu. Raporlarda gürültüyü azaltmak için kullanıcıların artık yürütürken appcat
parametresiyle --target
birden çok hedef belirtmesi gerekir ve bu sayede yalnızca önemli hedefleri belirleme seçeneği sunulur.
6.3.0.7
Azure Geçişi uygulama ve kod değerlendirmesinin GA (Genel Kullanıma Sunuldu) sürümü.
Bilinen Sorunlar
7.6.0.1
- Bayrağı
--overrideProviderSettings
desteklenmez. - Kural sorunları:
-
azure-system-config-01000
,http-session-01000
,java-removals-00150
kuralları tetiklenmiyor. -
FileSystem - Java IO
kuralı tetiklenmiyor.
-
- Windows'da WAR dosyalarının çözümlenmesi şu hatayı üretir:
Failed to Move Decompiled File
. Windows işletim sisteminde oluşturulan birkaç yedekli olaydan sorumlu olan Windows'ta WAR dosyaları analiz edilirken bir hata oluşur. - Windows'da İzleyici Hata kanalında hata:
Windows system assumed buffer larger than it is, events have likely been missed
. Bu hata iletisi, Windows'ta uzun süre çalışan işler sırasında komut satırında görüntülenir. - Ctrl+C devam eden çözümlemeyi durduramıyor. Geçici bir çözüm olarak, işlemi açıkça sonlandırarak işlemi el ile sonlandırın.
- İkili çözümleme raporlarında kod parçacığı başlığı yanlış veya var olmayan bir dosya yolu gösterir.
7.6.0.0
- Bayrak
--analyze-known-libraries
Windows üzerinde çalışmıyor. - Windows'da, çözümleme işlemi sırasında aşağıdaki ek klasörler oluşturulur ancak tamamlandıktan sonra otomatik olarak kaldırılmaz. Çözümleme tamamlandıktan sonra bu ek klasörleri kaldırmak isteyebilirsiniz.
- meta veri.
- org.eclipse.osgi
- org.eclipse.equinox.app
- org.eclipse.core.runtime
- org.eclipse.equinox.launcher
- Bayrağı
--overrideProviderSettings
desteklenmez. - Bayrağı
--json-output
desteklenmez. Gelecek bir sürümde output.yaml ve dependency.yaml dosyaları için JSON çıkışları oluşturur. - Kural sorunları:
-
azure-system-config-01000
,http-session-01000
,java-removals-00150
kuralları tetiklenmiyor. -
FileSystem - Java IO
kuralı tetiklenmiyor. - Analiz çalıştırılırken hata
unable to parse all the rules for ruleset
oluştu. Bu hata, araç kural kümesindeki tüm kuralları ayrıştırmada başarısız olduğunda analiz sırasında oluşur.
-
- Windows'da WAR dosyalarının çözümlenmesi şu hatayı üretir:
Failed to Move Decompiled File
. Windows işletim sisteminde oluşturulan birkaç yedekli olaydan sorumlu olan Windows'ta WAR dosyaları analiz edilirken bir hata oluşur. - İçgörüler sekmesinde bazı kuralların açıklamaları eksik. Bazı etiket kurallarında açıklama bulunmaması, raporun İçgörüler sekmesinde boş başlıkların görünmesine neden olur.
- Windows'da İzleyici Hata kanalında hata :
Windows system assumed buffer larger than it is, events have likely been missed
. Bu hata iletisi, Windows'ta uzun süre çalışan işler sırasında komut satırında görüntülenir. - Bu sürüm, bağımlılık analizi için etkin bir İnternet bağlantısı gerektirir.
- Ctrl+C devam eden çözümlemeyi durduramıyor. Geçici bir çözüm olarak, işlemi açıkça sonlandırarak işlemi el ile sonlandırın.
- Bayrak
--context-lines
0 sayısı olarak ayarlandığında beklendiği gibi çalışmaz. Bu bayrak, kullanıcının raporda kaynak kodun ne kadarının görüneceğini sınırlamasına olanak tanır. 0 değerine ayar yapmak beklendiği gibi çalışmayabilir.
Lisans
Java için Azure Geçişi uygulaması ve kod değerlendirmesi ücretsiz, açık kaynak tabanlı bir araçtır.