الانتقال إلى المحتوى

الفرق بين Jsp و Jspx و Facelets و Jsf


sd4it

Recommended Posts

من يتعامل مع الشاشات يجد أنه يستطيع استخدام JSP أو JSPX أو Facelet ، وفي هذه المقالة نتعرف على الفرق بين هذه الملفات.
بداية نوضح أن امتداد الملف ليس هو ما يحدد نوع الملف بل محتويات الملف هي المحدد الفعلي لنوع الملف ، ولنستعرض كل ملف على حدة.

أولاً: JSP:
JSP هي الملف الذي يمكنك فيه كتابة HTML مع جافا من خلال العناصر الستة المعروفة فيه (Declaration - Expression - Scriptlet - Action - Comment - Directive) ويعتبر هذا التكنيك قديم حيث أنه يخلط بين مهام التصميم بـ HTML والبرمجة بالجافا كما أنه لا يوفر أي أدوات جاهزة للاستخدام بل يجب عليك كتابة كل شئ تقريباً من الصفر ، صحيح أن هذا يعطي تحكم كامل في البرنامج ولكنه يأتي على حساب الوقت والجهد.
ومع ظهور وانتشار دوت نت بدأت شركة صن تنتبه غلى أنها تخسر سوقاً وقطاعاً كبيراً من المبرمجين الذين يريدون السهولة التي تتميز بها مايكروسوفت دائماً وبالتالي بدأت في تطوير أدوات جاهزة للاستخدام ، ومن هنا بدأ ظهور JSF.

ثانياً: JSF و Facelets:
هو تطوير لملف JSP يحتوي على مكتبات تساعد في بناء الشاشة بشكل سريع ، وتختلف صفحة JSF عن صفحة JSP التقليدية في التالي:
1. لا بد من تضمين مكتبات JSF في الصفحة عن طريق السطرين التاليين
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
2. لا بد أن يكون المكون الأساسي في الصفحة هو <f:view>
3. يتم داخل الصفحة استخدام أدوات مكتبات JSF من inputText وخلافه

هذا يعني أنه لو كانت لدي صفحة JSP التقليدية وأحببت أن أغيرها إلى صفحة JSF فيكفي أن أقوم بالخطوات الصلاثة الموضحة أعلاه وبالتالي يتم تحويلها إلى صفحة JSF.
لاحظ أن امتداد الملف يظل jsp وهذا يثبت أن المحتويات هي الفيصل وليس الامتداد.
ولعدم حدوث خلط بين JSP و JSF (نظراً لأن الامتداد واحد) فقد تم إطلاق مصطلح Facelets على أي صفحة JSP تستخدم بالكامل أدوات JSF وتتبع قواعد XML في طريقة كتابة الصفحة كما أنه لا يفضل وجود كود HTML فيها (بالرغم من أن ذلك مسموح به) وتم في JDeveloper R2 تغيير الامتداد ليصبح jsf للتمييز الإضافي بين الاثنين

ثالثاً: JSPX:
ملف JSPX هو ملف JSP ولكن يتم كتابته بطريقة XML أي أن له علامة واحدة رئيسية Single Root Tag ولا بد من إغلاق العلامات بنفس ترتيب فتحهم ... إلخ.
وللعلم فإن هذه الطريقة معروفة منذ زمن بعيد حيث كان يمكن كتابة ملف JSP بطريقة XML وكانت هذه الطريقة تجعل من الممكن كتابة كود برمجي يقوم بقراءة ملف JSP على أنه ملف XML وبالتالي لو أحبببت مثلاً أن اقوم بإضافة علامة جديدة في كل الصفحات فيمكن التنفيذ ولكن بالكبع لو الملف ليس له قواعد واضحة فلن توجد طريقة غير قراءة الملف Parsing التي تعتبر أصعب كثيراً ونتائجها غير مضمونة وتحتمل الخطأ بشكل أكبر.
إذن ملف JSPX هو ملف JSP مكتوب بصيغة XML ليس أكثر ، وتختلف صفحة JSPX عن صفحة JSF في التالي:
1. تبدأ الصفحة بالتالي
<?xml version='1.0' encoding='UTF-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<jsp:directive.page contentType="text/html;charset=UTF-8"/>
2. تنتهي الصفحة بالتالي
</jsp:root>
3. تتبع قواعد XML في كتابة العلامات

أيهم أختار؟
بالطبع هذا سؤال منطقي حيث توجد لدينا ثلاثة اختيارات ، إذن متى أختار العمل بأي منهم؟
بداية بالنسبة لصفحة JSP التقليدية فهذه تقنية قديمة وبالتالي ليس من المفروض استخدامها إلا إذا كنت تستخدم Servlet and JSP في التطوير (وهذه لا تزال موجودة في بعض الأماكن نظراً لعدم رغبتهم في التحديث) ، ففي هذه الحالة تكون مجبر على صفحة JSP التقليدية
بالنسبة لصفحة Facelets أو JSPX فاختر JSPX إذا كان لديك النية لقراءة الملف برمجياً للتعديل فيه أو كنت تريد بناء portal باستخدام Web Center أو كنت تريد استخدام MDS ، أما عدا ذلك فيمكنك استخدام Facelets لأن مسالة التزام قواعد XML تكون مزعجة أحياناً لأنه مثلاً إذا أحببت كتابة HTML مثل <br> فيجب كتابتها <br/>

أيهم أسرع؟
سرعة Facelets و JSPX تعتبر واحدة والاثنين في حالة يعتبران أسرع وفي حالة أخرى أبطأ.
Facelets و JSPX أسرع من JSP في عملية الترجمة لأن ملف JSP يقوم بعملية الترجمة إلى Servlet في حين أن Facelets تقوم بقراءة الملف على هيئة XML وبالتالي تعتبر أسرع في القراءة ولكن لو تكلمنا على النظام بأكمله فإن صفحة Facelets (خاصة مع تقنية ADF) تمر بدورة حياة Life Cycle أكبر من صفحة JSP التقليدية ولذلك نجد أن النظام المعتمد على JSP أسرع من نظيره المبني بتقنية ADF ولكن مع تطور التقنية وتطور الهاردوير لم يعد الفارق بالشئ الكبير خاصة مع الخدمات الرائعة التي تقدمها أدوات ADF وبالتالي باستخدام هاردوير جيد فسيكون أداء ADF عالي جداً خاصة بعد ضبط إعدادات Web Logic.

أرجو أن يكون الفرق قد وضح للكل.

رابط هذا التعليق
شارك

  • بعد 2 أسابيع...

مشكور أخ مصطفى
وجزاك الله خيرا


من يتعامل مع الشاشات يجد أنه يستطيع استخدام JSP أو JSPX أو Facelet ، وفي هذه المقالة نتعرف على الفرق بين هذه الملفات.
بداية نوضح أن امتداد الملف ليس هو ما يحدد نوع الملف بل محتويات الملف هي المحدد الفعلي لنوع الملف ، ولنستعرض كل ملف على حدة.

أولاً: JSP:
JSP هي الملف الذي يمكنك فيه كتابة HTML مع جافا من خلال العناصر الستة المعروفة فيه (Declaration - Expression - Scriptlet - Action - Comment - Directive) ويعتبر هذا التكنيك قديم حيث أنه يخلط بين مهام التصميم بـ HTML والبرمجة بالجافا كما أنه لا يوفر أي أدوات جاهزة للاستخدام بل يجب عليك كتابة كل شئ تقريباً من الصفر ، صحيح أن هذا يعطي تحكم كامل في البرنامج ولكنه يأتي على حساب الوقت والجهد.
ومع ظهور وانتشار دوت نت بدأت شركة صن تنتبه غلى أنها تخسر سوقاً وقطاعاً كبيراً من المبرمجين الذين يريدون السهولة التي تتميز بها مايكروسوفت دائماً وبالتالي بدأت في تطوير أدوات جاهزة للاستخدام ، ومن هنا بدأ ظهور JSF.

ثانياً: JSF و Facelets:
هو تطوير لملف JSP يحتوي على مكتبات تساعد في بناء الشاشة بشكل سريع ، وتختلف صفحة JSF عن صفحة JSP التقليدية في التالي:
1. لا بد من تضمين مكتبات JSF في الصفحة عن طريق السطرين التاليين
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
2. لا بد أن يكون المكون الأساسي في الصفحة هو <f:view>
3. يتم داخل الصفحة استخدام أدوات مكتبات JSF من inputText وخلافه

هذا يعني أنه لو كانت لدي صفحة JSP التقليدية وأحببت أن أغيرها إلى صفحة JSF فيكفي أن أقوم بالخطوات الصلاثة الموضحة أعلاه وبالتالي يتم تحويلها إلى صفحة JSF.
لاحظ أن امتداد الملف يظل jsp وهذا يثبت أن المحتويات هي الفيصل وليس الامتداد.
ولعدم حدوث خلط بين JSP و JSF (نظراً لأن الامتداد واحد) فقد تم إطلاق مصطلح Facelets على أي صفحة JSP تستخدم بالكامل أدوات JSF وتتبع قواعد XML في طريقة كتابة الصفحة كما أنه لا يفضل وجود كود HTML فيها (بالرغم من أن ذلك مسموح به) وتم في JDeveloper R2 تغيير الامتداد ليصبح jsf للتمييز الإضافي بين الاثنين

ثالثاً: JSPX:
ملف JSPX هو ملف JSP ولكن يتم كتابته بطريقة XML أي أن له علامة واحدة رئيسية Single Root Tag ولا بد من إغلاق العلامات بنفس ترتيب فتحهم ... إلخ.
وللعلم فإن هذه الطريقة معروفة منذ زمن بعيد حيث كان يمكن كتابة ملف JSP بطريقة XML وكانت هذه الطريقة تجعل من الممكن كتابة كود برمجي يقوم بقراءة ملف JSP على أنه ملف XML وبالتالي لو أحبببت مثلاً أن اقوم بإضافة علامة جديدة في كل الصفحات فيمكن التنفيذ ولكن بالكبع لو الملف ليس له قواعد واضحة فلن توجد طريقة غير قراءة الملف Parsing التي تعتبر أصعب كثيراً ونتائجها غير مضمونة وتحتمل الخطأ بشكل أكبر.
إذن ملف JSPX هو ملف JSP مكتوب بصيغة XML ليس أكثر ، وتختلف صفحة JSPX عن صفحة JSF في التالي:
1. تبدأ الصفحة بالتالي
<?xml version='1.0' encoding='UTF-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<jsp:directive.page contentType="text/html;charset=UTF-8"/>
2. تنتهي الصفحة بالتالي
</jsp:root>
3. تتبع قواعد XML في كتابة العلامات

أيهم أختار؟
بالطبع هذا سؤال منطقي حيث توجد لدينا ثلاثة اختيارات ، إذن متى أختار العمل بأي منهم؟
بداية بالنسبة لصفحة JSP التقليدية فهذه تقنية قديمة وبالتالي ليس من المفروض استخدامها إلا إذا كنت تستخدم Servlet and JSP في التطوير (وهذه لا تزال موجودة في بعض الأماكن نظراً لعدم رغبتهم في التحديث) ، ففي هذه الحالة تكون مجبر على صفحة JSP التقليدية
بالنسبة لصفحة Facelets أو JSPX فاختر JSPX إذا كان لديك النية لقراءة الملف برمجياً للتعديل فيه أو كنت تريد بناء portal باستخدام Web Center أو كنت تريد استخدام MDS ، أما عدا ذلك فيمكنك استخدام Facelets لأن مسالة التزام قواعد XML تكون مزعجة أحياناً لأنه مثلاً إذا أحببت كتابة HTML مثل <br> فيجب كتابتها <br/>

أيهم أسرع؟
سرعة Facelets و JSPX تعتبر واحدة والاثنين في حالة يعتبران أسرع وفي حالة أخرى أبطأ.
Facelets و JSPX أسرع من JSP في عملية الترجمة لأن ملف JSP يقوم بعملية الترجمة إلى Servlet في حين أن Facelets تقوم بقراءة الملف على هيئة XML وبالتالي تعتبر أسرع في القراءة ولكن لو تكلمنا على النظام بأكمله فإن صفحة Facelets (خاصة مع تقنية ADF) تمر بدورة حياة Life Cycle أكبر من صفحة JSP التقليدية ولذلك نجد أن النظام المعتمد على JSP أسرع من نظيره المبني بتقنية ADF ولكن مع تطور التقنية وتطور الهاردوير لم يعد الفارق بالشئ الكبير خاصة مع الخدمات الرائعة التي تقدمها أدوات ADF وبالتالي باستخدام هاردوير جيد فسيكون أداء ADF عالي جداً خاصة بعد ضبط إعدادات Web Logic.

أرجو أن يكون الفرق قد وضح للكل.


Excellent Eng.Mostafa ..
رابط هذا التعليق
شارك

  • بعد 8 شهور...
  • بعد 2 أسابيع...
  • بعد 1 سنة...
  • بعد 1 شهر...

جزاك الله ألف خير يا أخي مصطفى .... وإن شاء الله في ميزان حساناتك

رابط هذا التعليق
شارك

  • بعد 2 شهور...
  • بعد 11 شهور...

عند الرغبة في إضافة صفحة JSF  من خلال ADF وأقوم بكل الخطوات اللازمة تنتج لي صفحة JSP جبراً ولا أعلم لذلك سبب علماً بأنني أقوم بالخطوات كالتي كما هو موضح في الصورة

 

post-76212-0-41326400-1453062566_thumb.jpg

post-76212-0-69482200-1453062629_thumb.jpg

رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية