M
Mahmoodi
کاربر مهمان
منبع: مجله شبكه
فن آوري Java Server Faces يا به اختصار JSF به چنين نيازهايي در دنياي جاوا پاسخ مي دهد. جامعه منبع باز جاوا يا Java Community Process مشخصه هاي استاندارد JSF براي تامين يك راه حل يكتا و استاندارد به منظور توليد نرم افزارهاي تحت وب مبتني بر HTML را معرفي كرده است. در ادامه سعي خواهيم كرد تا مرور سريعي بر ويژگي هاي اصلي اين تكنولوژي انجام دهيم و ببينيم كه در عمل به كمك JSF، چگونه مي توان يك برنامه ساده تحت وب طراحي كرد.
يكي از مشخصه هاي مهم JSF آن است كه اين فن آوري فقط براي استفاده متخصصان طراحي نشده است و طيف وسيعي از كاربران گوناگون مانند طراحان صفحات وب، برنامه نويسان كاربردي و بسياري از گروه هاي ديگر مي توانند از اين ابزار براي كار خود كمك بگيرند. ازآنجايي كه در JSF از تركيبي از JSP/HTML استفاده مي شود، طراحان صفحات وب مي توانند در همان محيط آشنا و مورد علاقه خود به كار طراحي ادامه دهند. در اين صورت برنامه نويس پروژه در مراحل نهايي كار، صفحات طراحي شده را با مجموعه اجزاي گرافيكي UI و تكنولوژي JSF تركيب كرده و نرم افزار را تكميل خواهد كرد.
اجزاي كاربردي JSF
درك مفاهيم به كار رفته در فن آوري JSF براي برنامه نويسان J2EE بسيار و ساده است. در حقيقت، يك نرم افزار كاربردي JSF اساسا يك نرم افزار استاندارد J2EE محسوب مي شود كه با مجموعه اي از اجزاي نرم افزاري ديگر به شرح زير تركيب شده است:
•يك Servlet ويژه به نام Faces كه به صورت web.xml آرايش شده است. در واقع اين Servlet نقش كنترل كننده MVC را ايفا مي كند. (MVC سرنام Model-View-Controller است و يك مدل يا چهار چوب استاندارد برنامه نويسي محسوب مي شود كه در محيط هاي برنامه نويسي گوناگون اعم از زبان هايي نظير C يا C++ يا جاوا كاربرد گسترده اي دارد). شما مي توانيد براي درك ساده تر موضوع، Faces را در نقش يك مامور ترافيك مجسم كنيد كهوظيفه هدايت و راهنمايي تمام درخواست هاي (Requests) ارسال به اجزا ي گوناگون نرم افزار تحت وب را بر عهده دارد. (چهرچوب برنامه نويسي ديگر از جاوا به نام Struts نيز شباهت هاي زيادي به Faces دارد.)
•فايل تنظيمات JSF به نام faces-config.xml هم تا حدود زيادي به فايل تنظيمات تكنولوژي مشابه خود يعني struts شباهت دارد و نقش فايل اصلي تنظيمات را براي مدل هدايت و ناوبري و كنترل ديگر اجزاي نرم افزاري ايفا مي كند.
•فايل هاي ضروري JAR. هر نرم افزار JSF به چنين فايل هاي JAR كه در مسير WEB-INF/LIB ذخيره مي شوند، نياز خواهد داشت. در جدول يك، نام اين فايل ها را ملاحظه مي كنيد. به طور معمول، هر نرم افزار JSF براي نمايش اجزاي گرافيكي UI به مجموعه اي از اجزاي نرم افزاري، Javabean مدل مديريت شده، و تعدادي از فايل هاي HTML و JSP ديگر نياز دارد. البته مي توان در پروژه هاي JSF به جاي استفاده از JSP براي توليد اجزاي گرافيكي كاربر (UI)، از فايل هاي خوش تركيب اكس ام ال(well-formed) استفاده كرد. در زمان انتقال برنامه هاي JSF، نيازي به محيط زمان اجرا (run-time) خاصي نيست و چنين نرم افزاري قادر خواهد بود تا در container استانداردJ2EE مانند Ttomcat به صورت مستقل اجرا شود. JSF API مجموعه اي از ابزارهاي زير را در اختيار برنامه نويسان قرار مي دهد:
•مجموعه غني از اجزاي گرافيكي كاربر (UI) كه از اجزاي ساده اي نظير جعبه هاي متني ساده آغاز شده و تا اجزاي گرافيكي پيشرفته ادامه مي يابد.
•كتابخانه ويژه اي از برچسب هاي اصلي JSF كه وظيفه مديريت رويدادها و اعتبار سنجي و به طور كلي تمام امور غير وابسته به UI را بر عهده دارند.
•كتابخانه اي از برچسب هاي رندر كننده HTML استاندارد براي رند كردن يا نمايش دادن اجزاي رابط كاربر در صفحات JSP.
سناريوي معمول توليد يك نرم افزار نرمال JSF، در برگيرنده مرحله تنظيم كردن يك نرم افزار تحت وب J2EE به وسيله اجزاي JSF مي باشد. در اين جريان، طراح صفحات وب به كمك ابزارهاي متداول، در ابتدا مجموعه اي از صفحات وب JSP/HTML را خواهد ساخت كه استاتيك هستند. از طرف ديگر برنامه نويس مختار است كه از اجزاي گرافيكي آماده استفاده كند و يا آن كه خود دست به طراحي اجزاي رابط گرافيكي جديد بزند. به عنوان مثال، مي توان از اجزاي رابط گرافيكي كاربر سفارشي براي تكنولوژي هاي كلاينت هاي غير HTML (نظير كلاينت هاي زبان نشانه گذاري بي سيم يا WML) استفاده كرد. نهايتا برنامه نويسان مراحل نهايي پروژه را با استفاده از صفحات HTML استاتيك و افزودن برچسب هاي JSF و در صورت ضرورت، اضافه كردن اجزاي UI سفارشي و Bean هاي مدل يا مديريت داده ها تكميل خواهند كرد.
اما ببينيم كه يك نرم افزار JSF در زمان اجرا چگونه عمل مي كند(در واقع به بررسي چرخه حيات JSF توجه خواهيم كرد. ) فرآيند چرخه حيات JSF از بسياري از جهات مشابه ديگر چرخه هاي حيات Web Application ها است. بدين صورت كه كلاينت وب يك درخواست HTML ارسال مي كند و از طرف ديگر web appliction درخواست HTML را دريافت و پردازش مي كند و پاسخ مقتضي را در قالب HTML باز مي گرداند. اما اين فرآيند درJSF كمي پيچيده تر است. علت اين مطلب آن است كه در نرم افزارهاي JSF، لايه نمايش در زمان اجرا (Run time view) در سمت سرور مديريت مي شود. البته به ازاي هزينه اضافي پرداخت شده بابت تحمل پيچيدگي هاي فوق، قابليت انعطاف بيشتري در كاربردهايي كه در آن ها تغيير حالت (State change) زياد است، به دست خواهد آمد. يكي ديگر از دلايل پيچيدگي بيشتر فرآيندهاي پروسس JSF، در اين حقيقت نهفته است كه محيط زمان اجراي برنامه هاي JSF بايد برحسب آن كه درخواست ها از محيط دروني JSF ارسال شده اند و يا از خارج دريافت شده اند، روش هاي مديريتي متفاوتي در پيش بگيرد.
مقدمات يك پروژه JSF
نخستين قدم در ساخت يك برنامه كاربردي JSF، ايجاد يك ساختار خالي نرم افزار J2EE با همان سازمان فايل و دايركتوري استاندارد و فايل تنظيمات web.xml است. براي اطلاع از ديگر ملزومات اوليه طراحي نرم افزارهاي JSF به كادر JSF مراجعه نماييد.
نحوه دريافت JSF
براي ساخت يك برنامه ساده JSF، بايد Implementation يا پياده سازي مرجع JSF را از نشاني زير دريافت كنيد:
http://java.sun.com/j2ee/javaserverfaces
تا تاريخ آخرين نسخه پياده سازي JSF كه در جريان كنفرانس javaOna در سال 2003 عرضه شده بود، نسخه v1.1 نام دارد و در حدود 11 مگابايت حجم دارد.
پس از اين كار (آماده ساختن ساختار پروژه خالي J2EE)، بايد فايل هاي ضروري jar را به دايركتوري WEB-INF/lib منتقل سازيم. در مرحله بعدي، faces Servlet و mapping Servlet براي الگوي يو آر ال (/faces/x) را بايد در فايل web.xml اثر دهيم (كد شماره 1). در كد شماره 1، پارامتر context مشخص كننده مكان فايل faces-config.xml است.
در ادامه لازم است تا فايل faces-config.xml را به مسير WEB-INF نيز منتقل كنيم. در قطعه كد شماره 2، نمونه اي از چنين فايلي را كه هنوز خالي است، نمايش داده ايم (كد شماره 2).
به اين ترتيب يك ساختار آماده براي توليد يك نرم افزار به اصطلاح JSF enabled J2EE application در دست خواهيم داشت. به طور معمول به عنوان يك عادت برنامه نويسي پسنديده، مناسب است كه در اين مرحله يك دايركتوري موازي با دايركتوري WEB-INF ايجاد كنيم و مثلا براي آن نام Src را انتخاب كنيم تا محل ذخيره فايل هاي سورس كلاس هاي جاوا پروژه باشد.
در اين فاز، بسياري از برنامه نويسان حرفه اي ترجيح مي دهند تا از يك فايل اسكريپ Ant براي كمك به كامپايل كردن سورس كدها و انتقال نتيجه به مسير WEB-INF، كمك بگيرند Ant نام ابزاري است كه توسط آن بسياري از كارهاي تكراري و دستي برنامه نويسي در مرحله كامپايل سورس كد، به صورت خودكار انجام مي شود. در واقع تمام مراحل كار به صورت اسكريپت هايي در يك فايل كه در حكم نسخه يا دستورالعمل است، با جزئيات تمام ثبت مي شود تا سيستم بتواند به كمك اين فايل كارها را به طور خودكار پيش ببرد.
منبع فناوري اطلاعات
فن آوري Java Server Faces يا به اختصار JSF به چنين نيازهايي در دنياي جاوا پاسخ مي دهد. جامعه منبع باز جاوا يا Java Community Process مشخصه هاي استاندارد JSF براي تامين يك راه حل يكتا و استاندارد به منظور توليد نرم افزارهاي تحت وب مبتني بر HTML را معرفي كرده است. در ادامه سعي خواهيم كرد تا مرور سريعي بر ويژگي هاي اصلي اين تكنولوژي انجام دهيم و ببينيم كه در عمل به كمك JSF، چگونه مي توان يك برنامه ساده تحت وب طراحي كرد.
يكي از مشخصه هاي مهم JSF آن است كه اين فن آوري فقط براي استفاده متخصصان طراحي نشده است و طيف وسيعي از كاربران گوناگون مانند طراحان صفحات وب، برنامه نويسان كاربردي و بسياري از گروه هاي ديگر مي توانند از اين ابزار براي كار خود كمك بگيرند. ازآنجايي كه در JSF از تركيبي از JSP/HTML استفاده مي شود، طراحان صفحات وب مي توانند در همان محيط آشنا و مورد علاقه خود به كار طراحي ادامه دهند. در اين صورت برنامه نويس پروژه در مراحل نهايي كار، صفحات طراحي شده را با مجموعه اجزاي گرافيكي UI و تكنولوژي JSF تركيب كرده و نرم افزار را تكميل خواهد كرد.
اجزاي كاربردي JSF
درك مفاهيم به كار رفته در فن آوري JSF براي برنامه نويسان J2EE بسيار و ساده است. در حقيقت، يك نرم افزار كاربردي JSF اساسا يك نرم افزار استاندارد J2EE محسوب مي شود كه با مجموعه اي از اجزاي نرم افزاري ديگر به شرح زير تركيب شده است:
•يك Servlet ويژه به نام Faces كه به صورت web.xml آرايش شده است. در واقع اين Servlet نقش كنترل كننده MVC را ايفا مي كند. (MVC سرنام Model-View-Controller است و يك مدل يا چهار چوب استاندارد برنامه نويسي محسوب مي شود كه در محيط هاي برنامه نويسي گوناگون اعم از زبان هايي نظير C يا C++ يا جاوا كاربرد گسترده اي دارد). شما مي توانيد براي درك ساده تر موضوع، Faces را در نقش يك مامور ترافيك مجسم كنيد كهوظيفه هدايت و راهنمايي تمام درخواست هاي (Requests) ارسال به اجزا ي گوناگون نرم افزار تحت وب را بر عهده دارد. (چهرچوب برنامه نويسي ديگر از جاوا به نام Struts نيز شباهت هاي زيادي به Faces دارد.)
•فايل تنظيمات JSF به نام faces-config.xml هم تا حدود زيادي به فايل تنظيمات تكنولوژي مشابه خود يعني struts شباهت دارد و نقش فايل اصلي تنظيمات را براي مدل هدايت و ناوبري و كنترل ديگر اجزاي نرم افزاري ايفا مي كند.
•فايل هاي ضروري JAR. هر نرم افزار JSF به چنين فايل هاي JAR كه در مسير WEB-INF/LIB ذخيره مي شوند، نياز خواهد داشت. در جدول يك، نام اين فايل ها را ملاحظه مي كنيد. به طور معمول، هر نرم افزار JSF براي نمايش اجزاي گرافيكي UI به مجموعه اي از اجزاي نرم افزاري، Javabean مدل مديريت شده، و تعدادي از فايل هاي HTML و JSP ديگر نياز دارد. البته مي توان در پروژه هاي JSF به جاي استفاده از JSP براي توليد اجزاي گرافيكي كاربر (UI)، از فايل هاي خوش تركيب اكس ام ال(well-formed) استفاده كرد. در زمان انتقال برنامه هاي JSF، نيازي به محيط زمان اجرا (run-time) خاصي نيست و چنين نرم افزاري قادر خواهد بود تا در container استانداردJ2EE مانند Ttomcat به صورت مستقل اجرا شود. JSF API مجموعه اي از ابزارهاي زير را در اختيار برنامه نويسان قرار مي دهد:
•مجموعه غني از اجزاي گرافيكي كاربر (UI) كه از اجزاي ساده اي نظير جعبه هاي متني ساده آغاز شده و تا اجزاي گرافيكي پيشرفته ادامه مي يابد.
•كتابخانه ويژه اي از برچسب هاي اصلي JSF كه وظيفه مديريت رويدادها و اعتبار سنجي و به طور كلي تمام امور غير وابسته به UI را بر عهده دارند.
•كتابخانه اي از برچسب هاي رندر كننده HTML استاندارد براي رند كردن يا نمايش دادن اجزاي رابط كاربر در صفحات JSP.
سناريوي معمول توليد يك نرم افزار نرمال JSF، در برگيرنده مرحله تنظيم كردن يك نرم افزار تحت وب J2EE به وسيله اجزاي JSF مي باشد. در اين جريان، طراح صفحات وب به كمك ابزارهاي متداول، در ابتدا مجموعه اي از صفحات وب JSP/HTML را خواهد ساخت كه استاتيك هستند. از طرف ديگر برنامه نويس مختار است كه از اجزاي گرافيكي آماده استفاده كند و يا آن كه خود دست به طراحي اجزاي رابط گرافيكي جديد بزند. به عنوان مثال، مي توان از اجزاي رابط گرافيكي كاربر سفارشي براي تكنولوژي هاي كلاينت هاي غير HTML (نظير كلاينت هاي زبان نشانه گذاري بي سيم يا WML) استفاده كرد. نهايتا برنامه نويسان مراحل نهايي پروژه را با استفاده از صفحات HTML استاتيك و افزودن برچسب هاي JSF و در صورت ضرورت، اضافه كردن اجزاي UI سفارشي و Bean هاي مدل يا مديريت داده ها تكميل خواهند كرد.
اما ببينيم كه يك نرم افزار JSF در زمان اجرا چگونه عمل مي كند(در واقع به بررسي چرخه حيات JSF توجه خواهيم كرد. ) فرآيند چرخه حيات JSF از بسياري از جهات مشابه ديگر چرخه هاي حيات Web Application ها است. بدين صورت كه كلاينت وب يك درخواست HTML ارسال مي كند و از طرف ديگر web appliction درخواست HTML را دريافت و پردازش مي كند و پاسخ مقتضي را در قالب HTML باز مي گرداند. اما اين فرآيند درJSF كمي پيچيده تر است. علت اين مطلب آن است كه در نرم افزارهاي JSF، لايه نمايش در زمان اجرا (Run time view) در سمت سرور مديريت مي شود. البته به ازاي هزينه اضافي پرداخت شده بابت تحمل پيچيدگي هاي فوق، قابليت انعطاف بيشتري در كاربردهايي كه در آن ها تغيير حالت (State change) زياد است، به دست خواهد آمد. يكي ديگر از دلايل پيچيدگي بيشتر فرآيندهاي پروسس JSF، در اين حقيقت نهفته است كه محيط زمان اجراي برنامه هاي JSF بايد برحسب آن كه درخواست ها از محيط دروني JSF ارسال شده اند و يا از خارج دريافت شده اند، روش هاي مديريتي متفاوتي در پيش بگيرد.
مقدمات يك پروژه JSF
نخستين قدم در ساخت يك برنامه كاربردي JSF، ايجاد يك ساختار خالي نرم افزار J2EE با همان سازمان فايل و دايركتوري استاندارد و فايل تنظيمات web.xml است. براي اطلاع از ديگر ملزومات اوليه طراحي نرم افزارهاي JSF به كادر JSF مراجعه نماييد.
نحوه دريافت JSF
براي ساخت يك برنامه ساده JSF، بايد Implementation يا پياده سازي مرجع JSF را از نشاني زير دريافت كنيد:
http://java.sun.com/j2ee/javaserverfaces
تا تاريخ آخرين نسخه پياده سازي JSF كه در جريان كنفرانس javaOna در سال 2003 عرضه شده بود، نسخه v1.1 نام دارد و در حدود 11 مگابايت حجم دارد.
پس از اين كار (آماده ساختن ساختار پروژه خالي J2EE)، بايد فايل هاي ضروري jar را به دايركتوري WEB-INF/lib منتقل سازيم. در مرحله بعدي، faces Servlet و mapping Servlet براي الگوي يو آر ال (/faces/x) را بايد در فايل web.xml اثر دهيم (كد شماره 1). در كد شماره 1، پارامتر context مشخص كننده مكان فايل faces-config.xml است.
در ادامه لازم است تا فايل faces-config.xml را به مسير WEB-INF نيز منتقل كنيم. در قطعه كد شماره 2، نمونه اي از چنين فايلي را كه هنوز خالي است، نمايش داده ايم (كد شماره 2).
به اين ترتيب يك ساختار آماده براي توليد يك نرم افزار به اصطلاح JSF enabled J2EE application در دست خواهيم داشت. به طور معمول به عنوان يك عادت برنامه نويسي پسنديده، مناسب است كه در اين مرحله يك دايركتوري موازي با دايركتوري WEB-INF ايجاد كنيم و مثلا براي آن نام Src را انتخاب كنيم تا محل ذخيره فايل هاي سورس كلاس هاي جاوا پروژه باشد.
در اين فاز، بسياري از برنامه نويسان حرفه اي ترجيح مي دهند تا از يك فايل اسكريپ Ant براي كمك به كامپايل كردن سورس كدها و انتقال نتيجه به مسير WEB-INF، كمك بگيرند Ant نام ابزاري است كه توسط آن بسياري از كارهاي تكراري و دستي برنامه نويسي در مرحله كامپايل سورس كد، به صورت خودكار انجام مي شود. در واقع تمام مراحل كار به صورت اسكريپت هايي در يك فايل كه در حكم نسخه يا دستورالعمل است، با جزئيات تمام ثبت مي شود تا سيستم بتواند به كمك اين فايل كارها را به طور خودكار پيش ببرد.
منبع فناوري اطلاعات