JavaServer Faces guclu ve dinamik web uygulamalari gelistirmeyi kolaylastiran web tabanli arayuzler hazirlamak için bir frameworkdur(bir frameworkun genel anlamda amaci uygulama gelistirmede temel olusturan arayuzleri sunmak ve uygulama gelistirmeyi kolaylastirmaktir). JSF swing gibi bir takim standart bilesenler(butonlar, linkler, secim kutulari gibi) ya da ozellestirilmis bilesenler olusturmak icin model sunmasinin yaninda istemci tarafli olaylarin(event) islenmesi için yontemler sunar ve ayrica tool kullanma destegi vardir. Java için bircok web arayuz frameworkleri bulunmasina karsin JavaServer Faces bircok sebepten dolayi one cikmaktadir. JSF “java community” standardidir. JavaBean bilesenleri paradigmasinin, web arayuz tasariminda kullanilmasina olanak verir. JSF, piyasadaki bircok frameworkun iyi yonleri alinarak tasarlanmistir.
JSF kullanarak web uygulamalari gelistirmek swing uygulamalari gelistirmeye benzer. Aslinda JSF’yi Swing ile Struts’in(acik kodlu jsp tabanli bir framework) birlesimi olarak dusunebiliriz. Ancak JSF bu ikisinin yerine gececek birsey olarak algilanmamalidir. JSF ikisi ile de birlikte calisabilecek sekilde tasarlanmistir.
Oncelikle bir JSF uygulamasi servlet/JSP uygulamasidir. Deployment descriptor, JSP sayfalara, özel tag kutuphaneleri.. icerir. JSF uygulamasindan farki olay-tabanli olmasidir. Uygulamanizin nasil davranacagina olay dinleyici (event listener) bir sinif yazarak karar vermenizi saglar. Yapilacak is, kontrolleri surukleyip birakmak ve gerekli olay yakalayicilari yazmak olarak ozetlenebilir.
JSF’nin Kokeni: RAD
Simdi JSP’nin nereden dogduguna bakalim. Rapid Application Development (RAD) Web’den onceki donemlerde popular olan bir kavramdi. RAD’in esas amaci tekrar kullanilabilen parcalar ile guclu uygulamalar gelistirmenizi saglamaktir. Visual Basic, PowerBuilder ya da Delphi gibi araclarin uygulama gelistirmede buyuk hiz kazandirmasi RAD tabanli olmalari sayesindedir. Karmasik arayuzler hazirlamak ve bunlari veri kaynaklari ile butunlestirmek hic bir zaman bu kadar kolay olmamisti.
Bir RAD ortaminda; uygulama ogelerini-arayuz kontrollerini ve diger bilesenleri- paletten surukleyip uygulamanin uzerine birakabilirsiniz. Butun bu bilesenlerin davranislarini belirleyen ozellikleri(property) bulunur. Ve ayrica kullanici arabirimi ile uygulamanin diger kismi arasinda etkilesimi saglayan bir takim olaylari ve olay yakalayicilari bulunmaktadir. Butun bu iyi ozelliklere IDE araciligiyla ulasabilir ve dizayn ve kod kesimleri arasi rahatlikla gecis yapabilirsiniz.
RAD araclari genellikle dort katmandan olusurlar:
• Temelini olusturan bilesen mimarisi
• Standart bilesen seti
• Uygulama altyapisi
• Gelistirme aracinin kendisi
RAD’in bilesen altyapisi bir ucuncu-parti bilesen pazarinin dahi dogmasina imkan verecek kadar esnek bir yapiya sahipti. Simdi de elbette RAD felsefesi gecerliligini yitirmedi. Yerini belki daha populer sozcuklere birakmasina karsin.. Ancak RAD’in web uygulamalarina yansimasi cok hizli gerceklesemedi.
Takililan nokta, aslinda karmasik olan uygulama gelistirmenin basite indirgenmesindeki gucluklerden kaynaklanmaktadir. Masaustu uygulamalarina kiyasla Web uygulamalari daha karmasiklardir. Sayfalar, konfigurasyon dosyalari, grafikler ve kod gibi tonlarca farkli kaynagi yonetmeniz gerekir. Kullanicilariniz farkli isletim sistemlerinde calisan farkli tarayicilar kullaniyor olabilirler. Ayrica HTTP gibi kompleks uygulamalarda sorun cikaran bir protokole de bagimlisiniz.
Elbette yazilim endustrisi karmasikligi basite indirgemek konusunda uzmanlasmis oldugundan son yillarda RAD web cozumleri gelistiriliyor olmasi surpriz olmamistir. Bu cozumler; gorsel, bilesen tabanli uygulama gelistirmenin gucunu, web gelistirmenin karmasik dunyasina tasimislardir. Buyukbabalari Apple’in gelistirdigi WebObject olmakla birlikte, Microsoft, VisualStudio.NET ve ASP.NET web formlari ile bu konsepti server alanina tasimistir. Java dunyasinda da bircogu acik-kaynakli olan framework’ler gelistirilmistir. Bazilarinin tool destegi bulunur, bazilarinda ise bulunmamaktadir. Oysa ki standart bir Java RAD web uygulama gelistirme framework’unun bulunmamasi, Microsoft’un .NET framework’unun ilk gunden hallettigi, Java puzzle’inin ise eksik kalmis parcasidir. JavaServer Faces ozellikle bu acigi doldurmak icin gelistirilmistir.