JSF hakkında bir UI çerçevesi olduğunu ve bazı UI bileşenleri sağladığını okuyordum. Ancak jQueryUI, AngularJS, ExtJS ve hatta düz HTML, CSS ve JavaScript'te bulunan bileşen sayısından nasıl daha iyi veya farklıdır?
Neden birisi JSF öğrenmeli?
JSF hakkında bir UI çerçevesi olduğunu ve bazı UI bileşenleri sağladığını okuyordum. Ancak jQueryUI, AngularJS, ExtJS ve hatta düz HTML, CSS ve JavaScript'te bulunan bileşen sayısından nasıl daha iyi veya farklıdır?
Neden birisi JSF öğrenmeli?
Yanıtlar:
JSF'den düz JSP / Servlet / HTML / CSS / JS'ye jQuery'den düz JS'ye benzer: daha az kodla daha fazlasını yapın. Çekmek için PrimeFaces (jQuery + jQuery UI tabanlı) bir örnek olarak, onun aracılığıyla göz vitrin tam kod örnekleri görmek. BootsFaces (jQuery + Bootstrap UI tabanlı) ayrıca eksiksiz kod örnekleri içeren bir vitrine sahiptir. Bu örnekleri yakından incelerseniz, temelde model olarak basit bir Javabean sınıfına ve görünüm olarak bir XHTML dosyasına ihtiyacınız olduğunu göreceksiniz.
JSF'yi tek başına HTML / CSS / JS'nin yerine geçecek şekilde görmemeniz gerektiğini unutmayın, ayrıca sunucu tarafı kısmını da hesaba katmalısınız (özellikle: JSP / Servlet). JSF, HTTP istek parametrelerini toplama, bunları dönüştürme / doğrulama, model değerlerini güncelleme, iş işlerini yapmak için doğru Java yöntemini çalıştırma ve HTML / CSS / JS standart kodu oluşturma ihtiyacını ortadan kaldırır. JSF ile temelde görünüm tanımı olarak bir XHTML sayfası ve model tanımı olarak bir Javabean sınıfı elde edersiniz. Bu, gelişimi büyük ölçüde hızlandırır.
Her bileşen tabanlı web MVC çerçevesinde olduğu gibi, işlenmiş HTML / CSS / JS üzerinde JSF'de daha az ayrıntılı kontrole sahip olursunuz. Özel JS kodu eklemek, sunucu tarafındaki JSF görünüm durumunu da hesaba katmanız gerektiği için o kadar kolay değildir (örneğin, JS tarafında devre dışı bırakılmış bir düğmeyi etkinleştirmek, JSF tarafında düğmeyi etkinleştirmez, bu da bir büyük güvenlik avantajı). Ancak bu büyük bir gösterici ise, Spring MVC gibi eylem tabanlı bir web MVC çerçevesi arayın . Yalnızca tüm bu HTML / CSS / JS kodunu (ve XSS, CSRF ve DOM manipülasyonuna karşı önlemeyi) kendiniz yazmanız gerektiğini hesaba katarsınız . Ayrıca Facelets'ten JSP'ye geri dönerseniz, gelişmiş şablonlama yeteneklerini de kaçıracaksınız.
Öte yandan, büyük bir JSP / Servlet / HTML / CSS / JS / jQuery tabanlı web siteniz varsa ve tekrarlanan JSP / Servlet / HTML / CSS / JS / jQuery şablon kodunu yeniden kullanılabilir bileşenlere yeniden düzenlemek istiyorsanız, çözümlerden biri JSF olacaktır. Özel şablonlar, etiket dosyaları ve bileşenler buna yardımcı olabilir. Bu perspektifte, JSF, JSP / Servlet / HTML / CSS / JS / jQuery'nin üzerinde durur (ve bu nedenle, JSF'ye dalmadan önce bu temel bilgileri anlamak oldukça önemlidir).
JSF tabanlı gerçek bir dünya projesini burada bulabilirsiniz: Java EE Kickoff Uygulaması . JSF'nin yanında iyi HTML5 , CSS3 ve jQuery olduğunu göreceksiniz .
JSF, java mağazalarının jQuery gibi şeyler öğrenmek ve karmaşık JS oluşturmak zorunda kalmaması, bunun yerine tamamen Java yığınına odaklanması için oluşturuldu. Zamanın para olduğu bir dünyada ve zaten Java geliştirmeye odaklanan birçok yerde, yığındaki bir dil / parça eksik, eğitimi ve bakımı daha hızlı ve dolayısıyla daha ucuz hale getirir.
JavaScript'in büyük ekipler için bir bakım kabusu haline gelmesinin kolay olduğunu ekleyeceğim, özellikle projedeki bazı geliştiriciler çok fazla web meraklısı değilse.
Javascript ve jQuery gibi çerçevelerle tam esnekliğe ve tam kontrole sahip olursunuz. Ext'ler vb. İle çok fazla kontrolü kaybedersiniz ve çerçeveye uyum sağlamalısınız. JSF ile kontrolü tamamen kaybedersiniz ve çerçeveye tamamen uyum sağlamalısınız. Yaşam döngüleri vb.'de çağrılırsınız ve nihayet sunucuya ne zaman çağrı yapılacağı ve nerede yapılamayacağı konusunda hiçbir kontrole sahip değilsiniz. 'Özel' kabul edilen bir şey yapacaksanız, çok zor durumdasınız. Ve JSF dünyasında, çok sütunlu tablo sıralaması veya yalnızca sınırlı sayıda karakter yazabileceğiniz alanlar (sayı alanı gibi) gibi temel şeyler bile 'özel' olarak kabul edilir.
Ancak, ne kadar esnek olursanız, o kadar fazla hata veya kötü uygulama yapabilirsiniz. Yüksek esneklik yalnızca son derece zeki programcılar ile çalışır, diğerleri projeyi yönetilemez bir kabusa çevirir.
Ancak, JSF ve sınırlı esnekliği sayesinde, bir şeyi yapmanın her zaman yalnızca birkaç (veya hatta bir) doğru yolu vardır. Çok sınırlısınız, kısayollar yapamazsınız, daha fazla XML yazmanız gerekir, vs. - ancak standarda uyum sağlarken, deneyimsiz veya düşük vasıflı programcıların üreteceği kod üzerinde daha iyi kontrol vardır. Sonuç olarak, büyük şirketler JSF'yi seviyor çünkü onlar için daha güvenli.
GWT'den JSF'ye geçtiğimde şok oldum, benim için doğal olan kaç şey oldukça alışılmadık görüldü ve ne kadar basit şeylere ulaşmak bu kadar zordu. Dahası, GWT / jQuery destekli uygulamada etiket üreten bir işlevi değiştiren etiketten sonra ':' işareti eklemek gibi en küçük değişiklikleri yapmak bile yerelleştirilmiş özelliklere sahip düzinelerce dosyanın değiştirilmesini gerektirdi ki bu bile dikkate alınmadı. benden başka kimse garip ...
JSF kullanmanın faydaları yalnızca xhtml + css + js oluşturmada değildir. Bazen JSF, herhangi bir bileşen tabanlı çerçeve gibi oluşturabileceğiniz işaretlemeye bir kısıtlama getirir. Ancak JSF sadece bunun için değil, yaşam biçimi de büyük ölçüde yardımcı oluyor. Girdiyi doğruladıktan sonra modeli güncelleyebilir ve sunucu tarafı çekirdeklerinizi herhangi bir çaba harcamadan senkronize edebilir. "Burada kullanıcı ne yazarsa yazsın, bir sayı olup olmadığını kontrol edin, eğer öyleyse, XX nesnesinde YY özelliğinde saklayın" diyorsunuz ve JSF hepsini yapacaktır.
Yani evet, JQuery, JS, vb. Kullanmaya devam edebilirsiniz. Ancak JSF, sunucu tarafı kodu yazma konusunda birçok fayda sağlar ve sizi birçok kazan plakasından kurtarır.
Jsf'nin herhangi bir şey eklediğine kesinlikle katılmıyorum. Sadece ek yükler ekler. Sunucuda kullanıcı arabirimi yapmak, şimdiye kadar duyduğum en saçma şey. Ve büyük ekiplerdeki javascript harika çalışıyor - buna yeniden kullanma kodu denir.
Sadece jquery'yi bazı jsp etiketlerine sarın, ihtiyacınız olan tek şey bu ve işiniz bitti ve .jsf ve richfaces ile. Zincirleme ve ölçeklenebilirlik sorunlarına katlanmayın.
JSF, Spring MVC, Struts, Grails, JQuery ve ExtJS ile çalıştıktan sonra, bence Grails + ExtJS güçlü bir kombinasyondur.
Grails'i her gün JSF yerine seçerdim. ExtJS'nin istemci tarafı çerçevesi ve kitaplığı olarak bütünlüğünü seviyorum, ancak JQuery'den daha dik bir öğrenme eğrisi ile geliyor.
JQuery ve JSF arasındaki en büyük farklar şunlardır:
jQuery hiçbir zaman tam yığın web çerçevesi olarak kullanılmak üzere tasarlanmamıştır. Daha çok düşük seviyeli JS kodunu değiştirmek için tasarlandı, böylece JS yazımı daha az kod satırında daha kolay ve daha güçlü hale geldi.
Ve bu nedenle çoğunlukla HTML öğelerine davranış eklemek için kullanılmalıdır.
ExtJS çerçevesini büyük bir web uygulaması için kullandım, kullanımının ne kadar kolay olduğunu biliyorum. ExtJS (Schena), MVC mimarisindeki (Oracle 11g) veritabanı etkileşimleri için en uygunudur. Görünüm görsel / kullanıcı etkileşimleri içindi. Denetleyici, PLSQL paketlerinden (CRUD için API, SQL seçme sorguları vb.) 'İşleme' ve kullanılması gereken tetikleyicileri belirtti. Model ve saklama dosyaları, veri öğelerini Görüntüleyici / girdilere 'eşlemek' için kullanıldı.
ExtJS, Angular JS'nin daha uygun olabileceği veritabanı yoğun olmayan web arayüzleri için uygun değildir.