الشكل الإفتراضي لوجهات مطورة باستخدام Swing

تاريخياً كانت the Abstract Windows Toolkit وتختصر AWT أول بداية للدعم الواجهات الرسومية في لغة Java من قبل شركة Sun، المكتبة كانت تعمل كوسيط ما بين Java والمكونات “الأساسية” للوجهات الرسومية في الأنظمة المختلفة مثل ( Buttons, Events, Menus )، وعندما نقول المكونات الأساسية فإننا نقصد المكونات التي تتوفر في أي نظام تشغيل رسومي تدعمه Java، في هذه الحالة فإن أي مكون رسومي آخر حتى وإن كثر استخدامه مثل Tree أو Table لن يكون متوفراً بشكل مباشر في مكتبات AWT وعلى المبرمج أن يقوم هو نفسه ببرمجته بالإعتماد على ما توفره هذه المكتبات من مكونات أساسية!!

بعد فترة من الوقت أطلقت Sun أيضاً المكتبة الشهيرة Swing والتي حاولت من خلالها حل النواقص في AWT، حيث قامت Sun بإعادة إستخدام بعض أجزاء AWT خاصة فيما يتعلق بالـEvents وقامت ببناء مكتبة قوية لدعم الواجهات الرسومية مكتوبة بالكامل بلغة Java بما يحمله ذلك من إيجابيات وسلبيات، فأنت بذلك يمكنك إستخدام هذه المكتبة القوية والتي تحتوي على مجموعة أكبر من المكونات الرسومية، والتي ستعمل مع أي جهاز يدعم Java مباشرة، ولكنك في ذات الوقت ستشعر ببعض البطء في التنفيذ كما وستظهر برامجك بشكل مختلف عن النمط المعتاد في نظام التشغيل !


مظهر الوجهات المطورة بSWT على أنظمة التشغيل الرئيسية

قد يكون إستخدام AWT/Swing معتاداً عند مبرمجي Java، ولكننا اليوم نود الحديث عن مكتبة أخرى وهي SWT، وهي المكتبة المطورة بواسطة IBM، والتي تستخدم وتطور حالياً تحت مشروع الـEclipse المفتوح المصدر، فقد شعرت IBM بأنها بحاجة لمكتبة رسومية للغة Java تتغلب على المشاكل النقص الموجود في AWT والبطء والشكل المختلف الذي تفرضه Swing، وبالتالي قامت ببرمجة مكتبة جديدة ومتكاملة باستخدام C/C++ تدعم المكونات الرسومية المستخدمة بكثرة ( مثل Swing )، وفي ذات الوقت تعمل وبالتالي تظهر بنفس مظهر نظام التشغيل الذي تعمل عليه ( مثل AWT). أضف لذلك وجود أداة مساعدة وهي JFace والتي ستسهل عليك الكثير من الأمور التي يكثر إستخدامها مثل التعامل مع الـEvents, Fonts, Images وغيرها.

وبما أنك يجب أن تدفع ضريبة لكل شيء جيد فإن SWT ليست خالية من المتغصات، فهي الأخرى تحتوي على بعض النواقص التي قد لا تجدها في Swing فعلى سبيل المثال SWT تدعم طريقة واحدة في إنشاء الواجهات الرسومية وهي Top-down approach وهو ما يعني أنك بحاجة لإنشاء النافذة ثم إضافة أي مكونات أخرى بداخلها، بينما تمكنك كل من AWT و Swing من العمل بطريقتين Top-down أو Buttom-up. الأمر الثاني هو أن SWT ليس جزءاً من الـJava وبالتالي عليك إضافة المكتبات اللازمة مع برنامجك علماً بأن هذه المكتبات تختلف من نظام تشغيل لآخر.

متى أستخدم SWT ؟
هذا هو السؤال الأهم لدى أي مبرمج عندما يجد نفسه أمام عدة خيارات، وأي مبرمج لديه بعض الخبرة يدرك أنه لا يوجد جواب يقول ” إستخدم الأداة الفلانية أو المكتبة الفلانية “، لأن الأمر يعتمد على طبيعة العمل الذي تود القيام به.

يمكننا أن نختم ونقول أن AWT/Swing كافيتان جداً لإنشاء برمجيات صغيرة أو متوسطة الحجم، وذلك لأنك لن تشعر بالبطء كثيراً، كما وأنه يمكنك التغلب على مشكلة المظهر باستخدام مكتبات مساعدة ، أما برمجة تطبيقات كبيرة أو ضخمة تعتمد على واجهات رسومية فإن SWT ستكون أكثر من جيدة للقيام بهذا الغرض.

مراجع ومواضيع ذات علاقة.
إنشاء برامج إحترافية بواسطة Java-RCP الجزء الأول – محمد بشير النعيمي
SWT, Swing or AWT: Which is right for you?
Four toolkits for Java to develop excellent GUI

عناويين مواضيع مقترحة (يمكنكم الرد بدعم أحد هذه المواضيع للكتابة عنها)
مقارنة تطبيقية بين Swing و SWT
تحويل برنامجك من Swing إلى SWT
تطوير برمجيات باستخدام منصة Eclipse RCP

منقول من مدونتي: Tech Talk Time