Java Server Faces (JSF) nedir?

Java Server Faces (JSF) nedir?

17 Mayıs 2016 0 Yazar: Cem Kefeli

Java Server Faces (JSF) kavramını anlatabilmek için ilk önce Java’nın bu güne kadar sunmuş olduğu önyüz/arayüz dinamik yapılarını incelemek gerekir diye düşünüyorum.

En başa java servlet’ler yerleşir ki java servlet’ler 1990’lı yıllardan ve de JDK 1.0’dan bu yana hayatımızdadırlar. Güncel versiyonu 4.0’dır ve en son J2EE 8 ile birlikte duyurulmuştur. Temel olarak sunucuya gelen HTTP isteğini keser, ilgili kod parçacığını çalıştırarak yorumlar, ve de istemciye bir cevap dönerler. Servlet’ler içerisinde java kodları bulunur ve istemciye gönderilecek HTML çıktılar bu kodların içerisinde barındırılırlar. Yani servlet teknolojisinde Java kodu içerisine HTML kodları gömülebilir.

İkinci sırada Java Server Pages (JSP) teknolojisi gelmektedir ki aslında JSP’ler de çalışma mantığı olarak yine servlet’ler üzerine kuruludurlar. Arka planda çalışan aslında bir servlet’tir. Fakat uygulamayı yazan kişi bu arka plandaki durumu görmez. Farkı ise JSP’lerin kodlama mantığının HTML üzerine kurulu olmasıdır. Nasıl ki yukarıda bahsettiğim gibi servlet’lerde java kodları arasında HTML kullanılıyorsa, JSP’lerde de HTML içerisine java kod parçacıkları gömülebilmektedir. HTML öğeleri örneğin formlar, tablolar, imajlar doğrudan JSP içerisindeyer alırlar. JSP’ler, servletlere göre görselliği daha ön plana çıkaran yapılar sunar.

Java Servlets / JSP / JSF Evolution
Java Servlets / JSP / JSF Evolution

Şimdi asıl konu olan JSF’lere dönelim. Servler’ler ilk ortaya çıktığı gün, günün ihtiyaçlarını karşılıyorlardı. Bir süre sonra görselliği ön plana alan JSP teknolojisi ortaya çıkıverdi. JSP bir nebze olsun görsellik konusunu ileriye taşıdı ama aranan kan halen bulunamamıştı aslında. JSF’nin duyurulması ile birlikte hem kod katmanına hem de görsel katmana hitap eden bir yapı ortaya çıktı. C#, C++ ya da java gibi dillerle masaüstü uygulaması geliştirenler bilirler, form üzerine yerleştirdiğiniz nesnelere aksiyonlar atayabilirsiniz. Örneğin forma bir buton yeteştirdiniz üzerine çift tıklarsanız butona tıklandığında çalışacak olan listener’a ulaşmış olursunuz. Bu listener, kod bloğu, içerisine buton tıklandığında yapılması istenen işlere ait dilediğiniz gibi kod yazabilirsiniz. İşte JSF ile birlikte masaüstü programlamanın bu güzel görsel yapısı bir nebze olsun WEB ile de buluşmuş oldu. JSF ile birlikte artık hem HTML kod tarafında bir kaynak kodumuz, hem de pure java tarafında bir kaynak kodumuz bulunuyor, ve de framework sayesinde bu ikisi arasında bir etkileşim de mevcut.

JSF, MVC (Model View Controller) yapısına uygun olarak tasarlanmıştır ve bir framework bir çatı görevi üstlendiğinden farklı farklı geliştiricilerin ya da farklı farklı vendor’ların farklı farklı JSF kütüphaleri de bulunmaktadır. Bu kütüphaneler projelere eklenerek hem görsel hem de fonksiyonel olarak oldukça gelişmiş yeteneklere sahip uygulamalar ortaya çıkmaktadır. En çok bilinen JSF kütüphaneleri RichFaces, IceFaces ve PrimeFaces olarak özetlenebilir. Dilerseniz siz de bir web komponenti oluşturup bunu bir kütüphene haline getirerek başkaları ile paylaşabilirsiniz.

Çok fazla detaya girmek bu yazının konusu değil ama JSF’den söz edip de java bean kavramından bahsetmemek olmazdı. JSF’in tanımını ortaya ilk koyarken bahsettiğim gibi, JSF olay yönelimli bir yapı sunar geliştiricilere. Yani bir butonu forma sürükleyip bırakırsanız bu butonun görsel yerleştiği yer ile buton tıklandığında çalıştırılacak kodların olduğu yer birbirinden farklıdır. Görsel dizayn xhtml uzantısına sahip ve xml syntax’ı kullanılan dosyalar içerisinde tutulur. Ama buton tıklandığında çalıştırılacak kod parçacığı bir java bean’dir ve tamamen pure java kodundan oluşur. Özetle JSF için Java bean’ler görsel ile asıl kod parçacığını birbirine bağlayan yapılar olarak düşünülebilir.

Kaynaklar;

Oracle – Java Servlet Technology
Oracle – The History of Java Technology
Wikipedia – JavaServer Pages
Wikipedia – Java Servlet Technology
Wikipedia – Java EE version history
Free Java Guide – Java Servlets