Benefits of JSP – Better Performance

Benefits of JSP – Better Performance – JSP को Use करने का दूसरा सबसे बडा फायदा ये होता है कि हमारे Web Application की Performance काफी अच्छी हो जाती है। क्‍योंकि JSP को वास्तव में Servlets द्वारा Implement किया जाता है जो कि Java Programming Language के Compiled Code पर आधारित है और Compiled Codes की Speed हमेंशा Interpreted Codes से बेहतर होती है।

जब कोई User, Web Browser के माध्‍यम से किसी JSP Page की Request करता है, तो Web Server उस JSP Page को उस Special Process पर Forward कर देता है, जो कि Servlets Execution को Handle करता है। इस Process को Servlet Container के नाम से जाना जाता है जबकि Server Side Java Technology में इसे Servlet EngineJSP Engine के नाम से भी जाना जाता है।

Servlet Container, HTTP Server से अलग एक Separate Process होता है, जो कि वास्तव में Java Process होता है और JVM पर Run होता है, जबकि ज्यादातर HTTP Servers, C जैसी Language में लिखे गए होते हैं। Servlet Containers की मुख्‍य विशेषता ये है कि HTTP Servers से Associated Servlets Container के लिए केवल एक ही Additional Process होता है, जो कि JSP सहित Servlet Related सभी Requests को Handle करता है। ये Process उस समय Initialize होता है, जब Web Server Start होता है और तब तक Run होता रहता है जब तक HTTP Server Shutdown नहीं हो जाता।

प्रत्येक Dynamic Content Generate करने के लिए Perform की जाने वाली प्रत्येक Request हेतु एक बिल्कुल नया Process Create करने के स्थान पर HTTP Server द्वारा सभी Requests को एक Single Servlet Container Process पर Forward कर दिया जाता है और क्‍योंकि सभी JSP या Servlets Request को एक ही Servlet Container द्वारा Handle किया जाता है, इसलिए समान समय पर एक ही Servlet द्वारा विभिन्न JSP Requests को Handle करने का काम Java Threads के माध्‍यम से पूरा किया जाता है, न कि अलग Process के माध्‍यम से, जिससे Multiple Requests को Single Process द्वारा Handle करते हुए J2EE Web Applications की Performance को काफी बेहतर Performance प्राप्त होती है क्‍योंकि Threads एक प्रकार से Process के समान ही होते हैं, इसलिए बहुत सारे Threads समानान्तर रूप से समान JVM पर Run हो सकते हैं और समान समय पर बहुत सारे JSP/Servlets Requests को अलग-अलग Threads के माध्‍यम से Handle करने में सक्षम होते हैं।

हालांकि Threads, Processes के समान ही होते हैं, लेकिन ये कम Resources का प्रयोग करते हैं। इसलिए सामान्यत: इन्हें Lightweight Process के नाम से भी जाना जाता है और Lightweight होने की वजह से ही ये कम Memory Use करते हुए ज्यादा Efficient तरीके से JSP/Servlets Request को समानान्तर रूप से Handle करने में सक्षम होते हैं।

चूंकि Java Programs Bytecodes में Convert होते हैं, जिन्हें Execute होते समय किसी भी अन्‍य Compiled या Native Interpreter Based Language की तुलना में एक Extra Layer से गुजरना पडता है, इसलिए तुलनात्मक रूप से JSP Pages की Speed PHP, Perl जैसी Scripting Languages की तुलना में कम होती है। लेकिन Java Developers ने Java की Performance को बढ़ाने के लिए JIT (Just In Time) Compilation Develop किया है, जिसकी वजह से जिस समय Java Servlets Execute होता है, Native Platform के आधार पर Servlets का Bytecodes Current Platform के अनुसार Compile होकर पूरी तरह से Native Codes में Convert हो जाता है।

फलस्वरूप जब उसी Webpage के लिए किसी अन्‍य User द्वारा दुबारा Request Perform किया जाता है, तो उस Request को Response करने हेतु उसी Page को फिर से Dynamically Generate करने के लिए वही Servlet फिर से Execute हो जाता है, जो पिछली User Request को Fulfill करने के लिए Native Platform के आधार पर Compile हुआ था। जिसकी वजह से इस बार उसी Page के लिए आने वाली User Request को Response करने के लिए Servlets को फिर से तब तक Recompile नहीं होना पडता जब तक कि उस Servlets में किसी प्रकार का Modification न किया गया हो।

साथ ही जिस समय कोई User किसी JSP Webpage के लिए पहली बार Request Perform करता है, उसी समय उस Page को Generate करने से सम्बंधित Servlet Compile होता है, जिसकी वजह से पहली बार Request को Response करने में ही समय लगता है। जबकि उसी Page के लिए अगली बार Perform की जाने वाली User Request को Response करने में काफी कम समय लगता है क्‍योंकि अगली बार की Request को Response करने के लिए Servlets को फिर से Compile नहीं होना पडता, बल्कि पिछली बार की Request को Response करने के लिए जो Servlet Compile हुआ था, वही Compiled Servlets Current Request को Response करने के लिए भी Reuse हो जाता है। परिणामस्वरूप JIT के कारण JSP Pages की Performance PHP या Perl जैसी Scripting Languages की तुलना में काफी ज्यादा बेहतर हो जाती है।

Benefits of JSP
Benefits of JSP - Reusable Components