IBM watsonx Code Assistant — Adım Adım Rehber.
IBM Watsonx Code Assistant (WCA), yazılım geliştirme ve uygulama modernizasyonunu hızlandırmak için, kurumsal müşteriler göre hazırlanmış bir yapay zeka asistanıdır. Python, Java, C, C++, Go, JavaScript, TypeScript ve 100'den fazla proglama dilinde üretken yapay zeka ve otomasyon yetenekleri sunarak kodlama iş akışlarını basitleştirmeye ve optimize etmeye yardımcı olmaktadır. WCA, üretkenliği artırmayı ve teknik bilgiye dayalı olan bağımlılığı azaltmayı amaçlayarak geliştirme ekiplerinin daha fazla inovasyona odaklanmasını sağlar.
WCA, üretken yapay zeka destekli watsonx Code Assistant ürünlerinden oluşan portföyün amiral gemisi konumundadır. Güvenlik, uyumluluk ve güvenilirlik ilkeleri doğrultusunda geliştirilen bu portföy, kod ve içerik üretimini hızlandırarak geliştirici verimliliğini arttırmayı hedefler. Portföyde ayrıca, watsonx Code Assistant for Ansible ve watsonx Code Assistant for Z gibi çözümler de yer almaktadır.
Daha önce bu konu ile ilgili yazılara en alt kısımdaki referanslar kısmından ulaşabilirsiniz.
Bu Lab’ın temel amacı, geliştiricilere IBM watsonx Code Assistant (WCA) ile sunulan temel özellikler ve yetenekler konusunda uygulama bir şekilde göstermektedir.
WCA’nın iki farklı planına/sürümüne uygun olacak şekilde düzenlenmiştir.
Essentials Plan : Bu versiyon, yazılım geliştirme süreçlerini hızlandırır ve geliştiricilerin üretken yapay zeka destekli kodlama görevlerini gerçekleştirmesine olanak tanır.
Özellikleri,
- Code Generation — Kod Üretim.
- Code Explanation — Kod Açıklama
- Unit Testing — Unit Test Oluşturma
- Code Documentation — Kod Dokümantasyonu
Standard Plan: Standard versiyon, Essentials versiyondaki tüm yeteneklere ek olarak Enterprise Java Modernizasyonuna yönelik özellikler sunar.
- Runtime fark etmeksizin, Java Upgrade
- Websphere’den Liberty’ye dönüşüm.
- Gelişmiş Test Oluşturma ve Kod Açıklama Yetenekleri
WCA, iki temel mimari bileşenden oluşur,
1- Geliştiricilerin WCA ile etkileşime girdiği arayüz, entegre geliştirme ortamı (IDE) için çalışan bir eklenti olarak sunulmaktadır. Şu anda Visual Studio Code ve Eclipse farklı IDE’leri desteklemektedir.
2-WCA Backend servisi, IDE üzerinden yapılan istekleri işleyerek yanıtları geliştiriciye iletir.
Bu lab, Red Hat Enterprise Linux 9 (RHEL) üzerinde çalışan Visual Studio Code kullanılarak hazırlanmıştır.
1- WCA Chat Interface
WCA chat arayüzü, geliştiricilerin Natural Language komutlarıyla yazılım geliştirme görevlerini gerçekleştirmesine olanak tanır. Örneğin;
- Belirli bir progralama dilinde belirli bir işlemi gerçekleştiren fonksiyon oluşturmasını isteyebilirsiniz.
- Belirli bir API’yi nasıl çağıracağınıza dair bir örnek kod talep edebilirsiniz.
Kullanım senaryolarını çoklayabilirsiniz.
Ancak WCA, yanlızca girilan promptu, foundation model’e iletip doğrudan bir yanıt döndürmez. Bunun yerine, daha iyi ve faydalı sonuçlar sağlamak için custom pre-processing and post- processing adımlarını gerçekleştirir.
Örneğin;
- Kod benzerliği kontrolleri yaparak üretilen kodun, IBM Granite modelinin eğitiminde kullanılan kodlara ne kadar benzediğini analiz edebilir.
- Eğer oluşturulan kod bir eğitim verisine benziyorsa, Öneri engellenebilir, Uyarı ile gösterebilir veya olduğu gibi gösterebilir.
VSCode üzerine watsonx Code Assistant eklentisini yükleyip, gerekli olan WCA API Key’i ekleyerek servisi kullanmaya başlayabilirsiniz. VSCode eklentisinin yüklenmesini ve konfigürasyonlarını referanslar kısmındaki yazıdan bulabilirsiniz.
WCA Chat Arayüzü Bileşenleri
- Start New Chat Session: Mevcut sohbet kanallarından bağımsız olarak yeni bir sohbet kanalı başlatır.
- Prompt Area (Enter/for commands): Kullanıcıların promptları girdiği alan.
- Submit: Girilen promptları WCA’ a iletir.
- Open Menu: Prompt library ve sohbet kanallarının yönetimlerini içerir.
- Chat Session Identifier: Geçerli sohbet oturumunun adını gösterir.
Örnek 1: Java ile String Karşılaştırması
Senaryo: Java geliştiricisiniz ve equalsIgnoreCase() metodunu kullanarak iki string arasında eşitlik kontrolü yapacak bir kod yazmanız gerekiyor. Ancak okuduğunuz dökümantasyon tam olarak net değil ve bu metodu nasıl kullanacağınızdan emin değilsiniz.
Bunun için aşağıdaki komutu kullanabilirsiniz.
Show me an example of how to call the equalsIgnoreCase method in java.
Eğer zaten kullanılacak fonksiyonu bilmiyorsanız, WCA’ ye aşağıdaki prompt’u verebilirsiniz.
What function can I call in Java to do a case insensitive equality check of two strings? Show me an example of how to call it.
Örnek 2: Üniversite Öğrencisi Veritabanı
Senaryo: Bir geliştirici olarak, bir üniversite kabul ofisi için öğrenci bilgilerini ve ders kayıtlarını yöneten bir C++ uygulamalası geliştiriyorsunuz. Başlangıç olarak öğrenci veri modeline odaklanmak istiyorsunuz.
Yeni bir Chat session oturumu başlatarak devam edeceğiz. Neden yeni bir chat oturumu başlatmamız gerektiğini sorabilirsiniz. WCA Chat, önceki chat bilgilerinde yapılan çalışmalara dayalı olarak iteratif “back and forth” yaklaşıma dayanır. Başka bir deyişle, yeni bir prompt girildiğinde, chat geçmişi otomatik bağlam olarak eklenir. Bu durumda, doğru ve faydalı cevabı veremeyebilir.
Senaryo için aşağıdaki promptu kullanabilirsiniz.
Create a C++ class that stores information about university students.
Include set and get methods.
Gelişmiş Örnek: Dinamik Array Allocating ve Deallocating C Functions
Yine önceki kod çalışmalarımızdan bağımsız bir chat oturumu açıyoruz.
ilk olarak, sadece array allocating için bir fonksiyon yazmaya karar veriyorsunuz. Array’in tam sayılar (int) tipinde olacağını varsayarak, ilk prompt’ta bunu belirtiyoruz.
Write a simple C function that just allocates an array of integers of a given size and returns a pointer to it
Verilen şartları daha dikkatlice incelediğinizde, sayısal değerlerin aslında float veri tipini kullandığını fark ediyorsunuz. Bunun için aşağıdaki promptu verebilirsiniz.
Instead of an int array, use a float array
Fonksiyon, bir float array value şekilde değiştirilip bir float pointer döndürmüştür. Burada, önceki kodu baştan yazmanı gerekmeden WCA’nın context özelliği ile önceki prompt ile ilişkilendirerek yeni talebinizi buna göre uyarladığına dikkat edebilirsiniz.
Kod’un invalid inputlara karçı koruma sağlaması için aşağıdaki promptu girebilirsiniz.
Add a check for a valid array size greater than 0. Also, define a constant called MAX_ARRAY_SIZE of 1000 and add an error check for size greater than it
yine WCA önceki kod ile ilişkilendirerek değişiklikleri uygulamıştır.
Error handling hakkında daha fazla düşündüğünüzde, memory allocation’ın her zaman başarılı olacağını varsaymamanız gerektiğini fark edebilirsiniz.
Validate that the memory could be allocated successfully and return a null pointer for any type of error. Also, after allocating the array memory, clear it.
İstenilen değişikliler yeni kod’a eklenmiştir. Bu örnekle birlikte, WCA’nın nasıl daha karmaşık görevlerde geliştiricilere yardımcı olabileceğini ve önceki kod ile bağlam kurarak yeni kod önerilerini yapabileceğini görmüş olduk.
Prompt Library’den kullanabileceğiniz örnek prompt’lar ile denemelere devam edelim. Unutmayın, birbirinden farklı prompt’lar olduğu için yeni chat oturumları açmanız gerekmektedir.
Örnek 1:
Write a java function that combines three input lists (of varying lengths) by alternatingly taking elements from each list. Stop after hitting the end of the shortest list.
Örnek 2:
Translate this C function to Python: int addNums(int num1, int num2) { int sum = num1 + num2; return(sum); }
Örnek 3:
Write a python script that connects to a Db2 database with a user-provided server, port, username, and password.
Örnek 4:
Generate code for calling a GET endpoint with axios from a React App.
Örnek 5:
Write a create table sql statement for a table that will store employee records. Each employee ID should be unique.
Örnek 6:
Write a golang function that shows all prime numbers less than a number provided by the caller.
Örnek 7:
I want a C++ application that sorts a list of integers. The application reads an unknown number of integers from an input file (name provided on the command line) and then sorts the numbers and writes them to another file (file name also provided on the command line). Show me the code and how to compile it.
Örnek 8:
Create at least 6 Junit testcases for a Java function called ValidatePassword that takes one parameter (a password string) and verifies that it’s at least 8 characters, has no spaces, has at least 1 digit, has at least 1 symbol, and has both lowercase and uppercase characters.
Örnek 9:
What are good practices for Python classes?
2-IDE üzerinde Kod Açıklama, Dökümante Etme ve Unit Testler Oluşturma
Şu ana kadar yalnızca sohbet arayüzünü kullandık ve çoğu örnek yeni kod oluşturma ve oluşturulan kod üzerinde değişiklikler yapma üzerineydi. Ancak, pratikte geliştiriciler büyük ölçüde mevcut kodlar üzerinde çalışır. Bu işlemler ise şunları içerebilir.
- Hata ayıklama ve hataları giderme
- Yeni özellikler ve yetenekler ekleme.
WCA, bu tür senaryolarda büyük avantajlar sunar. Geliştiricilerin mevcut kodları üzerinde çalışırken üretken yapay zekadan faydalanmalarını sağlar. Bu bölümde, WCA’nın bu yeteneklerini nasıl kullanabileceğimizi anlatacağım.
Yeni bir sohbet oturumu açın.. Sol üst taraftaki Explorer simgesine tıklayın..
Explorer ekranı açıldığında. Lab ortamında kullanacağımız ModResorts isimli örnek bir uygulama bulunmaktadır. Kaynak koduna ulaşmak için.
src / main (A) > java / com / acme / modres (B) > mbean © > reservation (D)
reservation.java dosyasını açın..
reservation.java dosyası editor tarafında açılacaktır. WCA, class ve metotlardan önce bir başlık eklemiştir. Bu başlık, kodu açıklama, dökümante etme ve unit test oluşturma işlemlerini kolayca başlatmanızı sağlar. Bu başlıklar sadece editor arayüzüne eklenmiştir; kodun kendisine dahil edilmemiştir.
Reservation class’ındaki kodu açıklama için “Explain” e tıklayın.
WCA Chat oturumu açılacak ve otomatik olarak “/explain Reservation” promptu girilecektir. Ardından WCA, reservation class’ına ait kodu açıklayacaktır.
Chat ekranında mannuel olarak /explain [dosya_adı/sınıf/metot] yazarak da açıklamalar alabilirsiniz.
Örnek komutlar:
/explain Reservation
/explain checkAvailability
Bu seferde reservation class’ı için “Document” e tıklıyoruz.
WCA, otomatik olarak “/document reservation” promptunu girer ve sonrasında kodun yorumlanmış bir versiyonunu sunar…
Sonuç olarak dökümante edilmemiş versiyonları inceleyebilir ve kodunuza ekleyebilirsiniz. WCA, metot açıklamaları ve kod satırları arasına açıklamalar ekleyebilir.
Not: WCA, bazen yalnızca metot başlıklarına yorum ekler bazen ise kod satırlarının içine açıklamalar ekleyerek detaylı bir açıklama sağlar.
Son olarak reservation.java dosyasında “Unit Test” e tıklıyoruz..
WCA, unit test kodlarını ve ilgili açıklamaları oluşturur. Genellikle metot bazında Unit test oluşturulması önerilir. WCA, JUnit gibi test frameworkları için uygun test senaryoları oluşturabilir.
Editor ekranında reservation.java dosyasını kapatıyoruz.
Yeni bir chat oturumu açıyorum ve bu seferde AvailabilityCheckerServlet.java dosyasını editör de açıyorum.
Yukarıda test ettiğimiz, Explain-Document-Unit Test özelliklerini isteyebilirsiniz.
Bazı durumlarda kodun tamamından ziyade belirli bir kod bloğunun açıklamasını isteyebilirsiniz. Bu örnekte 50–55 satırları arasındaki kodu seçiyorum ve seçili olan kod üzerinde sağ tıklayarak, watsonx Code Assistant > Explain This seçeneğini tıklayın.
Sonuç olarak WCA, chat ekranında otomatik olarak seçilen kodun açıklamasını yapabilir. bu şekilde uygulamanız içerisinde belirli kod bloklarını hakkında detaylı açıklama alabilirsiniz.
Buraya kadar anlatmış olduğum özellikler ile, WCA kod açıklama, dökümante etme ve test senaryoları oluşturma işlemlerini kolay ve hızlı hale getirir. Tüm Class/Method veya sadece belirli bir kod bloğunu analiz edebilirsiniz. Mevcut kod üzerinde çalışırken zaman kazanmanızı sağlar. Daha iyi kod dökümanları ve testler oluşturmanıza yardımcı olur.
3-Code completion
Bu bölümde, WCA’nın single line — multi line kod tamamlama yetenekleri ile yorumlardan kod üretme özelliklerini deneyimleyeceğiz.
Burada kullanılan örnekler, aynı kod parçası üzerinde ilerlemektedir.
Önce yeni bir chat oturumu açarak başlayalım.
Yeni bir Java kaynak dosyası oluşturalım. File > New File seçeneğini seçiyoruz.
New Java File seçeneğini seçiyoruz.
Dosyayı oluşturduktan sonra kaydediyoruz..
Documents > wca_cc.java adı ile kaydediyoruz.
Editör’ün otomatik olarak eklediği kod varsa siliyoruz ve aşağıdaki kodu ekliyoruz.
WCA, yazdığınız kod satırlarını otomatik olarak tamamlayabilir. Bir satır yazmaya başladığınızda, yaklaşık 1 saniye sonra öneriler görünür. Tab tuşuna basarak öneri kabul edilir, ESC tuşuna basarak reddedebilir veya yazmaya devam edebilirsiniz.
Şimdi deneyelim.. 4. satırda, iki private değişkenin ardından, yeniden private yazın.. önceki satırda userId değişkeni bulunduğundan password gibi bir değişken önerilecektir. Tab tuşuna basarak bu öneriyi kabul edin.
6. satırda tekrar private yazarak sonrasında email değişkenini, ve daha sonrasında 7. satırda tekrar private yazarak bu seferde address değişkenini önerdiğini görebiliriz. Önerileri Tab duşu ile kabul ediyoruz.
Bu sefer 8. satırda public öğesini yazıyoruz ve WCA tek satırlık bir öneri veriyor. ESC tuşuna basarak bu öneriyi reddedin. Çünkü mult-line kod önerisi için (Windows’ta Alt + . veya Mac’te Option + .) tuş kombinasyonunu kullanabilirsiniz.
Multi-line code completion için Option + . tuşlarına basıyoruz. Aşağıda görebileceğiniz gibi birden fazla metot önerisi göreceksiniz.
Tab tuşuna basarak öneriyi kabul ediyoruz ve artık kodun içerisine ekleniyor. Eğer kod önerisinden memnunsanız Tab duşuna basarak kabul edin, aksi taktirde, ESC tuşuna basarak reddedebilirsiniz.
4- Application modernization with WCA
WCA,’nın yazılım geliştirme yaşam döngüsünü nasıl hızlandırabileceğini gördünüz. WCA, kod oluşturma, açıklama, dökümantasyon, test senaryosu oluşturma ve daha bir çok konuda destek sunarak yazılım geliştirme süreçlerini kolaylaştırır. Java, Python, C, C++, Go, JavaScript, TypeScript, gibi geniş bir programlama dilini desteklemektedir.
WCA, işletmelerin kurumsal Java uygulamalarını modernize etmesine de yardımcı olur. Üretken yapay zeka ile gelişmiş otomasyonu birleştirerek yazılım mimarlarının ve geliştiricilerin kodlarını dönüştürmelerine olanak tanır. Üretken yapay zeka desteğiyle yeni kodları doğrulayabilir, oluşturulan test senaryolarını kullanabilir ve modernize edilen uygulamaları otomatikleştirilmiş süreçler ile devreye alabilirsiniz.
Bu özellikle, WCA Standart planı kapsamında sunulmaktadır. Bu bölümde, WCA’nın sunduğu bazı modernizasyon yeteneklerini anlatmaya çalışacağım.
Java Runtime Modernization : WebSphere to Liberty
WCA’nın en önemli kullanım senaryolarından biri Java Runtime modernizasyonudur. Monolitik mimarilerden mikro hizmetlere geçiş yaparken organizasyonlar WCA’nın yapay zeka destekli içgmrülerinden ve gelişmiş otomasyon yeteneklerinden yararlanarak daha hafif, esnek ve verimli bir runtime ortamına geçişlerini hızlandırabilirler. WCA ile geçişler daha hızlı, daha verimli ve daha az hata ile gerçekleşir.
Bu bölümde, bir WebSphere uygulamasını Liberty’ye geçirmek için WCA’nı nasıl kullanabileceğimizi göreceğiz. Daha önceki örnekte olduğu gibi bu bölümde de ModResorts uygulamasını kullanacağız.
Explorer panelinde herhangi bir yerde sağ tıklayın. Açılan menüde watsonx Code Assistant > Modernize to Liberty seçeneğini seçin.Bu seçenek, Modernize to Liberty ekranını açacaktır. Bu ekranda gerekli değişiklikleri yapmanıza rehberlik edecektir.
Modernize ModResorts sayfasında belirtildiği gibi, en iyi modernizasyon deneyimi için IBM Cloud Transformation Advisor tarafından oluşturulan Migration bundle yüklemeniz gerekir.
Transformation Advisor nedir?
TA, WebSphere Application Server ve Liberty’ye genel ve özel bulut ortamlarında hızlı bir şekilde dağıtım yapabilmek için uygulamalarınızı değerlendirir.
Migration bundle, dönüşüm sürecini yönlendirecek uyumluluk sorunlarını, kullanım dışı özellikleri ve WebSphere ile Liberty arasındaki yapılandırma farklılıklarını belirler.
Eğer bir Migration bundle oluşturamıyorsanız, WCA uygulamanızı analiz eder. Bu lab için daha önceden oluşturulmuş bir migration bundle kullanacağız. Upload migration bundle seçeneğini seçerek devam ediyoruz.
Daha önceden hazırlanmış olan modresorts uygulamasına ait migration bundle’ı yüklüyoruz.
server.xml dosyasını uygulamanın Liberty üzerinde çalıştırılması için gereklidir. varsayılan olarak seçili geldiği için “Proceed” seçeneği ile devam ediyoruz.
Migration sürecinde tespit edilen sorunlar;
Issues bölümünde 4 farklı migration sorunu tespit edilmiştir. WCA, bu sorunları iki şekilde çözebilir.
1-Automated Fixes: WCA, Bazı sorunları otomatik olarak düzeltebilir. Kurallara dayalı otomasyon kullanarak gerçekleştirilir.
2-Assisted Fixes: WCA’nın henüz otomatik bir çözümü olmayan sorunlar için LLM tabanlı öneriler sunduğu çözümlerdir.
Varsayılan olarak “Automated Fixes” sekmesi açık olarak gelir. Listelenen 3 hatayı inceledikten sonra “Run automated fixes” butonuna tıklayın.
“Automated Fixes” işlemleri tamamlandıktan sonra issue’ların çözüldüğünü görebilirsiniz.
Sol taraftaki menü bardan Source Control simgesine tıklayın. Changes sekmesini açarak, server.xml, LogoutServlet.java ve WeatherServlet.java dosyalarının güncellediğini göreceksiniz.
WeatherServlet.java dosyasına tıklayın.
Açılan Editör ekranında, yapılan değişiklikleri karşılaştırmalı olarak inceleyin.
Daha sonrasında WeatherServlet.java sekmesini kapatın.
Modernize to Liberty sekmesine geri dönelim ve “Rebuild and Refresh” butonuna tıklayalım. Artık Automated Fixes kısmında bir sorun kalmadığını göreceksiniz.
“Assisted Fixes” sekmesini açalım..
“The WebSphere Servlet API was superseded by a newer implementation”
sorunun detaylarını inceleyelin.. WCA’nın sunduğu yapay zeka destekli çözüm önerilerini inceleyebilir ve uygulayabilirsiniz. Bu adımları tamamladıktan sonra WebSphere uygulamanız başarıyla Liberty runtime ‘a taşınmış olacaktır.
WCA doğrudan sorunlu koda bağlantı sağlar. (src/main/java/com/acme/modres/UpperServlet.java) dosyayı editörde açıyoruz.
UpperServlet.java dosyasındaki tüm kodu seçip, ardından Modernize to Liberty ekranındaki Help me butonuna tıklayın.
WCA’nın chat ekranı açılır ve bir kaç saniye sonra WCA, sorunu nasıl çözeceğinize dair öneriler oluşturur.
Özetle, ResponseUtils.encodeDataString( ) metodunu değiştirmeniz gerektiğini belirtiyor ve iki adım sağlanıyor.
UpperServlet.java dosyasındaki mevcut tüm kodu silin ve yeni oluşturulan kodu buraya yapıştırın (yani, tüm eski kodu yenisiyle değiştirin).
WCA tarafından oluşturulan kod değişikliklerini görebilirsiniz. 13. 30. satırdaki kodlar WCA tarafından güncellendi. Ayrıca, 1. satırda WCA tarafından desteklendiğine dair bir yorum bulunmaktadır. UpperServlet.java dosyasındaki değişikliklerinizi kaydedin
Chat ekranına geri dönün ve pom.xml dosyanıza eklenmesi gereken bağımlılık ekleme adımına gidin. Yeni oluşturulan bağımlılık kodu için Kopyala butonuna tıklayın.
Explorer ekranında projeye ait pom.xml dosyasını seçin.
pom.xml dosyası Editör üzerinden açın. Projenin bağımlılık listesi 17. satıda başlar. 18. satırın başına chat ekranındaki içeriği buraya ekleyin.
pom.xml dosyanızdaki değişiklikleri kaydedin.
Bu değişiklikleri yaptıktan sonra, Modernize to Libery ekranına geri dönüp, Issues bölümünden Rebuild and refresh butonuna tıklayın. Bu kalan sorunların listesini yeniler.
Artık çözülmemiş herhangi bir sorun olmadığını ve uygulamanın Liberty’e taşındığını unutmayın.
Buraya kadar gerçekleştirdiğimiz adımların ne kadar kolay olduğunu fark edin. WCA, otomasyon yetenekleri ve öneriler aracılığıyla, manuel kullanıcı müdahalesi gerektirmeyen bir dizi geçiş sorununu otomatik olarak ele alabildi.
ve daha karmaşık güncellemeleri otomatik olarak yapamasa bile, gerekli kod değişiklikleri için rehberlik sağlayarak, AI destekli kod önerileri sundu.
5- Java Upgrade
WCA için bir diğer önemli kullanım senaryosu da Java Upgrade’lerdir. WCA, kuruluşların en son java sürümüne ayak uydurmasına yardımcı olur, boşlukları belirlemek ve kod tabınını güncellemek için gereken düzeltmeleri otomatik olarak uygulamak amacıyla yapay zekadan faydalanır.
Önceki bölümde kullandığımız ModResorts uygulaması Java 8 üzerine inşa edilmiştir. Bu bölümde, bu uygulamayı Java 8'den Java 21'e hızlı ve kolay bir şekilde yükseltmek için WCA’nı kullanacağız. WCA’nın ayrıca Java 11, jAVA 17 gibi diğer sürümler de yükseltme yapabildiğini ve yeni java sürümleri yayınlandıkça bunlara uyum sağlayacaktır.
Explorer ekranında ModResorts uygulaması açık olmalıdır. Navigasyon ağacında herhangi bir yerde sağ tıklatın. Açılan menüde watsonx Code Assistant seçeneğini ve ardından Upgrade Java Version seçeneğini seçin.
Bu işlem sonrasında Upgrade Java Version ekranı, ModResorts uygulaması için açılacaktır. Bu ekranda Source Code level > IBM 8 (recommended) ve Target ise Java 21 (LTS) olarak seçili olmalıdır.
Gerekli seçimleri yaptıktan sonra Build and analyze butonuna tıklayın.
Bu kısımda Upgrade öncesi tespit edilen sorunları inceleyebilirsiniz. Toplamda 5 adet sorun tespit edilmiştir.
Automated Fixes sekmesinde, WCA’nın sizin için otomatik olarak çözebileceği sorunları gösterir. Aşağıda görebileceğiniz 3 tane sorunu görebilirsiniz. Run automated Fixes butonuna tıklayarak WCA’nın bu sorunları otomatik olarak düzeltmesini sağlayalım.
Artık bu üç sorunda çözülmüştür.
Source Control ekranında hangi dosyaların değiştirildiğini görebilirsiniz.
Issues bölümünde yer alan Rebuild and refresh butonuna tıklayarak kalan sorunları güncellenmiş bir şekilde görüntüleyin.
2 Adet Issue kaldığını görüyoruz, bu sorunlar ise Assisted fixed kısmında yer almaktadır. Bu kısımda WCA’nın AI destekli olarak düzeltmenize yardımcı olabileceği sorunları listeler.
İlk sorun “Behavior change in the javax.management.MBeanOperationInfo constructor” bu sorundan etkilenen bir source kod bulunmaktadır.
📄 src/main/java/com/acme/modres/mbean/DMBeanUtils.java
WCA doğrudan problemli kod bölümüne bağlantı sağlar. Editör ekranında DMBeanUtils.java dosyasını açın.. Editör ekranı ikiye bölünecektir.
DMBeanUtils.java dosyasındaki tüm kodu seçip, ardından Upgrade Java Version ekranındaki Help Me butonuna tıklayın.
WCA’nın chat ekranı sol tarafta açılacaktır. Bir kaç saniye sonra sorunu nasıl çözeceğinize dair talimatlar ve düzeltilmiş yeni kod içeren bir blok görünecektir. Güncellenmiş kod bloğunu kopyalamak için sağ üst köşedeki copy butonuna tıklıyoruz.
DMBeanUtils.java dosyasındaki mevcut tüm kodu silin ve yeni oluşturulan kodu yapıştırın. Daha sonrasında dosyayı kapatabilirsiniz.
Aynı adımları ikinci sorun için de tekrarlıyoruz.
Tüm değişiklikleri tamamladıktan sonra, Upgrade Java Version ekranına geri dönüp Rebuild and refresh butonuna tıklıyoruz.
Ve Issues kısmı 0 olarak görünüyor. Artık hiç bir sorun kalmadı ve uygulamamız Java 21'e başarıyla yüksetildi.
Uygulamanın derlenip çalıştığını kontrol edelim. Explorer ekranını açın.. ardından Terminali açın..
Terminal ekranında “mvn clean install” komutunu çalıştırıyoruz. Uygulamanın derlenmesi bir kaç dakika sürebilir.
son olarak Terminal’de aşağıdaki komutu çalıştırmanız gerekiyor.
mvn io.openliberty.tools:liberty-maven-plugin:dev -f
“/home/techzone/Desktop/WCA Demonstration Artifacts/sample-app-
mod/pom.xml”
Çıktının sonunda “Web Application Available” ifadesinin yer aldığı bir satır göreceksiniz. Bu satırın sonunda bir URL bulunuyor. URL’in üzerine gelip tıklayın.
Açılan pencerede web sitesini açmak isteyip istemediğiniz sorulacaktır.
ModResorts web sayfasını açılıyor.
Bu test ile birlikte Java 8'den Java 21'e geçişi başarıyla yükseltilmiştir.
Bu lab’ın sonuna geldik. watsonx Code Assistant (WCA) ile ilgili aşağıdaki senaryoları gerçekleştirmiş olduk.
- Kod Oluşturma
- Kod Açıklama
- Kod Dokümantasyonu
- Unit Test Oluşturma
- Kod Tamamlama
- WebSphere’den Liberty’ye geçiş
- Java Version Upgrade