मैं JSF के बारे में पढ़ रहा था कि इसका UI फ्रेमवर्क और कुछ UI घटक प्रदान करता है। लेकिन यह jQueryUI, AngularJS, ExtJS, या यहां तक कि सादे HTML, CSS और जावास्क्रिप्ट से उपलब्ध घटकों की संख्या से बेहतर या अलग कैसे है।
किसी को JSF क्यों सीखना चाहिए?
मैं JSF के बारे में पढ़ रहा था कि इसका UI फ्रेमवर्क और कुछ UI घटक प्रदान करता है। लेकिन यह jQueryUI, AngularJS, ExtJS, या यहां तक कि सादे HTML, CSS और जावास्क्रिप्ट से उपलब्ध घटकों की संख्या से बेहतर या अलग कैसे है।
किसी को JSF क्यों सीखना चाहिए?
जवाबों:
जेएसएफ टू प्लेन जेएसपी / सर्वलेट / एचटीएमएल / सीएसएस / जेएस, जेएस की तरह है जैसा कि सादे जेएस: कम कोड के साथ अधिक करें। लेने के लिए 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 शामिल हैं ।
JSF को इसे बनाने के लिए बनाया गया था ताकि java दुकानों को jQuery जैसे सामान सीखने और जटिल JS बनाने की जरूरत न पड़े बल्कि एक शुद्ध जावा स्टैक पर ध्यान केंद्रित किया जा सके। ऐसी दुनिया में जहां समय पैसा है और बहुत सारे स्थान पहले से ही जावा विकास पर ध्यान केंद्रित कर रहे हैं, स्टैक में एक कम भाषा / टुकड़ा प्रशिक्षण और तेजी से बनाए रखता है और इस प्रकार सस्ता होता है।
मैं जोड़ता हूं कि जावास्क्रिप्ट बड़ी टीमों पर रखरखाव दुःस्वप्न बनना आसान है, खासकर अगर परियोजना के कुछ डेवलपर्स अत्यधिक वेब प्रेमी नहीं हैं।
जावास्क्रिप्ट और फ्रेमवर्क जैसे कि jQuery के साथ आपके पास पूर्ण लचीलापन और पूर्ण नियंत्रण है। एक्सट आदि के साथ आप बहुत नियंत्रण खो देते हैं और उसे रूपरेखा के अनुकूल होना चाहिए। जेएसएफ के साथ आप पूरी तरह से नियंत्रण खो देते हैं और पूरी तरह से रूपरेखा के अनुकूल होना चाहिए। आपको जीवन चक्र आदि में आमंत्रित किया जाता है और अंत में आपके पास कोई नियंत्रण नहीं होता है जब सर्वर पर कॉल किया जा सकता है और जहां नहीं। यदि आप 'विशेष' के रूप में कुछ करने के लिए हैं, तो आप बहुत कठिन स्थिति में हैं। और जेएसएफ दुनिया में भी ऐसी मूल बातें जैसे कि बहुरंगी तालिका प्रकार या फ़ील्ड जहां आप केवल सीमित वर्ण सेट कर सकते हैं (जैसे संख्या फ़ील्ड) को 'विशेष' माना जाता है।
हालाँकि, आपके पास जितना अधिक लचीलापन होगा, आप उतनी अधिक त्रुटियाँ या बुरे अभ्यास कर सकते हैं। उच्च लचीलापन केवल अत्यधिक बुद्धिमान प्रोग्रामर के साथ काम करता है, अन्य परियोजना को असहनीय दुःस्वप्न में बदल देंगे।
लेकिन, JSF और इसके सीमित लचीलेपन के साथ, कुछ करने के लिए हमेशा कुछ ही (या केवल एक ही) सही तरीका होता है। आप बहुत सीमित हैं, आप शॉर्टकट नहीं बना सकते हैं, आपको अधिक एक्सएमएल आदि लिखना होगा - लेकिन मानक के अनुकूल होने पर, कोड पर बेहतर नियंत्रण नहीं होगा जो अनुभवहीन या कम-कुशल प्रोग्रामर का उत्पादन करेगा। नतीजतन, बड़े निगम जेएसएफ से प्यार करते हैं क्योंकि यह उनके लिए 'सुरक्षित' है।
जब मैं GWT से JSF में चला गया, तो मैं चौंक गया, कितनी चीजें, जो कि मेरे लिए स्वाभाविक थीं, को अत्यधिक असामान्य माना जाता था और कितनी सरल चीजों को प्राप्त करना इतना कठिन था। क्या अधिक है, यहां तक कि सबसे छोटे बदलाव करना, जैसे कि जोड़ना: 'लेबल के बाद साइन, जो कि GWT / jQuery द्वारा संचालित ऐप में एक फ़ंक्शन जनरेटिंग लेबल को बदलना होगा, स्थानीयकृत गुणों के साथ दर्जनों फ़ाइलों को बदलने की आवश्यकता होती है, जिसे भी नहीं माना जाता था मेरे अलावा किसी को भी अजीब ...
JSF का उपयोग करने के लाभ केवल xhtml + css + js बनाने में नहीं हैं। कभी-कभी जेएसएफ आपके द्वारा उत्पन्न मार्कअप पर किसी भी घटक आधारित ढांचे की तरह प्रतिबंध लगाता है। लेकिन JSF सिर्फ उसी के लिए नहीं है, इसकी जीवन शैली बहुत मदद करती है। इनपुट को मान्य करने के बाद यह मॉडल को अपडेट कर सकता है और आपके सर्वर साइड बीन्स को बिना किसी प्रयास के सिंक कर सकता है। आप बस यह कहते हैं कि "उपयोगकर्ता जो कुछ भी यहां टाइप करता है, अगर यह संख्या है, तो जांच लें कि यदि हां, तो इसे प्रॉपर्टी YY में ऑब्जेक्ट XX में स्टोर करें" और JSF वह सब करेगा।
तो हाँ, आप अभी भी JQuery, JS, आदि का उपयोग कर सकते हैं, लेकिन JSF सर्वर साइड कोड लिखने की बात करने पर कई लाभ प्रदान करता है और आपको बहुत सारे बॉयलर प्लेट से बचाता है।
मैं दृढ़ता से असहमत हूं कि jsf कुछ भी जोड़ता है। यह केवल उपरि जोड़ता है। सर्वर पर ui सामान करना सबसे हास्यास्पद चीज है जिसे कभी भी सुना जाता है। और बड़ी टीमों पर जावास्क्रिप्ट महान काम करता है - इसका पुन: उपयोग कोड कहा जाता है।
बस कुछ jsp टैग में jquery लपेटो, आप सभी की जरूरत है और आप कर चुके हैं, और न ही। Thesckles और scalability के मुद्दों के साथ .jsf और richfaces को सहन करें।
जेएसएफ, स्प्रिंग एमवीसी, स्ट्रट्स, ग्रेल्स, JQuery, और एक्सटीजेएस के साथ काम करने के बाद मेरी राय है कि ग्रेल्स + एक्सटीजेएस एक शक्तिशाली संयोजन है।
मैं किसी भी दिन जेएसएफ पर ग्रेइल्स चुनूंगा। मुझे क्लाइंट साइड फ्रेमवर्क और लाइब्रेरी के रूप में एक्सटीजेएस की पूर्णता पसंद है, लेकिन यह JQuery की तुलना में एक स्टेटर लर्निंग कर्व के साथ आता है।
यहाँ jQuery और JSF के बीच सबसे बड़े अंतर हैं:
jQuery को कभी भी पूर्ण स्टैक वेबफ्रेमवर्क के रूप में उपयोग करने का इरादा नहीं था। इसका उद्देश्य निम्न-स्तरीय JS कोड को प्रतिस्थापित करना था, ताकि JS को कोड की कम लाइनों में आसान और अधिक शक्तिशाली बनाया जा सके।
और यह इस प्रकार ज्यादातर HTML तत्वों पर व्यवहार को जोड़ने के लिए इस्तेमाल किया जाना चाहिए।
एक बड़े वेब एप्लिकेशन के लिए एक्सटीजेएस फ्रेमवर्क का उपयोग करने के बाद, मुझे पता है कि इसका उपयोग करना कितना आसान है। ExtJS (Schena) MVC आर्किटेक्चर में (Oracle 11g) डेटाबेस इंटरैक्शन के लिए सबसे उपयुक्त है। दृश्य दृश्य / उपयोगकर्ता इंटरैक्शन के लिए था। नियंत्रक ने 'प्रोसेसिंग' और ट्रिगर्स को निर्दिष्ट किया जिसका उपयोग करने के लिए PLSQL पैकेज (CRUD के लिए एपीआई, SQL चयन क्वेरी आदि) की आवश्यकता होती है। मॉडल और स्टोर फ़ाइलों का उपयोग दर्शक / इनपुट के लिए डेटा आइटम को 'मैप' करने के लिए किया गया था।
एक्सटीजेएस गैर-डेटाबेस गहन वेब इंटरफेस के लिए उपयुक्त नहीं है - जहां कोणीय जेएस एक बेहतर फिट हो सकता है।