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

أسئلة بسيطة عن لغة جافا أتمنى الإجابة عليها

بدأه PHP 2 JAVA في 15 مايو 2009 · 15 رد · 1,641 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لدي بعض الأسئلة أتمنى ممن لديه الجواب الصحيح الإجابة عليها.

أنا مبتدئ في لغة جافا وحالياً أقرأ كتاب The Joy Of JAVA وهو كتاب رائع جداً للغة جافا، ولكن المشكلة أن الكتاب لم يشرح بعض الأشياء الأساسية وهي:

أولاً: إنَّ آخر إصدار من JDK وجدته في موقع شركة SUN هو الإصدار 1.6 إذاً لماذا نقول JAVA 2 (ما معنى رقم 2)؟

ثانياً: نحن نعلم بأن الـ JVM مسؤولة عن الـ ByteCode ولكن ماذا يعني الإصدار 6 من J2SE؟

ثالثاً: ما معنى JRE وما هو الفرق بينها وبين JVM؟

رابعاً: هل تقنيات J2ME, J2EE, J2SE (هي تقنيات قائمة بحد ذاتها ولكنها تستخدم لغة جافا) أم كيف؟

أتمنى أن أجد الإجابات الشافية منكم.

#2

1) اعتقد ان الشركة تعتبر الاصدار 1.6 هو جيل جديد من الجافا ، فيسمى تجاوزاً java 2

2) طريقة السؤال غريبة شوي؟ ذكرت معلومة عن JVM ثم ذكرت سؤال عن j2se .. ؟ عموما ليس لدي اجابة ولكن (مثل الاجابة الاولى) اتوقع انهم اخذوا اخر رقم من الاصدار 1.6 ؟؟

3) ببساطة JRE تحتوي ال JVM وبعض المكتبات المساعدة لتشغيل برامج الجافا ، في المقابل ال JVM هو الذي يستطيع فهم وقراءة bytecodes

هذا رابط باللغة الانجليزية نقلت منه الاجابة http://wiki.answers.com/Q/What_is_the_diff...the_JVM_and_JRE

4) ممكن توضح السؤال اكثر ، هل تقصد انها كانت موجودة قبل ظهور لغة الجافا؟

#3

بالنسبة للمصطلح java2 فأظنه ظهر عند المرور من النسخة 1.1 إلى 1.2 لأنه أدخلت تغييرات وتطويرات جذرية

وعلى كل حال أظن أن المصطلح أصبح متجاوزا

الإصدار 6 هو الإصدار 1.6. وأيضا بالنسبة للنسخة 1.5 أحيانا تسمى 5

JVM (Java Virtual Machine) هو البرنامج المسؤول عن تنفيذ الByteCode، وهو مثل الInterpreter الخاص بpython أو php مع بعض الإختلافات

JRE(Java Runtime Environment) هي مجموع البرامج والمكتبات التي تحتاجها لتنفيذ برامج java، ومن بين مكوناتها توجد الJVM

تم تعديل هذه المشاركة بواسطة herch في 15 مايو 2009 في 19:44

#4

ملحوظة بسيطة :

اقتباس
هو البرنامج المسؤول عن تنفيذ الByteCode، وهو مثل الInterpreter الخاص بpython أو php

في اصدارات الجافا القديمة كانت الـ java platforms تستخدم مفهوم الـ Hybrid Aproach

والذي هو عبارة عن Compiler + Interpreter

الـ Compiler للتحويل من الـ High Level Language " والتي تمثل الـ جافا هنا " إلي لغة وسيطة IL " والتي تمثل الـ Bytecode "

والـ interpreter يقوم بتنفيذ الـ IL إلي لغة الآله

أما في اصدارات الجافا الجديدة اصبحت الـ java platforms تستخدم مفهوم الـ JIT

Just In Time Compile

والتي هي عبارة عن Compiler + Compiler

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

وهذا احد أسباب زيادة سرعة برامج الجافا في الاصدارات الحديثه

صــفــر

#5

سمعت بJIT ولكني لا أعرف مبدأ عملها

وحقيقة لم تشرحها بشكل واف :wink:

اقتباس
والتي هي عبارة عن Compiler + Compiler

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

لم أفهم هذا المقطع

#6

بالنسبه للمصطلح Java 2 فهو كما ذكر الأخ herch وهو الأن قد انتهى واصبحت الاسماء الرئيسيه المعتمده من Sun هي JME, JSE, JEE .

أما بخصوص هذه التقنيات فهي قسمان الأول JME وهي مستقله نوعا ما فلها KVM تتميز بصغر حجمها وهي تخص الأجهزه الصغيره والمتوسطه مثل الجوالات والرسيفرات وغيرها وتختلف عن التقنيتين الأخريين.

القسم الثاني يحتوي على JSE فهي تهتم بتطبيقات سطح المكتب والJEE فهي أكبر من ال JSE وتحتوي على كل ما تحتويه ال JSE مع وجود بعض الاضافات التي تخص التطبيقات العملاقه والسيرفرات.

javame_components.gif

تم تعديل هذه المشاركة بواسطة muqawem في 15 مايو 2009 في 20:21

#7

أقصد أن الـ JIT

عبارة عن Compiler + Compiler

عكس الـ Hybrid Aproach الذي هو عبارة عن الـ Compiler + Interpreter

###############

الـ Compiler الأول .. للتحويل من الـ High Level لـ Bytecode

وهذه كانت الوظيفة الأولي في الـ Hybrid Aproach

والـ Compiler الثاني .. للتحويل من الـ Bytecode للغة الآلة

وهذه كانت الوظيفة الثانية في الـ Hybrid Aproach

هذا ما قصدته بالوظيفة الأولي والثانية ..

صــفــر

#8

حسب ما فهمت -- ممكن أكون مخطئ -- فإن الملفات .class في الHybrid Aproach تحتوي فقط على أوامر بالByteCode

وفي الJIT ممكن تحتوي أيضا جزئيا أو كليا على أوامر بلغة الآلة

هل كلامي صحيح ؟؟ :resentful:

#9

مممممممم قد يكون ذلك صحيحا ..

ولكن اعتقد

في كليهما " JIT - Hybrid " .. الناتج من العملية الأولي سيكون bytecode لغة وسطية

الاختلاف في الطريقتين هو في فهم وطريقة تعامل الـ JIT للـ bytecode يختلف عن فهم وطريقة تعامل الـ Hybrid للـ bytecode

صــفــر

#10

حسب ما فهمت من قراءة سريعة، فإن JIT ممكن يقوم بoptimization حسب البيئة التي يتم التنفيذ فيها، وأنا فقط افترضت أنه يحول جزءا من الByteCode الموجود في الملف class إلى لغة الآلة

#11

فكرت فيها قليلاً

فكر معي :D

من مميزات الجافا انها cross-platform

اي انه من الممكن انا اكتب برنامج بالجافا .. ثم اترجمه و اعطيه لصديقي بـ كوالالمبو :D كي ينفذه " byte code "

أليس هذا صحيح ؟؟

إذا لا بد من أن تكون الـ bytecode سواء في الـ JIT or Hybrid لا يختلفان !!

لأنه من المحتمل ان يكون عند صديقي هذا platform غير الذي استخدمه

اهذا منطقي ؟

صــفــر

#12

نسيت هذا الأمر :P

معك حق. وتحياتي للأخ العزيز كوالالمبو :wink:

#13
cIs.Falcon كتب:
ملحوظة بسيطة :

في اصدارات الجافا القديمة كانت الـ java platforms تستخدم مفهوم الـ Hybrid Aproach

والذي هو عبارة عن Compiler + Interpreter

الـ Compiler للتحويل من الـ High Level Language " والتي تمثل الـ جافا هنا " إلي لغة وسيطة IL " والتي تمثل الـ Bytecode "

والـ interpreter يقوم بتنفيذ الـ IL إلي لغة الآله

أما في اصدارات الجافا الجديدة اصبحت الـ java platforms تستخدم مفهوم الـ JIT

Just In Time Compile

والتي هي عبارة عن Compiler + Compiler

هذا الكلام بدعة , من اين لك هذا الكلام؟

المنطق الذي تحدثت به اخر مشاركة لا يكفي !

بالتوفيق

الله معك.

#14
اقتباس
هذا الكلام بدعة , من اين لك هذا الكلام؟

المنطق الذي تحدثت به اخر مشاركة لا يكفي !

بالتوفيق

الله معك.

ماهذا الأسلوب !!

ليس معني أنك لا تعرف معلومة ما فهي بدعه ..

إلا إذا قد أوتيت العلم كله !!

سبحان الله ... أري بعض المعاملات في هذا المنتدي تجعل الواحد يطفش !!

الله معك

صــفــر

#15

اخي مابك ؟

بماذا ازعجتك ؟ :huh:

#16

أشكر الجميع على ردودهم، وما عرفته الآن:

* أنَّ JAVA 2 عبارة عن جيل ثاني للغة جافا (وليس إصدار ثاني). ولكن لا أدري لماذا لم يسموها شركة Sun بـ JAVA الإصدار 2 والجيل 2.

* الإصدارات J2ME, J2SE, J2EE هي عبارة عن تقنيات تستخدم لغة جافا، ولكن لكل منها استخداماتها الخاصة، J2SE لتطبيقات سطح المكتب، والتطبيقات الصغيرة، J2ME والتي تعني Micro Edition لتطبيقات الهواتف والتطبيقات الصغيرة، J2EE والتي تعني Enterprise Edition وهي للتطبيقات الكبيرة كتطبيقات الويب بواسطة JSP, Servlet وغيرها...

* الـ JVM مسؤولة عن تنفيذ الـ ByteCode بعد أن يقوم الـ Compiler الذي هو javac بإنشاءه.

* JRE هي عبارة عن الـ Runtime المسؤول عن توفير المكتبات الأساسية لكي تعمل تطبيقات لغة JAVA، الـ JRE يحتوي على JVM مضمن، الـ JVM لترجمة الـ ByteCode والـ JRE لتوفير المكتبات الأساسية عند الترجمة.

حقيقة لغة جافا هي لغة رائعة بكل معنى الكلمة، فبإمكاني عمل كل شيء بهذه اللغة، والشيء الأكبر من ذلك هو احتوائها على وثائق وكتب ومقالات بالملايين.

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

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

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

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

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