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

[تنبيه - عنوان غير مناسب : ]سؤال لواحد عاوز يفهم

بدأه engineero في 11 يونيو 2008 · 4 رد · 1,148 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

ممكن حد يفهمنى معنى الجمليتين القادمتين

1- Java is a platformfor application development

2– Java solves the problem of platform-independence by using byte code

platformfor & byte code ؟؟؟؟؟؟؟؟؟؟؟؟؟؟

Thanks

تم تعديل هذه المشاركة بواسطة engineero في 11 يونيو 2008 في 05:06

#2

سلام عليكم

بص من الآخر انت تطبيقك عشان تشغله بيحتاج الجافا فقط وهنا معنى ان الجافا بلاتفورم

والبلاتفورم اندبندنس معناها انك تقدر تستخدم تطبيقك بدون اى ارتباط بنظام التشغيل المستخدم

http://javalearner.com/

البايت كود: هو الصورة اللى بيتحولها الكود بتاع الجافا اللى انت كتبه عشان ينفذها ال JVM

http://en.wikipedia.org/wiki/Java_bytecode

تم تعديل هذه المشاركة بواسطة ahmed_youssef في 11 يونيو 2008 في 06:12

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#3

السلام عليكم ,,

سأضع ما عندي أخي العزيز على عجالة :)

اقتباس
Java is a platformfor application development

لغة JAVA هي لغة لبرمجة التطبيقات و ليست لغة برمجة عامة general purpose language كلغة C أو ++C,

أي أن البرامج التي سوف تنتجها لا يمكنها العمل وحدها و لكنها ستعتمد على كود في مكان آخر و المقصود هي المكتبات,

في ++C/C يمكنك انتاج كود دون الاعتماد على أي مكتبة و هذا الكود يمكنه العمل على المعالج مباشرة!

هذا هو المقصود أخي العزيز.

اقتباس
Java solves the problem of platform-independence by using byte code

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

في الحقيقة أن أحد أحلام المبرمجين في العصور الغابرة و الحاضرة :D هو كتابة البرنامج مرة واحدة, و جعل هذا البرنامج يعمل على أي منصة(معالج)

هذا الكلام قد يبدو جميلاً و منمقاً و سهل التحقيق, و لكن لم يظهر حل واحد!

بل ظهرت عدة حلول لهذه المشكلة و كل حل له إيجابيات و سلبيات :)

في بداية الأمر كان المبرمجون يقومون بكتابة البرامج بلغة Assembly, و عندما نريد جعل البرنامج يعمل على منصة أخرى(معالج آخر) يجب إعادة كتابة البرنامج بلغة Assembly الخاصة بتلك المعالج!

ظهرت لغة C و تنفس المبرمجون الصعداء :D, لغة C كان أحد أشهر أسباب انتشارها هو قوتها,

في تلك الفترة كان المبرمجون يكتبون برامجهم بلغة C, ثم يقومون بترجمة الكود إلى برنامج(binary code) بواسطة المترجم Compiler, الكثير من الشركات و المبرمجين قاموا بإنتاج مترجمات لكثير من المنصات(المعالجات), لا تنسى أن كل منصة تحتاج إلى مترجم خاص بها, لكي يحول كود C إلى لغة الآلة الخاصة بالمعالج الفلاني.

هذا يعني بكل بساطة, قم بترجمة الكود الذي لديك بأي مترجم متوفر لتحصل على برنامج يعمل المنصة المطلوبة, ربما قد تفاجئ, و لكن باعتقادي لا توجد منصة لا يتوفر لها مترجم لغة C :lol:

ظهرت اللغات التي أسميها معقدة و أشهرها ++C!

إن عملية إنتاج مترجم للغة كلغة ++C ليس بالأمر الهين إطلاقاً فهو بحد ذاته إنجاز! إذا أخذنا بعين الاعتبار التعقيد الذي بدأت تميل إليه الكثير من اللغات مع ظهور العديد من النظريات البرمجية كالبرمجة الكائنية و غيرها,

و أصبح انتاج مترجم لكل منصة أمراً شاقاً جداً و ربما يكون مستحيلاً لوجود الكثير و الكثير من المنصات, و لا ننسى بالطبع التعقيد التي اتسمت به تلك اللغات, أما اللغة الأصلية التي اتبعت هذا الأسلوب لغة C فهي لغة بسيطة إلى أبعد الحدود مقارنة بتلك اللغات!

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

ظهر فريق آخر من المبرمجين الذي رأى في هذه العملية تعقيداً و مشاكل لا تحصى!

في الحقيقة لم تكن المشكلة هي إنتاج مترجم فقط, و لكن الفروق التقنية الكثيرة بين المنصات و التي يمكن أن نتطرق إليها في رد لاحق(لأني تعبت من الكتابة :D ) جعلت ترجمة الكود على منصة أخرى غير الموجه إليها عملية محفوفة بالمخاطر التقنية!

الفريق الجديد الذي ظهر, في الحقيقة أبهر العالم بحله,

لم يقوموا بإنتاج مترجم لكل منصة, بل قاموا بإنتاج منصة(معالج) :wacko:

في الحقيقة أن تلك المنصة ليست أكثر من برنامج أو ما يسميه الجافاويون Virtual machine

أي المنصة الوهمية لأنها ليست قطعة حقيقة و لكنها برنامج,

هذه المنصة الوهمية, هي المسؤولة عن عمل البرنامج الذي تقوم بإنشائه بلغة JAVA سواء كنت تعمل على المنصة A أو المنصة B!

كمثال على ذلك, في لغة C :

int a;

المتغير a هو من النوع int و هذا كل ما عرفناه من معلومات عن هذا المتغير أما حجم المتغير فلا يمكن تحديده إلى إذا قمت بتحديد المترجم الذي سوف تقوم باستخدامه!

أما في لغة الجافا فحجم المتغير معرف, و سواء كانت المنصة الوهمية و الحقيقة تستخدمان نفس الحجم للمتغير من النوع int أو لم تكونا, فإن المنصة الوهمية سوف تقوم بالواجب,

بالطبع فإن كل منصة حقيقة تحتاج إلى منصة وهمية, هذه المنصة الوهمية لا تستغرب إن كانت مبرمجة بلغة C, و إن لم يكن هناك مترجم لغة C لتلك المنصة فسيضطر مبرمجوا الـ virtual machine إلى استخدام assembly تلك المنصة لإنتاج VM.

الـ Byte Code هو الـ Assembly Language لتلك المنصة الوهمية,

في النهاية فإن انتاج Assembler أبسط بمسافات ضوئية من إنتاج مترجم للغة كلغة ++C على أي منصة كانت,

حتى لا أنسى, السطر التالي يلخص كل الموضوع :

++C/C تمكنك من نقل الكود لترجمته على أي منصة source code portability أما لغة لغة Java فتوفر binary code portability.

تحياتي, و اعذرونا على التقصير إن كان هناك أخطاء :)

تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 11 يونيو 2008 في 06:35

#4
اقتباس
أضيف إلى ما قيل ...

الج.ـــافا ، كمنصة platform لتطوير البرامج (Java : with capital J) هي عبارة عن المجموعة التالية :

الجافا كلغة برمجة

javac الكمبيلر compiler

java الانتربريتر interpreter

Java Virtual Machine الماكنة الافتراضية

والمزيد المزيد....

كما نلاحظ في المكونات السابقة، لغة الجافا هي جزء فقط من هذه المنصة.

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

مثلا، جهاز PC مزود ب Windows Xp مثلا يعتبر منصة ويندوز اكس بي، جهاز PC مزود ب Linux Fedora 6 يعتبر منصة مختلفة عن الأولى (رغم أن الجهاز هو نفسه لم يتغير). وهكذا دواليك.

لذلك عندما نقوم بكتابة برنامج ما، بلغة الـ C++ مثلا ، فاننا عند الترجمة او الــ Compiling علينا بأن نختار المنصة التي سيشتغل عليها. وبالتالي يقوم الـ Compiler بانشاء الكود الذي يشتغل على تلك المنصة.

لكن، عندما نقوم بكتابة برنامج بلغة الـجافا، فاننا عند الترجمة، لا نختار المنصة التي نريد أن يشتغل عليها البرنامج، لأنه هناك منصة واحدة افتراضية (Java : with capital J)، والكود الذي ينشأه الــ Compiler يدعى الـ bytecode.

#5

شكرا لكل الاخوة الكرام

ahmed_youssef & Khaled.Alshaya & delab

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…