JSF kullanmama nedenleri [kapalı]


64

StackExchange'te yeniyim, ancak bana yardımcı olabileceğinizi düşündüm.

Eski bir JSP çözümünün yerine yeni bir Java Enterprise uygulaması hazırlıyoruz. Pek çok değişiklik nedeniyle, kullanıcı arayüzü ve iş mantığının bölümleri tamamen yeniden ele alınacak ve yeniden uygulanacaktır.

İlk düşüncemiz, Java EE'deki standart olduğu için JSF idi. İlk başta iyi bir izlenim bırakmıştım. Ama şimdi işlevsel bir prototip uygulamaya çalışıyorum ve onu kullanma konusunda ciddi endişelerim var.

Her şeyden önce, gördüğüm en kötü, en darmadağın geçersiz sözde-HTML / CSS / JS karışımı oluşturur. Web geliştirmede öğrendiğim her kuralı ihlal ediyor. Dahası, asla bu kadar sıkı bir şekilde birleştirilmemesi gereken şeyleri bir araya getirir: Düzen, Tasarım, Mantık ve Sunucu ile İletişim CSS ile stil verme, UI şekerleme (yapılandırılabilir kısayol tuşları, sürükle ve bırak widget'ları gibi) veya ne olursa olsun, bu çıktıyı nasıl rahatça genişletebileceğimi anlamıyorum.

İkincisi, bu yol çok karmaşık. Karmaşıklığı olağanüstü. Bana sorarsanız, temel web teknolojilerinin kötü bir soyutlaması, sonunda sakat ve yararsız. Ne gibi avantajlara sahibim? Yok, eğer düşünüyorsan. Yüzlerce bileşen? Ayrıca on binlerce HTML / CSS parçacığı, on binlerce JavaScript parçacığı ve binlerce jQuery eklentisi görüyorum. Gerçekten birçok sorunu çözüyor - JSF kullanmasaydık olmaz. Ya da ön denetleyici paterni.

Son olarak, 2 yıl sonra baştan başlamak zorunda kalacağımızı düşünüyorum. İlk GUI modelini nasıl uygulayabileceğimi anlamıyorum (Ayrıca; ekibimizde JSF Uzmanımız yok). Belki bir şekilde birlikte kesebiliriz. Ve sonra daha fazlası olacak. Kesinimizi kesebileceğimize eminim. Ama bir noktada, sıkışıp kalacağız. Servis seviyesi yukarıdaki her şeyden dolayı JSF'nin kontrolü altındadır. Ve baştan başlamamız gerekecek.

Benim önerim, JAX-RS kullanarak bir REST api uygulamak olacaktır. Ardından, müşteri tarafı MVC ile bir HTML5 / Javascript istemcisi oluşturun. (veya MVC'nin bir lezzeti ..) Bu arada; kısmi bir Android ön uç da geliştirdiğimiz için yine de REST api'ye ihtiyacımız olacak.

Şüpheliyim ki, JSF bugünlerde en iyi çözümdür. İnternet gelişirken, neden bu 'komisyon'u kullanmamız gerektiğini anlamıyorum.

Şimdi, lehte / aleyhte olanlar nelerdir? JSF kullanmamayı nasıl vurgulayabilirim? Benim önerim üzerinde JSF kullanmanın güçlü noktaları nelerdir?


24
Bu yeni bir kullanıcıdan gelen iyi yazılmış bir soru. Aşağı oy verirken yorum bırakmayı düşünün.
ThiefMaster

2
Her şeyi yeniden yazdığınızdan, yalnızca JSF'yi kullanmayı değil, Java kullanmayı da düşünmüyorum. Modern betik dilleri ( PHP veya Perl değil ) oldukça güzel ve geliştirici dostu.
ThiefMaster

11
Oy vermedim ama bu bir soru değil, bir rant. Vain, JSF'den nefret ettiğini düşünüyor, şimdi kullanmamak için daha fazla neden istiyor mu?
Michael Borgwardt

4
Java, uygulamanızın büyük (karmaşık ve / veya ölçeklenebilir) olması ve / veya birçok hizmet kullanılarak dağıtılması halinde en iyi seçimdir; Uygulamanız bu kategoriye uymuyorsa (çok karmaşık değilse ve ölçeklenebilir olması gerekmiyorsa), Python (Django) veya Ruby (Rails) daha iyi seçimler olacaktır. JSF'nin karmaşıklığı, beraberinde gelen gücün faydalarına sahiptir; Alternatif olarak, eğer Java zorunluysa, Spring MVC veya Struts 2 gibi diğer Web Çerçevelerine bir göz atmalısınız.
m3th0dman

14
Bu gibi bir soru değil, yedekleme arayan bir rant.

Yanıtlar:


26

JSF'yi düşünmek için en az bir sebep var.

Bu Java EE yığınının standart bir parçası olduğunu ve dolayısıyla mevcut olacak - ve çalışma çok, çok uzun zamandır TÜM Java EE kaplarda -. Java EE şartnamesine kesinlikle uyduysanız, bunu yapmanıza gerek kalmadan da sürdürdünüz.

Bu sizin için bir endişe ise, o zaman düşünmelisiniz. Çoğu yazılım, tasarımcıların düşündüğünden daha uzun yaşıyor, özellikle de yazarken dikkate alınırsa.


4
Bunun hakkında emin değilim. J2EE için, 'standart' ve 'çalışma' kelimeleri, özellikle kullanılan j2ee sürümündeki değişiklikler de dahil olmak üzere, uzun yıllar boyunca desteklenecek / desteklenmesi gereken bir sistemden söz ettiğimizde, taşa yazılmamıştır.
magallanes

7
JSF ile olan (sınırlı) deneyimime göre bu argüman aslında geçerli değil. Uygulamaların JSF'nin bir sürümüyle takıldığını ve daha yeni bir sürüme aklı geçiş yolu bulunmadığını gördüm. Uygulama sunucusunun hala yürüttüğüne emin olun, ancak bu, fazla pahalı destek sözleşmelerinde yakacak büyük miktarda paranız yoksa alacağınız tüm destek ile ilgiliydi.
Jens Schauder,

@JensSchauder benim deneyimim sadece taşınabilir uygulamalar yazabilir, jsf sürümlerini geçirebilir ve yükseltebilir. Bu, spesifikasyonun bilinmesini ve uygulanmasını değil de kodlanmasını içerir. Hazırda Beklet eserleri yerine JPA kodlamasıyla çalışır. Bunu yıllardır yapıyorum.
Ocak'ta 15:30

14

Şimdi, lehte / aleyhte olanlar nelerdir? JSF kullanmamayı nasıl vurgulayabilirim? Benim önerim üzerinde JSF kullanmanın güçlü noktaları nelerdir?

Zaten eksileri hakkında karar vermiş gibisin ve bazılarına katılıyorum (yeterince düzen ve mantık ayırmıyor ve sonuçta ortaya çıkan HTML genellikle iğrenç), ama başkalarına katılmıyor (eğer kullanıyorsanız) Çok tavsiye edeceğim facelets, o zaman çıktı kesinlikle geçerli olmalı).

İşte bazı artılar:

  • Kutunun dışında çok fazla işlevsellik sunan PrimceFaces veya RichFaces gibi çok güçlü bileşen kütüphaneleri var. Gereksinimlerinizi karşılarlarsa, bunlar size çok fazla iş kazandırabilir (kendileri tarafından karşılanmayan pazarlık edilemez gereksinimleriniz varsa çok değil).
  • Kompozit Bileşenler, sayfalarınızı modülerleştirmek için çok temiz bir yol sunar
  • JSF, Java EE'nin geri kalanıyla çok iyi bütünleşir
  • Bileşen yeniden oluşturma yoluyla AJAX gerçekten kolay ve rahat

Ancak kesinlikle bu avantajların hiçbiri o kadar büyük değildir, JSF'yi ekibinizin zaten sahip olduğu başka bir çerçeve üzerinde kullanmanız gerekir.


1
Kimlikler değil, geçersiz nitelikler. Sekme görünümünde "rol" ve "genişletilmiş genişletilmiş" gibi. Bunu nasıl düzelteceğimi biliyor musun?
Bruno Schäpper

1
@ Boş: hayır, belki kullanmadığım veya yeni olan bir bileşenle farklı bir sorun gibi görünüyor. JSF bileşenlerinin HTML çıktısını, alternatif bir oluşturucu belirleyerek (ideal olarak varsayılan oluşturucunun yalnızca bir veya iki yöntemini geçersiz kılan) belirleyerek değiştirmek mümkündür, ancak elbette bu, yalnızca geçerli bir işaretleme elde etmek için yapmanız gereken bir şey değildir.
Michael Borgwardt

1
İğrenç HTML, kullanılan uygulamaya bağlıdır. Anladığım kadarıyla referans JSF uygulamasının hata ayıklama modu bu konuda özellikle kötü. Daha iyi HTML üretmek için daha iyi ayarları biliyor musunuz?

1
@ Thorbjørn Ravn Andersen Evet, geçersiz HTML ile ilgili sorun aslında PrimeFaces'ın sorunudur. Kullanıyoruz çünkü jQuery-UI üzerine kuruludur. Senin tavsiyen nedir; başka bir kütüphane mi kullanmalıyım? Gerçekten geçerli HTML'yi severim. Benim için sadece bir zorunluluktur.
Bruno Schäpper

1
Buradaki ilk sorumu tekrar ziyaret ederek, profesyonellerinizle ilgili bazı deneyimlerimi paylaşmak istiyorum: JSF ile çalışıyoruz ve bu deneyimle tekrar seçmeyeceğiz. Ancak hiçbir şey beklendiği gibi ve kutudan çıktığı gibi çalışır. Evet, güçlü kütüphaneler var. Ancak bütün bileşenlerimizi kendimiz yaptık, çünkü ihtiyaç duyduğumuz gibi çalışmazlar. Kaydırma işlemi sırasında tembel yükleme ile kendi 'DataTable'ımıza sahip olmamız ne kadar hızlıydı. Kompozit Bileşenler bizim için işe yaramadı, nedenini söyleyemem, onlar adamcağız sanırım. AJAX yeniden oluşturma aslında müşteri tarafı JS için bir acıdır.
Bruno Schäpper

9

JSF, bir standart olan Java için yeterli durumdaki web çerçevesidir; bu, birçok büyük tedarikçi (FOSS olanlar dahil) tarafından kutudan çıkarıldığı anlamına gelir. Güçlü 3. parti kütüphane desteğine sahiptir (PrimeFaces, IceFaces vb.). Bununla birlikte, durumlu olması nedeniyle (ve bir sürü başka şey) temel olarak 'ağı kırmak' yapar. Matt Raible'ın JVM tabanlı web çerçevelerini karşılaştırmasına bakın , JSF genellikle en sondan yaklaşıyor.

Düzenleme - JSF 2.2 ile - web'i bir zamanlar olduğu kadar kırmadığını iddia etmeye başlayabilirsiniz. Aslında, HTML5 entegrasyonunun hepsi korkunç değil :-).


1
Gerçekten de 'ağı kırıyor' .. Ve Matt Raible'ın karşılaştırması için teşekkürler, bunu bilmiyordu.
Bruno Schäpper

3
JSF’nin mutlaka durum bilgisi olmadığını unutmayın. Sıklıkla aynı fikirdeyim, fakat vatansız GET'e dayalı talepler için oldukça iyi bir destek var ve bir form kullanmazsanız o zaman devlet yok.
Arjan Tijms

Adil nokta Arjan, sanırım daha birçok devlet kullanımına rastladım.
Martijn Verburg


6

Eski bir JSP / Struts 1.0 uygulamamız vardı. Struts 2, JSF’yi ve Struts 1’den bu yana olanları ve Spring 3.0’a atladık. İstek listemize destek (ve aktif bir topluluk) vardır - Eclipse IDE, MVC ve REST. Ayrıca, vintage homegrown Javascript / ajax'ı jquery için dedik.

YMMV, ancak Bahar bizim için yumuşak bir göç oldu.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.