Java EE

Mehdi.A

عضو جدید
برگرفته از کتاب:
مرجع کامل J2EE
Jim Keogh
انتشارات صفار- اشراقی 1387



مقدمه ای بر J2EE

تکنولوژی جاوا از دل زبان برنامه نویسی بیرون آمد که هدف از طراحی آن ساخت سیستمهای درونی مستقل از ماشین، برای یک تکنولوژی سروری قدرتمند و مستقل از عرضه کنندگان و ماشین بود، تا به کمک آن موجبات همکاری بیشتر شرکتهای مرتبط در جهت درک هرچه بیشتر توانمندیهای برنامه های مبتنی بر وب فراهم گردد.
جاوا کار را با ارایه کیت توسعه جاوا (JDK) آغاز نمود، و از همان هنگام نیز مشخص بود که به سرعت در حال تبدیل شدن به راه حلی برای مشکلات سیستمی بسیاری از شرکتها است. کلاسها و کتابخانه های بیشتری در پاسخ به موقعیتهای واقعی، و به عنوان واسطهای برنامه نویسی مورد نیاز شرکتها، JDK را گسترش می داد تا آنکه با یکپارچه نمودن همه آنها نسخه استاندارد Java2 (J2SE) عرضه شد. J2SE شامل همه واسطهای برنامه نویسی مورد نیاز در تولید برنامه های کاملا صنعتی جاوا می باشد، ولیکن شرکتهای بزرگ خیلی زود به این مهم پی بردند که توانمندیهای مورد نیاز توسعه برنامه های سازمانی، در آن وجود ندارد.
باری دیگر شرکتها، Sun Microsystems را در بررسی تکنولوژی جاوا و اینبار از منظر نیازهای سازمانی، به سمت جلو هل دادند. در ادامه Sun برنامه انجمن جاوا (JCP) را راه اندازی نمود که موجب گردهمایی کاربران شرکتی، عرضه کنندگان و متخصصین به منظور توسعه یک استاندارد، برای واسطهای برنامه نویسی سازمانی جاوا گردید. خروجی این فعالیتها نسخه سازمانی بستر Java 2 شد که بطور خلاصه با نسخه سازمانی Java 2 (J2EE) بدان اشاره می شود.
در گذشته سیستمهای سازمانی بطور سنتی و با استفاده از مدل کاربر/ سرور (client/server) طراحی می شدند که در آن سیستمهای سمت کاربر (client side) از سیستمهای سمت سرور (server side) برای انجام یک پردازش، درخواستی می کردند، البته این سیستمها نیز تحت تاثیر روند پیشرفت خود قرار داشتند. یک مدل جدید بنام سرویسها وب، کم کم جای مدل قبلی را در شرکتها گرفت. در این مدل برنامه نویسان، برنامه ها را با ترکیب نمودن مجموعه ای از مؤلفه های پردازنده بنام سرویسهای وب که عملکردشان مستقل از سایر سرویسهای وب و برنامه های دیگر است، می سازند. برنامه سمت کاربر با برنامه سمت سرور لایه میانی (middle-tier) ارتباط برقرار می کند. این برنامه با سرویس وب لازم که آنهم در سمت سرور قرار دارد در ارتباط می باشد.
با پذیرش سرویسهای وب از سوی شرکتها، JCP دریافت که J2EE نیز می بایست وارد یک چرخه تحولی دیگر شود. با معرفی J2EE 1.4 انجمن جاوا این تکنولوژی را با تکنولوژی سرویسهای وب ترکیب نمود.
هم اکنون شرکتهای جدید مبتنی بر وب در حال تغییر روشها، به منظور خدمات رسانی هرچه بهتر سیستمهای توزیعی سازمانی می باشند. روشهای قدیمی ساخت سیستمهای سازمانی دیگر پاسخگوی نیازهای شرکتهای IT نخواهند بود. برای پاسخگویی به خواسته های تمام وقت و ناگهانی که هزاران کاربر بطور همزمان انتظار دارند، توسعه گران می بایست خود را آماده نمایند.
متخصصان تکنولوژی در شرکت Sun Microsystems و برنامه انجمن جاوا، روش توسعه گران در ساخت سیستمهای بزرگ مبتنی بر وب و توزیع شده را با استفاده از J2EE تغییر دادند. J2EE موضوعات پیچیده پیش روی برنامه نویسان این سیستمها را هدف قرار می دهد.
 

Mehdi.A

عضو جدید
مروری بر J2EE

در مقاطعی از تاریخ، زندگی ما تحت تاثیر برخی تکنولوژیهای بحث برانگیز تغییرات جدی به خود دیده است، بطوریکه دانشمندان، سیاستمداران و محافل اقتصادی را ناچار به بازنگری در عملکرد خود نمود. الکتریسیته، تلگراف، تلفن، رادیو، تلویزیون، ماشین، هواپیما، ماهواره و تلویزیونهای کابلی تکنولوژیهایی بودند که وضعیت موجود را از اساس متحول نموده و موجب پیدایش خطی حایل بین گذشته و حال شدند. امروزه نسل جدید کاملا خود را با این تغییرات اساسی در تکنولوژیها وفق داده است.
در حال حاضر اینترنت جدیدترین تکنولوژیست که موجب تغییر در رفتارهای ارتباطی ما با یکدیگر و همچنین نوع عملکردمان در مشاغل گردیده است. داد و ستدها و ارتباطات دیگر از طریق خطوط ارتباطی زنده (online) و تا حدودی در آن واحد صورت می گیرند، پستهای شبانه جای خود را به پست الکترونیکی داده که تقریبا با سرعت نور انجام می شود، نامه های ناشناس (spam mail) به جای نامه های ناخواسته (junk mail) بکار رفته و خرید یک هدیه ویژه تنها به اندازه فشردن چند کلید زمان می برد.
این تکنولوژیهای جنجالی همچنین بذر هزاران تکنولوژی حامی خود را نیز پاشیدند که بعدها تبدیل به مؤلفه های جدایی ناپذیر آنها شده و توانستند با تکیه بر ایشان کارکردی بهتر و مؤثر تر داشته باشند. J2EE نیز یکی از این تکنولوژیهای حامی است که به شدت با اینترنت همراه شده است. به همین دلیل است که J2EE، مهندسین نرم افزار و برنامه نویسان را قادر به ساخت زیرساختهای نرم افزاری و صنعتی، جهت تولید برنامه های مقرون به صرفه مبتنی بر وب در سیستمهای حساس نموده است.
نسخه سازمانی Java 2 به نظر از ریشه با اینترنت درآمیخته است، حقیقتی که در واقع همان گام بلند روند انقلابی زبانهای برنامه نویسی می باشد. زبان برنامه نویسی جاوا پایه آن چیزیست که J2EE از آن ساخته شده است. این تحولات با ارایه J2EE از سوی شرکت Sun Microsystems ادامه یافت. J2EE برای ساخت گونه جدیدی از برنامه های مبتنی بر مؤلفه های سرویس وب مورد استفاده قرار می گیرد. برنامه نویسان J2EE دیگر به روشهای قدیمی کد نمی نویسند و در عوض برنامه ها را با ترکیب مؤلفه های سرویس وب می سازند.
 

Mehdi.A

عضو جدید
J2EE و J2SE

جاوا هم به نوبه خود تحت تاثیر تحولاتی در جریان حیات خویش قرار دارد. این زبان از پایه برای برنامه های کنترل کننده دستگاههای الکترونیکی طراحی شد، لیکن با ارایه مفهوم هوشمندی در صفحات منفعل وب، موجی را در جامعه توسعه گران اینترنت بوجود آورد. طراحی گروه توسعه جاوا، این زبان را به زبان برنامه نویسی منتخب در توسعه برنامه های سازمانی مبتنی بر وب بدل نموده است.
واحدهای فناوری اطلاعات همیشه به دنبال روشی جهت ساخت مقرون به صرفه برنامه های رایانه ای بوده اند. یکی از این روشها معماری کاربر/ سرور است. این معماری مشتمل بر دو لایه بوده و در آن نرم افزار سمت کاربر خدمتی را از نرم افزار سمت سرور درخواست می کند. برنامه های قدیمی پایگاه داده نمایانگر معماری دو لایه هستند. نرم افزار حاضر در سمت کاربر درخواستی برای اطلاعات را از مصرف کننده دریافت می کند و پس از تبدیل آن به یک جستجو یا پرس و جو (query)، از طریق شبکه آن را برای پردازش به سمت سرور پایگاه داده ارسال می کند. سرور پایگاه داده اطلاعات درخواست شده را به کاربر منتقل نموده و سپس نرم افزار، آنها را برای مصرف کننده به نمایش در می آورد.
امروزه تلاشهای روزافزونی از سوی واحدهای فناوری اطلاعات برای کاهش هرچه بیشتر موانع موجود بر سر راه رساندن اطلاعات و سرویسهای فنی به مصرف کنندگان صورت می گیرد. معماری کاربر/ سرور در حال تغییر از معماری دو لایه به چند لایه است. در این معماری درخواست یک کاربر از یک سرور منجر به درخواست از سرورهای دیگری می شود که به کمک ستون فقرات شبکه با یکدیگر در تماس اند.
بی شک برای شما بسیار عادی است که از یک شرکت مسافرتی بخواهید تا سفرتان را برنامه ریزی نماید. آژانس مذکور نیز از طریق تماس با هتلها، خطوط هوایی، شرکتهای اجاره ماشین، رستورانها و سایر مراکز خدماتی مرتبط، درخواست شما را به انجام خواهد رساند.
اگرچه معماری چند لایه موجب بهینه شدن خدمات می شود، لیکن کار طراحی، ساخت، عیب یابی، توزیع و نگهداری از برنامه ها را نیز بسیار پیچیده خواهد کرد، چراکه برنامه نویس می بایست از عملکرد درست همه لایه ها در همکاری با یکدیگر مطمئن شود. از این رو گروه توسعه جاوا برای کاهش پیچیدگیها در توسعه برنامه های چند لایه، توانمندیهای این زبان را در حد چشم گیری افزایش دادند.
گروه توسعه جاوا ویژگیهای این زبان را در سه نسخه گردآوری کرده اند، که هر نسخه نیز کیت توسعه نرم افزار (JDK) خود را دارد. نسخه اصلی جاوا، نسخه استاندارد Java 2 (J2SE) نامیده می شود که شامل واسطهای برنامه نویسی (API) لازم برای نوشتن برنامه ها و اپلتهای جاوا می باشد. نسخه موبایل (یا کوچک) Java 2 (J2ME) شامل واسطهای برنامه نویسی مورد استفاده در ساخت برنامه های بی سیم جاوا بوده و نسخه سازمانی Java 2 (J2EE)، که نسخه ارتقا یافته J2SE است، شامل واسطهای برنامه نویسی مورد نیاز درساخت برنامه های مبتنی بر معماری چند لایه است.
 

Mehdi.A

عضو جدید
چرا J2EE

با هجوم برنامه های مبتنی بر وب و افزایش وابستگیها بدان، واحدهای تکنولوژی اطلاعات شرکتها به روشی برای توسعه برنامه ها و واسطه های قابل حمل و توسعه پذیر، نیاز پیدا کردند. برنامه ها باید به گونه ای طراحی می شدند که بتوانند پاسخگوی هزاران کاربر همزمان در تمام ساعات شبانه روز و در تمام ایام هفته باشند، آنهم بدون وقفه. یکی از چالشهای اصلی پیش روی ساخت چنین برنامه های پیچیده ای، طراحی و آزمایش آنها بود. J2EE با مخفی کردن عملکردها در درون مؤلفه ها، ساخت برنامه های سازمانی را آسان نمود. این مهم طراحان و برنامه نویسان را قادر به سازماندهی برنامه با استفاده از توزیع عملکردهای آن بین مؤلفه های سروری ساخت J2EE می نمود.
به علاوه اینکه همکاری رهبران صنایع در JCP باعث شد تا J2EE به یک محیط سازمانی استاندار برای صنایع بدل گردد، تا کلیه محصولات مرتبط علارقم رقابت با یکدیگر، مجبور به پیروی از آن نیز باشند. بنابراین کاربران شرکتها می توانند مطمئن باشند که محصول خریداری شده توسط آنها مورد پشتیبانی J2EE قرار داشته و دیگر هیچ شرکتی وابسته به یک عرضه کننده خاص نخواهد بود. به عنوان مثال می توان محصولات مختلفی از چندین عرضه کننده را خریداری نموده و آنها را با استفاده از تکنولوژی J2EE به یکدیگر پیوند زد.
J2EE تکنولوژی فراگیری است چراکه مؤلفه های ساخته شده توسط آن قادرند تا در پس پرده با استفاده از متدهای ارتباطی استانداردی نظیر HTTP، SSL، HTML، XML، RMI و IIOP با یکدیگر در ارتباط باشند.
از آنجاییکه همه برنامه های J2EE در زبان جاوا نوشته می شوند، شرکتها قادر خواهند بود تا با استفاده از همان برنامه نویسان فعلی خود که در زمینه جاوا فعالیت می کنند، برنامه هایی برای کار کردن در هر یک از لایه های زیرساخت چند لایه ای بسازند. به عبارتی دیگر از این پس شرکتها نیازی به برنامه نویسانی خاص، برای نوشتن برنامه هایی مخصوص یک عرضه کننده نخواهند داشت. به علاوه اینکه با استفاده از این روش چرخه توسعه برنامه های پیچیده محتاج به چند روندی (multithreading) و همزمانی (synchronization) نیز کوتاه خواهند شد، چراکه J2EE شامل همه واسطها و کتابخانه های مورد نیاز در این موضوعات پیچیده هست.
Enterprise JavaBeans، Java Servlet و JavaServer Pages مؤلفه های اصلی J2EE می باشند. به علاوه J2EE شامل هفت سرویس استاندارد دیگر نیز هست که در ادامه بطور خلاصه بدانها اشاره می شود.

سازگاری با CORBA
شرکت Sun Microsystems از دو تکنولوژی مبتنی بر CORBA در J2EE استفاده نموده که به موجب آنها برنامه های جاوا قادر به برقراری ارتباط با کلیه سیستمهای سازمانی سازگار با تکنولوژی CORBA و سیستم های قدیمی خواهند بود. این دو تکنولوژی عبارتند از JavaIDL و RMI-IIOP. JavaIDL برای بهم پیوستن برنامه های جاوا با سیستمهای مبتنی بر CORBA مورد استفاده قرار می گیرد. RMI-IIOP ترکیبیست از فراخوانی از راه دور متد جاوا (Java RMI) و Internet Inter-ORB Protocol (IIOP)، در همکاری با CORBA برای اتصال برنامه های قدیمی به برنامه های جاوا.

واسط برنامه نویسی JavaMail
گروه توسعه جاوا به یک راه مقرون به صرفه نیاز داشتند تا به کمک آن اطلاعاتی نظیر تایدیه سفارشها را بین مشتریان و سایتهای بازرگانی جابجا نمایند. پاسخ این نیاز واسط برنامه نویسی JavaMail بود. JavaMail برنامه های جاوا را قادر به برقراری ارتباط از طریق ارسال پست الکترونیکی به کاربران وب می نماید.

سرویس پیام جاوا
واسط برنامه نویسی سرویس پیام جاوا (JMS API) جهت جاسازی یک مسیر داد و ستدی برای مؤلفه ها، درون برنامه های جاوایی مورد استفاده قرار می گیرد. این مسیر به پیامهای با قابلیت تحمل خطا (foult-tolerant)، امکان ارسال و دریافت ناهماهنگ می دهد.

واسط برنامه نویسی JNDI
اشیاء را می توان در هر مکانی بروی سرورهای زیربنایی یک شرکت قرار داد. گروه توسعه جاوا به روشی نیاز داشتند تا امکان یافتن این اشیاء را برای برنامه های جاوایی فراهم نماید. روش آنها ساخت یک استاندارد برای نامگذاری و مسیر یابی بود، با استفاده از واسط نامگذاری و مسیر یابی جاوا (JNDI) برنامه نویسان می توانند از درون برنامه های خود اشیاء را جستجو نمایند.

واسط داد و ستد جاوا (JTA)
هر داد و ستدی می تواند درگیر چندین مؤلفه باشد، گروه توسعه جاوا به روشی برای مؤلفه ها نیاز داشتند تا هر یک بتواند داد و ستد خود را کنترل نماید. با ساخت JTA برنامه نویسان جاوا توانستند روندی را به منظور کنترل داد و ستدها درون مؤلفه ها قرار بدهند.

واسط برنامه نویسی JDBC
برنامه های جاوا و مؤلفه ها باید به اطلاعات درون پایگاههای داده دسترسی داشته باشند. گروه توسعه جاوا واسط برنامه نویسی JDBC را پیشنهاد می کنند که برنامه های جاوا می توانند برای اتصال و تقابل با هر پایگاه داده تجاری از آن بهره ببرند.

راهنمای راه اندازی XML
بسیاری از شرکتها و صنایع برای ذخیره سازی، اداره کردن و رد و بدل اطلاعات متنی در غالب اسناد، با XML سازگار شده اند. گروه توسعه جاوا با قرار دادن مجموعه ای از راهنماها در درون J2EE، برنامه نویسان را قادر به ساخت ابزارها و مؤلفه هایی برای همکاری با اسناد XML نموده اند. راهنمای راه اندازی XML تعریف کننده محیط و عملکردهای مؤلفه در زمان راه اندازی در کانتینر J2EE است. کانتینر J2EE با خواندن راهنمای راه اندازی درمی یابد که مؤلفه را کجا و چگونه راه اندازی نماید. البته مؤلفه ها خود در ارتباط با راهنمای راه اندازی نیستند. برخی از کاربردهای راهنمای راه اندازی XML به شرح زیر است:

 مدیریت داد و ستدها بین کانتینر و Enterprise Java Beans
 ثبت یک مؤلفه مبتنی بر پیام در یک صف
 تعیین نامهای جستجوی JDNI
 مدیریت مؤلفه های جلسه ای تابع وضعیت و بدون وضعیت
 

zizzzzzo

عضو جدید
خیلی ممنونم از این توضیحاتتون اگه میشه کمی هم در مورد JSF صحبت کنید.
با تشکر zızzzzzo
 

Mehdi.A

عضو جدید
خیلی ممنونم از این توضیحاتتون اگه میشه کمی هم در مورد JSF صحبت کنید.
با تشکر zızzzzzo

حتما. فقط اگر اجازه بدید به موضوعاتی همچون JSF (و احتمالا Richfaces) و Struts در ادامه بحث JSP بپردازیم که آن هم بعد از موضوع Servlet خواهد بود. مطلب Servlet به زودی آماده می شود. شاید تا پایان هفته آینده بتوانیم به موضوع مورد نظر شما هم برسیم.
 

Mehdi.A

عضو جدید
برنامه های J2EE مجموعه ای از مؤلفه هایی اند که هر یک مسؤول فراهم نمودن سرویس وب خاصی برای برنامه می باشند. واسط کاربر (user interface) سطحی ترین لایه و قابل مشاهده ترین مؤلفه است که هدف از آن ارایه روشی قابل فهم برای فراخوانی سرویس توسط افراد می باشد.
واسط کاربر درخواست را از مصرف کننده برنامه J2EE گرفته و آن را جهت پردازش برای یک مؤلفه ارسال می کند. مؤلفه هایی که کار پردازش درخواستها را انجام می دهند، با استفاده از Java Servlet و یا JSP ساخته می شوند.
Java Servlet یک برنامه سمت سرور است (server-side)، که حاوی منطق پردازش درخواست بوده و توسط واسط کاربر و یا سایر مؤلفه های J2EE فراخوانی می شود. JSP نیز یک برنامه سمت سروریست که در عمل همان وظایف Java Servletها را با روشهایی متفاوت انجام می دهد. Java Servletها و JSPها هردو برای انجام جزئیات پردازش، سایر مؤلفه ها را فراخوانی می کنند.
در ادامه قصد داریم تا به نحوه ساخت یک برنامه ساده با استفاده از تکنولوژی Java Servlet بپردازیم.


Java Servlet و CGI

برنامه های J2EE از کاربر سبک (معمولا یک جستجوگر) که حاوی منطق پردازشی اندکی می باشند استفاده می کنند (که حتی ممکن است به کل فاقد هرگونه منطق پردازشی باشند). یک برنامه میانی (middle-layer program) که مبتنی بر سرور وب است همه پردازشها را کنترل می کند. برنامه های سمت سرور در آغاز پردازش درخواستها را با استفاده از واسط بزرگراه اشتراکی (CGI) کنترل می کردند، که به کمک زبانهایی همچون Perl و یا سایر زبانهای برنامه نویسی نوشته می شد. Java Servlet نخستین تلاش شرکت Sun Microsystems برای جایگزینی CGI است.
اگرچه تکنولوژی Java Servlet جایگزین CGI شد، ولیکن هر دو عملکردهای مشابهی دارند. به عبارتی دیگر داده های واضح (explicit data) و داده های ضمنی (emplicit data) در قالب درخواستی از سوی کاربر برای یک برنامه سمت سرور ارسال می شود که پس از پردازش آنها، برخی داده های واضح ویا ضمنی بازگردانده می شوند.
داده های واضح اطلاعاتی اند که توسط برنامه کاربر و معمولا توسط مصرف کننده و یا خود واسط کاربر تهیه می شوند. به عنوان مثال مشخصه کاربر و کلمه عبور داده های واضحی هستند که ممکن است بوسیله جستجوگر، یک applet و یا یک کاربر اختصاصی ایجاد شوند.
داده های ضمنی به اطلاعات HTTP گفته می شود، که توسط یک برنامه کاربر (یعنی جستجوگر) ایجاد می شوند و نه مصرف کننده. اطلاعات HTTP حاوی داده هایی درمورد درخواست می باشند، مانند الگوی فشرده سازی، cookieها و نوع رسانه ها.
تنیجه پردازش درخواست بصورت داده های واضحی به برنامه کاربر بازگشت داده می شود. این اطلاعات معمولا بصورت یک صفحه HTML، که بطور خودکار توسط Java Servlet ساخته می شود خواهد بود. Java Servlet همچنین اطلاعات ضمنی HTTP، مانند نوع سند بازگشت شده را نیز تعیین می کند.
شرکت Sun Microsystems، Java Servletها را بگونه ای طراحی نموده اند تا در مقایسه با CGI مفیدتر بوده و بار محیطی کمتری داشته باشند. با رسیدن هر درخواست به برنامه های CGI، یک فرایند پردازشی جدید شروع می شود. آغاز نمودن یک فرایند کار زمان بریست، اگرچه در مقایسه با زمان لازم جهت اجرای برنامه CGI قابل قبول می باشد. لیکن چنانچه زمان لازم برای اجرای برنامه CGI کمتر از زمان لازم برای آغاز نمودن یک فرایند باشد، دیگر این روش قابل قبول نخواهد بود.
فرض کنید 100 نمونه از برنامه ای نیازمند یک برنامه CGI برای پردازش درخواستهای همزمان خود می باشند. برنامه CGI می بایست 100 بار در حافظه بارگزاری شود. به عبارتی دیگر، 100 نسخه از برنامه CGI در حافظه قرار خواهد گرفت. هر نمونه از این برنامه یک فرایند جدید را آغاز خواهد نمود، یعنی آغاز 100 فرایند که هرگز مقرون به صرفه نیست.
نکته دیگر اینکه برنامه های CGI ماندگار نیستند (non-persistent). با پایان یافتن برنامه های CGI، داده های مورد استفاده در فرایندهای مرتبط با آنها نیز از بین رفته و دیگر قابل استفاده برای سایر برنامه های CGI نخواهند بود.
در طراحی تکنولوژی Java Servlet از این نکات دوری شده است. نخست آنکه بدون توجه به تعداد درخواستهای دریافت شده، تنها یک نمونه از Java Servlet در JVM بارگزاری می شود. به ازای هر درخواست، به جای راه اندازی یک فرایند جدید تنها یک روند (thread) جدید در Servlet به راه خواهد افتاد، این روش موجب کاهش مصرف حافظه و زمان پاسخگویی (response time) می شود. Servletها بطور کلی در یک فضای پردازشی مشابه به عنوان کانتینر Servlet اجرا می شوند. هر نسخه از Servlet در واقع یک روند است، یعنی می توان چندین نسخه از یک Servlet داشت.
Java Servletها حاوی ویژگی ماندگاری نیز می باشند، یعنی Servlet حتی پس از به اتمام رسیدن درخواست نیز باقی می ماند. داده های مورد استفاده Servletها، چنانچه نیازمندیهای برنامه J2EE ایجاب نماید در بین بین فراخوانی ها نگه داشته خواند شد.



یک Servlet ساده

Servletهای جاوا در واقع یک کلاس جاوایی اند برای دریافت درخواستهای ارسال شده از کاربر و پاسخگویی به وی از طریق ارسال اطلاعات. این کلاسها می بایست از HttpServlet مشتق شده و متد doGet() و/ یا doPost() را دوباره نویسی (override) نمایند. از متد doGet() زمانی استفاده می شود که یا درخواست از فرم HTML با استفاده از روش GET ارسال شود و یا اینکه پارامترهایی از طریق یک URL به برنامه سمت سرور فرستاده شود، مانند پیوندها (link).
هردو متد doGet() و doPost() به دو آرگومان نیاز دارند. نخستین آرگومان یک HttpServletRequest و دیگری یک HttpServletResponse است. شیئ HttpServletRequest حاوی اطلاعات ورودی ارسال شده از سوی کاربر می باشد. Java Servlet از شیئ HttpServletResponse نیز برای ارسال اطلاعاتی خروجی که می بایست برای کاربر فرستاده شوند، استفاده می کند. هردوی این متدها استثنای IOException را صادر می کنند.
داده های ورودی حاوی داده های واضح و ضمنی می باشند. داده های واضح که توسط مصرف کننده تهیه می شوند عبارت است از یک رشته درخواستی (string query) حاوی اطلاعات درون فرم. داده های ضمنی نیز عبارتند از اطلاعات HTTP، مانند سرآمد درخواست.
داده های خروجی نیز حاوی داده های واضح و ضمنی ساخته شده توسط Servlet می باشند. داده های خروجی به کمک یک شیئ PrintWriter و متد write() (و یا println()) برای کاربر ارسال می شوند. شکل داده های ارسال شده بستگی به کاربر دارد. به عنوان مثال چنانچه کاربر یک جستجوگر باشد، داده ها بصورت یک صفحه HTML و یا XML ارسال خواهند شد.
در ادامه مثالی از یک Servlet ساده را مشاهده می کنید. وظیفه این برنامه نمایش متن “This Is My First Servlet Output” در صفحه وب می باشد. در این مثال از متد write() جهت ارسال داده های واضح به صفحه وب استفاده شده است. همانطور که در مثال مشاهده می کنید، با استفاده از متد setContentType() شیئ response، نوع سندی که ارسال خواهد شد را مشخص می کنیم (یکی دیگر از پارامترهای این متد text/xml است). در واقع این متد سرآمد ContentType (از سرآمدهای HTTP) را تنظیم می کند.




کامپایل و اجرای برنامه Servlet

Servletهای جاوا را همانند سایر کلاسها و برنامه های جاوا کامپایل می کنیم. پیش از کامپایل Servlet خود مطمئن شوید که مسیر کلاسهای محیط شما حاوی javax.servlet (فایل JAR حاوی کلاسهای Servlet) و مسیر حاوی کد منبع Servlet مورد نظر باشد.
با توجه به اینکه برنامه های Servlet بصورت یک برنامه تحت وب اجرا می شوند، برای اجرای اینگونه برنامه ها می بایست از ساختار برنامه های تحت وب نیز پیروی نمود. به عنوان مثال شما می بایست جهت اجرای این برنامه، آن را در یک سرور وب (Web Server) راه اندازی (Deploy) کنید. در این مثال از Tomcat به عنوان سرور وب استفاده شده است. Tomcat یک محصول منبع آزاد (open source) بوده و می توانید آن را بصورت رایگان از http://tomcat.apache.org/ تهیه نمایید.
در ادامه می بایست یک فایل راهنمای راه اندازی (Deployment Descriptor) به نام web.xml جهت راهنمایی سرور وب در راه اندازی برنامه خود بسازید. در این فایل شما جزئیات راه اندازی برنامه خود را مشخص می کنید. در ادامه نمونه ساده ای از این فایل را مشاهده می کنید:



حال می بایست برنامه خود را مطابق ساختارهای وب بسته بندی کرده و جهت اجرا به سرور منتقل کنید. نخست پوشه ای به نام برنامه (ServletSample) بسازید. درون این پوشه، پوشه دیگری به نام WEB-INF بسازید (دقت کنید که نامها از نظر حروف کوچک و بزرگ درست نوشته شده باشند). پوشه دیگری به نام classes درون این پوشه بسازید. فایل ServletSample.class را به درون این پوشه منتقل کنید. فایل web.xml را به پوشه WEB-INF منتقل کنید (یعنی در کنار پوشه classes). اکنون برنامه شما آماده انتقال به سرور است. پوشه ServletSample را به آدرس <Tomcat Root>\\webapps منتقل کنید (Tomcat Root آدرس نصب Tomcat در سیستم شما است، به عنوان مثال محل استقرار پوشه مذکور در رایانه من بصورت زیر می باشد D:\Core\WebServer\Tomcat 5.5\webapps\ServletSample). چنانچه از سرور دیگری به این منظور استفاده می کنید، جهت اطلاع از نحوه راه اندازی و اجرای برنامه خود می توانید به راهنمای آن مراجعه نمایید.
حال سرور خود را Run کنید. به این منظور می بایست فایل tomcatX.exe را در <Tomcat Root>\bin یافته و اجرا کنید (X به نسخه محصول اشاره می کند). سپس یک صفحه جستجوگر وب (مانند IE یا Firefox) باز کرده و URL زیر را در آن تایپ کنید

http://localhost:8080/ServletSample

نکته1: در این URL از پورت 8080 استفاده شده که پورت پیش فرض Tomcat است. در زمان نصب Tomcat انتخاب این پورت برای سرور از شما سؤال می شود. شما می توانید پورت دیگری را انتخاب کنید که در آنصورت می بایست از آن پورت در این URL استفاده شود. دقت کنید که پورت انتخاب شده توسط شما نباید قبلا به برنامه دیگری اختصاص یافته باشد (در اینصورت Tomcat اجرا نخواهد شد).

نکته2: چنانچه از یک IDE در نوشتن برنامه های خود استفاده نمایید، بسیاری از امور گفته شده را می توانید به IDE محول کنید.
 

amin-z

عضو جدید
J2EE چه هست و چه نیست؟

“Java2 Platform-Enterprise Edition” یک تکنولوژی میان افزار است که توسط شرکت سان میکروسیستم ابداع شده است و در حال حاضر به عنوان یک راه حل اساسی جهت برآورد کردن نیازها و مسائل مختلف در نظر گرفته می شود. تکنولوژی های میان افزار از Corba و IDLS تا سیستم های پیغام گرا، راه بسیاری را پیموده اند و تکامل آنها مرحله به مرحله بوده است که طرح آن فراتر از محدوده این مقاله است.
J2EE شرکت سان یک نقطه تحول قطعی در تاریخ تکنولوژی های میان افزار و سبب پذیرش و تشخیص تشکیلات کامپیوتری شناخته می شود.
در ادامه مطلب در مورد “J2EE” چیست و چه نیست؟ بررسی دقیق تری صورت می گیرد. به هر حال، با وجود مجموعه ای بزرگ از استانداردها و ویرایش ها از یک سو و وجود سرورهای برنامه های کاربردی گوناگون از سوی دیگـر، معمولا J2EE غیرقابل درک می نماید.
J2EE چیست؟
قبل از آن که تعریف کنیم J2EE چیست بهتر است درک کنیم که J2EE زبان بـرنامه نویسی بسته نرم افزاری، یک ابزار و یا یک سرویس نیست. به عبارت ساده تر J2EE لزوما یک میان افزار استاندارد است که شرکت سان میکروسیستم آن را برای توسعه و به کارگیری برنامه های کاربردی تجاری در مقیاس گسترده و با قابلیت الکترونیکی و به صورت توزیعی و چندلایه ارائه کرده است.
برنامه های کاربردی که برای استانداردهای J2EE نوشته می شوند مزایای زیادی را در بر می گیرند که قـابلیت جابه جایی، امنیت، مقایس پذیری، توازن بار و قابلیت استفاده مجدد از آن جمله است.
میان افزارها، راه حل های نرم افزاری سمت سروری هستند که بنیاد و اساس مورد نیاز در اتصال سیستم های نامتجانس و منابعی توزیعی در شبکه را فراهم می کنند. پیش از J2EE، راه حلهای میان افزار و محدود به محصولات و عرضه کننده ها بودند. این میان افزارهای قدیمی ویژگی های محدودی داشتند و سازگاری آنها نیز کم بود و حتی در قابلیت های عملکردی و جابه جایی در مسائل مختلف نیز محدود بودند. به عبارت دیگر، هیچ استاندارد صنعتی مشترک و قابل قبولی برای این منظور وجود نداشت و بسیرای از ویژگی ها به انتخاب عرضه کننده بود.
J2EE با یادگیری از اشتباهات گذشته و ارائه نیازمندی های ضروری صنعت سبب رشد و کمال تکنولوژی میان افزار شد. همچنین امکان گسترش و توسعه های آتی نیز در آن لحاظ گردید.
در توسعه این استاندارد، سان با دیگر عرضه کننده های اصلی میان افزار، سیستم عامل و سیستم های مدیریت پایگاه داده از جمله IBM و اوراکل همکاری کرد.
در اصل J2EE مجموعه ای از اتانداردها و خط مشی هایی است که تعریف می کند چگونه برنامه های کاربردی در لایه توزیعی می توانند با استفاده از زبان جاوا ساخته شوندً؟ توسعه دهنده ها، برنامه های کاربردی خودشـان را تحت این استانداردها می سازند و عرضه کننده های زیرساختار، سازگاری با این مجموعه خط مشی ها را از طریق J2EE تضمین می کنند. از این طریق، برنامه های J2EE می توانند به صورت مدخلی برای به کارگیـری چندین سرور برنامه های کاربردی با حداقل تغییرات در سطح کم (و حتی بدون تغییر) در نظر گرفته شوند.

اعمال J2EE

J2EE به ارائه محیط های مختلفی می پردازد که این محیط ها در ادامه بررسی شده است:
J2EE ترکیبی برای میان افزار توزیعی چندلایه
J2EE کاملا بین لایه های مختلف درگیر در محیط برنامه کاربردی حد فاصل قایل می شود و مولفه های قرار گرفته در هر لایه را تعریف می کند. این لایه ها می توانند هر یک از لایه های Client، لایه طرح، لایه تجارت و یا ارائه سیستم های اطلاعاتی گسترده باشند.
کلیه برنامه های کاربردی J2EE براساس این قالب کاری ساخته شده است.
همچنین هر لایه در سیستم چندلایه ممکن است در چند سرور توزیع شده باشد.
با J2EE توسعه برنامه های کاربردی توزیعی دیگر یک وظیفه پیچیده نیست. مولفه های J2EE هیچ فرضی درباره محیط سرور و منابعی که از طریق دایرکتوری های گسترده دسترسی می یابند، ندارند. این بدان معناست که توسعه دهندگان برنامه های کاربردی برای توزیع مولفه ها و منابع اشان به تلاش زیادی نیاز ندارند.
J2EE محیطی برای برنامه های کاربردی در مقیاس گسترده
J2EE به صورت سرورهای برنامه های کاربردی مانند BEA WEB Logic یا IBM WEB Sphere پیاده سازی شده که محیطی برای برنامه های کاربردی توزیعی در مقیاس گسترده است.
برنامه های کاربردی می توانند براساس مدل برنامه نویسی برنامه های کاربردی J2EE ساخته شوند و حتی در یک یا چند سرور برنامه های کاربردی وب سازگار با J2EE به کار گرفته شوند.
به عبارت دیگر می توان مناسب ترین محیط سرور برنامه کاربردی از محصولات گسترده سازگار J2EE را انتخاب کرد. حتی بدون توجه به این ویژگی های منحصر به فرد نیز، کلیه سرورهای برنامه های کاربردی J2EE یک حیطه کاری مشترک برای توسعه و به کارگیری برنامه های کاربردی گسترده فراهم می کنند.
J2EE مدلی برای توسعه برنامه های کاربردی با قابلیت الکترونیکی
برنامه های کاربردی J2EE به راحتی می توانند بر روی وب، پالم و دستگاه های دستی، تلفن های همراه و بسیاری دیگر از دستگاه های نمایش داده شوند. به عبارت دیگر، مولفه های برنامه های کاربردی می توانند بدون هیچ مشکلی دارای قابلیت الکترونیکی باشند. مدل برنامه نویسی J2EE تضمین می کند که منطق تجاری و سیستم های BackOffice بدون تغییر باقی بمانند و به عنوان تسهیلاتی برای نمایش به راه های گوناگون و دسترسی Clientها به کار روند.
یکی دیگر از ویژگی های خوب محیط J2EE توازن بار اتوماتیک، مقایس پذیری و تحمل خرابی است. مولفه های به کار رفته در محیط J2EE به طور اتوماتیک این تسهیلات را به دنبال خواهند داشت که به این ترتیب دیگر نیازی به کدنویسی نخواهد بود. این ویژگی ها در ساخت مدخل های وب مورد نیاز Clientها اهمیت چشمگیری دارند.
J2EE استاندارد سازگار در سرورهای برنامه های کاربردی وب
J2EE را می توان اولین استاندارد صنعتی در پذیرش و تشخیص دنیای میان افزار دانست. تقریبا تمام سرورهای برنامه های کاربردی وب (BEA WEB Logic, IBM WEB Sphere, HP’S Application Server, Sun-Netscapes’s inlanet, Macromedia’s Jrunو غیره(، سرورهای تایید شده برنامه کاربردی J2EE هستند. تاکنون هیچ استاندارد دیگری تا این حد پشتیبانی و تایید نشده بود.
همگام بافًـزوده شدن دیگر مولفه های برنامه های کاربردی به خصوصیات J2EE، می توان آنها را در سرورهای گوناگون برنامه های کاربردی در شبکه های گسترده به کار برد. از این رو، به منظور تضمین سازگاری و همبستگی بین سرورهای متفاوت برنامه های کاربردی J2EE، مجموعه تست سازگاری را ارائه کرده است.

بینش J2EE

بینش اولیه خلق و ایجاد J2EE را می توان به صورت زیر خلاصه نمود:
“توسعه دهندگان باید کدهای مختلفی را بنویسند تا تجارت و منطق طرحشان را شرح دهند، در همین حین، زیرساختار میان افزار از مسائل سطحی سیستم مانند مدیریت حافظه، تخصیص منابع، عملیات چندرشته ای، دسترس پذیری و جمع آوری آشغال به طور اتوماتیک مراقبت می کند.
آیا J2EE مشـکلات را رفع می کند؟
حال بهتر است بررسی شود که J2EE چگونه مسائل و مشکلات اصلی ناشی از گستردگی را رفع می نماید و چگونًـًـه امکان توسسعه آتی برقرار می شودً؟
استقلال از سیستم عامل و سخت افزار
J2EE runtime بر روی ماشین مجازی جاوا (JVM) قرا رمی گیرد. شکل 2 نشانگر این امر است. JVM مستقل از سخت افزار و سیستم عامل است. محیط (JRE) Java runtime تقریبا برای تمام سخت افزارها و سیستم عامل های مشهود در دسترس است. بنابراین با پذیرش جاوا، J2EE تشکیلات کامپیوتـری را از سرمایه گذاری در سیستم عامل ها و سخت افـزارگران و پرهزینه خلاصی می بخشد.
امکان نزدیک تر ساختن لایه یکپـارچه گسترده J2EE به سیستم های Backoffice مزیت ویژه دیگری است. در برخی موارد، می توان لایه J2EE را در خود محیط سرور EES جای داد و از این طریق ترافیک شبکه را کاهش و عملکرد آن را افزایش داد.

پیوستگی با طراحی شی گرا و متدولوژی مولفه

ارتباط تنگاتنگ با شی گرایی، جاوا را به یک زبان کدنویسی و خوش ترکیب تبدیل کرده است. تقریبا کلیه ویژگی های برنامه نویسی شی گرا در جاوا پشتیـانی شده است. مدل برنامه نویسی J2EE براساس متدولوژی های شی گرا و طراحی مبتنی بر مولفه ساخته شده است.
J2EE مدل های مولفه ای گوناگونی برای لایه های متفاوت دارد. بنابراین با پذیرش ترکیب های مناسب یک پروژه، توسعه دهندگان می توانند مولفه های بسیاری را فراهم کرده و گسترش دهند که در نتیجه توسعه برنامه های کاربردی تسریع می شود.
با این تفاسیر و قابلیت ها در تشکیلات کامپیوتری، برنامه های کاربردی خوش ساختار، انعطاف پذیر و قابل استفاده مجدد شکل خواهند گرفت.

انعطاف پذیری، قابلیت جابه جایی و قابلیت عملیات متقابل

کدهای جاوا را می توان از یک سیستم عاملی به سیستم عامل دیگر انتقال داد و مولفه های J2EE را نیز می توان از محیط یک سرور برنامه های کاربردی به محیط دیگر سرور برنامه های کاربردی انتقال داد. این بدان معناست که دیگر لزومی به قراردادن تشکیلات کامپیوتری بر روی یک محیط توسعه خاص نخواهد بود. برنامه های کاربردی را می توان در بیش از یک سرور برنامه کاربردی J2EE می توانند به خوبی با هم کار کنند. این ویژگی قابلیت عملیات متقابل بی سابقه ای را در جمع آوری مولفه های برنامه های کربردی می دهد. به عنوان مثال ممکن است که EJB را مستقیما در ارتباط متقابل با محیط های mainframelcics د رمحیط IBM قرار داد و از سرورهای BEA WEB Logic به EJB دست یافت.
یکپارچه سازی سیستم های اطلاعاتی گسترده

J2EE به سرعت در استانداردهای صنعت مانند JMS, JOBC و JCA به کار گرفته شده و موجب سادگی و یکپارچه سازی سیستم های اطلاعاتی گسترده مانند سیستم های قانونی، پیاده سازی های EID و پایگاه های داده شده است.
تقریبا تمام عرضه کننده های اصلی پایگاه های داده JDBC را پشتیبانی می کنند. بنابراین برنامه های کاربردی J2EE از قابلیت ارتباط با کلیه پایگاه های داده مشهور با کمک درایورهای مورد نیاز JDBC بهره می برند. متقابلا تعدادی از adapterهای EI مبتنی بر استانداردهای معماری متصل کننده جاوا به بازار شده اند که یکپارچه سازی نامریی با سیستم های قانونی متفاوت و پیاده سازی های ERP/CRM را انجام می دهد.

پذیرش معماری های سرویسگرا در J2EE

با ظهور سروریس های وب و استانداردهای باز مانند SOAP، قابلیت کار متقابل در سیستم های مجزا در تشکیلات کامپیوتری امکان پذیر شد. J2EE محیط قابل گسترشی است که می توان از مولفه ها و منابع آن در سرویس های وب استفاده کرد.
شرکت سان مجوعه بهم پیوستهای از API ها به نام بسته JAX ارائه کرده که تمامی انواع نیازمندیهای سرویس های وب مانند XML Binding, XML Parsing ترخیص و دریافت پیغام SOAP، جست وجو در XML RPC, Registry و پیغام دهی XML را پشتیبانی می کند.
اگرچه محیط J2EE بسیار پیش از ظهور تکنولوژی های سرویس های وب پشتیبانی شده است، لیکن متناسب بودن با آخرین توسعه را نیز لحاظ کرده است. با اطمینان می توان J2EE را قادر به فًـًـًـًـراهم نمودن و ارائه پیشرفت های بیش تر تکنولوژی بدون اعمال اثرات منفی در قالب کاری مرکزی و مدل برنامه نویسی برنامه کاربردی ساخت.
نتیجه

J2EE یک استاندارد میان افزار است که به طور گسترده ای در صنعت پذیرفته شده است. یک محیط ایده آل برای توسعه برنامه های کاربردی گسترده مستقل از محیط، توزیعی و چندلایه که قادر به مقیاس دهی شود و توازن بار است. مزیت اولیه J2EE فراهم سازی زیرساختار میان افزار استانداردشده ای است که کلیه مشکلات سطح پایین سیستم را نظارت می کند که در نتیجه توسعه دهندگان می توانند صرفا روی کدگذاری منطق و تجاری و کاری شان تمرکز نمایند.
J2EE با ایجاد یک محیط مستقل از سیستم عامل نیازهای صنعت را کاملا و به طور کارا رفع می نماید؛ بدین ترتیب، برنامه های کاربردی نهایی، انعطاف پذیر، متحرک و قابل استفاده مجدد در پیاده سازی های مختلف عرضه کننده هستند.
علاوه بر تمام این موارد، زیرساختار J2EE قادر به پشتیبانی تکنولوژی های جدیدتر و توسعه صنایع است.

منبع : http://www.ictnews.ir/news/4470.aspx
 

Day

عضو جدید
ممنون از اطلاعاتتان.
اگر ممکن است، در رابطه با jsp ها نیز مطالبی بگویید.
همچنین در صورت معرفی EBook های فارسی و انگلیسی ما را شرمنده می نمایید.:):smile:;)
 

Similar threads

بالا