بدأت في تعلُم لغة جافا

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

  1. أن موقع شركة إمباركاديرو مغلق عن السودان وكذلك تسجيل نسخة دلفي مغلقة، فمثلاً إذا اشتريت نسخة دلفي لاتستطيع تنشيطها من السودان.
  2. أنها مغلقة وسعرها غالي جداً (حوالي ألف وألفين دولار) فمقارنة بباقي اللغات المفتوحة المصدر ليس هناك سبب لدفع كل هذا المبلغ
  3. مرتبطة بنظام التشغيل وندوز. مع أنهم سوف يدعمون نظام ماك هذه السنة ولينكس ربما السنة القادمة، لكنهم تأخروا كثيراً ولايمكننا اﻹنتظار
  4. فشل شركة بورلاند ومن بعدها كود قير ثم إمباركاديرو في تسويق دلفي بصورة منافسة
  5. وجود بديل حر لمبرمجي دلفي متعدد المنصات وهو مترجم فري باسكال وأداة التطوير لازاراس، لكن اﻷخيرة مازالت في طور البيتا، ونتوقع إصدار النسخة اﻷولى العام القادم أو الذي يليه

البدائل

أول بديل يجعلنا نستغني عن دلفي وإمباركاديرو هو فري باسكال/لازاراس، وقد بدأت فعلاً منذ فترة طويلة في اﻹعتماد عليه في كتابة البرامج المكتبية. لكن يوجد نقص في بعض اﻹحتياجات وأهمها خدمات الويب Web Services متمثلة في الـ SOAP، التي احتاجها عند ربط مؤسستين ببعضهما. وكان أول بديل قمت بتجربته هو PHP، وقد وجدت مثال في هذه الصفحة. وقد عمل المثال بدون صعوبات بعد إنزال المكتبة php-soap في نظام لينكس. المشكلة كانت أن العملية يدوية حيث يجب على المبرمج معرفة محتويات الـ WSDL والدوال الموجودة فيه. وربما يكون هناك برنامج أو أداة تطوير للـ PHP بها خاصية تحويل الـ WSDL إلى كائنات ودوال مثل باقي اللغات ذات اﻹمكانات العالية.

بعد ذلك إتجهت للغة جافا، حيث لم يسبق لي التعامل معها، وقد حاولت عمل برنامج Hello World في عام 1997 ولم أنجح، وكانت هذه المحاولة باستخدم JBuilder، ولا أذكر ماذا كانت المشكلة، فكانت سبب في عدم تفكيري في تعلم الجافا طوال هذه الفترة.

إذا نجحت في تعلم الجافا وبرمجة خدمات الويب وبالأخص SOAP Services باستخدام جافا، وإعتماد فري باسكال في البرامج الأخرى فيمكن اﻹستغناء عن دلفي تماماً.

طبعاً كان هناك فضول في معرفة ماهي هذه اللغة التي يُقال أنها اللغة اﻷولى في العالم من حيث اﻹستخدام، أو شهرة في اﻹنترنت، وكان الحاجز دائماً أنها تحتاج لـ Virtual Machine حتى تعمل عليها، فإذا كتبت برنامج حتى ولو صغير تحتاج لكل هذه المكتبة الضخمة عند أجهزة العملاء. والحاجز الثاني هي بطىء البرامج الناتجة عنها، فهي لاتصل لسرعة برامج السي ولا  أوبجكت باسكال. لكن كوني سوف استخدمها في خدمات الويب فهذه الطريقة تُقلل من المشكلة اﻷولى حيث نحتاج لإنزال الـ Virtual Machine فقط في مخدم الويب، ومشكلة البطء سوف لن تؤثر على هذا النوع من البرامج، حيث أن قاعدة البيانات غالباً هي التي تسبب البطىء في هذه مثل البرامج.

قمت بإنزال أداة التطوير NetBeans وبدأت بكتابة برامج Hello World، ثم قمت بالبحث عن أمثلة بسيطة في النت، بعد ذلك استعنت ببعض الزملاء الذين لهم خبرة كبيرة في هذه اللغة وهم هاشم زايد وعلي شُلّي. وطريقة تعلم لغة برمجة أو أداة جديدة بمساعدة خبير هي من أسرع الطرق للتعلم. والحمد لله استطعت منذ البداية (اﻷول من رمضان) إلى الآن بتشغيل عدد من الوظائف منها SOAP servies, Servlet Web application, Console Applications, Simple GUI application, Connection to  database, files, socket client.

طبعاً مازال الوقت مبكراً حتى أقول رأيي فيها، لكن ما أقوله اﻵن هو رأي يُعبر عن اﻹنطباع اﻷول لمبرمج كان يستخدم لغات أخرى وجديد تماماً بالنسبة للغة جافا. وأول إنطباع كان أن أداة التطوير NetBeans هي أداة غنية تحتوي على كل مايتمناه المبرمج في أداة التطوير، وتحتوي على محرر لكتابة الكود ذكي جداً. أما بالنسبة للغة جافا فهي صعبة بعض الشيء، حيث أنها تنظر لكل شيء على أنه كائن، حتى المتغيرات! لكن مع مرور الوقت أصبحت أتأقلم مع هذه الميزة الغريبة. لكن لا أعتقد أن هذه اللغة تصلح لدارس جديد ليس له علاقة بالبرمجة من قبل، حيث يمكن أن تكون هي اللغة الثانية للدارس أو حتى الثالثة، وهذا التعقيد الموجود في اللغة ربما يكون سبب لنفور الطلاب الجدد من البرمجة عموماً وليس لغة جافا فقط. كذلك فإن اﻹعتماد على وجود Virtual Machine حد من إنتشار البرامج المكتوبة بها على نطاق برامج سطح المكتب، حيث نجد أن أكثرها مكتوب بلغات أخرى مثل C++. لكن كما قال لي الزملاء السابقين أن استخدام الجافا يكثر في الـ Enterprise مثل شركات اﻹتصالات.

بالنسبة لقواعد اللغة مثل الحلقات والشروط  وطريقة تعريف المتغيرات والكائنات فهي موروثة من لغة سي++، لذلك لم أجد صعوبة في هذه الناحية (وهذه فائدة لمن تعلم لغة C، حيث توجد لغات كثيرة ورثت منها قواعد اللغة)

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

30 thoughts on “بدأت في تعلُم لغة جافا

  1. رمضان كريم اخي معتز …

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

    الان ادرس و اتعلم c# التي هي الابن الغير شرعي للجافا ..

    تمتاز بسهولتها دعمها الضخم جدا من مايكروسوفت المستمر . و برامجها اسرع من برامج الجافا كثيرا و يمكن برمجة الويب عليها بمتهي السهوله و عيبها الوحيد انها لا تعمل الا تحت نظام تشغيل وندوز ..

    اما بالنسبه للغه المفضله .. حقيقة افضل البايثون سهولتها و امكانياتها و ذكائها الكبير .

    و الان اتعلم كيفية برمجة الويب عن طريق البايثون عبر مشروع الـــ https://www.djangoproject.com/

    و هي لغه متعددة انظمة التشغيل . و يمكن برمجة ويب متقدم جدا عليها وساستخدمها في مشاريعي المستقبليه الخاصه بالويب .

    اتمني لك حسن الاختيار و التوفيق .

    اياد

  2. أخذت نفس القرار قبل سنتين للانتقال للغة جديدة، و كانت من بين اختياراتي الجافا و ال C#
    لنفس الأسباب تماما، سوريا أيضا محجوبة عن هذه المنتجات حتى الجافا أيضا كذلك.
    و لكني متعود على اسلوب معين في البرمجة، لا استطيع أن انشيء أصغر برنامج دون ان ابنية بشكل Casses و بكامل المزايا التي نحصل عليها منها، صدمت بهذا في PHP إذا لديها طريقة غريبة في الكتابة لا يحقق الغاية من كتابة الكلاسات وهو اختصار الكتابة، كذلك صدمت عند التعامل مع الجافا وقد ذكرت ذلك من قبل وهي الخواص، بقيت الـ C# لذلك قررت ان اتخذ هذه الخطوة خاصة مع وجود Mono و هي بيئة .NET مفتوحة المصدرة لكن كانت العقبة الرئيسية لدي هي ان الجافا و الـ .NET بحاجة إلى جهاز قوي (تم توفيره حاليا).
    انا بحاجة للوقت فقط لكي ابدأ بها و لكن لا يوجد وقت ولا يوجد خبير استعين به لهذه النقلة، أقصد MONO و بنفس الوقت لا اريد أن اترك Pascal لغتي الأم.

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

  3. إن شاء الله سوف أقوم بشرح برنامجي مخدم وعميل للـ SOAP عندما أذهب للعمل، في المنزل ليس لدي جهاز به دلفي.

    >>one of the disadvantages of java & .net is the easy decompilation task

    نعم سمعت عن هذه المشكلة وهي تُساهم أيضاً في تقليل البرامج التي تستهدف سطح المكتب

  4. بالتوفيق يا معتز، بس ما اتغير رايك بعد ما اتجرب بعض من المعاناة بها 🙂

    بصراحة لغة الجافا من اللغات التي لم أستطع الإنسجام معها ولم أستطع العمل عليها

    سي# رغم انها بدأت كبديل ميكروسوفت لجافا، لكني أحسن بلذة بها اكثر من جافا

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

  6. لا C# أيضا مفتوحة المصدر في بيئة Mono و هي مجانية، و هي المفضلة لكل من كان يعمل على الدلفي

    إقرأ نظرية المؤامرة في http://delphi.about.com/od/delphifornet/a/conspiracydnet_2.htm
    يتكلم عن Anders Hejlsberg الذي نقل Turbo Pascal إلى Object Pascal و امكانية التصميم المرئي و المسمى قاتل VB
    في عام 1996 انتقل إلى ميكروسوفت و هو كان احد مبرمجي J++ و لكن الخبر الأهم أنه شكل فريق لعمل ال C#
    تقرأ ايضا أن ميكروسوفت وظفت 34 واحد خلال 30 شهر، الفكرة ان هيكلية C# مقاربة أو لها روح الدلفي.

  7. نعم، مونو كانت ستكون خيار جيد، لكن سمعت مرة ريتشارد ستولمان قال أنها خطرة، حيث أن ميكروسوفت يمكن أن تقضي عليها بسبب براءات اﻹختراع في الدوت نت

  8. أعلم بأنك لن تستخدم فيجوال ستوديو رغم ان هناك نسخة مجانية، حيث تستطيع تطوير برامجك في فيجوال ستوديو ومن ثم تقوم بترجمتها بإستخدام مشروع مونو

    هنالك بيئة تطوير مجانية ومفتوحة المصدر مثل MonoDevelop
    http://monodevelop.com

    وSharpDevelop
    http://www.icsharpcode.net/OpenSource/SD

    وكلاهما يحتويان على مصمم للنماذج

  9. النسخة التي استخدمتها هي MOnoDevelop في نظام لينكس، وأذكر أني قمت بتثبيتها في العيد الماضي (عيد الفطر) ربما كانت قديمة، أو لم أعرف كيف أقوم بتصميم الفورمات فيها؛حيث تحتوي على GTK#

  10. لاحظ، هذا مثال لإظهار فورم بواسطة MonoDevelop :

    using System;
    using Gtk;

    namespace aa
    {
    class MainClass
    {
    public static void Main (string[] args)
    {
    Application.Init ();
    MainWindow win = new MainWindow ();
    win.Show ();
    Application.Run ();
    }
    }
    }

    لاحظ أنه تم إنشاء الفورم يدوياً بواسطة الكود

  11. هذه ليست طريقة سهلة لتصميم الفورمات ووضع مكونات عليها، تخيل فورم إدخال يتكون من 10 حقول مثلاً وعدد من القوائم، كيف يتم تصميمه بهذه الطريقة؟

  12. السلام عليكم .

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

    لذلك الـــ RAD هو الحل الانسب لمثل هده الامور اقصد هنا تصميم النماذج .

  13. ليس لدي كُتب باللغة العربية. اعتمد في البداية على مواقع لتعليم جافا، ثم استخدمت اسلوب البحث عن فعل إجراءات معينة مثل:
    how to write into text file in java

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

    أنا انتقلت إليها حديثا بعدما قضيت زمنا مع الأوبجكت باسكال وأرها جميلة وجيدة لولا ثقلها الذي يعيبها

    أحب رأيك الجديد فيها

  15. اليوم بالذات كُنت أتكلم مع بعض الزملاء حول جافا وإعجابي بها، وأكثر شيء اعجبني فيها هو أداة التطوير NetBeans وطريقة تنظيمها للحزم المختلفة والتنبيهات الكثيرة التي تُساعد المبرمج في كتابة كود نظيف خالي من العيوب. وقد استفدت من بعض اﻷفكارفي جافا حتى في لغة أوبجكت باسكال حيث أصبحت أميل للبرمجة الكائنية أكثر في لغة باسكال. ومعظم البرامج التي أكتبها بالجافا هي برامج متعلقة باﻹتصالات وخدمات الويب وبرامج الويب، لكن البرامج التي فيها واجهة للمستخدم أُفضل أداة التطوير لازاراس، فهي أسهل واسرع في كتابة برامج ذات واجهة مقبولة للمستخدم ولا تستهلك موارد كبيرة خصوصاً في الذاكرة، حيث يُمكن أن يصل إستهلاك برنامج جافا من الذاكرة حوالي ١٠ أضعاف نظيره المكتوب بواسطة فري باسكال/لازاراس.

  16. إخوتي الأعزاء في الحقيقة أستخدمت الجافا منذ سنتين في برمجة برامج سطح المكتب باستخدام Eclipse IDE ومكتبة Swing و في الحقيقة لم أجد كمثل هذه المكتبة من ناحيةالمرونة العالية جدا و الحقيقة أحببت الجافا كثيرا من خلال Tutorials المقدمة من الشركة و من خلال الدورات لبعض المبرمجين في هذه اللغة كموقع http://www.caveofprogramming.com ألأ أنني أتفق مع الأخ أبو إياس بخصوص استهلاك موارد كبيرة من الذاكرة إلا أن التطوير المستمر في JDK و في الهاردوير قد يلغي هذه المشكلة في المستقب القريب إن شاء الله تعالى

  17. حاولت أكثر من مرة استخدام مكتبة Swing بواسطة أداة التطوير Eclipse لكن لم يكن التطوير بها سهل أبداً، ربما استخدمت الـ Plugin الخطأ في التصميم، لا أذكر اسمه بالضبط اﻵن، هذا مقارنة بالـ NetBeans التي تدعمه إفتراضياً دون تثبيت أي Plugin إضافية

أضف تعليقاً

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s