Java için Azure Geçişi uygulama ve kod değerlendirmesi
Not
Yeni bir çözümleyici altyapısını temel alarak Java için Azure Geçişi uygulamasının ve kod değerlendirmesinin yeni bir sürümünü, önizleme aşamasındaki 7.x sürümünü yayımladık. Windows, Linux ve macOS için kullanılabilen yeni altyapıyı indirmek ve denemek için bkz . Java sürüm 7 için Azure Geçişi uygulaması ve kod değerlendirmesi
Bu kılavuzda, her tür Java uygulamasını değerlendirmek ve yeniden düzenlemek için Java için Azure Geçişi uygulamasının ve kod değerlendirme aracının nasıl kullanılacağı açıklanmaktadır. Araç, yeniden platform oluşturma ve Azure'a geçiş için uygulama hazırlığını değerlendirmenizi sağlar. Bu araç BIR CLI (komut satırı arabirimi) 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ırarak Java uygulamalarını önceliklendirmenize ve Azure'a taşımanıza yardımcı olur. Bir dizi altyapı ve kuralla Java 11, Java 17, Jakarta EE, Spring, Hibernate, Java Message Service (JMS) gibi farklı teknolojileri bulabilir ve değerlendirebilir. Daha sonra Java uygulamasını belirli Azure yeniden platform kurallarıyla farklı Azure hedeflerine (Azure Uygulaması Hizmeti, Azure Kubernetes Service ve Azure Container Apps) yeniden yönlendirmenize yardımcı olur.
Bu araç açık kaynak ve Red Hat tarafından oluşturulan ve Eclipse Kamu Lisansı altında yayımlanan bir proje olan WindUp'ı 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 | Açıklama | Kimlik |
---|---|---|
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 |
Bulma | Kitaplıklar ve çerçeveler gibi teknoloji kullanımını tanımlar. | discovery |
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
İndir
CLI'yı appcat
kullanmak için, sonraki bölümde açıklanan ZIP dosyasını indirmeniz ve bilgisayarınızda uyumlu bir JDK 11 veya JDK 17 yüklemeniz gerekir.
appcat
CLI, Hem Intel, Arm hem de Apple Silicon donanımları için Windows, Linux veya Mac gibi Java uyumlu herhangi bir ortamda çalışır. OpenJDK'nin Microsoft Derlemesini kullanmanızı öneririz.
Java 6.3.9.0 için Azure Geçişi uygulama ve kod değerlendirmesini indirin. 2024-12-09 tarihinde güncelleştirildi.
Daha fazla bilgi için Sürüm notları bölümüne bakın.
Bilinen sorunlar
Belirli Lambda ifadeleri ayrıştırıldığında belirli kurallar tetiklenmeyebilir. Daha fazla bilgi için GitHub sorununa bakın.
Karmaşık çift baytlı karakterlerle unicode olmayan bir ortamda çalıştırmak appcat
bozulmaya neden olur. Geçici çözümler için GitHub sorununa bakın.
Önceki sürümler
Aşağıdaki önceki sürümler de indirilebilir:
- Java 6.3.0.9 için Azure Geçişi uygulama ve kod değerlendirmesi. Ağustos 2024'te yayınlandı.
- Java 6.3.0.8 için Azure Geçişi uygulama ve kod değerlendirmesi. Mart 2024'te yayınlandı.
- Java 6.3.0.7 için Azure Geçişi uygulama ve kod değerlendirmesi. Kasım 2023'te yayımlandı.
Kullanmaya başlayın
komutunu çalıştırmak appcat
için desteklenen bir JDK'nin yüklü olduğundan emin olun. Araç aşağıdaki JDK'leri destekler:
- OpenJDK 11'in Microsoft Derlemesi
- OpenJDK 17'nin Microsoft Derlemesi
- Eclipse Temurin™ JDK 11
- Eclipse Temurin™ JDK 17
Geçerli bir JDK yükledikten sonra, yükleme dizininin ortam değişkeninde düzgün yapılandırıldığından JAVA_HOME
emin olun.
Devam etmek için paketi indirip istediğiniz bir klasöre açın. Ardından aşağıdaki dizin yapısını alırsınız:
appcat-cli-<version> # APPCAT_HOME
├── README.md
├── bin
│ ├── appcat
│ └── appcat.bat
├── docs
│ └── appcat-guide.html
└── samples
├── airsonic.war
├── run-assessment
├── run-assessment-custom-rules
├── run-assessment-exclude-packages
├── run-assessment-no-code-report
├── run-assessment-openjdk21
├── run-assessment-zip-report
└── run-discovery
-
docs: Bu dizin,
appcat
belgelerini içerir. -
bin: Bu dizin CLI yürütülebilir dosyaları içerir
appcat
(Windows/Linux/Mac için). -
örnekler: Bu dizin, örnek bir uygulama ve örnek uygulamada çalıştırılacak
appcat
çeşitli betikler içerir.
Aracı çalıştırmak için bir terminal oturumu açın ve $APPCAT_HOME/bin dizininden aşağıdaki komutu yazın:
./appcat --help
Aracı bilgisayarınızda herhangi bir yerden çalıştırmak için $APPCAT_HOME/bin dizinini ortam değişkeninizde PATH
yapılandırın ve terminal oturumunuzu yeniden başlatın.
Belgeler
Aşağıdaki kılavuzlar Java için appcat
ana belgeleri sağlar:
Azure hizmetini göz önünde bulundurmadan teknoloji kullanımını ve Bulut hazırlığını keşfedin
Teknolojilerin ve Buluta hazır olma hedeflerinin bulunması, buluta yönelik uygulama yeniden platformu ve modernleştirme hakkında harika içgörüler sağlar. Araç, yapısını, mimarisini ve bağımlılıklarını kapsamlı bir şekilde anlamak için uygulamayı ve bileşenlerini tarar. Ayrıca Bulut ortamında zor olabilecek olası sorunları da bulur. Özellikle discovery
hedef, uygulamanın ve bileşenlerinin ayrıntılı bir envanterini oluşturmak için kullanılır. Bu envanter, daha fazla analiz ve planlama için temel görevi görür. Daha fazla bilgi için Bulma raporu bölümüne bakın.
Bulma ve bulut hazırlığını başlatmak için aşağıdaki komutu kullanın:
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target discovery cloud-readiness
Bu tür bir rapor, uygulamanızın dağıtılacağı belirli bir Azure hizmetine sahip olmadığınız durumlarda kullanışlıdır.
Araç her zaman parametreye discovery
bu değeri --target
dahil edip etmediğinizi gerçekleştirir.
Java uygulamasını değerlendirme
Değerlendirme aşaması, CLI'nın appcat
uygulamayı ve bileşenlerini analiz ederek yeniden platforma uygunluğunun belirlenmesi ve olası zorlukların veya sınırlamaların belirlenmesidir. Bu aşama, uygulama kodunu analiz etmeyi ve seçilen hedeflerle uyumluluğunu denetlemeyi içerir.
Bağımsız değişkeniyle --target
boşlukla ayrılmış bir değer listesi kullanarak birden çok hedef seçebilirsiniz.
Kullanılabilir hedefleri denetlemek için aşağıdaki komutu çalıştırın:
./appcat --listTargetTechnologies
Bu komut aşağıdaki örneğe benzer bir çıktı oluşturur:
Available target technologies:
azure-aks
azure-appservice
azure-container-apps
cloud-readiness
discovery
linux
openjdk11
openjdk17
openjdk21
Ardından, aşağıdaki örnekte gösterildiği gibi kullanılabilir hedeflerin birini veya bir bileşimini kullanarak çalıştırabilirsiniz appcat
:
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target cloud-readiness linux azure-appservice
Aşağıdaki örnekte gösterildiği gibi kullanılabilir OpenJDK hedeflerinden biriyle de çalıştırabilirsiniz appcat
:
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target openjdk11
OpenJDK (Java) hedefleri için tek seferde yalnızca bir tane seçmenizi öneririz.
Azure değerlendirmesi için hedefler önerisi
Bir uygulamayı Azure dağıtımı için değerlendirdiğinizde aşağıdaki hedeflerle başlamanızı öneririz:
discovery
cloud-readiness
Ayrıca, veya azure-container-apps
gibi azure-appservice
dağıtım için bir Azure hizmeti belirtin.
Bir uygulamayı Windows ortamından Linux VM'sine veya kapsayıcısına taşımak istiyorsanız, hedefi de eklemenizi linux
öneririz.
Bir uygulamayı JDK'nin eski bir sürümünden daha yeni bir sürüme taşımak istiyorsanız, uygulama tarafından kullanılan önceki sürümle karşılaştırıldığında sonraki ana sürümü seçmenizi öneririz. Örneğin, uygulamanız şu anda Java 8 ile dağıtıldığında kullanın openjdk11
.
Uygulamadan sonuç alma
Bulma ve değerlendirme aşamalarının sonucu, Azure hizmeti ve yeniden platform yaklaşımına yönelik öneriler de dahil olmak üzere Java uygulamasının yeniden formlanması ve modernleştirilmesi için bir yol haritası sağlayan ayrıntılı bir rapordur. Rapor, yeniden platform oluşturma işleminin sonraki aşamaları için temel görevi görür. Kuruluşların bu tür bir dönüşüm için gereken çabayı öğrenmelerine ve uygulamalarını en yüksek avantajlar için nasıl modernleştireceklerine ilişkin kararlar almalarına yardımcı olur.
tarafından appcat
oluşturulan rapor, uygulamaya ve bileşenlerine kapsamlı bir genel bakış sağlar. Uygulamanın yapısı ve bağımlılıkları hakkında içgörüler elde etmek ve yeniden platform ve modernleştirmeye uygunluğunu belirlemek için bu raporu kullanabilirsiniz.
Aşağıdaki bölümlerde rapor hakkında daha fazla bilgi sağlanır.
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ı, Potansiyel ve Bilgi.
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.
Bulma raporu
Bulma raporu, Bulma Aşaması sırasında oluşturulan bir rapordur. Uygulama tarafından kullanılan teknolojilerin listesini Bilgi kategorisinde gösterir. Bu rapor yalnızca bulunan teknoloji kullanımı appcat
hakkında sizi bilgilendiriyor.
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ı, Olası veya Bilgi), 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.
Özel kurallar
Kural altyapısı olarak düşünebilirsiniz appcat
. Java arşivlerinden dosya ayıklamak, Java sınıflarını derlemek, dosya türlerini tarar ve sınıflandırır, bu dosyaları analiz etmek ve raporları derlemek için kuralları kullanır. içinde appcat
, kurallar kural kümesi biçiminde tanımlanır. Kural kümesi, analiz sırasında algılayabileceğiniz belirli sorunları veya desenleri appcat
tanımlayan tek tek kurallar koleksiyonudur.
Bu kurallar XML'de tanımlanır ve aşağıdaki kural desenini kullanır:
when (condition)
perform (action)
otherwise (action)
appcat
kapsamlı bir standart geçiş kuralları kümesi sağlar. Uygulamalar özel kitaplıklar veya bileşenler içerebileceğinden, appcat
mevcut kural kümesinin kapsayabileceği bileşenlerin veya yazılımların kullanımını belirlemek için kendi kurallarınızı yazmanızı sağlar.
Özel kural yazmak için, XML ile ifade edilen zengin etki alanına özgü bir dil (DLS) kullanırsınız. Örneğin, Bir Java uygulamasında PostgreSQL JDBC sürücüsünün kullanımını tanımlayan ve bunun yerine Azure PostgreSQL Esnek Sunucusu kullanımını öneren bir kural istediğinizi varsayalım. Maven pom.xml dosyasında tanımlanan PostgreSQL JDBC sürücüsünü veya aşağıdaki örnekte gösterilen bağımlılık gibi bir Gradle dosyasını bulmak için bir kurala ihtiyacınız vardır:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
Bu bağımlılığın kullanımını algılamak için kural aşağıdaki XML etiketlerini kullanır:
-
ruleset
: Kural kümesinin benzersiz tanımlayıcısı. Kural kümesi, belirli bir teknolojiyle ilgili kurallar koleksiyonudur. -
targetTechnology
: Kuralın hedeflediğini teknoloji. Bu durumda kural Azure Uygulaması Hizmetleri, Azure Kubernetes Service (AKS) ve Azure Container Apps'i hedefler. -
rule
: Tek bir kuralın kök öğesi. -
when
: Kuralın tetiklenebilmesi için karşılanması gereken koşul. -
perform
: Kural tetiklendiğinde gerçekleştirilecek eylem. -
hint
: Raporda görüntülenecek ileti, kategori (Bilgi, İsteğe Bağlı veya Zorunlu) ve sorunu çözmek için gereken çaba 1 (kolay) ile 13 arasında (zor).
Aşağıdaki XML özel kural tanımını gösterir:
<ruleset id="azure-postgre-flexible-server"
xmlns="http://windup.jboss.org/schema/jboss-ruleset"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://windup.jboss.org/schema/jboss-ruleset http://windup.jboss.org/schema/jboss-ruleset/windup-jboss-ruleset.xsd">
<metadata>
<description>Recommend Azure PostgreSQL Flexible Server.</description>
<dependencies>
<addon id="org.jboss.windup.rules,windup-rules-xml,3.0.0.Final"/>
</dependencies>
<targetTechnology id="azure-appservice"/>
<targetTechnology id="azure-aks"/>
<targetTechnology id="azure-container-apps"/>
</metadata>
<rules>
<rule id="azure-postgre-flexible-server">
<when>
<project>
<artifact groupId="org.postgresql" artifactId="postgresql"/>
</project>
</when>
<perform>
<hint title="Azure PostgreSQL Flexible Server" category-id="mandatory" effort="7">
<message>The application uses PostgreSQL. It is recommended to use Azure PostgreSQL Flexible Server instead.</message>
<link title="Azure PostgreSQL Flexible Server documentation" href="https://learn.microsoft.com/azure/postgresql/flexible-server/overview"/>
</hint>
</perform>
</rule>
</rules>
</ruleset>
Bu kuralı aracılığıyla appcat
yürüttkten sonra, oluşturulan raporu gözden geçirmek için analizi yeniden çalıştırın. Diğer olaylarda olduğu gibi değerlendirme raporu da bu kuralla ilgili olarak tanımlanan sorunları ve etkilenen dosyaları listeler.
Kural Geliştirme kılavuzunun tamamına azure.github.io/appcat-docs/rules-development-guide adresinden ulaşabilirsiniz.
Sürüm notları
6.3.9.0
Bu sürüm aşağıdaki düzeltmeleri içerir ve bir dizi yeni kural içerir. Daha fazla bilgi için aşağıya bakın.
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: azure-message-queue-rabbitmq ve azure-message-queue-amqp için 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. Daha fazla bilgi için aşağıya bakın.
- 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ü.
Lisans
Java için Azure Geçişi uygulaması ve kod değerlendirmesi ücretsiz bir açık kaynak aracıdır ve yukarı akış WindUp projesiyle aynı lisans kapsamında lisanslanır.
Sık sorulan sorular
S: Java için Azure Geçişi uygulamasının ve kod değerlendirmesinin en son sürümünü nereden indirebilirim?
aka.ms/appcat/azure-appcat-cli-latest.zip'dan indirebilirsinizappcat
.
S: Java için Azure Geçişi uygulaması ve kod değerlendirmesi hakkında daha fazla bilgiyi nereden bulabilirim?
uygulamasını indirdiğinizde appcat
, kullanmaya başlamak için ihtiyacınız olan tüm bilgileri içeren bir docs dizini alırsınız.
S: Belirli Azure kurallarını nerede bulabilirim?
Tüm Azure kuralları appcat Rulesets GitHub deposunda kullanılabilir.
S: Özel kurallar oluşturma hakkında daha fazla bilgiyi nereden bulabilirim?
Bkz. Java için Azure Geçişi uygulama ve kod değerlendirmesi için Kural Geliştirme Kılavuzu.
S: Özel kurallar oluştururken nereden yardım alabilirim?
Yardım almanın en iyi yolu, appcat-rulesets GitHub deposunda bir sorun oluşturmaktır.