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

هل بدأت تفكر في جافا كمنصة؟ إبدأ مع Groovy

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

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

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

تكملة لموضوع "وسع أفقك و فكر في جافا كمنصة" أضع هذا العرض البسيط و المتكامل ل Groovy في المرفقات.

موقعها:

http://groovy.codehaus.org/

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

كما أنها مدعمة بشدة من Sun و لها إضافة على نت بينز تعمل بكفاءة.

تتميز بأنها تتبع مدرسة "الهدف الواحد ممكن الوصول له بعدة طرق" (مثل بيرل و عكس بايثون).

من العرض المرفق:

اقتباس

Groovy = Java –boiler plate code

+ optional dynamic typing+

+ closures+

+ domain specific languages+

+ builders+

metaprogramming+

و أيضاً نموذج للكود في مقارنة مع كود جافا (من العرض أيضاً):

post-6588-1233678957_thumb.jpg

كما نرى بالأعلى هذا الكود لجافا لكنه ينفع جافا و جروفي.

بينما نفس البرنامج بكود جروفي الصرف مستخدماً مميزات اللغة:

names = ["Ted", "Fred", "Jed", "Ned"]
printlnnames
shortNames= names.findAll{ it.size() <= 3 }
printlnshortNames.size()
shortNames.each{ printlnit }

مثلها مثل الكثير من اللغات, Groovy تركز على الإنتاجية للمطور و مع Groovy بالتأكيد ستتمتع بالكثير من الإنتاجية :wink:

إستمتعوا بالعرض.

Groovy.zip

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

مدونتي

http://www.facebook.com/brmjt

#2

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

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

ثم لا أظن أن مثل هذه اللغات توفر نفس إمكانيات java مثل (swing, threads, jdbc, xml, ...).

ملاحظة أخيرة، هذه فقط تساؤلات تنتظر توضيحا وليست انتقادات

#3

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

أي الكريم herch أشكر لك تفاعلك مع الموضوع.

بالنسبة للسؤال عن الفائدة من إستخدام لغة أخرى غير جافا فهذا منوط بك بعد معرفتك باللغة, فأنا مثلاً أفضل أن أكتب ب Jython لأن أكوادها أقصر و أسهل في الكتابة من أكواد جافا (بنسبة قد تصل إلى 80%) و تعاملها مع swing (في رأيي) أفضل من تعامل جافا مع swing, و تستخدم معها dynamic types بدلاً من static types الخاصة بجافا, قد تطول القائمة :happy: .

بالنسبة للسؤال الثاني:

توفر نفس إمكانيات Java مثل (swing, threads, jdbc, xml, ...).

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

(مثل ال closures و ال dynamic options), ما أريد قوله هو أن نعي الفرق بين جافا كلغة و جافا كمنصة.

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

مدونتي

http://www.facebook.com/brmjt

#4

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

شكرا لك أخي على سرعة الرد.

نعم يا أخي هناك فرق كما تفضلت بين الjava كلغة و الjava كمنصة، ولكن بالنسبة للغة الjava، فهي تتيح استعمال كامل قوة المنصة، وكل الclasses اللتي توفرها الjvm، فهل هذا هو شأن اللغات الأخرى.؟؟

ثم هل هذه اللغات تستحق أن أخصص لها حيزا من الوقت كان ممكن أن أستعمله في تطوير مهاراتي في java أو لغات أخرى أقدم وأكثر استعمالا ؟؟

ما مدى استخدام هذه اللغات في الحياة المهنية وفي المشاريع مفتوحة المصدر؟؟

ومرة أخرى مشكور أخي على جهدك

#5

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

أخي herch بالنسبة لجروفي فهي تستطيع إستخدام كامل مكتبات JVM على حد علمي (صراحة جايثون لا تتكامل بنفس درجة جروفي لكن بدرجة كافية بالنسبة لي :D )

لgroovy منصة ويب قوية تدعى grails لها نفس بنية منصة روبي الأكثر شهرة rails و هي مستخدمة بكثرة لهذا الغرض.

بالنسبة لجايثون فهي الأقدم و إن كانت لم تحظ بإهتمام حقيقي إلا في الآونة الأخيرة مع تشغيل منصة ويب المعروفة لمبرمجي بايثون "Django" عليها "على جايثون" لكن هذا لا يمنع كونها مستخدمة منذ القدم كلغة *سكريبتينج* في منصة IBM المعروفة ب WebSphere .

أما لغة ك scala فلن تميز برامجها من برامج جافا لانها لغة مترجمة تترجم ملفاتها إلى byte code يعني كلاسات توضع في نفس ال jar مع كلاسات جافا.

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

مدونتي

http://www.facebook.com/brmjt

#6

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

شكرا لك أخي الكريم

ملاحظة أخيرة بالنسبة المثال الذي أعطيته، فالشخص الذي كتبه إما متحامل على java أو أنه لا يتقنها


for (int i = 0; i < result.size(); i++)
String s = (String) strings.get(i);
if (s.length() <= length) {
result.add(s);
 List result = new ArrayList();

هنا كان واجبا استعمال الجينيريكس لتفادي الexplicit cast، ثم كان ممكن استعمال الشكل الجديد لloop for الذي ظهر منذ java 1.5

وهذا هو نفس المثال، لكن مع بعض التغييرات ، ويمكن إضافة تغييرات إخرى لتقصير الشيفرة


import java.util.ArrayList;

class Erase
{
private List<String> filterLongerThan(List<String> strings, int length)
{
List<String> result = new ArrayList<String>();
for (String s : strings)
if (s.length() <= length)
result.add(s);
return result;
}
public static void main(String[] args)
{
List<String> names = new ArrayList<String>();
names.add("Ted"); names.add("Fred");
names.add("Jed"); names.add("Ned");
System.out.println(names);
Erase e = new Erase();
List<String> shortNames = e.filterLongerThan(names, 3);
System.out.println(shortNames.size());
for (String s : shortNames)
System.out.println(s);
}
}
 import java.util.List;

وشكرا لك أخي على فتح باب النقاش

#7

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

بالطبع أخي herch مؤلف المثال سيتحامل على جافا :lol:

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

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

لك خالص تحياتي و أشكرك على تمحيص الكود الخاص بالمثال.

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

مدونتي

http://www.facebook.com/brmjt

#8

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

شكرا لك أخي على طول بالك، فقد أكثرت عليك من الملاحظات

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

جزيل الشكر يا أخي

#9

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

أتفق معك أخي الكريم في أن المسألة مسألة ميول و راحة مع اللغة التي تستخدمها و في أخر الأمر يضطر المبرمج المحترف (حيث البرمجة هي حرفته) للعمل باللغة التي يفرضها عليه فريق العمل :lol:

أما من هم من حالي فيعملون مشاريعهم باللغة التي تريحهم B) .

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

مدونتي

http://www.facebook.com/brmjt

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