JSF'nin Struts ile karşılaştırılması, elmaları portakallarla karşılaştırmak gibidir. JSF, bileşen tabanlı bir MVC çerçevesi iken Struts istek/eylem tabanlı bir MVC çerçevesidir. Struts da yaşlıdır. BT'de hareket etmeye devam etmelisiniz. Genel olarak, bir bileşen tabanlı MVC çerçevesi, istek/eylem tabanlı bir MVC çerçevesinin daha ileri bir evrimi olarak görülmektedir.
JSF şu anda çok yaygın olarak kullanılmaktadır. Daha önce çok fazla eleştiri aldı. Bunların çoğunu What are the main disadvantages of JSF 2.0? numaralı telefondan okuyabilirsiniz. JSF'nin gücü, çoğunlukla bir Java EE standardını korumuştur ve nispeten çok sayıda 3. parti bileşen kitaplıklarının kullanılabilirliğidir (PrimeFaces, RichFaces, IceFaces, OpenFaces, Tomahawk, vb.). JSF ile, CRUD uygulamalarını ve web formlarını hızlıca güzel bir görünümle geliştirmeniz çok kolay. Ancak, bu komplekse girdiğinde, JSF bazı beklenmedik sürprizlere neden olabilir. JSF belirtimi ve referans uygulaması (Mojarra), en son 1.2 sürümünden bu yana oldukça olgun olmasına rağmen, sezgilerinize karşı gelen bazı çok spesifik davranışsal sorunlarla karşılaşabilirsiniz. Bazıları sadece "tasarıma göre" ve sadece ayrıntılı olarak anladığınızda anlaşılabilir JSF, JSF'nin, HTTP protokolünün vatansız niteliğine dönüşen kapakların altında nasıl çalıştığı konusunda anlaşılır. JSF bunu özünde "çok fazla" diye özetler ve artık görmezsiniz. Bazıları sadece kullanılan 3. parti bileşen kitaplıklarındaki hatalardır, ancak bu nedenle kesinlikle JSF uygulamalarına özgü değildir. Hata/sorun işleme, ana bileşen kitaplıklarının çoğunda oldukça iyidir - hataları zamanında bildirirseniz.
Ajaxical öğelerle ilgili olarak, JSF 2.0, ajaxical isteklerini manuel olarak ateşleme ve hem sunucu hem de istemci tarafında görünüm ağacını denetleme konusunda çok az manuel kontrol sağlar. Basitçe, ağaç durumunu her iki tarafta tutan bileşen tabanlı bir MVC çerçevesi olduğu için. Kendi elinizde ajaxical çalışmaları yaparken her iki tarafı da hesaba katmalısınız. gerçekten ajax/istek tabanlı eylemlerde daha fazla özgürlüğe ihtiyacınız varsa, o zaman bileşen tabanlı bir MVC çerçevesi yanlış seçimdir. JQuery gibi bir JS kütüphanesi ile birlikte Spring MVC, Struts veya Stripes gibi bir istek/eylem tabanlı MVC framework seçmelisiniz. Ancak bunun yerine kendiniz çok HTML/CSS/JS boilerplate yazmak zorundasınız.
Ed Burns'ün Struts iştiraki olduğunu bilmiyordum. Bilgi için teşekkürler. – amorfis
Bu iyi bir okuma, bana doğru yönde düşündüğümü gösteriyor. Teşekkürler !. – JHarnach
BTW Sadece birkaç hafta boyunca http://balusc.blogspot.com/ adresinden blog'larınızı okuduğumu fark ettim, ÇOK faydalı! – JHarnach