Separation of Concerns – यदि हम Java Programming Language का प्रयोग करते हुए Web Based Applications Develop करना चाहें, तो JSP एक Integral Part की तरह Use होता है। यानी बिना JSP का प्रयोग किए हुए हम पूरे Control के साथ Java Based Web Applications Develop नहीं कर सकते। क्योंकि JSP का प्रयोग करके ही हम Business Logics को Presentation Logics से अलग रखने की क्षमता प्राप्त करते हैं। साथ ही JSP हमें ऐसे Frontend Applications Develop करने की सुविधा Provide करता है, जिन्हें Web यानी Internet के माध्यम से Deploy किया जा सकता है।
Sun Microsystems ने June 1999 में Announcement के अनुसार Java 2 Platform को मूल रूप से तीन Editions J2SE, J2ME व J2EE में Divide किया गया था, जो कि अलग-अलग Hardware Deployment Platforms के आधार पर Categorized थे।
Java Runtime Environment (JRE) से सम्बंधित सभी Core Classes, Java Language Specification, Standard Networking, Utility व AWT, Swing सहित सभी ऐसी Classes जिनकी जरूरत लगभग सभी प्रकार के Java Applications को होती है, को Java 2 Standard Edition यानी J2SE नाम से Categorize किया गया। J2SE के अन्तर्गत मूल रूप से उन Classes को रखा गया था, जिनकी जरूरत Microsoft Windows, Apple Macintosh व Linux आधारित Desktop Applications को Develop करने के लिए होती थी।
साथ ही विभिन्न प्रकार के Handheld Devices जैसे कि Mobile Phones, PDA, Tablet PCs आदि के लिए Java की जिन Core Classes को Categorize किया गया था, उन्हें J2ME यानी Java 2 Micro Edition नाम दिया गया था। इन Java Classes को सामान्यत: ऐसे Devices के लिए Categorized किया गया था, जो कि Java के “Write Once, Run Anywhere” के सिद्धांत को Follow नहीं करते थे। यानी इन Classes का प्रयोग करके जिस किसी एक प्रकार की Device के लिए Application Software Develop किया जाता था, उसी Application को किसी दूसरे Device पर समान प्रकार से उपयोग में नहीं लिया जा सकता था, जब तक कि उसी Application को उस दूसरे Device पर Run करने के लिए फिर से Compile न किया जाए।
जबकि J2EE यानी Java 2 Enterprise Edition, J2SE व J2ME दोनों के बिल्कुल विपरीत सभी Core Java Classes के साथ Extra Extension Classes युक्त था, ताकि Java आधारित Enterprise Level के बडे Applications Develop किए जा सकें, जो कि Internet व Web के माध्यम से Distributed तरीके से Run हों।
उदाहरण के लिए J2EE में ऐसी Classes Included हैं जो Enterprise JavaBeans को Support करते हैं। जिनकी वजह से ऐसे Standard Abstraction का Set प्राप्त होता है, जिनका प्रयोग करके हम Corporate Data Stores जैसे कि Resource Pooling व Automatic Transaction Management Support के साथ Database व Directory Servers को Access करने की सुविधा प्राप्त कर सकते हैं।
हालांकि Large-Scale Enterprise Applications को Design, Construct व Maintain करना एक बहुत ही ज्यादा जटिल काम होता है, इसलिए Sun Microsystems ने J2EE के साथ ही Java आधारित Enterprise Level Application Develop करने के लिए एक Guideline भी Provide किया था, जिसे J2EE Application Model के नाम से जाना जाता है। यही Module किसी Java आधारित Application का Base Software Architecture Define करता है।
J2EE Application Model का Key Concept ये है कि Application व End User के बीच Data Delivery के लिए Web को एक मुख्य Mechanism की तरह Use किया जाए व Enterprise Software के Frontend यानी Primary User Interface के रूप में Web Browser को Use किया जाए। क्योंकि Web Browser एक ऐसा Client Software है जो Platform व Hardware Architecture दोनों से पूरी तरह से Independent है और Network से Data Access करने के लिए एक Cross-Platform de facto Standard की तरह Implement किया गया है।
यानी इस बात से कोई फर्क नहीं पडता कि हम Mobile Phone के Web Browser पर किसी Web Application को Open कर रहे हैं या किसी Laptop अथवा Desktop PC पर, यदि हम Client के रूप में Web Browser को Use कर रहे हैं, तो हम किसी भी Device पर किसी भी Web Application को Access कर सकते हैं, क्योंकि W3C द्वारा Web Technology को एक Standard Technology की तरह Develop किया गया है, जिसकी वजह से किसी भी Device के लिए Develop किया गया Web Browser Platform (Operating System) तथा Hardware Architecture (Processor Architecture) पर Depend नहीं होता। जिसकी वजह से Different Devices पर Installed Web Browser भी समान प्रकार से काम करता है।
साथ ही Web Browser को Client Application की तरह Use करने के कारण Web Application में जब भी कोई Modification या Update किया जाता है, उस Updated Application को केवल Web Server पर ही Deploy किया जाता है। परिणामस्वरूप सभी Users बिना किसी Extra Effort के Application के Latest Updated Version को Use करने लगते हैं। यानी End User को Upgraded Web Application का Latest Version Use करने के लिए नया Application Install अथवा Update करने जैसे से किसी प्रकार के Action को Perform करने की जरूरत नहीं होती।
J2EE Specification के अनुसार Java आधारित Web Based Applications Develop करने के लिए Servlets व JSP दोनों की जरूरत होती है और दोनों ही Technologies का प्रयोग करके Dynamically HTML Page Generate किया जा सकता है, जो कि User अपने Web Browser पर देखता है। लेकिन केवल JSP ही User को दिखाई देने वाले Presentation Logic को Dynamically Generate होने वाले Business Logic Data से पूरी तरह से Separate रखने में सक्षम है।
Separation का मतलब ये है कि Web Application से Interact करने के लिए User हेतु जो User Interface Design किया जाता है, उसे किसी Frontend Designer द्वारा बिना इस बात की जानकारी हुए Develop किया जा सकता है कि उसमें कौनसा Data किस तरह से Place होगा। क्योंकि Data को Dynamically Generate करने का काम कोई अन्य Programmer करता है, जिसे इस बात से कोई मतलब नहीं होता कि उसके द्वारा Dynamically Generate होने वाले Data को Frontend Designer द्वारा किस तरह से Use करते हुए Render किया जाएगा।
यानी यदि हम Web Application को एक 3-Tier Architecture (Frontend User Interface, Middleware Business Logics, Backend Database) के रूप में Identify करें, तो Separation के कारण तीनों ही Tiers एक दूसरे से पूरी तरह से अलग होते हैं जिन्हें अलग-अलग Developers द्वारा स्वतंत्र रूप से Develop किया जा सकता है।
जब हम Java Technology का प्रयोग करते हुए ये Separation प्राप्त करना चाहते हैं, तब Frontend User Interface के रूप में HTML Webpage अपना Role Play करता है, जो कि पूरी तरह से HTML, CSS व JavaScript Technologies पर आधारित होता है जबकि Middleware Business Logics पूरी तरह से Java Programming Language Codes पर आधारित होता है और Backend के रूप में RDBMS Related SQL जैसी Programming Language का प्रयोग किया जाता है।
एक Business Application के तीनों ही हिस्सों का इस प्रकार से Separation होने की वजह से इस तरह के Business Applications को Develop, Upgrade व Maintain करना काफी आसान हो जाता है। क्योंकि यदि इस प्रकार के किसी Application के Frontend User Interface को Modify करना हो, तो Middleware या Backend में किसी प्रकार का कोई Modification करना जरूरी नहीं होता। इसी तरह से यदि Business Logics Change होने के कारण Middleware की किसी Calculation में कोई Change करना हो, तो Frontend User Interface या Backend Database में किसी प्रकार का Change करना जरूरी नहीं होता।
यानी जब हम J2EE का प्रयोग करते हुए 2-Tier Architecture (Client/Server Architecture) या 3-Tier Architecture को Use करते हैं, तब हम ज्यादा बेहतर तरीके से एक Large-Scale Database Application Design व Construct करने की Capability प्राप्त कर लेते हैं और J2EE हमें इस प्रकार का Application Design करने के लिए JSP व Servlets नाम की दो Technologies Provide करता है, जहां JSP, Frontend User Interface पर Dynamically Data Place करते हुए Presentation Layer को Define करता है, जबकि Servlets का प्रयोग करते हुए हम हमारे Application के Middleware Business Layer को Implement करते हैं।
हालांकि यदि हम चाहें तो JSP का प्रयोग करते हुए हम Servlets द्वारा Fulfill की जाने वाली जरूरतों को तथा Servlets का प्रयोग करते हुए JSP द्वारा Fulfill की जाने वाली जरूरतों को भी पूरा कर सकते हैं, लेकिन ऐसा करने पर Separation का Concept Violate हो जाता है। परिणामस्वरूप ऐसे Applications को Upgrade व Maintain करना मुश्किल हो जाता है। एक JSP Page की Working को हम निम्न चित्रानुसार ज्यादा बेहतर तरीके से Represent कर सकते हैं-
चूंकि वर्तमान समय में लगभग सभी Web Servers JSP व Servlets को पूरी तरह से Support करते हैं, जो इसी बात का Indication है कि J2EE आधारित JSP व Servlets नाम की ये दोनों Technologies लम्बे समय तक Market में Exist रहने वाली हैं। इसलिए इन दोनों Technologies को बेहतर तरीके से सीखना व समझना, J2EE Based Applications Develop करने के लिए बहुत जरूरी हैं क्योंकि आज भी J2EE सबसे ज्यादा Long Term व High Paying Job Provide करता है।