Aracılığıyla paylaş


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

Yükleme

yüklemek appcatiç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.

Uygulama özeti raporunun ekran görüntüsü.

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.

AppCAT özet olay raporunun ekran görüntüsü.

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.

AppCAT değerlendirme raporunun ekran görüntüsü.

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.

AppCAT sorun ayrıntı raporunun ekran görüntüsü.

Ardından, olaydan etkilenen her dosya veya sınıf için kaynak koda atlayarak sorunu oluşturan kod satırını vurgulayabilirsiniz.

AppCAT sorun kodu raporunun ekran görüntüsü.

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

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-rabbitmqazure-message-queue-amqpgü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 appcatparametresiyle --targetbirden ç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.