Spring ve AngularJS ile public web uygulama geliştirme

By in Blog on 07/12/2014
Java ile public bir web projesi geliştirme kararı alındığında teknolojileri doğru seçmek önemlidir. Aksi halde geliştirmesi gayet yavaş ilerleyen ve çalışması hantal bir ürün ortaya çıkabilmektedir.
Özellikle front end geliştirmesinde JSF2.0 üzerine konumlandırılan bir çok faces (Primefaces, ADF Faces) teknolojisi ile oldukça gelişti. Ancak küçük public web uygulamalarında bu teknolojiler ile performans ve geliştirme sıkıntıları ortaya çıkmaktadır. Geliştirme sıkıntısı JSF ve implementasyonlarının hayli kapsamlı ve component based olmasından kaynaklanmaktadır. Component based geliştirilmiş bir facelet/jsp/jsf/jspx e tasarım giydirmek yada mevcut yeteneklerinin dışında bir özellik eklemeye çalışmak oldukça vakit alan bir sürece denk gelmekte. Üzerinde kullanılan JS ile zenginleştirilmiş faces implementasyonlarını da çözmek ve nasıl davranacağını kestirebilmek de ayrı bir dezavantaj haline gelebilmektedir. Böylece asla tasarım ve back end geliştirme birbirinden ayrılamaz parçalar haline gelmekte, designer ne kadar HTML bilgiye sahip olsa da projenize tasarımını giydirememektedir.
JSF2.0 ile AJAX destekleniyor. Bir JavaEE standardı olması da sebebiyle kullanımı ve doküman erişimi çok geniş.  

Avrupa’da hayli yaygınlaşan ZK Framework ile kıyaslarsak, ZK’nın öğrenmesi ve uygulaması oldukça kolay ve performance testlerinde JSF’i geçiyor.  Responsive design ile tasarlanmış bileşenleri sayesinde geliştirmeniz için ekstra çaba sarfetmeden mobilde de kullanıma olanak sağlıyor. Bütün bir framework olmasına rağmen sadece view katmanında kullanılarak SpringMVC ile çalışabilme imkanı bulunmaktadır. Olumsuz olarak ise, JSF e göre daha az kullanım sebebiyle yaygınlaşmış ve biraz daha fazla memory kullanımı sağlıyor. Ancak business logic’i sunucuda tutarak ajax enterprise based bir frameworkte şüpheyle yaklaşılan güvenlik konusunu çözmeyi başarmış olduğunu söylemeliyim. JSF ile ZK nın benchmark raporları=> http://www.zkoss.org/resource/file/report/ZK_JSF_Performance_Report_2012.pdf

Yine performans olarak JSF i geçen ancak günümüzde artık kullanımının yaygınlaşamayacağından neredeyse emin olunan Apache Wicket var. Bunun bence en önemli özelliği clean html yazılabilmesi. XHTML dosyalarıyla wicket ta çalışırsınız. Yani okunabilir bir html kodu olduğundan tasarım yapabilmek de olduça kolay. Yine ajax desteği var. Normal html markuplar ile sayfanızı tasarlıyorsunuz, special markup lar  oldukça az ve anlaşılır şekilde kullanılıyor.  Java tarafında model binding işlerinizi programatik olarak hallediyorsunuz.  Bu işi JSF te declarative yapıyorsunuz. Ancak Wicket’ın component leri zayıf ve kullanım sebebiyle  dokümantasyonu hayli az.

İşte bu durumda;
Yani backend java iken view tarafında ise java kutusunun dışına çıkmayı tercih etmiş bazı büyük şirketler olduğunu da biliyoruz.  
Java ile birlikte, Web UI da PHP kullanılmış azımsanmayacak sayıda web uygulaması mevcutmuş.

Spring, Java dünyasında kendini kanıtlamış ve yıllardır büyüyen community siyle üzerine inşa edilen bir çok alandaki teknolojiyle büyük bir ekosistem halini almıştır.  Yaygın kullanımı hakkıyla kazanmış ve mainstream framework olarak kabul görmüştür.
IoC ve EE container olmadan JavaEE nin yeteneklerini servlet container barındıran lightweight bir web serverda bile çalışarak gözleri üzerine çekmiştir. 

İşte bu noktada; REST serviceler in hem SOA mimarisi göz önüne alınarak mimarlarca önem verilmesi hem de REST service security ve knowhow ‘a web geliştiricileri ve back end geliştiricilerince sahip olunmasıyla gözler Javascripte çevrildi.  MVC JS Frameworklerin gelişerek kendini kanıtlamasıyla performansı göz dolduran REST serviceler ile JSON üzerinden komünikasyona başlandı.  Controller gibi REST serviceler istenen dil ile(framework ün önemi olmadığı gibi RESTful teknolojisini destekleyen herhangi bir dilde yazılabilir) backend developer larca yazılır, front-end developer larda JS libraryleri ve HTML ile bu serviceleri çağırarak temiz kodlarla işi bitirebilirler. Böylece roller birbirine karışmamış olduğu gibi bağlılık azalmış ve entegrasyon noktaları kendiliğinden çıkmış oldu. JS framework olması ile elbette bir güvenlik zaafiyeti doğmuş oluyor view tamamen client side a yıkıldığı için ancak bunların best practice i mevcut görünüyor. 

Böyle bir implementasyon nasıl yapılıyor, aşağıdaki tutorial serisinde çok iyi anlatılmış. 
Not: Bunu seyretmeden önce eğer JS, jquery, bootstrap, bower, ORM teknolojileri hakkinda hicbir şey bilmiyorsanız öncelikle bunları hızlıca araştırıp bilgi edinmek yararlı olacaktır.

(Visited 581 times, 1 visits today)

Leave a Reply

Your email address will not be published. Required fields are marked *