AWS Türkçe Blog

Amazon Q Code Transformation ile Java uygulamalarınızı güncelleyin (ön izleme)

Orijinal Makale: Link (Danilo Poccia)

Uygulamalarımız yaşını ilerlettikçe, onları güvenli ve sorunsuz çalışır halde tutmak giderek daha fazla çaba gerektiriyor. Güncellemeleri yöneten geliştiriciler, başkalarının geçmiş güncellemelerde zaten keşfetmiş olduğu kırılgan değişikliklerin ve performans optimizasyonlarının inceliklerini ve nüanslarını yeniden öğrenmek için zaman harcamalıdır. Sonuç olarak, yeni özellikler ile temel bakım çalışmaları arasında denge kurmak zorlaşıyor.

Bugün, önizleme aşamasında Amazon Q Code Transformation‘ı tanıtıyoruz. Bu yeni özellik, üretken yapay zeka (AI) tarafından desteklenen yeni bir asistan türü olan Amazon Q‘yu kullanarak mevcut uygulama kodunu güncellemeyi ve modernleştirmeyi basitleştiriyor. Amazon Q özellikle iş için tasarlanmış olup şirketinize göre uyarlanabilir.

Amazon Q Code Transformation şu anda 8 ve 11 sürümlerinden Java Long-Term Support (LTS) sürümü olan 17 sürümüne kadar Java uygulama güncellemeleri gerçekleştirebiliyor ve yakında Windows tabanlı .NET Framework uygulamalarını platformlar arası .NET’e dönüştürebilecek.

Önceden, geliştiriciler her bir uygulamayı güncellemek için iki ila üç gün harcayabiliyordu. Dahili testlerimiz, dönüştürme özelliğinin, manuel yükseltmeler için tipik olarak gereken günler veya haftalara kıyasla bir uygulamayı dakikalar içinde yükseltebileceğini ve yeni iş gereksinimlerine odaklanmak için zaman kazandırdığını gösteriyor. Örneğin, beş kişiden oluşan dahili bir Amazon ekibi, bin adet canlı ortam uygulamasını Java 8’den 17’ye 2 günde başarıyla yükseltti. Uygulamaları güncellemek ortalama 10 dakika sürdü ve en uzunu bir saatten az sürdü.

Amazon Q Code Transformation mevcut kodu otomatik olarak analiz eder, bir dönüşüm planı oluşturur ve planın önerdiği dönüşüm görevlerini tamamlar. Bunu yaparken, paket bağımlılıklarını tanımlar ve günceller, kullanımdan kaldırılmış ve verimsiz kod bileşenlerini yeniden düzenler, yeni dil altyapılarına geçer ve en iyi güvenlik pratiklerini dahil eder. Tamamlandığında, değişiklikleri kabul etmeden önce dönüştürülmüş derlenmiş kodları ve test sonuçlarıyla birlikte inceleyebilirsiniz.

Bu şekilde, uygulamaları yalnızca birkaç adımda güncel tutabilir ve desteğini sürdürebilir, performans avantajları elde edebilir ve desteklenmeyen sürümlerin kullanımından kaynaklanan güvenlik açıklarını ortadan kaldırarak yeni iş gereksinimlerine odaklanmak için zaman kazanabilirsiniz. Bunun pratikte nasıl çalıştığını görelim.

Bir Java uygulamasını sürüm 8’den 17’ye güncelleme

Bu kılavuzda IntelliJ IDEA kullanıyorum (aynısı Visual Studio Code için de mevcuttur). IDE ortamımda Amazon Q Code Transformation’a erişmek için IntelliJ IDEA için AWS Toolkit‘in en son sürümünü yüklüyorum ve kuruluşum tarafından sağlanan AWS IAM Identity Center kimlik bilgilerini kullanarak oturum açıyorum. Amazon Q Code Transformation’a erişmek için CodeWhisperer yöneticisinin kuruluş tarafından kullanılan profilde Amazon Q özelliklerine açıkça erişim izni vermesi gerektiğini unutmayın.

Java’nın daha yeni bir sürümüne güncellemek için daha önce hiç zaman bulamadığım eski bir projeyi açıyorum. Proje, derlemeyi yönetmek için Apache Maven kullanıyor. Projenin XML temsili olan proje nesne modeli (POM) dosyası (pom.xml) kök dizinde bulunuyor.

İlk olarak, proje ayarlarında projenin doğru SDK sürümünü (bu durumda 1.8) kullanacak şekilde yapılandırıldığını kontrol ediyorum. Sol bölmede AWS Toolkit’i ve ardından Amazon Q + CodeWhisperer sekmesini seçiyorum. Amazon Q (Önizleme) bölümünde Transform‘u seçiyorum.

IDE screenshot.

Bu, dönüştürmeye devam etmeden önce güncelleme için doğru Maven modülünün seçilip seçilmediğini kontrol ettiğim bir iletişim kutusu açar.

IDE screenshot.

İlerlemeyi Transformation Hub penceresinden takip ediyorum. Güncelleme benim küçük çaplı uygulamam için birkaç dakika içinde tamamlanırken, daha büyük çaplı uygulamaların tamamlanması bir saatten fazla sürebiliyor.

Uçtan uca uygulama güncellemesi üç adımdan oluşuyor:

  1. Uygulamanın tanımlanması ve analiz edilmesi – Kod, bulutta yönetilen bir ortama kopyalanır ve burada depodaki talimatlara göre derleme işlemi ayarlanır. Bu aşamada, yükseltilecek bileşenler belirlenir.
  2. Bir dönüştürme planı oluşturma – Kod, Amazon Q Code Transformation’ın kodu güncellemek için atacağı adımları listeleyen bir dönüştürme planı oluşturmak için analiz edilir; buna bağımlılıkların güncellenmesi, güncellenen kodun derlenmesi ve ardından yükseltme sırasında karşılaşılan derleme hatalarının yinelemeli olarak düzeltilmesi dahildir.
  3. Kod oluşturma, derleme testi ve sonlandırma – Mevcut kodu ve yapılandırma dosyalarını güncellemek, gerektiğinde yeni dosyalar oluşturmak, kodla birlikte sağlanan testleri kullanarak derleme doğrulaması yapmak ve başarısız derlemelerde tespit edilen sorunları düzeltmek için dönüşüm planı yinelemeli olarak takip edilir.

IDE screenshot.

Birkaç dakika sonra dönüşüm başarıyla sonlandırılıyor. Buradan planı ve dönüşümün bir özetini açabiliyorum. Önerilen değişiklikleri görmek için View diff’i seçiyorum. Apply Patch iletişim kutusunda, eklenen, değiştirilen veya silinen dosyaların bir özetini görüyorum.

IDE screenshot.

İlk olarak, pom.xml dosyasını seçiyorum ve ardından projedeki mevcut kodu ve önerilen değişiklikleri yan yana görmek için Show Difference‘ı (sol/sağ okları olan simge) seçiyorum. Örneğin, bağımlılıklardan birinin (Project Lombok) sürümünün hedef Java sürümüyle uyumluluk için yükseltildiğini görüyorum.

IDE screenshot.

Java dosyasında, güncellenen bağımlılık tarafından kullanılan ek açıklamalar güncellenmiş. Yeni sürümle birlikte @With ifadesi kullanılmış ve @Wither (deneysel olan) kullanımdan kaldırılmış. Bu değişiklikler import bildirimlerine de yansıyor.

IDE screenshot.

Güncellemeyi tamamlamak için yapılan değişikliklere hızlıca bakmak için kod deposunda tuttuğum bir özet dosyası da var.

Dosyaları gözden geçirmek için biraz zaman harcıyorum. Ardından, tüm değişiklikleri kabul etmek için OK‘i seçiyorum.

Artık yama başarıyla uygulanmış ve önerilen değişiklikler kodla birleştirilmiştir. Değişiklikleri depoma işliyorum ve geçişin tamamlanmasını bekleyen iş açısından kritik değişikliklere odaklanmaya devam ediyorum.

Bilinmesi gerekenler

Amazon Q Code Transformation‘ın ön izlemesi, IntelliJ IDEA için AWS Toolkit ve Visual Studio Code için AWS Toolkit‘te Amazon CodeWhisperer Professional Tier’daki müşteriler için kullanıma sunuldu. Amazon Q Code Transformation’ı kullanmak için CodeWhisperer yöneticisinin kuruluş tarafından kullanılan profile erişim izni vermesi gerekiyor.

Önizleme sırasında Amazon Q Code Transformation’ı kullanmak için ek bir maliyet bulunmamaktadır. Apache Maven kullanılarak oluşturulmuş Java 8 ve 11 uygulamalarını Java sürüm 17’ye yükseltebilirsiniz. Projenin kök dizininde POM dosyası (pom.xml) bulunmalıdır. Yakında Windows tabanlı .NET Framework uygulamalarını platformlar arası .NET’e dönüştürme ve Linux’a geçişleri hızlandırmaya yardımcı olma seçeneği ekleyeceğiz.

Bir dönüştürme işi tamamlandığında, önerilen değişiklikleri doğrulamak ve kabul etmek için bir diff view kullanabilirsiniz. Son dönüşüm özeti, Amazon Q Code Transformation tarafından güncellenen bağımlılıkların ve değiştirilen kod dosyalarının ayrıntılarını sağlar. Ayrıca, yükseltilen kodun son derlemesinde karşılaşılan ve sorunları düzeltmek ve yükseltmeyi tamamlamak için kullanabileceğiniz derleme hatalarının ayrıntılarını da sağlar.

Amazon’un otomatize muhakeme ve statik kod analizindeki uzun vadeli yatırımlarını üretken yapay zekanın gücüyle birleştiren Amazon Q Code Transformation, genellikle geriye dönük uyumsuz değişikliklerle uzun bir Java kütüphanesi zincirinin güncellenmesini gerektiren bağlama özgü kod dönüşümleri için gerekli olduğunu tespit ettiğimiz temel modelleri içeriyor.

AWS tarafından oluşturulan yapay zeka destekli kod dönüşümlerine ek olarak Amazon Q Code Transformation, müşterilerin Java yükseltmelerini daha da hızlandırmak için OpenRewrite‘ın bazı bölümlerini kullanıyor. AWS’de hizmetlerimizin çoğu açık kaynaklı bileşenlerle oluşturuluyor ve bu toplulukların uzun vadeli sürdürülebilirliğini desteklemek bizim ve müşterilerimiz için kritik önem taşıyor. Bu nedenle OpenRewrite gibi topluluklara katkıda bulunarak tüm sektörün onların yeniliklerinden faydalanmaya devam etmesini sağlamak bizim için önemli. AWS, Amazon Q Code Transformation kapsamında geliştirilen OpenRewrite tariflerine ve iyileştirmelerine açık kaynak olarak katkıda bulunmayı planlıyor.

“Yazılımın çok daha hızlı bir şekilde adapte olabilmesi, herhangi bir işletmenin sahip olabileceği en temel avantajlardan biridir. Bu nedenle AWS’nin açık kaynaklı otomatik kod yeniden düzenleme teknolojisi OpenRewrite’ı hizmetlerinin bir bileşeni olarak kullandığını görmekten heyecan duyuyoruz,” şeklinde ifade eden Moderne CEO’su ve Kurucu Ortağı Jonathan Schneider (OpenRewrite’ın sponsoru) şunları ekledi “AWS’nin OpenRewrite topluluğuna katılmasından mutluluk duyuyoruz ve altyapıların taşınmasını, güvenlik açıklarının giderilmesini ve API’lerin güncellenmesini daha da kolaylaştıracak katkılarını dört gözle bekliyoruz.”

Java uygulamalarınızı şimdi güncelleyin

Amazon Q Code Transformation ürün sayfası