JSF की क्या आवश्यकता है, जब UI को jQuery और AngularJS जैसे जावास्क्रिप्ट पुस्तकालयों के साथ प्राप्त किया जा सकता है


116

मैं JSF के बारे में पढ़ रहा था कि इसका UI फ्रेमवर्क और कुछ UI घटक प्रदान करता है। लेकिन यह jQueryUI, AngularJS, ExtJS, या यहां तक ​​कि सादे HTML, CSS और जावास्क्रिप्ट से उपलब्ध घटकों की संख्या से बेहतर या अलग कैसे है।

किसी को JSF क्यों सीखना चाहिए?


3
सर्वर जनरेट किए गए html के फायदे: खोज इंजन खोज क्षमता, प्राधिकरण के आधार पर विचारों को छिपाएं। अन्यथा, हमने इसे शुद्ध अजाक्स उई के लिए छोड़ दिया है।
नील मैकगिगन

5
मैंने AngularJS + RESTful बैकेंड के पक्ष में JSF को भी छोड़ दिया है। (सेब और संतरे, लेकिन कोणीय इतना अच्छा है कि मुझे JSF के कई लाभों की आवश्यकता नहीं है)
arg20

JSF एक घटक आधारित MVC फ्रेमवर्क है जो सर्वलेट एपीआई के शीर्ष पर बनाया गया है, और टैगलिब के माध्यम से घटक प्रदान करता है जिसका उपयोग जेएसपी या किसी अन्य जावा आधारित दृश्य प्रौद्योगिकी जैसे कि फेसलेट में किया जा सकता है।
दिव्येश कंजरिया

जवाबों:


154

जेएसएफ टू प्लेन जेएसपी / सर्वलेट / एचटीएमएल / सीएसएस / जेएस, जेएस की तरह है जैसा कि सादे जेएस: कम कोड के साथ अधिक करें। लेने के लिए PrimeFaces (jQuery + jQuery यूआई आधारित) एक उदाहरण के रूप में, अपने के माध्यम से ब्राउज़ शोकेस पूरा कोड उदाहरण देखने के लिए। BootsFaces (jQuery + बूटस्ट्रैप UI आधारित) में पूर्ण कोड उदाहरणों के साथ एक शोकेस भी है । यदि आप उन उदाहरणों का बारीकी से अध्ययन करते हैं, तो आप देखेंगे कि आपको मूल रूप से मॉडल के रूप में एक साधारण जावबीन वर्ग और देखने के रूप में एक एक्सएचटीएमएल फ़ाइल की आवश्यकता है।

ध्यान दें कि आपको JSF को अकेले HTML / CSS / JS के प्रतिस्थापन के रूप में नहीं देखना चाहिए, आपको सर्वर साइड पार्ट को भी ध्यान में रखना चाहिए (विशेषकर: JSP / सर्वलेट)। जेएसएफ HTTP अनुरोध मापदंडों को इकट्ठा करने, उन्हें परिवर्तित करने / मान्य करने, मॉडल मूल्यों को अपडेट करने, व्यापार करने के लिए सही जावा विधि को निष्पादित करने और HTML / CSS / JS बॉयलरप्लेट कोड को उत्पन्न करने के सभी बॉयलरप्लेट की आवश्यकता को हटाता है। JSF के साथ आप मूल रूप से XHTML पृष्ठ को व्यू डेफिनिशन और मॉडल परिभाषा के रूप में एक जावाबीन वर्ग के साथ समाप्त करते हैं। इससे विकास को गति मिलती है।

हर घटक आधारित वेब MVC फ्रेमवर्क के साथ, आपके पास प्रदान किए गए HTML / CSS / JS पर JSF का कम सूक्ष्म नियंत्रण है। कस्टम JS कोड जोड़ना इतना आसान नहीं है क्योंकि आपको JSF व्यू स्टेट को सर्वर साइड में खाते में लेना है (जैसे JS साइड में एक अक्षम बटन को सक्षम करना) JSF साइड में बटन को सक्षम नहीं करेगा, जो बदले में है भारी सुरक्षा लाभ)। यदि वह हालांकि एक प्रमुख शोस्टॉपर है, तो स्प्रिंग एमवीसी जैसे एक्शन आधारित वेब एमवीसी ढांचे की तलाश करें । आप केवल इस बात को ध्यान में रखेंगे कि आपको वह सब HTML / CSS / JS कोड (और XSS, CSRF और DOM-मैनिपुलेशन के खिलाफ रोकथाम) खुद लिखना है । इसके अलावा अगर आप फेसलेट्स से जेएसपी पर वापस आते हैं, तो आपको उन्नत टेम्प्लेटिंग क्षमताएं भी याद होंगी।

दूसरी ओर, यदि आपके पास एक बड़ा JSP / सर्वलेट / HTML / CSS / JS / jQuery आधारित वेबसाइट है और आप दोहराया JSP / सर्वलेट / HTML / CSS / JS / jQuery बॉयलरप्लेट कोड को पुन: उपयोग करने वाले घटकों में फिर से भरना चाहते हैं, तो समाधानों में से एक JSF होगा। कस्टम टेम्प्लेट, टैगफाइल्स और घटक इसमें सहायता कर सकते हैं। उस परिप्रेक्ष्य में, JSF JSP / सर्वलेट / HTML / CSS / JS / jQuery से ऊपर है (और यही कारण है कि JSF में गोता लगाने से पहले उन मूल बातों को समझना बहुत महत्वपूर्ण है)।

आप यहां एक वास्तविक विश्व किकऑफ JSF आधारित परियोजना पा सकते हैं: Java EE Kickoff App । आप देखेंगे कि इसमें जेएसएफ के बगल में अच्छा HTML5 , CSS3 और jQuery शामिल हैं

यह सभी देखें:


15
कम कोड के साथ अधिक करें? लेकिन अधिक xml के साथ ... क्या एक व्यापार है ... इसके अलावा, यह आपको लचीलेपन को
लूटता

33
JSF 2.0+ में, xml आवश्यक नहीं है।
बजे Cagatay Civici

5
हमारे पास JSF 2.0
VdeX

1
ऐसा लगता है कि व्यवसाय / नियंत्रक परत और दृश्य के बीच स्पष्ट परिशोधन नहीं है, जेएसएफ के साथ, जितना कि सर्वर पर दृश्य उत्पन्न होता है। मैं समझता हूं कि सब कुछ ब्राउज़र पर भेजे जाने से पहले सर्वर पर संकलित हो जाता है, लेकिन मैं अपने जावा ऑब्जेक्ट रिटर्निंग डेटा को पसंद करता हूं जो कि रेंडरिंग लॉजिक / डेटा भेजने के बजाय दृश्य रेंडर करता है।
रिक

1
जेएसएफ सहमत है कि HTML पर शक्तिशाली नियंत्रण के साथ सर्वर साइड चीज है।
प्लेन_ड्यू_सालिंग_आलोन

28

JSF को इसे बनाने के लिए बनाया गया था ताकि java दुकानों को jQuery जैसे सामान सीखने और जटिल JS बनाने की जरूरत न पड़े बल्कि एक शुद्ध जावा स्टैक पर ध्यान केंद्रित किया जा सके। ऐसी दुनिया में जहां समय पैसा है और बहुत सारे स्थान पहले से ही जावा विकास पर ध्यान केंद्रित कर रहे हैं, स्टैक में एक कम भाषा / टुकड़ा प्रशिक्षण और तेजी से बनाए रखता है और इस प्रकार सस्ता होता है।

मैं जोड़ता हूं कि जावास्क्रिप्ट बड़ी टीमों पर रखरखाव दुःस्वप्न बनना आसान है, खासकर अगर परियोजना के कुछ डेवलपर्स अत्यधिक वेब प्रेमी नहीं हैं।


तो अगर मैं JQuery JS आदि के साथ बहुत सहज हूं तो मुझे JSF पर ध्यान केंद्रित करने की आवश्यकता नहीं है?
सुशील भरवानी

2
यह सब उस समस्या पर निर्भर करता है जिसे आप हल करने की कोशिश कर रहे हैं और आप किस टीम के साथ इसे हल कर रहे हैं।
एंड्रयू व्हाइट

1
मैं टीम पर सहमत हूं, लेकिन मुझे यह जानने में दिलचस्पी है कि जेएसएफ हल कर सकता है और जेएसई आदि को अलग नहीं कर सकता। बस JSF सीखने के लिए प्रेरणा बनाने की कोशिश कर रहा है।
सुशील भरवानी

1
कोई नहीं, यह बस उन्हीं समस्याओं को हल करने का एक अलग तरीका प्रदान करता है।
एंड्रयू व्हाइट

8
भले ही आप वास्तव में JQuery के साथ सहज हों, JSF अभी भी वास्तव में उपयोगी है। यह सर्वर साइड कोड को क्लाइंट साइड अभ्यावेदन से जोड़ने का एक आसान तरीका प्रदान करता है। कुछ फ़ेसलेट्स 'कम्पोजिट कंपोनेंट्स' केवल HTML और JS (JQuery सहित) के आसपास एक पतला आवरण है। वे निर्माण करने के लिए एक हवा हैं और सामान्य रूप से पूरे क्लाइंट-सर्वर साइड कनेक्शन को आसान बनाते हैं।
अर्जन टिजम्स

23

जावास्क्रिप्ट और फ्रेमवर्क जैसे कि jQuery के साथ आपके पास पूर्ण लचीलापन और पूर्ण नियंत्रण है। एक्सट आदि के साथ आप बहुत नियंत्रण खो देते हैं और उसे रूपरेखा के अनुकूल होना चाहिए। जेएसएफ के साथ आप पूरी तरह से नियंत्रण खो देते हैं और पूरी तरह से रूपरेखा के अनुकूल होना चाहिए। आपको जीवन चक्र आदि में आमंत्रित किया जाता है और अंत में आपके पास कोई नियंत्रण नहीं होता है जब सर्वर पर कॉल किया जा सकता है और जहां नहीं। यदि आप 'विशेष' के रूप में कुछ करने के लिए हैं, तो आप बहुत कठिन स्थिति में हैं। और जेएसएफ दुनिया में भी ऐसी मूल बातें जैसे कि बहुरंगी तालिका प्रकार या फ़ील्ड जहां आप केवल सीमित वर्ण सेट कर सकते हैं (जैसे संख्या फ़ील्ड) को 'विशेष' माना जाता है।

हालाँकि, आपके पास जितना अधिक लचीलापन होगा, आप उतनी अधिक त्रुटियाँ या बुरे अभ्यास कर सकते हैं। उच्च लचीलापन केवल अत्यधिक बुद्धिमान प्रोग्रामर के साथ काम करता है, अन्य परियोजना को असहनीय दुःस्वप्न में बदल देंगे।

लेकिन, JSF और इसके सीमित लचीलेपन के साथ, कुछ करने के लिए हमेशा कुछ ही (या केवल एक ही) सही तरीका होता है। आप बहुत सीमित हैं, आप शॉर्टकट नहीं बना सकते हैं, आपको अधिक एक्सएमएल आदि लिखना होगा - लेकिन मानक के अनुकूल होने पर, कोड पर बेहतर नियंत्रण नहीं होगा जो अनुभवहीन या कम-कुशल प्रोग्रामर का उत्पादन करेगा। नतीजतन, बड़े निगम जेएसएफ से प्यार करते हैं क्योंकि यह उनके लिए 'सुरक्षित' है।

जब मैं GWT से JSF में चला गया, तो मैं चौंक गया, कितनी चीजें, जो कि मेरे लिए स्वाभाविक थीं, को अत्यधिक असामान्य माना जाता था और कितनी सरल चीजों को प्राप्त करना इतना कठिन था। क्या अधिक है, यहां तक ​​कि सबसे छोटे बदलाव करना, जैसे कि जोड़ना: 'लेबल के बाद साइन, जो कि GWT / jQuery द्वारा संचालित ऐप में एक फ़ंक्शन जनरेटिंग लेबल को बदलना होगा, स्थानीयकृत गुणों के साथ दर्जनों फ़ाइलों को बदलने की आवश्यकता होती है, जिसे भी नहीं माना जाता था मेरे अलावा किसी को भी अजीब ...


7
PrimeFaces jQuery पर आधारित है, इसलिए आपके पास क्लाइंट की तरफ बहुत सारे लचीलेपन हैं, साथ ही PrimeFaces घटकों को क्लाइंट और सर्वर साइड पर कई हुक प्रदान करते हैं, जैसे कि इवेंट कॉलबैक आपके लिए कस्टमाइज़ करने के लिए। जावास्क्रिप्ट एपीआई को ओवरराइड और सीएसएस के साथ-साथ अनुकूलित लुक के लिए भी किया जा सकता है। : लेबल को अधिक jQuery के अनुकूल चरित्र के लिए web.xml में वैश्विक रूप से कॉन्फ़िगर किया जा सकता है।
Cagatay Civici

1
माना। सामान्य नियम यह है: किसी भी फ्रेमवर्क का उपयोग करने के लिए उन्नत जावास्क्रिप्ट प्रोग्रामिंग की आवश्यकता होती है और इसे बनाए रखना कठिन होगा, लेकिन यह अधिक से अधिक शक्ति और जटिलता की अनुमति देता है, जबकि फ्रेमवर्क पर निर्भरता निर्माण और बनाए रखना आसान होगा, लेकिन ऐप की संभावित क्षमता को सीमित कर देगा।
केटीस

10

JSF का उपयोग करने के लाभ केवल xhtml + css + js बनाने में नहीं हैं। कभी-कभी जेएसएफ आपके द्वारा उत्पन्न मार्कअप पर किसी भी घटक आधारित ढांचे की तरह प्रतिबंध लगाता है। लेकिन JSF सिर्फ उसी के लिए नहीं है, इसकी जीवन शैली बहुत मदद करती है। इनपुट को मान्य करने के बाद यह मॉडल को अपडेट कर सकता है और आपके सर्वर साइड बीन्स को बिना किसी प्रयास के सिंक कर सकता है। आप बस यह कहते हैं कि "उपयोगकर्ता जो कुछ भी यहां टाइप करता है, अगर यह संख्या है, तो जांच लें कि यदि हां, तो इसे प्रॉपर्टी YY में ऑब्जेक्ट XX में स्टोर करें" और JSF वह सब करेगा।

तो हाँ, आप अभी भी JQuery, JS, आदि का उपयोग कर सकते हैं, लेकिन JSF सर्वर साइड कोड लिखने की बात करने पर कई लाभ प्रदान करता है और आपको बहुत सारे बॉयलर प्लेट से बचाता है।


9

मैं दृढ़ता से असहमत हूं कि jsf कुछ भी जोड़ता है। यह केवल उपरि जोड़ता है। सर्वर पर ui सामान करना सबसे हास्यास्पद चीज है जिसे कभी भी सुना जाता है। और बड़ी टीमों पर जावास्क्रिप्ट महान काम करता है - इसका पुन: उपयोग कोड कहा जाता है।

बस कुछ jsp टैग में jquery लपेटो, आप सभी की जरूरत है और आप कर चुके हैं, और न ही। Thesckles और scalability के मुद्दों के साथ .jsf और richfaces को सहन करें।


14
JSF फॉर्म आधारित अनुप्रयोगों के लिए तैयार है। jQuery अच्छा है (हेक, लोकप्रिय जेएसएफ घटक पुस्तकालयों जैसे कि प्राइमफेस, रिचफेसेस और आइसफ़ॉस के बहुत सारे कवर के तहत भी इसका उपयोग करते हैं), लेकिन jQuery किसी भी तरह से सर्वर साइड में प्रोसेसिंग फॉर्म सबमिट को सरल नहीं करता है। सादे JSP / सर्वलेट का उपयोग करने से केवल भयानक बॉयलरप्लेट कोड होगा। फिर, JSF न केवल HTML / CSS / JS है, बल्कि JSP / सर्वलेट भी है।
बालुसक

2
मुझे लगता है कि यदि आप विशेष रूप से JSF पृष्ठ पर और विशेष रूप से JSF पृष्ठ के जीवन चक्र पर अधिक पढ़ते हैं, तो आप अपना विचार बदल सकते हैं। तो फिर, आप नहीं कर सकते हैं।
अहमद अनवर

5

जेएसएफ, स्प्रिंग एमवीसी, स्ट्रट्स, ग्रेल्स, JQuery, और एक्सटीजेएस के साथ काम करने के बाद मेरी राय है कि ग्रेल्स + एक्सटीजेएस एक शक्तिशाली संयोजन है।

मैं किसी भी दिन जेएसएफ पर ग्रेइल्स चुनूंगा। मुझे क्लाइंट साइड फ्रेमवर्क और लाइब्रेरी के रूप में एक्सटीजेएस की पूर्णता पसंद है, लेकिन यह JQuery की तुलना में एक स्टेटर लर्निंग कर्व के साथ आता है।


3

यहाँ jQuery और JSF के बीच सबसे बड़े अंतर हैं:

  • कोई MVC आर्किटेक्चर नहीं
  • कोई राज्य नियंत्रण (सत्र या बातचीत में स्टोर की तारीख, ऑटो-सफाई, आदि)
  • नहीं (डिफ़ॉल्ट) सत्यापन पुस्तकालय
  • कोई अस्थायी पुस्तकालय नहीं
  • कोई उन्नत नेविगेशन / रूटिंग नहीं
  • ग्राहक की ओर

jQuery को कभी भी पूर्ण स्टैक वेबफ्रेमवर्क के रूप में उपयोग करने का इरादा नहीं था। इसका उद्देश्य निम्न-स्तरीय JS कोड को प्रतिस्थापित करना था, ताकि JS को कोड की कम लाइनों में आसान और अधिक शक्तिशाली बनाया जा सके।

और यह इस प्रकार ज्यादातर HTML तत्वों पर व्यवहार को जोड़ने के लिए इस्तेमाल किया जाना चाहिए।


2

एक बड़े वेब एप्लिकेशन के लिए एक्सटीजेएस फ्रेमवर्क का उपयोग करने के बाद, मुझे पता है कि इसका उपयोग करना कितना आसान है। ExtJS (Schena) MVC आर्किटेक्चर में (Oracle 11g) डेटाबेस इंटरैक्शन के लिए सबसे उपयुक्त है। दृश्य दृश्य / उपयोगकर्ता इंटरैक्शन के लिए था। नियंत्रक ने 'प्रोसेसिंग' और ट्रिगर्स को निर्दिष्ट किया जिसका उपयोग करने के लिए PLSQL पैकेज (CRUD के लिए एपीआई, SQL चयन क्वेरी आदि) की आवश्यकता होती है। मॉडल और स्टोर फ़ाइलों का उपयोग दर्शक / इनपुट के लिए डेटा आइटम को 'मैप' करने के लिए किया गया था।

एक्सटीजेएस गैर-डेटाबेस गहन वेब इंटरफेस के लिए उपयुक्त नहीं है - जहां कोणीय जेएस एक बेहतर फिट हो सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.