JSF 2.0 नुकसान? ईमानदारी से, जब आप मूल वेब डेवलपमेंट (HTML / CSS / JS, सर्वर साइड बनाम क्लाइंट साइड, इत्यादि) और बुनियादी जावा सर्वलेट एपीआई (अनुरोध / प्रतिक्रिया / सत्र ) के बारे में ठोस पृष्ठभूमि का ज्ञान नहीं रखते हैं, तो आप संबंधित स्टडी लर्निंग कर्व से अलग हैं। , अग्रेषण / पुनर्निर्देशन, आदि), कोई गंभीर नुकसान दिमाग में नहीं आता है। जेएसएफ को अपनी वर्तमान रिलीज़ में अभी भी कम उम्र के दौरान प्राप्त नकारात्मक छवि से छुटकारा पाने की आवश्यकता है, जिसके दौरान कई गंभीर नुकसान थे।
JSF 1.0 (मार्च 2004)
यह प्रारंभिक रिलीज थी। यह उन दोनों मुख्य और प्रदर्शन क्षेत्रों में बग्स से जुड़ा हुआ था जिनके बारे में आप जानना नहीं चाहते हैं। जब आप सहजता से अपेक्षा करते हैं, तो आपका वेबकैप हमेशा काम नहीं करता था। डेवलपर के रूप में आप मुश्किल से रोते हुए भागेंगे।
JSF 1.1 (मई 2004)
यह बगफिक्स रिलीज थी। प्रदर्शन में अभी भी बहुत सुधार नहीं हुआ था। एक प्रमुख नुकसान यह भी था: आप जेएसएफ पृष्ठ में HTML को त्रुटिपूर्ण रूप से इनलाइन नहीं कर सकते। सभी सादे वेनिला HTML जेएसएफ घटक पेड़ से पहले प्रदान किए जाते हैं । आपको सभी सादे वेनिला को <f:verbatim>
टैग में लपेटने की आवश्यकता है ताकि वे जेएसएफ घटक पेड़ में शामिल हो जाएं। हालाँकि यह विनिर्देशन के अनुसार था, इसे बहुत आलोचना मिली। Ao JSF / Facelets भी देखें : HTML टैग्स के साथ JSF / Facelets को मिलाना एक अच्छा विचार क्यों नहीं है?
JSF 1.2 (मई 2006)
यह रयान लुबके द्वारा नई JSF डेवलपमेंट टीम लीड की पहली रिलीज़ थी। नई टीम ने बहुत अच्छा काम किया। कल्पना में भी बदलाव थे। प्रमुख परिवर्तन दृश्य हैंडलिंग का सुधार था। यह न केवल जेएसपी से जेएसएफ को पूरी तरह से अलग कर देता है, इसलिए एक जेएसपी की तुलना में एक अलग दृश्य प्रौद्योगिकी का उपयोग कर सकता है, लेकिन इसने डेवलपर्स को जेएसएफ पृष्ठ में <f:verbatim>
टैग के साथ परेशान किए बिना सादे वेनिला एचटीएमएल को इनलाइन करने की अनुमति दी । नई टीम का एक और प्रमुख फोकस प्रदर्शन में सुधार था। सूर्य JSF संदर्भ कार्यान्वयन 1.2 (जो कूटनाम गया था के जीवनकाल के दौरान Mojarra निर्माण 1.2_08 के बाद से, 2008 के आसपास), व्यावहारिक रूप से हर निर्माण सामान्य (मामूली) bugfixes के बगल में (प्रमुख) प्रदर्शन में सुधार के साथ भेज दिया गया।
जेएसएफ 1.x (1.2 सहित) का एकमात्र गंभीर नुकसान अनुरोध और सत्र के दायरे में तथाकथित वार्तालाप गुंजाइश की कमी है । इसने डेवलपर्स को छिपे इनपुट तत्वों, अनावश्यक डीबी प्रश्नों और / या सत्र के स्कोप के साथ परेशान करने के लिए मजबूर किया, जब भी कोई व्यक्ति सत्यापन, रूपांतरण, मॉडल परिवर्तन और कार्रवाई के चालान को सफलतापूर्वक संसाधित करने के लिए बाद के अनुरोध में प्रारंभिक मॉडल डेटा को बनाए रखना चाहता है। जटिल वेबएप्लिकेशंस। एक 3 पार्टी पुस्तकालय को अपनाने से दर्द को नरम किया जा सकता है जो बाद के अनुरोध में आवश्यक डेटा को रखता है जैसे कि MyFaces Tomahawk <t:saveState>
घटक, JBoss सीम वार्तालाप गुंजाइश और MyFaces ऑर्केस्ट्रा बातचीत की रूपरेखा।
HTML / CSS शुद्धतावादियों के लिए एक और नुकसान यह है कि JSF जनरेट किए गए HTML आउटपुट में :
HTML तत्व की विशिष्टता को सुनिश्चित करने के लिए ID विभाजक वर्ण के रूप में बृहदान्त्र का उपयोग करता है id
, खासकर जब एक घटक दृश्य में एक से अधिक बार पुन: उपयोग किया जाता है (अस्थायी, पुनरावृत्त घटक, आदि) । क्योंकि सीएसएस पहचानकर्ताओं में यह एक अवैध चरित्र है, इसलिए आपको \
सीएसएस चयनकर्ताओं में कॉलोन से बचने के लिए उपयोग करने की आवश्यकता होगी , जिसके परिणामस्वरूप बदसूरत और विषम दिखने वाले चयनकर्ता #formId\:fieldId {}
या यहां तक कि #formId\3A fieldId {}
। यह भी देखें कि जेएसएफ जेनरेट किए गए HTML एलिमेंट आईडी को कोलन के साथ कैसे इस्तेमाल करें: "सीएसएस चयनकर्ताओं में"? हालाँकि, यदि आप शुद्ध नहीं हैं, तो डिफ़ॉल्ट रूप से भी पढ़ें , JSF अनुपयोगी आईडी बनाता है, जो वेब मानकों के css भाग के साथ असंगत हैं ।
इसके अलावा, JSF 1.x बॉक्स से बाहर अजाक्स सुविधाओं के साथ जहाज नहीं था। वास्तव में एक तकनीकी नुकसान नहीं है, लेकिन उस अवधि के दौरान वेब 2.0 प्रचार के कारण, यह एक कार्यात्मक नुकसान बन गया। Exadel Ajax4jsf है, जो अच्छी तरह से वर्षों के दौरान विकसित और के मुख्य हिस्सा बन गया था शुरू करने की जल्दी थी JBoss RichFaces घटक पुस्तकालय। एक अन्य घटक पुस्तकालयों को बिलियन अजाक्स शक्तियों के साथ भेज दिया गया था, जो कि अच्छी तरह से ज्ञात आईसीईफेसेस था ।
JSF 1.2 जीवनकाल के लगभग आधे रास्ते में, एक नई XML आधारित दृश्य तकनीक पेश की गई: फेसलेट्स । इसने JSP के ऊपर भारी लाभ की पेशकश की, विशेष रूप से टेम्प्लेटिंग के क्षेत्र में।
JSF 2.0 (जून 2009)
यह दूसरी बड़ी रिलीज़ थी, जो अजाक्स के साथ गुलज़ार के रूप में थी। बहुत सारे तकनीकी और कार्यात्मक परिवर्तन थे। JSP को फेसलेट्स द्वारा डिफॉल्ट व्यू तकनीक के रूप में बदल दिया गया है और शुद्ध XML (तथाकथित कंपोजिट घटकों ) का उपयोग करके कस्टम घटकों को बनाने के लिए फेसलेट्स का विस्तार किया गया । यह भी देखें कि जेएसएफ पर फेसलेट्स को जेएसएफ 2.0 से व्यू डेफिनेशन लैंग्वेज के रूप में क्यों पसंद किया जाता है?
अजाक्स शक्तियों को <f:ajax>
घटक के स्वाद में पेश किया गया था जिसमें अजाक्स 4jsf के साथ बहुत समानताएं हैं। टिप्पणियों और अधिवेशन-ओवर-कॉन्फ़िगरेशन एन्हांसमेंट को यथासंभव वर्बोज़ फ़ाइल को मारने के लिए पेश किया गया था faces-config.xml
। साथ ही, डिफ़ॉल्ट नामकरण कंटेनर ID विभाजक वर्ण :
विन्यास योग्य हो गया, ताकि HTML / CSS शुद्धतावादी राहत की सांस ले सकें। तुम सब करने की ज़रूरत है के रूप में यह परिभाषित करने के लिए है init-param
में web.xml
नाम के साथ javax.faces.SEPARATOR_CHAR
कि आप चरित्र अपने आप को इस तरह के रूप उपयोग नहीं कर रहे कहीं भी ग्राहक आईडी के दशक में, और यह सुनिश्चित करना -
।
अंतिम लेकिन कम से कम, एक नया दायरा पेश नहीं किया गया था, दृश्य क्षेत्र। इसने पहले वर्णित के रूप में एक और प्रमुख JSF 1.x नुकसान को समाप्त कर दिया। आप सिर्फ बीन @ViewScoped
को बाद में (संवादी) अनुरोधों में डेटा को बनाए रखने के लिए सभी तरीकों को परेशान किए बिना बातचीत की गुंजाइश को सक्षम करने की घोषणा करते हैं। @ViewScoped
जब तक आप बाद में एक ही दृश्य (स्वतंत्र रूप से खोले गए ब्राउज़र टैब / विंडो!) को या तो सिंक्रोनाइज़ या असिंक्रोनस (Ajax) के रूप में सबमिट कर रहे हैं, तब तक एक बीन रहेगा। यह भी देखें कामयाब सेम में देखें और अनुरोध दायरे के बीच अंतर और कैसे सही सेम दायरा चुनने के लिए?
यद्यपि व्यावहारिक रूप से JSF 1.x के सभी नुकसानों को समाप्त कर दिया गया था, लेकिन JSF 2.0 विशिष्ट बग हैं जो शोस्टॉपर बन सकते हैं। @ViewScoped
टैग संचालकों में विफल रहता है आंशिक राज्य की बचत में एक चिकन अंडे समस्या के कारण। यह JSF 2.2 में तय किया गया है और Mojrara 2.1.18 में वापस लाया गया है। साथ ही HTML5 जैसी कस्टम विशेषताएँ पास करनाdata-xxx
समर्थित नहीं है। यह जेएसएफ 2.2 में नए पस्चथ्रू तत्वों / विशेषताओं विशेषता द्वारा तय किया गया है। इसके अलावा जेएसएफ कार्यान्वयन मोजार्रा के मुद्दों का अपना समूह है । अपेक्षाकृत उनमें से बहुत से, कभी-कभी अनजाने में किए गए व्यवहार से<ui:repeat>
संबंधित होते हैं , नए आंशिक राज्य बचत कार्यान्वयन और खराब कार्यान्वित फ्लैश स्कोप । उनमें से अधिकांश मोअज़रा 2.2.x संस्करण में तय किए गए हैं।
JSF और jQuery UI के आधार पर, JSF 2.0 समय के आसपास, प्राइमफेस को पेश किया गया था। यह सबसे लोकप्रिय जेएसएफ घटक पुस्तकालय बन गया।
JSF 2.2 (मई 2013)
JSF 2.2 की शुरुआत के साथ, HTML5 को buzzword के रूप में उपयोग किया गया था, हालांकि यह तकनीकी रूप से सभी पुराने JSF संस्करणों में समर्थित था। JavaServer Faces 2.2 और HTML5 समर्थन भी देखें , XHTML अभी भी क्यों इस्तेमाल किया जा रहा है । सबसे महत्वपूर्ण नई JSF 2.2 फीचर कस्टम घटक विशेषताओं के लिए समर्थन है, जिससे कस्टम टेबललेस रेडियो बटन समूहों जैसी संभावनाओं की दुनिया खुल रही है ।
कार्यान्वयन के अलावा विशिष्ट कीड़े और कुछ "कष्टप्रद छोटी चीजें" जैसे कि एक मान्य / कनवर्टर (पहले से ही जेएसएफ 2.3 में तय) में एक ईजेबी को इंजेक्ट करने में असमर्थता, जेएसएफ 2.2 विनिर्देश में वास्तव में बड़े नुकसान नहीं हैं।
घटक MVC बनाम अनुरोध आधारित MVC आधारित है
कुछ लोग यह चुन सकते हैं कि JSF का प्रमुख नुकसान यह है कि यह उत्पन्न HTML / CSS / JS पर बहुत कम सूक्ष्म नियंत्रण देता है। यह जेएसएफ का अपना नहीं है, यह सिर्फ इसलिए है क्योंकि यह एक घटक आधारित एमवीसी फ्रेमवर्क है, न कि अनुरोध (एक्शन) आधारित एमवीसी फ्रेमवर्क। यदि MVC फ्रेमवर्क पर विचार करते समय HTML / CSS / JS को नियंत्रित करने की एक उच्च डिग्री आपकी प्रमुख आवश्यकता है, तो आपको पहले से ही एक घटक आधारित MVC फ्रेमवर्क नहीं, बल्कि स्प्रिंग MVC जैसे MVC फ्रेमवर्क पर आधारित अनुरोध पर देखना चाहिए । आपको केवल इस बात का ध्यान रखना है कि आपको वह सब लिखना होगा जो HTML / CSS / JS बॉयलरप्लेट स्वयं करता है। अनुरोध MVC और घटक MVC के बीच अंतर भी देखें ।
यह सभी देखें: