برامج

ماهوا الجافا؟ كل اسئله التي تخطر في بالك عن جافا ؟ احتراف الجافا في 21 يوم+كتب+دورات [الأرشيف] - برامج نت

المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : ماهوا الجافا؟ كل اسئله التي تخطر في بالك عن جافا ؟ احتراف الجافا في 21 يوم+كتب+دورات


hatem21
02-20-2006, 05:07 PM
بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله بركاته

في هذا الدرس سيتم طرح بعض الاسئلة التي غالباً ما يسألها المبتدئ قبل دخوله عالم الجافا, حيث ستتم الاجابة عليها باختصار لكي يتم توضيح الصورة العامة عن هذه اللغة القوية. على بركة الله نبدأ

س1: ماهي بدايات لغة الجافا ؟؟
لغة الجافا هي من تطوير شركة صن المعروفة وكانت في البداية جزء منها مكتوب ب سي ++ وسي اما الان فهي مكتوبة من اولها الى اخرها بلغة الجافا.
طبعا اهم ما يميز الجافا انها لا تعتمد على(platform ) معين لانها تعمل على آلة الجافا الافتراضية JVM لذلك هي مستقلة عن طبيعة platform وهذا هو السبب الرئيسي لإنتشارها الواسع جدا.

س2:هل الجافا هي الجافا سكريبت ؟
لا
يخلط كثير من المبتدئين بين هاتين اللغتين ولكن دعوني اوضح ماهي الجافا سكريبت في البداية التي هي من انتاج شركة نتسكيب وكانت في البداية تسمىlive code و اخذت تسمية الجافا سكريبت لسبب تجاري فقط لان الجافا كانت في اشد انتشارها.
الجافا سكريبت هي لغة بسيطة جدا مقارنة بالجافا فهي لغة Client Side أي انه يتم تنفيذها على متصفح الويب فالكود يرسل من السيرفر بدون معالجة ,حيث انه يعالج على جهاز الزبون ( client).

س3: ماهي الجافا ؟
توجد ثلاث نسخ للجافا وهي :
J2EE و J2SE و J2ME .لن ندخل في تفاصيلها ولكن سوف اتكلم على J2EE لانها هي الي عليها الكلام اما J2ME فهي تخص ال (wireless devices) بشكل عام يعني على اجهزة الجوال وغيرها .

س4:ماهي J2EE ؟
هي إختصار ل Java 2 Enterprise Edition وهي تزودنا بالتطبيقات الكبيرة على مستوى الشركات الكبيرة وهي تحتوي على تقنيات كثيرة ( حول 12 تقنية ) أنظر الصورة الي اسفل سوف توضح لك أكثر.


http://up3.w6w.net/upload/28-02-2006/w6w_20060228141152c40db71b.gif

س5:ماهي مترجمات ( IDE OR Compilers ) للجافا ؟
يوجد هناك العديد منها ولكنني شخصيا أفضل Jbuilder من شركة بورلاند المرموقة والان يوجد النسخة التاسعة منة فهو افضل ماجربت في الحقيقة, ولكنه يحتاج الى ذاكرة رام كبيرة لكي يعمل بصورة جيدة (طبعا عيبة البطء لانة مكتوب كامل بلغة الجافا والجافا عيبها انها بطيئة نوعاً ما ولكن مع تطور الاجهزة ربما يندثر هذا العيب).
طبعا هناك ايضا forte من صن وغيرها كثير.

س6:ماهو مدى انتشار الجافا خصوصا في الوطن العربي ؟
جواب:
في الحقيقة الجافا منتشرة في الدول المتقدمة بصورة كبيرة جدا وخصوصا في ( امريكا وبريطانيا ) ولكن مع الاسف فهي عالمنا العربي قليلة الانتشار وان كانت الجامعات أدخلتها ولكن منذ مدة بسيطة نسبياً.

س7:ماذا عن دعم الشركات العملاقة للجافا ؟
في الحقيقة أن ميكروسفت تحارب الجافا وهذة حقيقة مع الاسف فيمكن تلاحظون كثيرا ان الي مركبين ويندوز اكس بي يعانون من مشكلة عدم توفر JVM على الويندوز الذي كان في نسخة السابقة توجد فيه.
طبعا صن رفعت قضية على مايكروسفت وفازت بها في المحاكم الامريكية ووعدت مايكروسفت انها في النسخ القادمة سوف توفرها في الويندوز لكي لايضطر المستخدمين الى تحميلها من الانترنت.
ولكن هناك شركات عملاقة تدعم الجافا بكل تفاني مثلا عندك الاوراكل وكلكم يعلم ان Form 9i مبني على تقنية الجافا ابليت وايضا اي بي ام ( أم الشركات) ومايكروميديا وغيرها كثير.

س8:ماذا عن تقنيات الويب في الجافا ؟
في الحقيقة تكمن قوة الجافا الحقيقة في الشبكات بشكل عام وتراسل البيانات التي مع الاسف لاارى له حضور حتى على مستوى الجامعات اللهم القليل فقط.
الجافا تقدم عدد من التقنيات اهمها(طبعا في مجال الويب) :
JSP

APPLET

SERVLET

EJB

JAVABEAN

طبعا ابليت كما هو معروف هو كلاينت سايد فهو يرسل الكود من السيرفر ويعالج لدى الكلاينت اما البقية فهم سيرفر سايد حيث تتم معالجة الكود في السيرفر وترسل النتائج الى العميل.

س9: ماهي ال JSP ؟
هي لغة تمكنك من بناء صفحات انترنت ديناميكية وهي تشبة asp حقت مايكروسفت في المفهوم فقط .
طبعا JSP لغة بسيطة جدا تمكنك من دمج رموز ال HTML مع رموز JSP بحيث يمكنك من دمج كود جافا .

س10: ماهو Servlet ؟
جواب:
باختصار ال جي اس بي هي امتداد لل سيرفلت يعني فقط تسهيلا لكتابة JSP وضعوا ال جي اس بي بالطبع هناك بعض الفروقات التي لا مجال لذكرها هنا ولكن افضل شي هو تكاملهما مع بعض .

س11: ماهو javaBeans ؟
جواب:
هي كلاسات جافا لها بعض الشروط البسيطة تخدم مع الويب وفائتها الاساسية تقليل كتابة الكود بحيث يمكن استخدامها في اكثر من صفحة.
EJP هي بالمناسبة مكونات تكون موزعة بحيث تستطيع الشركة من خلالها تكامل الانظمة والتحكم في مستوى الامن والانسيابية.

س12:ماهي سيرفرات الجافا على الويب؟
جواب:
اهمها و الكبار منها ( غير مجانية)
1- IBM WbSphere وهو بالطبع بيئة إحترافية بحد ذاتها وغنية بالمزايا والان يوجد النسخة 5.1
2- Oracle9iAs وهو من اسرع السيرفرات وهو من تطوير اوراكل .
3- Bea WebLogic وهو من السيرفرات المرموقة وحاليا توجد النسخة 8.1 أخرى(مجانية)
1-Tomcat وهو مجاني ومفتوح المصدر من شركة اباتشي المعروفة وهو المفضل لدى الكثيرين و النسخة الحالية هي 5.1
وغيرهم كثير .

س13:ماهي الصعوبات الي تواجة مطوري الجافا في العالم العربي ؟
جواب:
في الحقيقة دعوني أجيب على هذا السؤال من خلال تجربتي الشخصية:
كنت قد نويت أن أعمل مشروع عبارة عن شركة للسيارات من خلال الانترنت وكنت حينها لا أعلم عن الويب شي (فقط القليل من asp) قررت أن أستخدم الجافا وخصوصا ان خبرتي في الجافا ابليكيشن والحمد لله جيدة. المهم نزلت أجوب مكتبات الرياض ومع الاسف لم أجد حتى الكتب التي أريدها لتعلم لغة JSP في حين ان رفوف الكتبة مليئة بكتب ASP.NET . دبرهتا بطريقة خاصة ومن بعض المواقع على النت الحمدلله استطعت اني انهي مشروعي ولكن السلبيات التي مريت بهاالامور :
1-حصولي على الكتب في منتهى الصعوبة .
2- مشاريع كبيرة تمت كتابتها بتقنيات مايكروسفت, حصلوا على دعم كبير بحيث ان الشركة توفر لهم الكتب المطلوبة والنصائح من المختصين لدى الشركة وهذا لم احصل علية لانني كتبت مشروعي بالجافا.
3-عدم انتشار اللغة بصورة كبيرة بحيث كل زملائي الذين اعرفهم كتبوا بلغات دوت نت لذلك لم استطع الاستفادة منهم.
4-عندما حاولت إستضافة موقعي مع الاسف لم أجد المناسب وذلك لقلة شركات استضافة الجافا(العربية).

ولكن هذا لايعني ان الجافا لغة ليست جيدة بل هي منتشرة جدا جدا في الدول المتطورة ولكن هي قليلة الانتشار في الوطن العربي , مع انني سعيد جدا لكتابة مشروعي بها فهي لغة رائعة حقا وقوية جدا.

س14: هل اتعلم الجافا او .NET ؟جواب:
إجابة هذا السؤال تعتمد عليك أنت فإذا كنت تحب البرمجة وتعشق التحدي والمغامرة والجافا تناسب إحتياجك فعليك بها( لاتريد أن تعتمد على platform معين ).
إما إذا كنت خلاف ذلك فمن رأيي أن تتوجة الى الدوت نت فهي توفر لك كامل الدعم وهي بكل تاكيد أسهل من الجافا لانني كما ذكرت هناك الكثير من الكتب والكثير من الدعم والكثير من المحررات العملاقة و.. يكفي أنها من مايكروسفت.
وعموما الخلاصة ماذا تريده أنت من اللغة هو الذي يحدد إختيارك لها!

س15:أريد أن أتعلم الجافا ولكن لا أردري أي الكتب أفضل ؟؟

بالنسبة للمبتدئين والمتوسطين أنصحهم بكتاب Java How To Program من شركة Deitel™ فهو بحق كتاب رائع جدا ومناسب وسهل الاسلوب جدا (طبعا الكتب باللغة الانجليزية).متوفر في جرير الان(الطبعة الخامسة).
بالنسبة لل Java database فهناك كتاب لم أرى قط مثلة حتى الان وهو كتاب رائع جدا جدا ولكن لازم تكون عندك خبرة بالجافا قبل ماتقراه وهو Java Database Programming من Bible ورقم ال ISBN هو 0-7645-4924-3.
بالنسبة للويب :
Web Development with Java Server Pages الطبعة الثانية
Core Servlets & Java Server Pages من كتب شركة صن وهو كتاب رائع.

س16:هل الجافا صعبة ؟؟
هذا سؤال في الحقيقة أيضا يعتمد عليك فأصعب مافي الجافا بدايتها فقط ,فأذا تجاوزت البداية وأحببت اللغة فيكون الباقي سهل باذن الله.


س17: ودي اتعلم جافا بس وين المواقع الجيدة ؟؟؟
جواب:
المواقع الي سوف أذكرها كلها باللغة الانجليزية.

www.java.sun.com هذا هو أهم المواقع فهذا هو الموقع الرسمي للغة الجافا وفية الكثير والكثير من الدروس وأنصحك بالمنتديات( Forums ) ستجد فيها ثروة بما تعنيه هذة الكلمة.

www.javaworld.com هذا مجلة عالم الجافا المشهورة وفي ارشيف هذة المجلة العديد من الدوس والمقالات المميزة وهي تعنى بآخر أخبار مايستجد للجافا من أخبار ومنتجات جديدة.

يمكنك البحث في (Google ) أكتب كلمة جافا وستجد الكثير من المواقع .










اهلاين اخواني الي كا من يريد تعلم الجافا حتي الاحتراف سلسلة كتب بالعربي تعلمك الاحتراف الجافا تفضلوا
http://cdd.gotevot.edu.sa/college/co...pdf/cpt141.pdf

المتوسط
http://cdd.gotevot.edu.sa/college/computer/pdf/cpt142.pdf

الاحترافي
http://cdd.gotevot.edu.sa/college/computer/pdf/cpt243.pdf

وهذي كمان كتيب
http://www.4shared.com/file/724371/81a8292b/java.html

وهذا كتاب الأستاذ سامي الربايعه
http://www.alhasebat.com/books/java******.pdf
http://www.alhasebat.com/library.htm

هذا الجمع للمراجع والكتب في هذه اللغة
وهذي ايضا سلسلة دروس في الجافا حتي الاحتراف
http://www.4shared.com/file/724441/afca6c6d/droos.html
__________________
كل الذي اريده دعوتكم يا شباب لا تحرمونا منها
ماخوذ من عدات مصادر

Andalous
02-20-2006, 05:18 PM
مشكور اخي على المجهود الراءع ارجو التاكد من الرابط الاول و اثاني لانهم لا يعملون

hatem21
02-20-2006, 05:40 PM
تم تعديل الروبط

hatem21
02-20-2006, 06:32 PM
وهذه جميع أعداد مجلة Java Developers Journal,من 1998 إلى 2004 :

الأعداد مرتبة من شهر يناير حتى ديسمبر:
2004

http://pdf.sys-con.com/Java/ride.pdf
http://pdf.sys-con.com/Java/theend.pdf
http://pdf.sys-con.com/Java/oscars2.pdf
http://pdf.sys-con.com/Java/investing.pdf
http://pdf.sys-con.com/Java/future.pdf
http://pdf.sys-con.com/Java/smith.pdf
http://pdf.sys-con.com/Java/eclipse.pdf
http://pdf.sys-con.com/Java/cactus.pdf
http://pdf.sys-con.com/Java/JDJSeptember2004.pdf

2003

http://pdf.sys-con.com/Java/javalinux.pdf
http://pdf.sys-con.com/Java/enterprise.pdf
http://pdf.sys-con.com/Java/meat.pdf
http://pdf.sys-con.com/Java/widget.pdf
http://pdf.sys-con.com/Java/game.pdf
http://pdf.sys-con.com/Java/objects.pdf
http://pdf.sys-con.com/Java/garbage.pdf
http://pdf.sys-con.com/Java/hyper.pdf
http://pdf.sys-con.com/Java/wsedge.pdf
http://pdf.sys-con.com/Java/ciphers.pdf
http://pdf.sys-con.com/Java/midi.pdf
http://pdf.sys-con.com/Java/swing.pdf

2002

http://pdf.sys-con.com/Java/key.pdf
http://pdf.sys-con.com/Java/pda.pdf
http://pdf.sys-con.com/Java/newwave.pdf
http://pdf.sys-con.com/Java/launcher.pdf
http://pdf.sys-con.com/Java/scaling.pdf
http://pdf.sys-con.com/Java/aim.pdf
http://pdf.sys-con.com/Java/spectrum.pdf
http://pdf.sys-con.com/Java/performance.pdf
http://pdf.sys-con.com/Java/audio.pdf
http://pdf.sys-con.com/Java/installers.pdf
http://pdf.sys-con.com/Java/ant.pdf
http://pdf.sys-con.com/Java/lucene.pdf

2001

http://pdf.sys-con.com/Java/jtable.pdf
http://pdf.sys-con.com/Java/macromedia.pdf
http://pdf.sys-con.com/Java/benchmarking.pdf
http://pdf.sys-con.com/Java/absolutely.pdf
http://pdf.sys-con.com/Java/askew.pdf
http://pdf.sys-con.com/Java/anthill.pdf
http://pdf.sys-con.com/Java/storage.pdf
http://pdf.sys-con.com/Java/patterns.pdf
http://pdf.sys-con.com/Java/freedom.pdf
http://pdf.sys-con.com/Java/beans.pdf
http://pdf.sys-con.com/Java/struts.pdf
http://pdf.sys-con.com/Java/rich.pdf

2000

http://pdf.sys-con.com/Java/millennium.pdf
http://pdf.sys-con.com/Java/servlet.pdf
http://pdf.sys-con.com/Java/jmfsecrets.pdf
http://pdf.sys-con.com/Java/transactions.pdf
http://pdf.sys-con.com/Java/bizrules.pdf
http://pdf.sys-con.com/Java/robotics.pdf
http://pdf.sys-con.com/Java/ejbs.pdf
http://pdf.sys-con.com/Java/appserver.pdf
http://pdf.sys-con.com/Java/components.pdf
http://pdf.sys-con.com/Java/linux.pdf
http://pdf.sys-con.com/Java/pooling.pdf
http://pdf.sys-con.com/Java/focus.pdf

1999

http://pdf.sys-con.com/Java/sdj.pdf
http://pdf.sys-con.com/Java/99sp02.pdf
http://pdf.sys-con.com/Java/de9903.pdf
http://pdf.sys-con.com/Java/jdj0499.pdf
http://pdf.sys-con.com/Java/jdjmay99.pdf
http://pdf.sys-con.com/Java/javaone99.pdf
http://pdf.sys-con.com/Java/jdj10914.pdf
http://pdf.sys-con.com/Java/aug99.pdf
http://pdf.sys-con.com/Java/jdjxml999.pdf
http://pdf.sys-con.com/Java/javacorba.pdf
http://pdf.sys-con.com/Java/javamail.pdf
http://pdf.sys-con.com/Java/ebusiness.pdf

1998

http://pdf.sys-con.com/Java/pearl.pdf
http://pdf.sys-con.com/Java/secure.pdf
http://pdf.sys-con.com/Java/jdjmarch.pdf
http://pdf.sys-con.com/Java/javaone.pdf
http://pdf.sys-con.com/Java/javatwo.pdf
http://pdf.sys-con.com/Java/syscon.pdf
http://pdf.sys-con.com/Java/pbdj.pdf
http://pdf.sys-con.com/Java/vrml.pdf
http://pdf.sys-con.com/Java/silver.pdf
http://pdf.sys-con.com/Java/jdj1098.pdf
http://pdf.sys-con.com/Java/jdj1198.pdf
http://pdf.sys-con.com/Java/java12.pdf

1997

december:
http://pdf.sys-con.com/Java/java.pdf

الليل المشمس
02-20-2006, 11:37 PM
مشكــــــــ0124589.367 الف مرة ــــــــــــــــــــــــــــــــــور

hatem21
02-20-2006, 11:42 PM
مشكــــــــ0124589.367 الف مرة ــــــــــــــــــــــــــــــــــور
العفوا اخوي وهذا اقل شي نقدموا لاعضاء برامج نت

الليل المشمس
02-21-2006, 01:02 AM
the file is not found
هذا ما يقوله لي عندما احاول التحميل (الكتب)

hatem21
02-21-2006, 01:34 AM
تم تعديل الروبط

hatem21
02-21-2006, 02:48 AM
إليكم هذه العروض التقديمية بواسطة البور بوينت للكتاب الكامل absolute java
هذا الكتاب رائع جدا للمبتدئين والمحترفين
وقد قسمتوا الي ثلاتة اقسام
http://www.sendspace.com/file/i13m8 -1
2- http://www.sendspace.com/file/ztwpor
3- http://www.sendspace.com/file/c1xewg

hatem21
02-22-2006, 12:01 PM
هذا الموقع ايضا فيه دروس جافا
http://www.geocities.com/alyaa97/jom99.html

hatem21
02-28-2006, 11:14 AM
تم تعديل الروبط
وتم تعديل علي نص

hatem21
02-28-2006, 11:27 AM
السلام عليكم و رحمة الله و بركاته..
الحاسب الآلي عبارة عن مجموعة مترابطة من الدوائر الكهربائية. تخيّلوا معي زر كهربائي يشغّل عدداً من المصابيح التي إمّا تكون مطفأة أو مشتعلة. لذا، لإإن الكومبيوتر يفهم رقمين في الدنيا، هما (صفر) و (واحد). و يقوم الكومبيوتر بتحويل كل شيء إلى ما يقابله حسب نظام العد الثنائي (يعني 1 و 0) و تسمّى هذه اللغة (التي تتكون من هذين الرقمين فقط) بلغة الآلة (Machine Code).

و كان للسيطرة على الكومبيوتر نكتب ما نطلق عليه اسم (برنامج) و هو يحتوي على عدد من الأوامر الموجهة للكومبيوتر ليحل مسألة معينة.

كان المبرمجون الأوائل (كان الله في عونهم) يكتبون البرامج بهذه اللغة! يكون شكل البرنامج هكذا:

101011101000101001010010
100101001010001001011010
010011110011100001010101
010101000100100000001001
011110111010010101010101

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


لم يستطع أجدادنا المبرمجون الاستمرار على هذا الحال، فقد كان فعلاً صعباً، لذت قاموا باختراع لغة التجميع (Assembly) و هي لغة أبسط من لغة الآلة نظراً لاحتوائها على أوامر مثل (ADD و MOV)، و هكذا كما ترون فقد ابتعدنا قليلاً عن لغة الآلة التي سبق و ركّزت على أنها لا تفهم سوىالصفر والواحد. و هنا ظهرت الحاجة الماسّة إلى المفسّر (Interpreter) و هو برنامج يقوم بتحويل الأوامر بالتتابع من لغة ال Assembly إلى لغة الآلة، و يوقف البرنامج فوراً في حالة مواجهة خطأ في البرنامج و لا يقوم يالنظر (حتى لجبر الخاطر) إلى بقية البرنامج :-)

نلاحظ هنا أننا حصلنا على برنامج تسهل كتابته نسبياً و يمكن بسهولة ايجاد الأخطاء فيه و تصحيحها( بدلاً من البحلقة في الأصفار والآحادهاهاها).

لكن.. التحويل من لغة التجميع إلى لغة الآلة، يأخذ جزء من وقت البرنامج، و هكذا أصبح البرنامج أبطأ قليلاً، و حين أقول قليلاً، فأنا أعني جزء من آلاف الأجزاء من الثانية الواحدة. و تعتبر لغة التجميع من الجيل الثاني (الذي يحتوي على هذه اللغة فقط)

المبرمجون لم يعجبهم الحال (كما لم يعجبني حين درست هذه اللغة اهاهاهها) لذا أرادوا لغات تكون قريبة من لغة الإنسان، يفهمها بسهولة و ليست معقّدة مثل لغة التجميع. لذا قاموا بوضع العديد من لغات البرمجة التي تقوم على أوامر مباشرة بلغتنا البشرية التي نفهمها بسهولة، ففي لغة الباسكال مثلاً إذا أردنا طباعة كلمة (mama) على الشاشة نكتب الأمر التالي ضمن البرنامج:

writeln("mama");

و هذا كفيل بطباعة الكلمة على الشاشة :-)

و لكننا هنا ابتعدنا عن لغة الآلة كثيراً، لذا توجّب علينا استخدام المترجم بدلاً من المفسّر، لتحويل البرنامج إلى لغة الآلة.

و هذه اللغات هي لغات الجيل الثالث و منها: Pascal, COBOL, ForTran, Basic و منها أيضاً لغة ال C و التي تعتبر أسرع لغات الجيل الثالث على الإطلاق، بل انها في كثير من الأحيان تتصرّف كما لو كنت من الجيل الثاني (حيث يقوم بعض المصنّفون تصنيفها ضمن الجيل الثاني لهذا السبب).

إلى هنا و الكلام عند المبرمجين سهل و بسيط، تسألهم ما هو البرنامج فيجيبون فوراً: مجموعة من الأوامر لتأدية وظيفة معيّنة.


مُدخلات ----تحصل عليها-------> عمليات ----- تنتج منها -------> مُخرجات

و لكن.. نعم لازالت هناك "لكن"! الإنسان بطبعه لا يفكّر في العمليات التي تحدث دون أن يفكّر في المعلومات أو الأشياء التي حدثت عليها أو صدرت منها هذه الأفعال. لا يمكن أن تكون الجملة الفعلية صحيحة دون فاعل أو مفعول.

إذاً ما زالت طريقة البرمجة بطريقة سلسلة العمليات المتلاحقة بعيدة عنّا و عن تفكيرنا.

لقد كنّا خلال ما سبق من الأجيال نفكّر مثل الكومبيوتر. نكتب البرامج بناء على الطريقة التي يفهمها هو، و هذا من الصعوبة بمكان!

لذا قام المبرمجون بايجاد الحل المناسب و هو الجيل الرابع من لغات البرمجة.

وهو موضوع الدرس القادم بإذن الله مع تحياتي

hatem21
02-28-2006, 11:27 AM
السلام عليكم و رحمة الله و بركاته..
تحدّثنا في الدرس السابق عن لغات البرمجة التي سبقت لغات الجيل الرابع، و قلنا أيضاً أنها جميعاً تشترك في صفة انها تقوم على مبدأ التحدّث بالطريقة التي يفهمها الكومبيوتر.

و يجدر بالذكر أن جميع لغات الأجيال الثلاثة السابقة إذا تمّت ترجمتها على نظام تشغيل، لإانها لا تعمل إلا على هذا النظام.

مثلا إذا قمنا بكتابة برنامج بلغة السي و قمنا بعمل ترجمة له (Compilation) على نظام التشغيل ويندوز، فان هذا البرنامج من المستحيل بأي حال من الأحوال أن يعمل على نظام الماكنتوش. ما نفعله في هذا الحالة أننا نأخذ البرنامج و نضعه على جهاز ماكنتوش و نقوم بترجمة مرة أخرى.

إذاً أي برنامج يتصرّف هكذا:

البرنامج --------> المفسّر/المترجم --------> لغة الآلة

ولأن المترجم متصل مباشرة كما ترون بلغة الآلة فإنه يعتمد عليها. و يختلف من نظام تشغيل إلى آخر.

لذا قال المبرمجون أنهم سيتخيّلون وجود آلة! تكون هذه الآلة محددة و أطلقوا عليها اسم (Virtual machine) أو الآلة التخيّلية. و هم يكتبون برامجهم حسب هذه الآلة و ليس حسب نظام تشغيل محدد هكذا:

البرنامج --------> المفسّر/المترجم --------> الآلة التخيلية --------> لغة الآلة

نلاحظ الآن أن المترجم ابتعد عن لغة الآلة، و أصبح يترجم بناءً على آلة تخيلية.

ما الذي نستفيده؟ البرنامج سيعمل على أي جهاز عليه الآلة التخيلية مهما اختلف نظام التشغيل دون الحاجة لإعادة الترجمة :-)

من لغات الجيل الرابع: C++ and Java و Oracle و Visual Basic و غيرها..
و هذه اللغات تعرف بأنها لغات تعتمد على البرمجة الشيئية.

فما هي البرمجة الشيئية؟
هذا هو موضوع الدرس القادم ان شاء الله

Roxas
02-28-2006, 05:06 PM
الف شكر اخي الكريم ....
الله يعطيك الف عافية..تحياتي

hatem21
02-28-2006, 05:57 PM
اشكرك مشرفنا Krizalid
علي المرور
نورة الموضوع

sidina2005
02-28-2006, 11:04 PM
شكرا لك أخي هذه الإبداعات المتواصلة
و أرجوا الحصول على مواقع عربي و بعض الكتب العربية للمبتدئين
و إصلاح رابط الكتاب في الموضوع الرئيسي
و شكرا

hatem21
03-01-2006, 03:49 PM
اشكرك علي المرور بنسبه لموقع عربي
موجود بصفحه الاول
وبنسبه لربط ارجوا تحديد اي ربط العطلان عشان اصححه

hatem21
03-02-2006, 06:51 AM
السلام عليكم و رحمة الله و بركاته..
----------
تمهيد
----------
في البداية، أحب أطرح سؤال؟

عندما أقول: (أكل) ما الذي يتوارد إلى أذهانكم؟

يمكن تخطر في بالكم الجملة المشهورة (أكل الولد التفّاحة) أو تتخيلون أي نوع من أنواع الأكل صح. من المستحيل فعلاً أن تفكروا في عملية الأكل دون أن تتخيلوا شخصاً (أو كائناً) يأكل.. أو شيئاً يتم أكله، صح والا أنا غلطانة؟

بالفعل! العقل البشري لا يعترف بوجود الأفعال بدون فاعل لذا فجملة 1+1=2 ليس لها إلا معناها الرياضي المجرّد فقط. و لكن جملة واحد جلس بجانب آخر = شخصين جالسين مع بعض لها معنى، أليس كذلك؟

خلينا من هذا. فلنتصوّر أنني قلت و نحن نتكلّم بشكل عادي (أقصد لم نكن في محاضرة رياضيات) قلت لكم فجأة (24) و سكتٌّ، طبيعي أنّكم جميعاً ستنظرون إلى منتظرين أن أكمل كلامي.. 24.. ماذا؟ 24 ساعة؟ 24 يوم؟ 24 طالب؟ 24 سطر؟ 24 تفاحة.. لكن الرقم 24 المجرّد لا يعني شيء أبداً أبداً خارج مواضيع الرياضيات :-)

---------------------------------------
مفهوم العضو أو الشي (Object)
---------------------------------------

ملاحظة: عندما أقول كلمة (شيء) أو كلمة (عضو) أرجو أن يكون مفهوماً أنني أقصد بها نفس االمفهوم Object.

والآن حان الوقت لننظر إلى العالم من حولنا. نأخذ مثال بسيط (جهاز الكومبيوتر الخاص بك) سنفترض بعض صفاته و سنكتبها في ورقة:

الصفات

النوع: IBM
السرعة: 500MHz
الذاكرة: 128MB






إذاً اتفقنا أن جهازك له هذه الصفات، فلنفترض معاً بعض الوظائف التي يستطيع جهازك أن يقوم بها


الوظائف
الجمع
الحفظ
الإتصال بطابعة





ماذا نستنتج من ذلك؟

أن جهازك له صفات و قدرات. الصفات هي ما يتصف به، و القدرات هي ما يتطيع أن يقوم به. و هذا هو حال أي شيء (عضو أو Object) له صفات، و يستطيع القيام بأعمال بما له من قدرات.


هم.. هل يشترك كومبيوتر آخر مع جهازك في هذه الصفات؟ نعم جهازي يشترك مع جهازك.
له نفس القدرات، و ويشترك في وجود نفس الصفات مع اختلاف في الأرقام، أليس كذلك؟ فجهازينا لهما سرعة، و ذاكرة و نوع، و كلاهما يستطيعان الحفظ و الاتصال بطابعة. همم.. إذا هناك صفات يشترك فيها أي جهاز كومبيوتر مع غيره من الأجهزة، و قدرات أساسية أيضاً، موجودة عند الجميع.

هذا يجعلنا نصنّف الأشياء إلى فئات تشترك في نفس الصفات و لها نفس القدرات :-)

--------------------------
مفهوم الفئة أو (Class)
--------------------------

الفئة هي الموديل أو التصميم الذي على أساسه أستطيع استخراج أعضاء و أشياء.


مثلاً نأتي بورقة، و نكتب عليها الآتي:


كومبيوتر

tr> الوظائف
الصفات

الجمع
الحفظ
الطباعة
النوع
السرعة
الذاكرة



أصبح لدينا الآن موديل نستطيع أن نستخرج منه الكومبيوتر الذي تستطيع لمسه و هو جهازك و ذلك بأن نعطي للصفات التي ذكرتها في الموديل القيم المناسبة.

مثال آخر:

لو أخذنا فئة (الإنسان) هذا موديل أو شكل عام نعرف أن أي انسان له عينان، و أنه يفكّر، و أنه يبدع. و لكن حين أقول أحمد يبدأ الموديل في أخذ الصفات المناسبة مثل لون العينين عند أحمد أسود مثلاً و أنه يفكّر، و أنه مبدع و ابداعه في الشعر أكثر من غيره.

ماذا نستنتج من ذلك؟

نستنتج أن الفئة أو ال Class هي الموديل الذي أصنع بحسبه الأشياء التي تشترك في الصفات. أو أنه الجامع الذي يجمع الأشياء الفعلية التي تندرج تحته. و لابد هنا من التنويه على نقطة محددة و هي أنّ الفئة ليست شيئاً محسوساً بينما العضو أو الشيء هو التمثيل المحسوس لهذه الفئة.

كيف يمكن تطبيق هذا الكلام باستخدام لغة الجافا..

هذا ما سنعرفه في الدرس القادم.

hatem21
03-02-2006, 06:52 AM
السلام عليكم و رحمة الله و بركاته..
في درس اليوم سنتعلّم معلومات أكثر عن البرمجة بالكائنات الشيئية من خلال مقارنة بين البرمجة بالكائنات الشيئية والبرمجة التقليدية


لنأخذ مثال حي لتوضوح المقارنة :-)

لنفرض أن لدينا معركة بشكل ما بين المسلمين و الإسرائيلين. و أرغب في عمل محاكاة لهذه المعركة على الكومبيوتر. و لنفترض أن رأيي استقر على لغة ال C، و هي لغة تقليدية، لذا سأحضّر للبرنامج بالطريقة التقليدية، سأفكّر: (ماذا سيحدث؟)

سأكتب خطوات حل البرنامج:

- تبدأ المعركة.
- يجري الإسرائيلي تجاه المسلم من الخلف
- يتفادى المسلم الضربة الغادرة
- يهجم المسلم
- يموت الإسرائيلي
- تنتهي اللعبة

نلاحظ فيما سبق أننا رتّبنا البرنامج بحسب الأحداث، لذا بدأت الجمل السابقة بأفعال. و أغلب الظن أننا سنكتب كل ما سبق في ملف واحد و نقوم بتخزينه، و كلّما غيّرنا في مكان نحتاج دائماً إلى إعادة ترجمة البرنامج كاملاً مرّة أخرى (Recompiling).

ماذا نستنتج من ذلك؟
نستنتج أن البرمجة التقليدية تحافظ على ترتيب الأحداث، و يتطلّب التغيير في هذا الترتيب برمجة البرنامج و جميع حلقاته مرّة أخرى.

البرمجة التقليدية تهتم بالأحداث، و تربط بينها الأشياء أو البيانات.

لنفرض أننا أردنا أن نكتب البرنامج بلغة من لغات الكائنات الشيئية (مثل الجافا مثلاً)

سنقرأ السؤال مرة أخرى و لكن هذه المرة سنسأل أنفسنا: (من الأعضاء في هذا المثال؟)

سيقول أحدكم:


المسلم



و سيقول آخر:


الاسرائيلي



سأعود لأسأل: فيم فكّرنا هذه المرة؟ لم نفكّر في الأحداث، بل فكّرنا في أبطال القصة. السؤال الآن: كيف سنكتب البرنامج الآن؟

سأقول لكم :-)

1) بعد أن قمنا بتحديد الأشياء أو الأعضاء، سنقوم بعمل الموديلات لهم أو بمعنى أصح الفئات. لأنه لا يمكن أن يوجد عضو لا ينتمي لفئة!

الفئة الأولى هي فئة (المسلم)، بم يتميّز المسلم من صفات؟

ا

المسلم
الصفات:
له اسم
له روح و جسد
له حالة (امّا حي و إما ميّت)

القدرات:
يشهد أن لا إله إالا الله و يقول الله أكبر
يستطيع أن يقاتل
يمكن أن يجرح
يمكن أن يموت (أو يستشهد)




نأتي للاسرائيلي، و نكتب صفاته
ا

الاسرائيلي
الصفات:
له اسم
له روح و جسد
له حالة (امّا حي و إما ميّت)

القدرات:
يغدر و ينقض العهد
يقاتل من خلف جدار
يمكن أن يجرح
يمكن أن يموت




الآن و بعد أن حددنا الفئات التي ينتمي لها المسلمون و الاسرائيليون، فلنجلس قليلاً لنتأمّل:

لدينا الآن فئة تجمع الصفات المشتركة لأي مسلم (و نلاحظ أننا استخدمنا صيغة المفرد في التسمية) و كذلك الصفات المشتركة لأي اسرائيلي. و نفس الشيء بالنسبة للقدرات.

نريد الآن أن نبدأ المعركة! همم ماذا هناك؟.. فعلاً صحيح، أين المعركة؟ لا يمكننا غدراج المعركة ضمن صفات أو قدرات المسلم، و لا ضمن صفات أو قدرات الإسرائيلي، إذاً سنحتاج إلى عضو آخر جديد يجمع بين الاثنين و هو:


المعركة


و في المعركة نستطيع أن ننشئ عضو من فئة المسلمين و لنسمه محمد و عضو من فئة الإسرائيلين و لنسمّه شارون!

الأن المسألة أصبحت أسهل، ما هي صفات المعركة؟
فيها طرفا نزاع، لها وقت للبداية و لها وقت للنهاية و لها نتيجة!

بدلاً من أن نقول صفات سأستعيض عنها بكلمة أخرى أوضح و هي (مكوّنات) لأن المعركة في الواقع هي فئة موجودة للتكون مكان يجمع أعضاء من عد فئات أخرى. إذاً المعركة ستأخذ هذا الشكل:
ا

المعركة
المكونات:
عضو مسلم
عضو اسرائيلي

القدرات:
تبدأ في وقت محدد
تنتهي في وقت محدد
يتم تحديد النتيجة بعد نهايتها




الآن في عضو من فئة المعركة و لنسمه معركة الإنتصار يوجد مسلم اسمه محمد و اسرائيلي اسمه شارون، و هما سيتقاتلان و تنتهي المعركة بشكل لا يعلمه إلا الله!

ماذا نستنتج من ذلك؟
نستنتج أن البرمجة باستخدام الكائنات الشيئية تتكون من فئات، و أعضاء. و أن بداية البرنامج تتم عبر نقطة بدايو دون تحديد لسير البرنامج لأن الأعضاء من مختلف الفئات قد يتصرّفون بشكل أو بآخر.

توضيح:
أي أنني عندما أبدأ المعركة قد يقوم المسلم بالهجوم أولاً، و قد يقوم الإسرائيلي بالغدر، لا يوجد ما يضمن لي أن أحدهما سيسبق الآخر، لأن كلا الفئتين احتفظت بصفاتها و قدراتها بشكل منفصل عن الفئة الأخرى.

إذاً البرنامج بطريقة الكائنات الشيئية يتكوّن من أكثر من ملف، و كل ملف منفصل فعلياً عن الملفات الأخرى. و حين حدوث أي تغيير في أي برنامج فإن أعادة الترجمة (Recompiling) يتم على هذا الملف دون غيره.

كيف يتم تطبيق هذا باستخدام لغة الجافا؟ هذا هو موضوع الدرس القادم ان شاء الله

hatem21
03-02-2006, 07:06 AM
السلام عليكم و رحمة الله و بركاته..
تمهيد:
^^^^^^
قبل أن نبدا فعلياً في كتابة برنامج جافا يجب تجهيز بيئة العمل :-)

المطلوب منكم الذهاب إلى هذا الموقع:

أولاً:
^^^^
http://java.sun.com/j2se/downloads.html


في هذه الصفحة و من القائمة يرجى اختيار Java 2 SDK, Standered Edition, v 1.3

لأننا سنعمل ان شاء الله على هذا الإصدار من الجافا.

الملف يبلغ حجمه كبير نسبياً، فإذا كانت الإنترنت عندك كثيرة الانقطاع يستحسن أن تقوموا بتنزيل البرنامج على مراحل كما هو موضّح إذا تتبعت الإرشادات في موقع التنزيل :-)


ثانياً:
^^^^^^
بعد تنزيل البرنامج يجب أن يتم تحميله.

هذا الملف سيخلق حسب الDefault أن الآلة التخيّلة قد أخذت موضعها في:


c:jdk1.3




و يمكنك التأكّد من المكان المضبوط بعرض محتويات القرص الصلب.

ثالثاً:
^^^^^^

يجب كتابة هذين الأمرين في الدوس كلّما أردت تشغيل أو ترجمة برنامج جافا.
لذا أنصح بكتابتها في ملف ال Autoexec.bat في الوندوزxx أو في ال system parameters في الوندوز NT و 2000

هذين السطرين مهمّين للغايةو المفروض أن يتم كتابة السطرين كما هما في الدوس و بدون أي فراغات spaces. و لا تنسوا أن تضعوا (;.) في بداية تعريف ال classpath هكذا:

http://up3.w6w.net/upload/02-03-2006/w6w_200603020954298fffd5d6.jpg

الآن البيئة صارت للتشغيل. و للتأكّد من ذلك:
اذهب إلى الدوس و اكتب الأمر التالي:


java -version




المفروض ان كان التثبيت و ما تلاه تم بطريقة صحيحة أن تظهر هذه النتيجة:


http://up3.w6w.net/upload/02-03-2006/w6w_20060302100538623d5ca4.jpg


رابعاً:
^^^^^^
هذه الخطوة ليست اجبارية. و لكنها لتسهيل التعليم. فعادة يستخدم مبرمجو الجافا ال Notepad الموجودة في نظام الوندوز. و لكن توجد بعض المحررات الخاصة بالمبرمجين والتي تقوم بتلوين أوامر اللغات المختلفة.
من المحررات الشهيرة TextPad الذي يمكن تنزيله من موقع: http://www.textpad.com

و من مميزات هذا المحرر أنه يحتوي على قائمة قابلة للتعديل، يمكن من خلالها تشغيل المترجم و المشغّل دون الحاجة للذهاب إلى محرّك الدوس.

بهذا نكون قد استكملنا مكوّنات بيئة التشغيل التي سنحتاج لها للبدء بكتابة برامج الجافا الخطيرة التي سنعملها سوياً :-)

إلى اللقاء مع الدرس القادم.

sidina2005
03-02-2006, 08:24 PM
شكرا لك أخي
الكتاب الذي أقصده هو الكتاب الأول و شكرا لك على الدروس الجميلة
و أننتظر منك بقية الدروس
و شكرا

hatem21
03-04-2006, 04:44 PM
السلام عليكم و رحمة الله و بركاته..
ملاحظة: في هذا الدرس سنكتب البرنامج و نشغله فقط. الشرح سيكون في الدرس القادم :-)

البرنامج الأوّل
^^^^^^^^
جرت العادة أن يقوم المبرمجون عند دراسة أي لغة فإنّهم يكتبون برنامج يقوم بعرض كلمتي (Hello World) و سنقوم بالمثل:

نفتح ال notepad أو ال textpad و نكتب التالي:

http://up4.w6w.net/upload/04-03-2006/w6w_20060304193209df573a8d.jpg

أقترح بعد أن نكتب البرنامج أن تحفظه في حافظة تقوم بتسميتها myjava تحت المشغّل C مباشرة.
و يجب أن تحفظه بهذا الاسم: HelloWorld.java و لاحظ الأحرف يجب أن تكون بنفس الصفة يعني هذا الاسم: Helloworld لن يقوم بالمطلوب.

و لأننا نكتب بلغة الجافا، فلابد أن يكون ملحق

الآن جاء وقت الاختبار الصعب (فهل سننجح في تشغيل البرنامج؟)

عبر ال Dos prompt أو ال Command نذهب إلى الحافظة myjava من ال :C

و للتأكّد نقوم بعرض محتويات الحافظة هكذا:

http://up4.w6w.net/upload/04-03-2006/w6w_20060304193350d92562c4.jpg

الآن سنقوم بعمل الترجمة لهذا الملف. و للتذكير فالترجمة هنا تعني أننا سنحوّل الملف من لغة نفهمها نحن إلى لغة تفهمها لغة الآلة التخيليّة، تابع الخطوات على الصورة التالية:

http://up4.w6w.net/upload/04-03-2006/w6w_2006030419350638398fab.jpg

يقوم أمر javac باستدعاء المترجم الذي يقوم بترجمة الملف الذي اسمه يلي أمر javac.
المفروض إذا قمت بعمل كل شي تمام فإن النتيجة ستكون ظهور علامة الدوس مرّة أخرى كما في الشكل السابق :-)

أتعرف الآن ماذا ستجد لو قمت بعرض محتويات الحافظة؟ فلنجرّب:

http://up4.w6w.net/upload/04-03-2006/w6w_2006030419361055648907.jpg

هل رأيت؟ لا تخف. فهذا ليس سحراً، نعم لقد ظهر ملف جديد في الحافظة و هو HelloWorld.class نفس اسم الملف السابق و لكن بملحق (extension) جديد :-) و هو class. لقد قانت الآلة التخيلية بانشاء هذا الملف القابل للتشغيل.

الآن جاء دور التشغيل:

http://up4.w6w.net/upload/04-03-2006/w6w_20060304193801206c42ea.jpg

تلاحظ أننا حين كتبنا اسم الملف كتبناه بدون ملحق ذلك أنّه لاداعي له. لأن الآلة التخيلية لا تقوم بتشغيل أي ملف من نوع آخر. هي مخصصة لتشخيل الملفات من نوع class فقط لا غير. لذا لا داعى (و لا يجب) أن يتضمن اسم الملف المشغّل الملحق class معه.

و هكذا تشاهد في الشكل السابق كلمة Hello World الرائعة و هي تزيّن الشاشة دليل عمل البرنامج بنجاح.


أخطاء شائعة
^^^^^^^^
بعد أن قمت بنسخ البرنامج المكتوب كما هو (و الذي تعمدت أن يكون كصورة حتى تكتبه بنفسك :-))
و قمت بمحاولة ترجمته، قد تظهر لك هذه الأخطاء:

1)http://up4.w6w.net/upload/04-03-2006/w6w_20060304193911b7d4e3a6.jpg
هذا الخطأ يعني أنك أخطأت في اسم الملف الذي تحاول عمل ترجمه له أي أنك تترجم ملفاً غير موجود.

2)http://up4.w6w.net/upload/04-03-2006/w6w_200603041941087f538a2a.jpg
هذا الخطأ ينتج اذا قمت بتسمية الملف باسم يختلف عن اسم الفئة في الداخل. سنفهم هذا بشكل أكبر في الدرس القادم ان شاء الله.

و قد يظهر لك هذا الخطأ أثناء محاولة تشغيل البرنامج و لو تمت الترجمة بنجاح:

1)http://up4.w6w.net/upload/04-03-2006/w6w_20060304194226a8b402fa.jpg
قد يحدث هذا الخطأ. و هو خطأ شائع و محيّر :-)
فكما ترون عند الرقم (1) الclass الذي أحاول تشغيله موجود، و قمت بكتابة اسمه بالشكل الصحيح كما في الرقم (2) و مع ذلك يقول انه لا يجد الكلاس كما واضح في الرقم (3).

و هذا يعني أنّك نسيت اضافة (;.) في ال classpath. المسألة بسيطة قم بعمل التالي و تشغيل الملف مرة أخرى:
http://up4.w6w.net/upload/04-03-2006/w6w_2006030419430664b55721.jpg

hatem21
03-04-2006, 04:50 PM
شرح البرنامج الأوّل

لقد قمنا في الدرس السابق بكتابة برنامج صغير، و قد كان بهذا الشكل
http://up4.w6w.net/upload/04-03-2006/w6w_2006030419455967eb5eb6.jpg
اليوم سنقوم بفهمه سطراً سطراً

فلنبدأ بسم الله الرحمن الرحيم:

السطر الأوّل:
^^^^^^^
http://up4.w6w.net/upload/04-03-2006/w6w_200603041946581d392d6c.jpg
السطر الأول يحتوي على تعريف الفئة (class).
و نحن هنا سنعرّف فئة جديدة اسمها HelloWorld. و قد اعتاد مبرمجو لغة الجافا على اعتماد تسمية الفئات بطريقة معيّنة (Naming Convention)

كلمة Public تسمى (مُغيّر دخول-Access Modifier) و هي تسبق تعريف الفئات classes والأعضاء Objects والمتغيّرات Variables و الوظائف Methods. و سنطّلع في دروس قادمة على غيرها من مغيرات الدخول ان شاء الله :-)

و مغيّر Public يعني أن هذه الفئة عامة و يمكن لأي فئة أخرى موجودة في الآلة التخيلية (virtual machine) أن تستخرج أعضاء منها، أو أن تقوم على تشغيلها.

و ملف الجافا قد يحتوي على تعريف لأكثر من فئة. و لكن فئة واحدة فقط يمكنها public و هي التي يتم تسمية الملف عليها.

فمثلاً، يمكنني أن أقول التالي:




public class FirstClass {
. .
. .
}

class SecondClass {
. .
. .
}




في المثال السابق يوجد لدينا ملف كتبناه على TextPad أو NotePad و يحتوي على تعريف فئتين. و نلاحظ أن احداهما فقط هي التي تم تعريفها لتكون public و على هذه الأساس، سيكون اسم الملف على هذه الفئة، وفي مثالنا سيكون: FirstClass.java.

نلاحظ أن السطر الأوّل ينتهي برمز (}) و هو يعني أن تعريف الفئة (class) سيبدأ عند هذه النقطة. و بما أن لكل شيء بداية و نهاية، فإننا نتوقّع أن يتوقّف تعريف البرنامج عند العلامة المقابلة ({) و هذا يعني أن تعريف الفئات يكون دائماً محصوراً بين رمزي المجموعة :-)

السطر الثاني:
^^^^^^^^

http://up4.w6w.net/upload/04-03-2006/w6w_20060304194804499802c4.jpg

السطر الثاني يأتي لتعريف وظيفة(method) من الوظائف. سنتعرّف على الوظائف بشكل مفصّل في درس قادم ان شاء الله. لكن ما يهمّنا الآن هو الوظيفة الموجودة بين أيدينا.

هذه الوظيفة هي ذات نوعية خاصة، انها ال main method و هي نقطة البداية لأي برنامج يتم تشغيله من مشغّل الدوس (Dos prompt).

لنعد بذاكرتنا قليلاً إلى الوراء، هل تذكرون ما قلناه حين تحدّثنا في مقارنة بين البرمجة بالطريقة التقليدية (Proccess Oriented) و البرمجة بالطريقة بالكائنات الشيئية؟ لقد ذكرنا شيئاً عن نقطة البداية. ففي البرمجة بالكائنات الشيئية نضع نقطة البداية، ثم يقوم أعضاء الفئات المختلفة بتقاذف الأحداث فيما بينها.

و لكن لابد من نقطة بداية. و في حالتنا نقطة البداية هي هذا السطر و ما يعقبه من أوامر محصورة بين قوسي المجموعة :-)

إن أي برنامج جافا، قد يتكون من عدة ملفات (بحيث يكون كل ملف محتوياً لى تعريف فئة)، و يجب أن تحتوي فئة واحدة عاى نقطة البداية، التي تتمثّل في وظيفة main.

وظيفة ال main method هي في الحقيقة نقطة البداية التي تتحدّث عنها الآلة التخيلية للجافا، في حالة قمنا بتشغيل أي ملف جافا من محرك الدوس. و هي في الواقع فئة تتبع للفئة بشكل عام و لا تخص الأعضاء المنتمين لهذه الفئة.

السطر الثالث:
http://up4.w6w.net/upload/04-03-2006/w6w_20060304194854b56e3960.jpg
إن هذا السطر في الواقع يقوم باستدعاء و ظيفة println التي تقوم بكتابة ما يمرر لها في الأقواس (و في حالتنا هو Hello World). ما سبق هذه الوظيفة هو عنوان العضو و الفئة التي توجد فيها هذه الوظيفة، حتى تقوم الآلة التخيلية بتشغيلها بشكل صحيح.


السطر الرابع والخامس:
http://up4.w6w.net/upload/04-03-2006/w6w_20060304194941c61f0917.jpg
نقوم هنا بغلق الأقواس، و نلاحظ أن تعريف الفئة قد تضمّن تعريف الوظيفة main و نلاحظ أننا نغلق القوس الداخلي أولاً ثم الخارجي و هكذا.


ملاحظات:
^^^^^^
- في السطر الثالث، الكلمة الأولى و هي System هي في الواقع اسم لفئة. و في هذه الفئة توجد صفة اسمها out.
out في الواقع هي عضو في فئة PrintStream و يستطيع أعضاء هذه الفئة استخدام وظيفة ال println :-)
هذا هو تسلسل هذ الكلمات.

- تم التحدث عن الآلة التخيلية في هذا الدرس. و سنعرف عنها المزيد، تابعوا الدروس :-)

sidina2005
03-06-2006, 11:27 PM
بارك الله فيك أخي و ننتظر منك المزيد

زعـــفـــان
03-07-2006, 12:09 AM
جزاك الله خيرا أخي العزيز

hatem21
03-07-2006, 04:23 PM
اشكركم اخواني علي المرور اليوم سوف نكمل ان شاء الله

sidina2005
03-12-2006, 11:32 AM
بارك الله فيك أخي و ننتظر بقية الدروس

hatem21
03-15-2006, 09:03 PM
السلام عليكم ورحمة الله وبركاته..


ورد ذكر الآلة التخيلية للغة الجافا في الدروس السابقة، و نظراً لأهميتها في فهم اللغة، فقد رأيت أن أخصص لها درساً منفصلاً. تمهيد


تذكر شركة ال Sun Microsystems أن قوة لغة الجافا تكمن في قوة ثلاث وحدات فيها:


الآلة التخيلية Java Virtual Machine

جامع نفايات البرنامج Garbage Collector

أمان الكود Security of the code
و في الواقع فإن المحورين الثاني والثالث، على أهمية عظيمة، و لكنهما يتحركان ضمن المحور الأول و هو الآلة التخيلية. الآلة التخيلية للغة الجافا



تعتبر JVM الجزء الوحيد من بيئة البرمجة الجافيية (ههه) الذي يعرف ما هو نظام التشغيل الذي تعمل عليه البرامج المختلفة. فالفئات كما ذكرت، تعرف أنها يجب أن تعمل لحساب الآلة التخيلية. و هي واحدة في كل مكان مهما اختلف نظام التشغيل و نوع الكومبيوتر. أما الآلة التخيلية نفسها، فهي العضو الذي يتصل بالكومبيوتر.. و يقوم بما يلزم من عرض على الشاشة، أو قراءة من الكيبورد، اذاً لابد أن تعرف ال JVM عن نظام التشغيل الذي تعمل عليه.

hatem21
03-15-2006, 09:04 PM
السلام عليكم ورحمة الله وبركاته..


موضوعنا اليوم ربما يكون جامداً و ثقيلاً و لكنه يعدّ ضرورياً جداً للبدء بالبرمجة الحقيقية بلغة الجافا.

مقدمة:

المتغيرات هي العلب التي تحفظ في داخلها قيم، قد تتغير. و حتى نفهمها سنأخذ مثالاً.

لنفرض أنك ذهبت إلى أحد المحلات التجارية حيث أخبرك البائع أنّك فزت بقسيمة شرائية، و طلب منك تعبئة ورقة صغيرة لتسجيل معلوماتك مثل الورقة التالية:

الاســــــم:.........................
رقم الهاتف:.........................
العنـــوان:.........................



إنك في هذه الحالة ستكتب اسمك بجانب "الاسم"، و ستكتب عنوانك بجانب "العنوان". و لو أراد الله سبحانه و تعالى أن يفوز شخص غيرك فإن الاسم الذي سيكتب في خانة "الاسم" سيكون مختلفاً بالتأكيد. و هذا بالضبط هو المتغيّر. فخانة الاسم تعتبر متغيّر، قد يأخذ قيمة اسمك أو اسمي أو اسم أي شخص آخر.

و لكن لنكن واقعيين، هل من الممكن أن يأتي شخص و يكتب في خانة الاسم:"1234567"؟ لا أظن، فهمها كان أبوه عاشقاً للارقام، فلن يسمي ابنه بالأرقام ;) من جهة أخرى فلن يكتب شخص مهما بلغت غرابة أطواره كلمة "الشمس المشرقة" في خانة رقم الهاتف.

إذا المتغير قد يأخذ قيماً مختلفة ذات نوع محدد. فهناك متغيرات تأخذ قيماً حرفية مكونة من أحرف فقط مثل خنة الاسم. و هاك متغيرات رقمية مكونة من أرقام فقط مثل خانة رقم الهاتف.

في لغة الجافا توجد أنواع من المتغيرات، وفي هذا الدرس سنلقي الضوء على بعضها:

المتغيرات الرقمية (Numaric Data Types):

في لغة الجافا تود لدينا 6 أنواع للمتغيرات الرقمية، نستطيع تقسيمها إلى قسمين كبيرين:

المتغيرات الصحيحة(Integral Variables): و تتكون من 4 أنواع:


byte: و هذا النوع يخزّن الأرقام الصحيحة في حجم من الذاكرة مقداره بايت واحدة.
short: و هذا النوع يخزّن الأرقام الصحيحة في حجم من الذاكرة مقداره 2 بايت.
int: و هذا النوع يخزّن الأرقام الصحيحة في حجم من الذاكرة مقداره 4 بايت.
long: و هذا النوع يخزّن الأرقام الصحيحة في حجم من الذاكرة مقداره 8 بايت.

المتغيرات الكسرية(Floating Point Variables): و تتكون من نوعين:


float: و هذا النوع يخزّن الأرقام الكسرية في حجم من الذاكرة مقداره 4 بايت.
double: و هذا النوع يخزّن الأرقام الكسرية في حجم من الذاكرة مقداره 8 بايت.

المتغيرات النصية (Textual Data Types):

تضم نوع واحد فقط:

char: و يخزّن في حجم من الذاكرة مقداره 2 بايت. و هذا المتغيّر يخزّن حرفاً واحداً فقط. و يجدر بي أن أوضح هنا أن أي زر يمكن أن تضغط عليه في الكيبورد هو في الواقع char. و بالمناسبة فإن الرقم 1 يختلف كثيراً عن الحرف '1' و يكتب هكذا محصوراً بين علامتي تنصيص مفردتين. و الثاني '1' لا يمكن اجراء عمليات حسابية عليه لأنه مخزّن على أساس انه متغير نصّي. و لكن 1 لو تم تخزينه في متغير رقمي فيمكن بالطبع اجراء عمليات حسابية عليه.

من أمثلة الأرقام التي يمكن تخزينها في سلسلة من ال char : رقم الهاتف، لأنه لا فائدة من اجراء عملية حسابية على رقم تيلفون.

المتغيرات المنطقية

و تضم نوع واحد فقط:

boolean: و هذا النوع يخزّن نوعاً مميزاً من القيم. انه يخزّن قيمة من اثنتين فقط هما: true, false. و هذا النوع من المتغيرات يستخدم في المقارنات المنطقية التي سيأتي تفصيلها فيما بعد ان شاء الله.

المتغيرات التي يعرفها المبرمج(Aggregate Data Types):

و هي المتغيرات التي يقوم المبرمج بتعريف نوعها. مثل ال classes لتي نقوم بكتابتها في ملفات و برامج الجافا. ملخص:


المتغير هو مكان لتخزين القيم التي يحتاج المبرمج لحفظها بشكل مؤقت. و قد تتغير من آن إلى آخر. و يتم تحديد نوع القيمة التي يخزنها أي متغير.
أنواع المتغيرات لها حجم محدد للتخزين في الذاكرة.
يستطيع المبرمج أن يعرف أنواعاً لا عدد لها من المتغيرات باستخدام ال classes.

carezma
03-16-2006, 04:10 PM
Many thanks man about ur efforts but iwanna know the different between

Struts and JSF and also the different between corba & Rmi


finaly i wanna cds for learning websphere ide
if u can many thanks


byeeeeeeeeeeeeeeeeeee

hatem21
04-02-2006, 03:52 PM
اليوم نكمل ان شاء الله

القحطاني1
04-19-2006, 01:15 AM
مشكووووووووووووووووووووووور

hatem21
05-04-2006, 07:50 PM
اشكرك علي المرور

fatima_ak
05-05-2006, 05:28 AM
مشكور أخي الكريم على المجهود ...
لدي طلب وأرجو أن تساعدني ؟؟؟
أريد برنامج بالجافا آلة حاسبة بسيطة فيها العمليات الأساسية ( جمع طرح ضرب قسمة ) معمول على ال آبلت ...
أرجو أن تسعفني به اليوم فأنا بحاجة له غدا السبت في مشروعي ...
جزاك الله خيرا

ميثم التمار
05-05-2006, 07:34 AM
رائع ننتظر المزيد ان شاء الله






والى الامام انشاله
وشكرا...

nakheel
05-05-2006, 10:59 AM
مشكوور جدا أخي

طموحة
05-05-2006, 01:52 PM
تسلم اخي...
موضوع مرتب وواضح..

hatem21
05-11-2006, 05:28 PM
اشكركم اخواني علي المرور

veto_44
10-15-2006, 11:33 PM
موضوع جميل من انسان رائع بارك الله فيك
اخي حاتم صحيح ان الموضوع قديم لكن يستحق
ان يرفع للمقدمة والحمد لله معظم الروابط تعمل
ارجو ان تستفيدو منه لك خالص التقدير والاحترام
اخي حاتم .

hatem21
11-09-2006, 09:07 AM
لا شكر علي واجب

mhmh225
11-20-2006, 06:03 AM
Thanx Alot :)

mahjor
01-20-2007, 08:06 PM
مشكووووووور اخي على دروسك
غير أن معظم الروابط فارغة

الحارثية
01-21-2007, 11:10 AM
مشكور اخي على هذا الشرح المبسط عن لغة الجافا

افادني جدا .. جاري تحميل الكتب

smartsway
01-25-2007, 11:21 PM
جزاك الله خيرا

hatem21
02-19-2007, 06:07 PM
الله يعطيكم العافيه

oceansman2003
02-20-2007, 09:38 AM
مشكور جدا على هذه الدروس
بس الرابط الدروس الذي يعرض عن طريق البوبوينت لا يعمل
هل يوجد رابط اخر و شكرا

mokingsu
02-22-2007, 01:56 PM
أشكرك و لي طلب
اريد كتاب عن تعلم sun one studio
مع حبي و تقديري