إنشاء برامج إحترافية بواسطة Java-RCP
أنشئ بواسطة محمد بشير النعيمي في 18 نوفمبر 2007 | وسم كـ:
مدخل الفهرس
بسم الله الرحمن الرحيم و الصلاة و السلام على أشرف الأنبياء و المرسلين سيدنا محمد صلّى الله عليه و على آله الطيبين الطاهرين و بعد.
كثيرة هي الكتب الإلكترونية العربية التي تتحدث عن مبادئ لغة جافا و هي متنوعة بكافة أشكالها و أساليبها، لكنها قليلة تلك الكتب أو المقالات التي تتناول و تتوسع في دراسة التقنيات الحديثة التي يتم إستعمالها في العديد من البرامج الأجنبية الضخمة منها أو البسيطة.
لذلك قررت المضي قدماً في كتابة سلسلة مقالات متنوعة تهدف لتركيز الضوء على جانب مهم من جوانب جافا، هذا الجانب الذي إختار العرب تجاهله، لا أعرف لماذا!، ما السبب!، لكنه جلي و واضح وضوح الشمس ألا وهو التخلّف.
بالرغم من ضيق وقتي بين العمل و الدراسة إخترت هذا الطريق آملاً بأن اكون السبّاق في تنوير أخوتنا بهذه التنقنية. لقد بحثت كثيراً في المواقع و المنتديات و المدونات العربية لكنني و للأسف لم أجد أحداً على الإطلاق تحدّث و لو بقليل عن تطبيقات RCP بالرغم من أهميتها البالغة.
لقد إحتلت تطبيقات RCP مكاناً مرموقاً في السوق الإلكترونية بزمن قياسي، حتى أنه بعد الإعلان عن إطلاق هذه التقنية بعام واحد فقط، وصل عدد الشركات التي تعتمد على تطبيقات RCP الى ما يقارب 20000 شركة في الولايات المتحدة الامريكية فقط، هذا دون ذكر لأي إحصاء يتعلق بإنتاج مبرمجي المصادر المفتوحة الذين يزيد عددهم أضعافاً مضاعفة عن الشركات التجارية. أهمية هذا الجانب دفعني على الوفر للبدء دون تردّد بنقل هذه التقنية و أنا كلّي أمل أن اجد من يشاركني هذه المسيرة.
لذلك أدعو الجميع بالمساهمة معي، و أنا مستعدّ لتقديم المساعدة و الدعم المناسب أملاً بأن أحظى بدعوة صالحة فد تفيدني في دنياي و/أو آخرتي. و في حال وجود أي خطأ أو سؤال عن أي شيء لا تتردّد أختي/ أخي القارئ بمراسلتي على موقعي أو بواسطة البريد الإلكتروني mhdbnoimi<@>gmail.com لتصويب ما ترونه خطأً أو للتنسيق معي في هذا المضمار.
هممم … لأقد أسهبت بالمقدّمة، لنبدأ بلبّ الموضوع… على بركة الله
لغة جافا بما تمتاز به من مرونة و سهولة في برمجة الشبكات و الأجهزة الإلكترونية حظيت في الآونة الأخيرة بدءً من الإصدار 1.4 حتى 1.6 (تاريخ كتابة هذه المقالة)، على مقدار تطوير هائل شمل عدّة تقنيات كانت سابقاً تعتبر نقاطاً للضعف في اللغة.
لقد تم توسيع أفق التقانات التي تستعملها هذه اللغة حتى أصبحت لا تختلف عن اللغات التقليدية ذات الشيفرات الأصيلة Native Languages (مثل: C++ , Delphi , Visual Basic)، فأصبح بالإمكان إنشاء تطبيقات ذات المستوى المنخض المتخصصة بالتحكم المباشر بعتاد الحاسب (Low Level Hardware Programming)، أي أن التطبيقات الصناعية لهذه اللغة أصبح متاحة بكل حرّية.
لكن تطبيقات سطح المكتب لا تزال تعاني من قصور بالأداء لدى إستعمال حزم التطوير المرئية المدعومة من قبل شركة SUN و أقصد بذلك حزم التطوير SWING , AWT المتخصصة بإدارة تطبيقات واجهة المستخدم GUI.
لدى مقارنة تطبيقات سطح المكتب التي تستعمل حزمة SWING في بناء واجهة المستخدم GUI مع لغات الشيفرات الأصيلة كلغة C++ سنجد مقداراً كبيراً من البطئ بالأداء، إستهلاكاً كبيراً للذاكرة، غرابة المكونات المرئية … إلخ من مساوئ.
بشكل طبيعي هذه المساوئ لا تظهر في التطبيقات الصغيرة أو المتوسطة الحجم، إنما تظهر بشكل جلي في التطبيقات الكبيرة (كـبرنامج لإدارة عدّة قواعد بيانات لعدد من فروع الشركة بآن واحد) ، لذلك أي مبرمج يفكّر بإنتاج أي نوع من البريمجات أو البرامج المتوسطة الحجم لن يجد أي عائق تقني يمنعه من تنفيذ مراده، لكن حجم هذه التطبيقات غالباً ما يستعمل في المراحل الجامعية أو بالمجال التجاري ذي الإمكانيات المحدودة و السؤال الهام هنا …
ماذا عن التطبيقات التجارية الإحترافية؟
هل من المعقول أن يتم بناء التطبيقات بوجود هذه السلبيات!
الحل موجود لكن لم يتم إبتكاره بواسطة شركة SUN، إنما تم ذلك بواسطة عدد كبير من المبرمجين المؤمنين بمبدء المصادر المفتوحة، و ذلك بمباركة من شركة SUN و بإدارة شركة IBM، ليولد مشروع eclipse.
لمن هذا المقال؟ الفهرس
يستهدف هذا المقال شريحة المبرمجين المتوسطي المعرفة بلغة جافا، فيكفي فقط أن تعرف أساسيات اللغة لتحلّق معنا في جنّة مبرمجي جافا، و في حال لم يكن عندك أي إطلاع على لغة جافا، بإمكانك الإطلاع على قسم الملحقات في هذا المقال للحصول على مرجع جافا السريع، بعدها تابع معنا بكل حرّية .
ما هو eclipse ؟ الفهرس
هو مشروع منصة تطوير مفتوحة المصدر، ظهر المشروع للعلن عام 2001م بدعم من شركة IBM، اول إصدارة منه و التي كانت تحمل الرقم 1٫0 لم تكن مجانية، لكن بتاريخ 1/11/2001 تم الإعلان عن تحويل eclipse لمشروع مجاني مفتوح المصدر و بدعم من عدّة منظمات كـ: Borland , Oracle , Redhat , Suse .
تتألف منصّة النطوير eclipse من عدد كبير من البرامج الإضافية المكتوبة بلغة جافا و التي تعمل مجتمعة لتشغيل منصّة التطوير الرئيسية للغة جافا أو للغات برمجية أخرى.
يصنّف حالياً eclipse على أنه أكثر منصات التطوير مرونة و ذلك بسبب إعتماد هندسة بنائه على البرامج الإضافية التي تتيح للمبرمجين (عل مختلف خبراتهم) تطوير البرامج الإضافية بشكل مستقل، حيث يؤدي كل برنامج إضافي عمل محدّد مفصول عن البرنامج الإضافي الآخر، لذلك إستطاع المبرمجون تطوير eclipse لإنتاج التطبيقات بعدّة لغات برمجية و بوقت قياسي. ويشتمل eclipse حتى تاريخ كتابة هذه المقالة على العديد من لغات البرمجة و التي أذكر أهمّها(طبعاً دون نسيان جافا): Prolog , Ada , C/C++ , PHP , Python , Ruby , Perl, Java Script , Scala
ما الذي يجعل eclipse فريداً من نوعه؟ الفهرس
بما إن eclipse مفتوح المصدر فبالتأكيد إتفاقية المستخدم تسمح للمبرمجين بإقتطاع أي جزء من الشيفرة لإستعمالها في أي مكان تريده، لكن الأمر لا يتوقف عند هذا الحد بل يتجاوزه بكثير، لأن eclipse مجهّز بعدد كبير من المعالجات الإحترافية التي تسمح للمبرمج بإشتقاق أجزاء من eclipse ليستعملها ضمن برنامجه الخاص. هذه الميزة الفريدة لا تتوفر بأي منصة تطوير موجودة على وجه الأرض -حتى الآن- و لقد حاول فريق تطوير netBeans أنشاء معالجات شبيه بمعالجات eclipse لكنهم فشلوا فشلاً ذريعاً بسبب هندسة مشروع netBeans التي تعتمد على مكونات مجانية لكنها غير مفتوحة المصدر.
يوفّر eclipse على مطوّري جافا الكثير من العناء، إذ أنه بالإمكان إنشاء تطبيق يعمل بشكل مستقل عن eclipse أو يعمل ضمن eclipse بشكل برنامج إضافي، وذلك دون تغيير أي سطر برمجي. و هذا يذكّرنا بمكونات Active X/COM في Windows التي كانت تحتاج لكم هائل من التعديلات في الشيفرة البرمجية من أجل تحويل مكوّن Active X الى تطبيق عادي (أو بالعكس).
يستعمل eclipse حزمة تطوير مرئية خاصة به (بالإمكان إستعمالها بأي منصة تطوير أخرى) تدعى SWT و التي سنتحدّث عنها لاحقاً
الإنطباع الأول الفهرس
أول شيء يتم ملاحظته لدى تشغيل eclipse هو الواجهة المرئية التي لا تختلف كثيراً عن الواجهة المرئية لنظام التشغيل الذي تستعمله، و ذلك بسبب إعتماد eclipse على حزمة SWT/JFace (سنتحدّث عنها لاحقاً)
لماذا SWT ؟ الفهرس
تعتمد منصة التطوير eclipse على حزمة SWT (حزمة أدوات النوافذ القياسية Standard Widget Toolkit) في إظهار الواجهة المرئية. هذه الحزمة يمكن إستعمالها في التطبيقات العادية مثلها مثل SWING لكنها تتميّز بالعديد من الخصائص و التي أهمّها:
-
الأداء: سرعة عرض الواجهة المرئية التي تستعمل SWT أكبر بكثير من SWING، لأن SWT تُظهر المكونات بشكل شيفرة أصيلة (Native Code) أي عملية الإظهار تتم مباشرة من نظام التشغيل في حين أن SWING تستعمل آلة جافا الإفتراضية (Java Virtual Machine) تم تقوم آلة جافا الإفتراضية بمحاكاة إستدعاء النظام.
-
التطوير السريع: طريقة تغليف الشيفرة في SWT توفر على المبرمج الكثير من أسطر الشيفرة البرمجية التي قد تحتاجها SWING.
-
الحرّية: SWT حزمة مجانية مفتوحة المصدر 100% (لذلك عملية تصحيح الأخطاء Bugs متوفرة بشكل سريع بسبب ضخامة مجتمع المصادر المفتوحة) في حين أن SWING مجانبة لكنها مغلقة المصدر
-
قابلية النقل: تطبيقات SWING مثلها مثل تطبيقات جافا العادية تحتاج لآلة جافا الإفتراضية لتعمل على النظام، في حين أن SWT تحتاج لآلة جافا الإفتراضية إضافة لبعض الملفات الخاصة لكل نظام تشغيل معين. و تعتبر هذه النقطة النقطة الوحيدة السوداء في SWT، لكن مع ذلك يمكن تخطّي هذه المشكلة بطرق عدّة تم إبتكارها مؤخراً و التي سأتناولها بشكل مفصّل بعد عدّة فقرات.
لماذا Jface؟الفهرس
حزمة Jface عبارة عن مجموعة من المعالجات و الواجهات المرئية المعقّدة التي يمكن تخصيصها من قبل المستخدم.
ترتبط هذه الحزمة إرتباطاً وثيقاً بحزمة SWT لأنها بالأساس مشتقّة منها، لذلك أي مكوّن متوفر في Jface بالإمكان إنجازه بواسطة SWT بشكل كامل دون الحاجة لـJface.
السبب الرئيسي لإنشاء هذه الحزمة هو الإقلال قدر الإمكان من الأسطر البرمجية التي تتعلق بتطوير الواجهة المرئية لذلك أي مبرمج بإمكانه إختيار المكون المطابق/المشابه لإحتياجاته ثم إشتقاقه من حزمة Jface ليجري التعديلات التي يراها مناسبة.
إن أفضل طريقة لفهم طبيعة عمل هذه الحزمة هو التطبيق العملي من خلال المشاريع القادمة لذلك لا تتعجل و تحتار بماهية عمل هذه الحزمة، لأنه سيتم شرحها تدريجياً و بشكل مفصل بعد عدّة فقرات.
لماذا RCP؟الفهرس
منصة العميل الغنية Rich Client Platform عبارة عن أسلوب لإنشاء تطبيقات جافا لتعمل بشكل شيفرة أصيلة متكاملة بإستخدام الحزم SWT/Jface. و لفهم ماهية RCP سنقوم بإجراء تجربة صغيرة تفيدنا على إستيعاب RCP بشكل سريع و بسيط. التجربة:
القائمة التالية تحتوي على مجموعة برامج كُتبت بواسطة Java/RCP
http://www.eclipse.org/community/rcpos.php
لنختر Azureus، قم بإحضار صديقك أو أخوك أو أي شخص كان ممكن لديهم إطّلاع بسيط جداً على أي لغة برمجة ثم إعرض عليه برنامج Azureus و إسأله عن لغة البرمجة المستعملة في كتابة Azureus، الجواب المتوقّع بكل تأكيد هو:
-
في حال كان نظامك التشغيل Linux: سيجيبك بأن لغة البرمجة هي C++/GTK
-
في حال كان نظامك التشغيل Windows: سيجيبك بأن لغة البرمجة هي C++/MFC أو C# أو VB.NET
سبب هذه الإجابات هو الواجهة المرئية المتطوّرة التي يملكها برنامج ر Azureus (من النادر جداً رؤية أي برنامج جافا عادي يملك مثل هذا النمط من الواجهات المتطوّرة) و بالتالي لن يخطر على بال هذا الشخص على الإطلاق أن هذا البرنامج بُني بواسطة Java لأن الواجهة المرئية لم تختلف كثيراً عن الواجهة المرئية لنظام التشغيل + الأداء السريع.

[...] كما ذكرت بمقالتي Java-RCP بأن eclipse يستطيع تحرير شيفرات PHP لكنني تفاجأت بمقدار [...]
[...] برنامج إضافي يستعمل ضمن بيئة التطوير eclipse من أجل إجراء الحسابات الرياضية المعقدة، إضافة لعمل [...]
[...] ويندوز Windows فقط، و هي عبارة عن توزيعة من بيئة التطوير eclipse موجهة للمبرمجين الذين يبحثون عن بيئة تطوير مشابهة [...]
شكرا جزيلا على هذا المقال من الجميل ان اجد رابط له في موقع http://www.eclipse.org
الأخ الصادق:
أهلا و سهلا بك عزيزي، سلسلة المقالات حول Java/RCP تم إعتمادها رسمياً من قبل IBM كأول مقالة عربية معتمدة، لذلك من الطبيعي أن تجد الرابط في موقع eclipse لكونه يعمل وفق إتفاقيات المصادر المفتوحة.
ممكن كلمات ولو بسيطه عن أستدعاء web servivce معمول عن طريق الاسب دوت نيت على برنامج Eclipse؟
وشكرا جزيلا لك على تعاونك
الأخ ramzi:
للأسف ASP غير مدعم في Eclipse لأنه منتج تجاري و ليس مفتوح المصدر، من ناحيتي أنا أنصحك بإستعمال Eclipse مع PHP … و هذا الرابط قد يعطيك المزيد من الأجوبة
[...] السبب موضح أعلاه: دليلك السريع في إحتراف الإنترنتإنشاء برامج إحترافية بواسطة Java – RCPإنشاء برامج إحترافية بواسطة Qt – [...]
هل جربت JDeveloper و هل eclipse أفضل من JDeveloper و من أي ناحية إن كان أفضل ؟
JDeveloper لا تقارن بـeclipse لأن الأخيرة بيئة متطورة جداً و إمكانية توسعتها متاحة بشكل سريع و بسيط، و -على حد علمي- لا توجد بيئة تطوير حالياً تشابه eclipse
من جميع النواحي، لكن أهمهما أن eclipse تصلح لبرمجة العديد من لغات البرمجة و المقصود هنا ليس التحرير النصي فقط بل التطوير بشكل كامل، أيضا مبدأ البرامج الإضافية plug-ins الذي يستعمل في eclipse فريد من نوعه و أنا شرحت ذلك بالتفصيل في هذه السلسلة من المقالات.
طيب و بالنسبة ل netbeans
نفس الشيء بالنسبة للنت بينز، حتى أن netbeans لديه الكثير من المشاكل كونه يستعمل swing بشكل فظيع
شكرا جزيلا
أين قسم الملخقات؟
‘يوفّر eclipse على مطوّري جافا الكثير من العناء، إذ أنه بالإمكان إنشاء تطبيق يعمل بشكل مستقل عن eclipse أو يعمل ضمن eclipse بشكل برنامج إضافي، وذلك دون تغيير أي سطر برمجي.’
وضحها بطريقة أخرى
هل يمكن التخلص من البطء بإستخدام eclipse ؟
قسم الملحقات خاص بالمبتدئين ممن ليس لديهم أية خبرة بالبرمجة، و بسبب ضيق الوقت، أوكلت مهمة كتابة قسم الملحقات لأحد الأخوة لكن على ما يبدو أنه تراجع عن مساهمته لذلك بقي قسم المبتدئين غير موجود.
تابع السلسلة لآخر جزء و ستجد الإجابة عن تساؤلك
نعم هذه هي الإجابة
نزلت easyeclipse و وجدت حيب ما موجود في موقع http://www.easyeclipse.org أنه يتطلب 512 ميجا بايت رلم كحد أدنى و لدي رام 128 ميجابايت و 64 ميجابايت فهل تتوقع أن يعمل معي easyeclipse بشكل بطئ أو تتوقع أن ﻻ يعمل إطلاقا
أعتقد أنه سيعمل ببطئ… و هذا أمر بديهي
أريد طريقة عمل كومبايل ل easyeclipse 1.3.1.1 على لينكس أوبونتو؟
و شكرا.
لماذا تريد بناء eclipse في أوبنتو ubuntu؟ هنالك ملفات مبنية و جاهزة!
بكل الأحوال إن كنت مصراً حمل الشيفرة من هنا و إتبع التعليمات المتوفرة في الملف النصي
حملت من موقع easyeclipse اﻹصدارة 1.3.1.1 الخاصة بلينكس فإتضح أن ما حملت يحتاج كومبايل فليس جاهزا كحزمة
أخي العزيز طيب الله الانفاس على هذا الكلام الجميل وبعد انا أستخدم لغة البرمجة VB.Net 2005 و C Sharp 2005 ثم تعلمت الجافا زولكن لدي عمل بسيط وهو تحريك مؤشر الفأرة وفق حركة الأنف وهذا يتطلب Image Processing والقيام بعملية face and nose detection .
لذا طلب منا تحديد اللغة التي سنعمل عليها
فهل من الممكن ان نستخدم الجافا في مثل هذا المشروعز والتوصل الى نتيجة.
وجزاكم الله خيراًز
مشروعك جميل و أتمنى لك النجاح فيه، بكل الأحوال لدي بعض الخبرة بهذا الصّدد لذلك سأقترح عليك ما يلي:
حسنا الصورة التي ستتم معالجتها على ما أعتقد أنها في الزمن الحقيق Real Time بواسطة كاميرا رقمية، أليس كذلك؟
على فرض أنك تريد إستعمال كاميرا مع معالجة للصورة بالزمن الحقيقي فإنني أقترح عليك أن تستعمل حزمة OpenCV الخاصة بالرؤية الحاسوبية Computer Vision و هي مفتوحة المصدر و تؤمن لك عدد لا بأس به من تعريفات الكاميرات، كل ما يتطلب منك لإستعمالها فهم واجهة برمجة التطبيق API الخاصة بها، و كل شيء سيكون على ما يرام، بإذن الله.
بالتأكيد جافا Java تصلح للعمل لكنني أفضل أن تستعمل C++ / Qt لأن التعامل مع تعريفات الكاميرات فيها أسهل من جافا، و ذلك إختصارا للوقت.
أتمنى أن أكون قد أفدتك.
كيف احمل برنامج Java-RCP اريد الوصله
الجزء الثاني يتحدث بالتفصيل عن كيفية التحميل
هذا السؤال انت قد تكلمت عنه ولكن يمكن ان نجعل من eclipes مثل بيئه net beans وذلك بالضغط على شي في eclipes كيف ذلك؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟مع العلم ان هذا السؤال من أستاذ الجامعه ويريد مناان نأتي بالجواب ….وشكرا
لم أفهم! هل بإمكانك توضيح السؤال أكثر؟
مساء الخير
انت تقصد بهذا الموضوع
كيف انشء واجهة GUI بالجافا
من غير ما اكتب الاكواد يعني مثل الفيجوال بيسك
اذا ابغى اضيف زر اسحب الزر وخلاص
وكمان عندي سوال ثاني
هذه البرنامج فيه غلط منطفي انا مو عارفه ليش
ياليت تساعدني فيه
http://up3.m5zn.com/download-2009-5-10-04-whznulciy.java
هذا الكود عندي ما بيشتغل مثل انا مااريده هو كلاس applet
الميثود init عرفتها على اساس تسقبل اعداد من الuser
البرنامج يطلع صحيح لكن عند التنفيذ يطلع لوحة الرسم فاضية لانه ما بيطلع تعليمات اخذ الاعداد من الuser
(اتمنى القى الجواب عندك )
[...] إنشاء برامج إحترافية بواسطة Java-RCP الجزء الأول – محمد بشير النعيمي SWT, Swing or AWT: Which is right for you? Four toolkits for Java to develop excellent GUI [...]
[...] إنشاء برامج إحترافية بواسطة Java-RCP الجزء الأول – محمد بشير النعيمي SWT, Swing or AWT: Which is right for you? Four toolkits for Java to develop excellent GUI [...]