لقد تعلمت J2SE مؤخرًا بعد حوالي 20 يومًا، انتهيت من قراءة J2SE للسيد Ma Bingbing، وأشعر أن هذا المعلم يتمتع بروح الدعابة لدرجة أنني لن أتشتت انتباهي عند الاستماع إلى محاضراته. أتقدم بصدق بإعجابي للمعلم ما بينج بينج، وإبهامين آخرين للمعلمة مي التي جعلتنا نتعلم هذا الفيديو! (هناك أشياء كثيرة جميلة في العالم، ولكن ما ينقص هو العيون التي تكتشف الأشياء الجميلة!).
وبدون مزيد من اللغط، دعونا نلقي نظرة على ما قيل بالفعل في هذا الفيديو. كما هو موضح أدناه:
الأشخاص الذين ربما درسوا أي لغة موجهة للكائنات (لقد درست لغة C#، والتي تم تصميمها على غرار Java و Java المحسنة بشكل أكبر)، الانطباع الأول عند رؤية هذه الصورة هو أنهم درسوا كل هذه الأشياء بشكل أساسي، ويبدو أن هناك واجهة مستخدم رسومية فقط ، JDBC شيء جديد.
في الواقع، إنهما متشابهان حقًا، ويعتقد معظم الناس أنهما متماثلان على أي حال. قارنهم أدناه!
فيما يتعلق ببناء الجملة، فقد تخلى كلاهما عن العديد من الأماكن البراقة مثل التعديل الثابت للوظائف ومعلماتها في C++، واستبدال الماكرو، والمتغيرات العامة والوظائف العامة.
فيما يتعلق بالوراثة، يعتمد كلاهما وراثة الجذر الواحد وحلول التنفيذ متعددة الواجهات التي يسهل فهمها وبناءها. فيما يتعلق بتنظيم كود المصدر، تم اقتراح تغليف منطقي أفضل يدمج الإعلان والتنفيذ.
فيما يتعلق بتوحيد النوع بين الأنواع الأساسية والكائنات الموروثة ذات الجذر الواحد، فإن box/unbox المقترح بواسطة C# أكثر ذكاءً وأكثر كفاءة من فئة التغليف في Java.
لا شك أن التوجه نحو المكونات هو الاتجاه السائد في تطوير البرمجيات المعاصرة. حتى أن لغة C# أصبحت "مهووسة" ببرمجة المكونات، والتي تختلف تمامًا عن Java، والتي ظهرت لأول مرة منذ 6 سنوات - بالطبع هذه مسألة وقت. تنفذ C# دعمها المباشر لبرمجة المكونات من خلال الخصائص، والمفهرسات، والتفويض، والأحداث، والتحميل الزائد للمشغل، والسمات، والإصدارات، وما إلى ذلك. على الرغم من أنه يمكن تنفيذها بشكل غير مباشر من خلال الأساليب أو الواجهات أو المحولات في Java، إلا أن تاريخ صناعة البرمجيات يخبرنا أن هذا يمثل ضررًا كبيرًا لكفاءة البرمجة أو التصميم المنطقي - أول ما تواجهه اللغات عالية المستوى هو الأشخاص، وليس آلات. بالإضافة إلى آليات دعم المكونات على مستوى اللغة، توفر منصة .NET أيضًا حل حزمة لتكوين المكونات وتشغيلها وإدارتها وما إلى ذلك، كما أن Visual Studio.NET، المصمم خصيصًا لتطوير المكونات، أكثر إثارة هذا كل ما في برمجة مكونات C# التي تفتح عالمًا واسعًا. فيما يتعلق بالتقنيات الأخرى، فإن عيوب Java الضعيفة لا تذكر، ولكن من حيث برمجة المكونات، فإن Java بها عيوب غير قابلة للشفاء مقارنة بـ C#. خاصة بالنسبة للمطورين الذين لديهم خلفية C++ وVisual Basic، فإن C# تتمتع بسحر وإغراء لا يقاوم في هذا الصدد.
فيما يتعلق بالأنظمة الأساسية المشتركة، تم الإشادة بدعم Java وتنفيذها، على الرغم من أن سرعة JVM لا تزال تمثل صداعًا. على الرغم من أن لغة C# قد أخذت في الاعتبار إمكانية النقل بشكل كامل من حيث البنية الأساسية، إلا أنه على الأقل لا يوجد منتج ناضج ومختبر حتى الآن. يبدو أن لغة C# مهتمة بقابلية التشغيل التفاعلي لخدمات ويب XML أكثر من اهتمامها بالبرمجة عبر الأنظمة الأساسية. ومع ذلك، فإن دعم قابلية التشغيل البيني على مستوى الكائن لـ C# لأكثر من 20 لغة رئيسية من خلال بنية اللغة الأساسية (CLI) قد عزز بشكل كبير الوضع الفني لـ C#. إن قابلية التشغيل البيني الرخيصة مع مكونات COM تكسب أيضًا الكثير من النقاط لـ C# - يعد الحفاظ على نظام متوافق أمرًا مهمًا جدًا لصناعة البرمجيات الحديثة، كما أنه علامة على المسؤولية بالنسبة لغالبية المطورين.
وبطبيعة الحال، فإن التقييم الفني الشامل لللغتين ليس بأي حال من الأحوال مجرد قائمة بسيطة ومقارنة بين النقاط المذكورة أعلاه لمنصاتهم الخلفية (C# لـ .NET، وJava لـ J2EE)، ودعم أطر البرمجة الخاصة بهم وتنفيذ الأدوات ذات الصلة لكل لغة أصبح الآن لبعض أسس النظام وما إلى ذلك تأثيرًا كبيرًا على تطوير لغات البرمجة. من منظور تقني بحت، تعد C# بلا شك أكثر قدرة على المنافسة من Java. لا جدوى من الجدال حول من قام بنسخ من - إن تطوير التكنولوجيا هو بطبيعته عملية تعلم متبادل. ولا يمكن للمنافسة الفنية البحتة أن تحدد نتيجة هذه المناقشة - إذا كان لا بد أن تكون مواجهة. إن صناعة البرمجيات سعيدة برؤية المنافسة، فالتكنولوجيا التي خففها السوق هي وحدها القادرة على خدمتنا بشكل أفضل.