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

وسع أفقك وفكر في جافا كمنصة

بدأه محمد سمير في 28 يناير 2009 · 13 رد · 1,411 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

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

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

على سبيل المثال لا الحصر:

http://user.cs.tu-berlin.de/~tolk/vmlanguages.html

http://jvm-languages.com/wiki/Category:Programming_Languages

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

صدقني ستفاجأ بكم اللغات التي تعمل على تلك المنصة الرائعة جافا.

سؤال: كيف للغة أن تعمل على منصة لغة أخرى؟

الكيفية بسيطة: بدلاً من برمجة مفسر أو مترجم اللغة بلغة C مثلاً يبرمج بجافا.

إذن فاللغات التي تعمل على منصة جافا تكون لغات جديدة كتبت من الصفر؟

ليس تماماً... يمكنك إعادة كتابة لغة و منصتها بالكامل بجافا ليكون لديك نسخة تعمل على جافا و أخرى تعمل حيث يمكن ترجمة كود C التي كتبت به.

و هل هذه الإمكانية حكر على منصة جافا؟

لا ... نظرياً يمكن عمل مفسر لأي لغة بإستخدام لغة أخرى، عملياً..لدينا منصة دوت نت من ميكروسوفت و التي تحمل بين طياتها العديد من اللغات.

إذن هناك لغات أحسن من لغة جافا يمكن إستخدامها على منصة جافا؟

هذا السؤال هو بداية فساد الموضوع :angry: لسنا هنا بصدد الحديث عن لغة أحسن ولغة أطعم ... الموضوع و ما فيه "وسع أفقك".

إذن لماذا أتعلم لغة جديدة .. ما الذي سيفيدني؟

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

على سبيل المثال: هل جربت أن تكتب كود نافذة "swing" بجافا؟

إن كنت جربت فقل رأيك في هذا الكود لعمل نافذة تحمل عنوان "testing" و مساحتها 300*300:

from javax.swing import *
f = JForm("testing", size =(300,300), visible =1)

هذا الكود مكتوب بلغة تدعى Jython و هي اللغة التي أفضلها و هي ليست الوحيدة بل هناك العديد من اللغات القيمة التي تستحق منك نظرة, عل سبيل المثال:

JRuby, Groovy, Scala

جرب و لن تندم و إذا أردت أن تتعرف على Jython أكثر؛ إبدأ معي من هنا:

/index.php?showtopic=184617

1

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

#2

لم افهم بالضبط .

.هل هذه اللغات تكتب بطريقتها وتترجم تحت بيئة جافا

ام

تكتب بطريقة قريبة من جافا وتترجم تحت بيئاتها الخاصة

بالتوفيق

الله معك

#3

جزاك الله خير

مع أني مفهمتش كويس ولكن هل هذا يختص بعمل(برمجة) الكومبيلر أم الفيرشوال ماشين

مدونتي

برمجة وما يتبعها

#4

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

الإخوة الكرام أبو عوف و شادو أسعدني إهتمامكم .. السؤالين قريبين من بعض لذا الإجابة واحدة.

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

نطيل الإجابة قليلاً بمثال لتوضيح المقصد ، هل لديكم معرفة بلغة بايثون؟ إنها لغة رشيقة تعمل على الكثير من منصات التشغيل (ويندوز, لينوكس, ماك, سولاريس، ... ) مثلها مثل جافا لها منصة مكتوبة ب C, ماذا إذا أردنا جمع مميزات بايثون (مثل سهولة طريقة الكتابة, ديناميكية "تفاعلية" اللغة, مكتباتها المتميزة,....) مع مميزات منصة جافا (أقصد هنا JVM) و من مميزات منصة جافا مكتباتها المهولة و محموليتها العالية و تواجدها في أكثر من مليار جهاز (ما بين حاسوب و خادم و جوال)؟ الحل هو إعادة كتابة مفسر بايثون (python interpreter) بجافا نفسها بدلاً من C و عمل Compiler لبايثون أيضاً بجافا ينتج عنه كلاسات تعمل على منصة جافا بصورة مباشرة, إذاً أنت تكتب بلغة بايثون Python syntax وتترجم ل java classes.

الإضافة الوحيدة الباقية هي أن لغة بايثون لغة تفاعلية Dynamic language لذلك يمكن تنفيذ ملفاتها مباشرة على مفسرها المكتوب بجافا بدون التحويل لكلاس.

معذرة إن لم تتضح الأمور بعد و أنا معكم في إستفساراتكم.

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

#5

فكرة حلوة أبتدأ أفهم وربنا ييسر ونستخدمها لما نفضي

بس مكتبات البايثون المكتوبة بالجافا نجبها من أين؟؟؟

مدونتي

برمجة وما يتبعها

#6

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

شكرا علي الموضوع الجميل دا بس ياريت حضرتك توضح لانه

بالرغم من قوة للغة الجافا التي لا عتراض عليها ولا شك في جمالها

لكن انا حتي الان مش عرفت جديد بالنسبة لكلامك عشان الباثيون بتربط مع الجافا

JPython

هناك ايضا منضات الدوت نت تتعامل مع ايضا مع البايثون علي حسب علمي

IronPython

تتعامل مع السي شارب مثلا

اما كلامك بالنسبة Swing

طبعا هي جميلة جدا

لكن نقدر نقول هنا انا البايثون الان هي التي تنال هذا الجمال من ناحية الربط معهم

شكرا اخي الكريم و ارجوا التوضيح

mylogo.gif

#7

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

الإخوة الكرام أبو عوف و سامح شكراً لإهتمامكم.

أبو عوف: بالنسبة لجايثون يمكن تحميلها من هنا: www.jython.org

و أنصحك بتجربة النسخة القديمة (2.2.1) لأنها أثبت من النسخة البيتا 2.5

سامح: كما ذكرت هناك نسخة من بايثون موجهة لدوت نت و هي في الإصدار الثاني لها و هي مكافئة لبايثون و جايثون 2.5 لكننا في قسم جافا ^_^ , كما أني أردت من الموضوع إثارة فكرة وجود عدة لغات لمنصة جافا غير جافا نفسها و لم أكن أقصد الحديث عن جايثون بصفة خاصة, سأكمل حديثي عن جايثون في قسم بايثون في المنتدى إن شاء الله كما أنوي أن أضع درس أو درسين عن scala و groovy هنا في القسم في القريب العاجل إن شاء الله. 

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

#8

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

معذرة إخوتي .. لاحظت الآن أني أخطأت في الكود الموجود في الموضوع, المفروض أنها JFrame و ليست JForm.

جل من لا يسهو

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

#9

شكرا يا محمد علي الرد

لكن ممكن تعمل لينا امثلة علي ذلك و خصوصا لاني لم استخدم حاجة ز ي

Groovy

مع العلم بالنسبة للجافا هناك

Frameworks

كتير جدا في الجافا التطبيقات زي SWing X

و الكثير و لكن ياريت درس او حاجة توضح كلامك

شكرا ليك يا محمد

بالتوفيق ديما

mylogo.gif

#10

جزاك الله خير وربنا يوفقك

مدونتي

برمجة وما يتبعها

#11

السلام عليكم و حمة الله

إخوتي الكرام شكراً لإهتمامكم.

سامح إن شاء الله يكون هناك دروس قريباً عن تلك اللغات مثل groovy و scala و jruby لكن ستكون مداخل فقط حيث أن جل إهتمامي بالبايثون حالياً.

بالنسبة لإستفسارك: فكر في جايثون و لغة جافا بالنسبة لمنصة جافا كأنها VB.NET و C# بالنسبة لمنصة دوت نت ... تستطيع  VB.NET الوصول لكافة مكتبات دوت نت , كذلك تستطيع جايثون الوصول لكافة مكتبات منصة جافا, تستطيع VB.NET إستخدام أي framework موجه لمنصة دوت نت, كذلك تستطيع جايثون إستخدام أي framework موجه لمنصة جافا, ترجمة أكواد VB.NET و C# ينتجان نوع واحد من الكود الوسيط (IL Code), كذلك جايثون و لغة جافا بعد الترجمة ينتجان كلاسات بيناري واحدة, يمكنك إستبدال كلمة جايثون بأي لغة من سابقي الذكر و ستؤدي نفس المعنى.

ملحوظة صغيرة: جايثون لغة تفاعلية إي أنه ليس من الشرط ترجمتها لكي تعمل (مثلها في هذا مثلphp)

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

#12

كلامك جميل أخ محمد ... وفعلا لغة الجافا في اعتقادي , انها اللغة التي اذهلت العالم , لكن ما لا احبه فيها هو البطء الكبير الذي تواجهه هذا اللغة اثناء Run time , فكيف تفسر اخي محمد بناء مترجمات و مفسرات باستخدام لغة الجافا مثل Jython ؟

#13

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

أخي الكريم MKSoft لقد إنتهت مسألة بطئ التنفيذ في جافا منذ مدة طويلة ربما منذ الإصدار الخامس و ذلك لعدة عوامل:

- إعادة بناء أجزاء كبيرة من JVM بصورة أفضل من ذي قبل.

- تسارع إصدارات المعالجات بسرعات مهولة و تقنيات حديثة (منذ سنوات قليلة كان P III 1.2 GHz و ذاكرة 256 mig هو الملك بلا منازع و نحن الآن نتحدث عن معالجات متعددة الأنوية لا تقل في عملها عن 2 GHz بذاكرة تصل 4 gig).

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

و يا أخي لن أسوق لم الرسوم البيانية لسرعة جافا و غيره لكني أقول لك أن التجربة خير دليل فأنا حالياً أستخدم JSE6 u12 على معالج AMD Turion 2GHz مع رام 1 جيجا وأستخدم على الأقل 5 برامج من العيار الثقيل أساسها جافا في وقت واحد بدون مشاكل (القائمة تضم netbeans و eclipse و limewire و JEdit , و برنامج خاص بالعمل عندي)

نرجع للغات المبنية على منصة جافا فهي لن تخرج عن نوعين:

- لغات تعمل عن طريق مفسر مبني بجافا و المفسر يكون وسيط بين الملف المكتوب باللغة التي تعمل بها و بين منصة جافا, و لا يخفى عليك أن هذه اللغات لغات تفاعلية dynamic langs , و هذه بالطبع ستكون أبطأ من جافا لأنها لا تتحول إلى byte code و لا تعمل ككلاس, التضحية بالسرعة في هذه الحالة ليست كبيرة بالدرجة التي تتخيلها و لكن في نفس الوقت ستكسب خصائص جديدة لم تكن ستجدها في لغة جافا (مثل functional programming و closures و غيرها) و ستتجنب عيوب لطالما أزعجت مبرمجي جافا ( مثل ال setters و ال getters خاصة عند برمجة swing).

-النوع الثاني هو الذي يحتاج لترجمة compiling و ينتج عنه byte code مثله مثل جافا و هذا النوع سيكون بنفس سرعة جافا لأنه يعمل من خلال كلاس مترجم مثل جافا.

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

* scala من ناحية أخرى لغة مترجمة static lang لذلك هي من النوع الثاني.

أي إستفسار أنا في الخدمة.

إن كنت أصبت فمن الله و إن كنت أخطأت فمن نفسي و من الشيطان.

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt

#14

أهلا اخي.

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

بالنسبة لهذا الموضوع:

من فوائد هذه الطريقة أنه يمكن بسهولة عمل لغة برمجة يكتب فيه الكود بالعربية، لغرض تعليم الأطفال، و بالتالي لا نظطر لنلوث عقل الطفل باللغة الأجنبية من أجل تعليمه البرمجة.

بالتوفيق.

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