جافا بينز
في الحوسبة القائمة على منصة جافا ، تعد JavaBeans تقنية طورتها شركة Sun Microsystems وأصدرتها في عام 1996، كجزء من JDK 1.1.
تُعدّ "الحُبيبات" في JavaBeans فئاتٍ تُغلّف كائنًا واحدًا أو أكثر في كائنٍ موحّدٍ واحد (الحُبيبة). يُتيح هذا التوحيد التعامل مع الحُبيبات بطريقةٍ أكثر عمومية، مما يُسهّل إعادة استخدام الكود وفحصه . وهذا بدوره يُتيح التعامل مع الحُبيبات كمكوّناتٍ برمجية ، وإمكانية التلاعب بها بصريًا بواسطة المحررات وبيئات التطوير المتكاملة دون الحاجة إلى أيّ تهيئةٍ أولية، أو معرفة أيّ تفاصيلٍ داخليةٍ للتنفيذ.
كجزء من عملية التوحيد القياسي، يجب أن تكون جميع الكائنات قابلة للتسلسل ، وأن يكون لها مُنشئ بدون وسيطات ، وأن تسمح بالوصول إلى الخصائص باستخدام طرق getter و setter .
سمات
- التأمل الذاتي
- الاستبطان هو عملية تحليل مكون Java Bean لتحديد قدراته. تُعد هذه ميزة أساسية في مواصفات Java Beans لأنها تسمح لتطبيق آخر، مثل أداة تصميم، بالحصول على معلومات حول المكون.
- ملكيات
- الخاصية هي جزء من حالة الكائن (Bean). تحدد القيم المُسندة إلى الخصائص سلوك ومظهر هذا المكون. يتم تعيينها من خلال دالة التعيين (setter) ويمكن الحصول عليها من خلال دالة الجلب (getter).
- التخصيص
- يمكن للمُخصِّص أن يُقدِّم دليلاً خطوة بخطوة يجب على العملية اتباعه لاستخدام المكون في سياق مُحدَّد.
- الفعاليات
- قد تتفاعل المكونات مع نموذج EventObject EventListener.
- المثابرة
- الثبات هو القدرة على حفظ الحالة الحالية لـ Bean، بما في ذلك قيم خصائص Bean ومتغيرات المثيل، في وحدة تخزين غير متطايرة واسترجاعها في وقت لاحق.
- طُرق
- ينبغي أن يستخدم الكائن البرمجي (Bean) أساليب الوصول لتغليف الخصائص . ويمكن للكائن البرمجي توفير أساليب أخرى لمنطق الأعمال غير المرتبط بالوصول إلى الخصائص.
المزايا
- يمكن عرض خصائص وأحداث وأساليب عنصر برمجي (bean) لتطبيق آخر.
- يمكن لـ Bean التسجيل لتلقي الأحداث من كائنات أخرى ويمكنه إنشاء أحداث يتم إرسالها إلى تلك الكائنات الأخرى.
- يمكن توفير برامج مساعدة لتكوين مكون برمجي (Bean).
- يمكن حفظ إعدادات تكوين عنصر برمجي في وحدة تخزين دائمة واستعادتها.
العيوب
- قد يتم إنشاء كائن من فئة ذات مُنشئ بدون وسائط في حالة غير صالحة. [ 1 ] إذا قام المطور بإنشاء كائن من هذه الفئة يدويًا (بدلاً من إنشائه تلقائيًا بواسطة إطار عمل ما)، فقد لا يدرك المطور أن الكائن قد تم إنشاؤه بشكل غير صحيح. لا يستطيع المُصرّف اكتشاف هذه المشكلة، وحتى لو تم توثيقها، فلا يوجد ما يضمن اطلاع المطور على هذا التوثيق.
- تتميز كائنات JavaBeans بطبيعتها القابلة للتغيير، وبالتالي فهي تفتقر إلى المزايا التي توفرها الكائنات غير القابلة للتغيير . [ 1 ]
- إن الاضطرار إلى إنشاء دوال جلب لكل خاصية ودوال تعيين للعديد منها أو معظمها أو جميعها يمكن أن يؤدي إلى كمية هائلة من التعليمات البرمجية النمطية .
واجهة برمجة تطبيقات JavaBeans
يتم توفير وظائف JavaBeans من خلال مجموعة من الفئات والواجهات في java.beansالحزمة.
| واجهة المستخدم | وصف |
|---|---|
| مُهيئ التطبيق المصغر | تُستخدم الطرق الموجودة في هذه الواجهة لتهيئة Beans التي هي أيضًا تطبيقات صغيرة (applets) . |
| معلومات الفاصوليا | تتيح هذه الواجهة للمصمم تحديد معلومات حول الأحداث والأساليب والخصائص الخاصة بـ Bean. |
| أداة التخصيص | تتيح هذه الواجهة للمصمم توفير واجهة مستخدم رسومية يمكن من خلالها تهيئة عنصر برمجي. |
| وضع التصميم | تحدد الطرق الموجودة في هذه الواجهة ما إذا كان الكائن البرمجي قيد التنفيذ في وضع التصميم. |
| مستمع الاستثناءات | يتم استدعاء إحدى الطرق في هذه الواجهة عند حدوث استثناء. |
| مستمع تغيير الملكية | يتم استدعاء طريقة في هذه الواجهة عند تغيير خاصية مرتبطة. |
| محرر الخصائص | تسمح الكائنات التي تنفذ هذه الواجهة للمصمم بتغيير وعرض قيم الخصائص. |
| مستمع التغيير القابل للنقض | يتم استدعاء طريقة في هذه الواجهة عند تغيير خاصية مقيدة. |
| الرؤية | تسمح الطرق الموجودة في هذه الواجهة بتنفيذ عنصر برمجي في بيئات لا تتوفر فيها واجهة المستخدم الرسومية. |
اصطلاحات جافا بين
لكي تعمل فئة الكائن كفئة JavaBean ، يجب أن تلتزم ببعض القواعد المتعلقة بتسمية الدوال، وبنائها، وسلوكها. تُمكّن هذه القواعد من وجود أدوات قادرة على استخدام وإعادة استخدام واستبدال وربط فئات JavaBean.
الاتفاقيات المطلوبة هي كالتالي:
- يجب أن يحتوي الصنف على مُنشئ افتراضي عام (بدون وسائط). وهذا يُسهّل عملية إنشاء الأصناف ضمن أطر التحرير والتفعيل.
- يجب أن تكون خصائص الصنف قابلة للوصول باستخدام دوال get و set و is (يمكن استخدامها للخصائص المنطقية بدلاً من get) و to وغيرها من الدوال (ما يُسمى بدوال الوصول والتعديل ) وفقًا لاتفاقية تسمية قياسية . يتيح ذلك سهولة الفحص والتحديث الآلي لحالة الكائن داخل الأطر البرمجية، والتي يتضمن العديد منها محررات مخصصة لأنواع مختلفة من الخصائص. يمكن أن تحتوي دوال التعيين على وسيط واحد أو أكثر.
- يجب أن تكون الفئة قابلة للتسلسل . (يسمح هذا للتطبيقات والأطر بحفظ وتخزين واستعادة حالة الكائن بشكل موثوق بطريقة مستقلة عن الجهاز الظاهري والمنصة.)
مثال على الكود
الحزمة org.wikipedia.players ؛استيراد java.io.Serializable ؛ استيراد java.util.List ؛public class PersonBean implements Serializable { /** الخصائص **/ private boolean exceeded = false ;قائمة خاصة < سلسلة > قائمة ؛/** خاصية "name"، قابلة للقراءة والكتابة. */ private String name = null ;/** مُنشئ بدون وسائط (لا يأخذ أي وسائط). */ public PersonBean () {}public List <String> getList ( ) { return list ; } public void setList ( final List <String> list ) { this.list = list ; }/** * دالة جلب للخاصية "name". */ public String getName () { return name ; }/** * دالة تعيين للخاصية "name". * * @param value */ public void setName ( final String value ) { this . name = value ; }/** * دالة جلب للخاصية "deceased" * صيغة مختلفة لحقل منطقي (is مقابل get) */ public boolean isDeceased () { return descend ; }/** * دالة تعيين للخاصية "deceased". * @param value */ public void setDeceased ( boolean value ) { descended = value ; } }TestPersonBean.java:
الحزمة org.wikipedia.players ؛استيراد java.util.ArrayList ؛استيراد org.wikipedia.players.PersonBean ;/** * فئة "TestPersonBean". */ public class TestPersonBean { /** * دالة الاختبار "main" للفئة "PersonBean". * * @param arguments */ public static void main ( String [] args ) { final PersonBean person = new PersonBean ();person.setName ( " Bob " ) ; person.setDeceased ( false ) ; person.setList ( new ArrayList <String> ( ) ) ;// الإخراج: " بوب [على قيد الحياة]" System.out.printf ( " %s هو %s%n" , person.getName ( ) , person.isDeceased ( ) ? "[متوفى]" : " [على قيد الحياة]" ) ; } }<jsp:useBean id= "person" class= "org.wikipedia.players.PersonBean" scope= "page" /> <jsp:setProperty name= "person" property= "*" /><html> <body> الاسم: <jsp:getProperty name= "person" property= "name" /><br/> متوفى؟ <jsp:getProperty name= "person" property= "deceased" /><br/> <br/> <form name= "beanTest" method= "POST" action= "testPersonBean.jsp" > أدخل اسمًا : <input type= "text" name= "name" size= "50" ><br/> اختر خيارًا : <select name= "deceased" > <option value= "false" > على قيد الحياة </option> <option value= "true" > ميت </option> </select> <input type= "submit" value= "اختبر الكائن" > </form> </body> </html>انظر أيضاً
مراجع
- 1 2 بلوخ، جوشوا ( 2008). جافا الفعالة ( الطبعة الثانية). أديسون-ويسلي. ص 13. ISBN 978-0-321-35668-0.
روابط خارجية
- جافا (منصة برمجية)
- النمط المعماري (علوم الحاسوب)
- أنماط تصميم البرمجيات
