الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال عن برمجة الواجهات بالجافا

بدأه clrscr_funct في 23 نوفمبر 2010 · 19 رد · 1,412 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

قررت اليوم يااخوه ان ابدا تعلم لغة الجافا التي قرات انها احسن بكثير من لغة c#

وقرات انه توجد مكتبة في الجافا تساعدني على برمجة الواجهات

لكن بما انني بدات في تعلم QT قررت ان استغني عن مكتبة الجافا

والسؤال يااخوه ايهما الافظل والاسرع واجهة الجافا ام Qt

#2

قرأت عن QT مع C++

فرأيت انها تعتبر لغة جديدة وليست c++

والجافا تحتوى على المكتبة javax.swing

التى تحتوى على المكونات التى تحتاجها وهى متوفرة داخل الالة الافتراضية للجافا JVM

اقترح عليك تعلم الجافا منفردة وكاملة اولا

ثم جرب المكتبات التى ترغب بها كما تشاء

بالتوفيق


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#3

شكرا لك اخي Oracle_Java على مرورك وسرعة ردك :wub:

انا الان استعمل eclipse فهل javax.swing تاتي مع البرنامج ام يجب علي تحميلها

وارجوا ان تزودني باي مواقع او اسماء كتب تشرح Java Gui

انا الان اقوم بتحميل اسطوانة Teach Java Gui : Designer Programming Language

وهدا هو رابط clrscr_funct

#4

في انتظار راي باقي الاعضاء :mad:

#5

نعم هذه المكتبه موجوده فى الـ eclipse

او فى الـ netbeans

او بمعنى اصح موجوده مع الـ JDK

لكن كتب

اعتقد ان احسن حاجه انك تتعلم من الجافا توتوريال

http://download.oracle.com/javase/tutorial/uiswing/

Software Developer
Mahmoudkelany.com


 

#6

سؤالك غايه فى الأهميه فالكيو تى هى عباره عن development kit مبرمجه بلغه C++

عيوب java.swing :

1- صعبه التعلم مقارنه بال كيو تى .

2- قديمه ولا اعتقد ان oracle تجرى عليها اى تحديثات منذ فتره .

مميزات :

1- تنزلى مع الجافا ولا تحتاج مكتبات اضافيه .

2- بالرغم من صعوبه تعلمها الا انها بسيطه .

عيوب : QT

1- تحتاج الى مكتبات اضافيه ..

2- الاصدارات الحديثه غير مجانيه .

مميزات :

1- سهله التعلم .

2- تعمل على اى نظام او platform .

3- قويه فهى متخصصه فى ال UI programming او برمجه الواجهات .

انا انصحك بتعلم ال swing طالما تتعلم الجافا وهناك ايضا ال awt وهى توفر مكونات حديثه

ولكن أى مبرمج محترف يجب ان يكون على درايه بكلاهما ولكن فى مرحله التعلم امض فى swing وخذ العلم كما هو بدون تحريف .

no-pain-no-gain.jpg

اذا كنت لا تعلم الى اين تذهب... فكــل الطرق تؤدى الى هناك

#7

اخى احمد

انا بصراحه معرفش المعلومات اللى انت قولتها دى

لكن انا كنت عاوز اتكلم ان الـ AWT فيها عيوب كثيره

تم اصلاحها فى الـ SWING ولا ننكر ان الـ SWING ايضا فيها عيوب

Software Developer
Mahmoudkelany.com


 

#8

Mahmoud Kelany

معك حق يااخي قافضل شيء هو تعلم من موقع الشركه

#9

The expendable

شكرا لك اخي على المرور والاجابة :wub:

اقتباس
عيوب : QT

1- تحتاج الى مكتبات اضافيه ..

2- الاصدارات الحديثه غير مجانيه .

1-هل يوجد اي عيب في استعمال مكتبه اضافيه مع java -ارجوا ان تدكر لي بعض العيوب-

-2انا راجعت موقع الشركه فوجدت انه يمكنني استعمال Qt Jambi تحت رخصة LGPL اي انه يمكنني برمجة برامجي الخاصه بمصدر مغلق

فهل يمكن اضافة رابط مصدر الخبر

اخر سؤال لك ولاعضاء المنتدى

هل يمكن ان تفرض عليك الشركه التي تشتغل عندها استعمال مكتبه معينه :mad:

وشكرا مقدما :)

#10
اقتباس
هل يمكن ان تفرض عليك الشركه التي تشتغل عندها استعمال مكتبه معينه

طبعا ..

#11
اقتباس
2- الاصدارات الحديثه غير مجانيه .

هذا الكلام غير دقيق, نسخ Qt جميعها مجانيه ويمكن عمل مشاريعك تحت ترخيص LGPL.

هناك سؤال عليك أن تجيبه، لماذا استخدم لغه جافا, أنا شخصيا كنت افضل استخدامها لسبب رئيسي وهو ان برنامجي سوف يعمل على جميع أنظمه التشغيل, ولكن Qt أيضا لها نفس الميزه فأين تتفوق جافا اذا؟ مع اضافه ان برنامج Qt سةف يكون في النهايه برنامج native ولا يحتاج لا ل JVM ولا .NET Framework.

بصراحه أنا أصوت لصالح Qt اذا كان البرنامج Desktop أما اذا كان Web فهناك حديث أخر.

#12
اقتباس
فأين تتفوق جافا اذا

جافا من وجهة نظري هي Enterprise language ....... (حتي هي ليست مجرد web lang ... )

#13

Qt مكتبه قويه لكن للاسف معظم الشركات العربية تستخدم java.swing لبرمجة الواجهات

ادا ساتعمق في دراسة QT and c ++

وسابدا بتعلم java.swing

ومن تم ساقوم بتعلم Qt jambi ولو انني سمعت انهم سيتوقفون عن تطوير هده المكتبه الخاصه ب java

#14

Qt هي في النهاية C++، وأكثر ما يزعج في هذه اللغة هو إدارة الذاكرة. فإدارة الذاكرة هي من بين الفوارق بين C++ و Java، حبث يكون المبرمج هو المسؤول عن تحرير الذاكرة المستعملة في C++ بينما ال Garbage collector هو المسؤول عن ذلك في الجافا

إذا كنت ترتاح في التعامل مع المؤشرات ولا تخاف من ال memory leaks فاستعمل Qt

1
#15
herch كتب:

Qt هي في النهاية C++، وأكثر ما يزعج في هذه اللغة هو إدارة الذاكرة. فإدارة الذاكرة هي من بين الفوارق بين C++ و Java، حبث يكون المبرمج هو المسؤول عن تحرير الذاكرة المستعملة في C++ بينما ال Garbage collector هو المسؤول عن ذلك في الجافا

إذا كنت ترتاح في التعامل مع المؤشرات ولا تخاف من ال memory leaks فاستعمل Qt

صحيح, ولكن يمكنك اعتبار Qt في منتصف الطريق بين Java و C++. فهي لا تملك GC وليست بصعوبه اداره الذاكره في C++. أنا شخصيا اعتبرها اسهل طريق للانتقال من عالم جافا الى C++. سأتحدث عن بعض نقاط السهوله في اداره الذاكره:

1. جميع المكونات في Qt يمكن ربطها ب Parent وهنا تتشكل عندك شجره من الأدوات، عند الربط بهذه الطريقه ليس عليك تحرير اي شيء من الذاكره لان Qt ستقوم بذلك عوضا عنك فعند موت النافذه مثلا ستقوم هي تلقائيا بتدمير جميع ابنائها من المكونات.

2. ال implicit sharing وهي خاصيه تخفف على المبرمج ،فهي تسمح ببعض التهاونات عند عمليات النسخ وهو من أكثر الاشياء التي نقوم بها في جافا دون تفكير.

طبعا هذا لا يخلصك من عبء التفكير المتواصل في اداره الذاكره ولكن يخفف الحمل قليلا، لذلك انا أراها مناسبه لمبرمجي جافا اكثر من C++ الاعتياديه.

تحياتي..

تم تعديل هذه المشاركة بواسطة مهدي حجازي في 26 نوفمبر 2010 في 21:08

#16
اقتباس
2. ال implicit sharing وهي خاصيه تخفف على المبرمج ،فهي تسمح ببعض التهاونات عند عمليات النسخ وهو من أكثر الاشياء التي نقوم بها في جافا دون تفكير.

يا ريت توضيح بسيط يا اخى عن هذه النقطه ما هذه التجاوزات المصاحبه لعمليات النسخ ونحن نقوم بها فى الجافا بارك الله فيك

هذه الكلمه سمعتها فى بعض انواع الدوال فى السى بلس بلس .. ولكن هل هى موجوده بالجافا ..

اقتباس
طبعا هذا لا يخلصك من عبء التفكير المتواصل في اداره الذاكره ولكن يخفف الحمل قليلا، لذلك انا أراها مناسبه لمبرمجي جافا اكثر من C++ الاعتياديه.

فى السى بلس بلس عليك ازاله كل كلاس بعد استخدامه من الميمورى عن طريق شىء شبيه بال constructor ولكن يسمى destrructor ;

ولكنى لم اسمع ابدا ان السى بلس بلس تواجه مشاكل فى اداره الذاكره ولا يمنع هذا ان كلام الأخ هيرش والأخ مهدى- وهم اكثر خبره- صحيح ..

بالتوفيق ..

تم تعديل هذه المشاركة بواسطة The expendable في 27 نوفمبر 2010 في 08:17

no-pain-no-gain.jpg

اذا كنت لا تعلم الى اين تذهب... فكــل الطرق تؤدى الى هناك

#17
The expendable كتب:

يا ريت توضيح بسيط يا اخى عن هذه النقطه ما هذه التجاوزات المصاحبه لعمليات النسخ ونحن نقوم بها فى الجافا بارك الله فيك

هذه الكلمه سمعتها فى بعض انواع الدوال فى السى بلس بلس .. ولكن هل هى موجوده بالجافا ..

فى السى بلس بلس عليك ازاله كل كلاس بعد استخدامه من الميمورى عن طريق شىء شبيه بال constructor ولكن يسمى destrructor ;

ولكنى لم اسمع ابدا ان السى بلس بلس تواجه مشاكل فى اداره الذاكره ولا يمنع هذا ان كلام الأخ هيرش والأخ مهدى- وهم اكثر خبره- صحيح ..

بالتوفيق ..

سأوضح ما أقصده في النقطه الأولى، مثلا في جافا نقوم بالتالي ببساطه:

Object ob2 = ob1;

هذه العمليه في جافا لا تقوم بعمليه نسخ للكائن أما في C++ فعليك الحذر لأنها ستقوم بعمليه نسخ الكائن، الجديد في Qt أنه لا يشترط نسخ محتويات الكائن الا اذا اختلفت محتويات obj1 عن obj2 في مرحله لاحقه،عندها تتم عمليه النسخ الحقيقيه للمحتويات.

String str = "hi";
Lable lbl = new Label();
lbl.setText(str);

مره أخرى في جافا لا يتم نسخ محتويات str وارسالها لل lbl ولكن في C++ يتم ذلك لذلك لا يقومون بارسال الكائن وانما عنوان الكائن عاده، كل هذه الأمور نحن نقوم بها في جافا دون عناء التفكير بها لأنه أصلا لا يوجد خيارات أخرى وهذه العمليات لا تسبب مشاكل عندنا بعكس C++.

أخيرا كلامي أنا والاستاذ عصام لا يدل على وجود مشاكل في اداره الذاكره في C++. اللغه هكذا بنيت ولكن يوجد صعوبه عند المبرمجين في تطبيق القواعد بشكل صحيح والا فانهم سيحصلون على برنامج يستهلك موارد الذاكره بشكل كبيره وربما لن يعمل بشكل صحيح أصلا.

تم تعديل هذه المشاركة بواسطة مهدي حجازي في 27 نوفمبر 2010 في 11:29

#18

أعتقد يا مهدي أنك تتحدث عن الكائنات العاديه ... التي ليست مؤشرات ... و التي هي غير موجوده بالجافا ..

أما لو تحدثنا عن الكائنات المؤشراتيه ... فأعتقد أننا سنجد نفس السلوك هو هو الموجود بالجافا ...

مثال:

Employee *e = new Employee;
Employee *e2 = e;

إذن ما هي قيمة الكائن e2 الأن؟ و هل هذا يختلف عن الجافا؟ أعتقد لا ..

#19
هويدي كتب:

مثال:

Employee *e = new Employee;
Employee *e2 = e;

إذن ما هي قيمة الكائن e2 الأن؟ و هل هذا يختلف عن الجافا؟ أعتقد لا ..

بم انك تستخدم المؤشرات فكلامك هنا صحيح

انما ااذا لم تستخدم المؤشرات فان الموضوع يختلف

يعنى كدا

Employee e = new Employee;
Employee e2 = e;

فى الجافا هتجعل e2 تشير الى مكان e وبالتالى فالاتنين هيكون بنفس القيمه

انما فى السى بلس بلس هتلاقى ان لازم يكون عندك copy constructor

Software Developer
Mahmoudkelany.com


 

#20
اقتباس
أعتقد يا مهدي أنك تتحدث عن الكائنات العاديه ... التي ليست مؤشرات ... و التي هي غير موجوده بالجافا ..

نعم هذا ما أقصده بالضبط. اذا يجب عند نقل بعض الأوامر من جافا الى C++ الحذر وتحويلها الى مؤشرات كما فعلت انت لأحصل على نفس نتيجه التنفيذ في جافا.

مواضيع مشابهة