ما هي الفروقات بين J2EE و ASP.NET ؟


التعليقات

استخدمت الاثنين وطبعاً تستطيع بناء Enterprise Systems بأي منها، بمعنى لا يوجد شيء لا يمكن تطبيقه في الاخرى.

وعادة ال solution اضعه بناء على عدة معايير وعلى اساسها يتم تحديد ال language/framework المناسب للمشكلة، مثلاً جهة لديها Windows-Based infrastructure ولديها Licensed OS, DB ولديها Windows Administrators وسيتم تركيب البرنامج عندهم فالشيء المنطقى اتجه .NET ecosystem طالما سأطور النظام لهم من الصفر. بنفس الشيء مع جهة Oracle/*Nix Based فجافا خيار انسب هنا.

على العموم النقاط المهمة في التطوير متشابه بهم الاثنين ولا يوجد اختلاف:

اللغة: جافا و سي# الاثنان لغتان تدعمان اكثر من Paradigms وStatic Typed وال Evolution لهما جيد والاثنان Open Standards ورائهما Community كبير.

الIDE: هناك الكثير من الخيارات مثلاً Netbeans/Eclipse/IntelliJ IDEA في جافا بينما ال Visual Studio هو المتربع على العرش، طبعاً الكل جيد ويمكن بناء البرامج عليها وهناك الPlugins في كل منهما للاضافات الخاصة، والذي يهم في الغالب هو ال Build System مثلاً Maven/Ant/Gradle في جافا بينما في دوت ايضاً خيارات عددية، والSource Control Integration مثلاً Svn, Git والجميع بهم هذه الخصائص.

المكتبات البرمجية Third party libraries: اللغتين بهم كل شيء من مكتبات التشفير، الضغط، الصور، الencoding، الdatetime والخ، ربما ال.NET انسب لو كنت تطور اشياء تعتمد على الويندوز، مثلاً تريد العمل على ملفات الoffice برمجياً أو اشي شيء متعلق بالويندوز.

الأدوات مثلاً Unit Testing متوفرة على الاثنين ايضاً داخل ال IDEs . ال Debugging ايضاً، ال Profiling وال Heap Monitoring وغيرها متوفرة . الذي يميز الVisual Studio ان كل شيء موجود داخل ال IDE بدئاً من Unit Testing و Stress Testing ومروراً بال Profiling وال Continuous Integration وانتهائهاً بالDeployment على الHosting/Cloud.

ال ORM: ال Hibernate موجودة على المنصتين (لحسن الحظ غالب المكتبات تجدها Ported في الاثني، مثلاً JUnit مقابلها NUnit، ال Hibernate مقابلها nHibernate ، حتى ال Log4J مقابلها Log4Net وغيرها الكثيير).

الMVC: الاثنان تستطيع بناء MVC application او تستطيع عدم استخدام هذا الاسلوب اذا اردت ايضاً.

طبعاً الModern Architecture الحالي هو يتبع مفهوم ال Micro-services بمعنى لا تحتاج ان يكون كل ال Solution باستخدام لغة أو Platform واحدة، مثلاً تريد ان تستخدم Caching فيمكن ان تستخدم Redis مثلاً واللغتين بهم support بها، تريد ان تستخدم Queue Messing فسوف تستخدم RabbitMQ ، وهكذ يمكن ان يكون لديك اجزاء مكتوبة بال .NET واجزاء بالجافا والCommunication يتم عبر الAPIs.

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

ذات مرة سجلت درس مقدمة عن ال Multi-threading وتوقفت بسبب ردائة الصوت :) ولكنه يوجد على الyoutube.

اكتب مقالات في انفورماتيك:

وفي توابعها اضع اشياء صغيرة مفيدة (في صفحات الفيس وهي الاكثر حركة، وتويتر، ومنشر):

وشكرا.ً

السلام عليكم،

عملت بكلا اللغتين والاطارين JEE وASP.NET تطبيقات Web في شركة اتصالات

ما ذكره الأخ @wajdy essam كافٍ من الناحية التقنية كمقارنة، أضيف بعض النقاط المفيدة من حيث الاختيار الاستراتيجي عند التعلم:

  • Language Evolution أو من حيث تطوّر اللغة: اللغات مفتوحة المصدر والتي تملك محيط Ecosystem واسع تتطور بشكل أسرع، وتتفرع عنها حلول أخرى، خذ مثال جافا تطورت منها لغات مثل Scala وGroovy (وربما لاحقا لغات أخرى) وهذه الأخيرة تطوّرت عنها إطارات عمل (انظر: Grails, Playframework, Vaddin, Lift...)، ومن هذه اللغات من تضيف مميزات جديدة (Groovy مثلا يدعم Static Typed وDynamic Typed)... وهذا ما لا تجده في التقنيات المغلقة عموما. أيضا من حيث احترام المعايير Standard، التقنيات المغلقة -الخاصة بشركات تجارية- قد تخالف المعايير العامة لتتفرّد بما يميّزها عن بقية التقنيات -(أهداف تجارية غالبا)، مثال ذلك تطوير Microsoft للمتصفح IE سابقا، هذا كان في وقت مضى.

  • Modular Programming إذا استخدمت لغات تدعم عدة منصات يمكنك الاستفادة من الحزم التي طورتها من مشاريع سابقة إلى مشاريع أخرى لاحقة، النمطية Modularity في جافا تسمح بفتح أبواب كثير، حيث يمكنك تقسيم المشروع إلى أجزاء يمكنك الاستفادة منها لاحقا في مشاريع JEE، Android، SwingApplication... (هذا أيضا ممكن في بيئة NET. بشكل محدود عبر اطار Xamarin)

  • تكلفة المشروع: هذا من الناحية الاقتصادية، لا جدال في تكلفة مشاريع NET. فهي أعلى بكثير منها في جافا (ولا ننسى رفاهية تقنيات NET. المريحة والمتناغمة مع نظام Windows التي تختزل الكثير من الوقت والجهد البرمجي). حتى لو كنت تعمل في شركة يمكنها أن تتحمل تكلفة كل حلول NET. فمن المفروض أنها تقوم بعمل دراسة اقتصادية (مقارنة اقتصادية) لكلا التقنيتين وهذا يضيف +1 لجافا من هذا الجانب.

الذي لاحظته غالبا، أن ASP.NET يستخدم -عادةً- في برمجة تطبيقات داخل الشركة نفسها حيث كل شيء على خوادم الشركة، لأنه أكثر التطبيقات المحلية (المستخدمة داخل نفس الشركة) لها علاقة بحزمة Office أو بمحيط المستخدمين (كالاتصال بـ LDAP واستخدام ActiveX...) وهي تتوافق أكثر مع نظام عمل الموظفين Windows ولها سرعة تطوير -إنتاجية- عالية (ولا يعني هذا أنها أنه لا يمكن برمجة تطبيقات موجهة لعموم المستخدمين).

برأيي يمكن التركيز عند التعلم على الأساسيات المشتركة لتعلم اللغتين والاطارين معا، فكل تقنيات الويب لأحد الحلول لها مقابلها في الحلول الأخرى (غير أن هذا سيأخذ منك بعض الوقت)، ثم بعدها يمكنك التركيز على أحدهما للتخصص أو نيل شهادة.

بالتوفيق.

+1

بالمناسبة أجزاء كثيرة من ال .NET اصبحت open source ، المترجم C#/VB ايضاً هو كذلك وحتى ال Language Specification اصبحت Open Standard، وهناك كثير من التقنيات هي كذلك مثلاً EF, WCF، وايضاً ال ASP.NET 5 بالكامل هي open source وCross Platform ايضاً، ميكرسوفت تسعى في هذا الاتجاه وتستطيع الان ان تجد ASP.NET 5 تعمل على لينوكس و Mac OS:

من هنا تجد مستودع ميكروسوفت على الgithub:

+1 فعلا،

منذ البداية كان هناك MonoDevelop مفتوح المصدر للتطوير في بيئة NET. على inux*

والآن هناك Visual Studio Community Edition نسخة مجانية:

واضح من سياسة Microsoft التوجه نحو المصدر المفتوح.

ليس من السهولة أن تجد جواباً كافياً، حيث أن الجواب الكافي لابد أن يأتي من شخص له خبرة كافية في كلا المنصتين.

معظم المبرمجين يكون له خبرة متعمقة في لغة برمجة واحدة، لذلك دوماً يميل إلى اللغة التي يستخدمها ويراها هي اﻷفضل.

خصوصاً اللغات التي تؤدي نفس الغرض والمتنافسة فليس من الحكمة أن يتقنها مبرمج واحد، فهذا يكون بالنسبة له تكرار وتشتيت لجهوده لتأدية وظيفة واحدة

في الحقيقة لا اعلم، من الصعب أن تجد واحد.

سوف أتكلم عن خبرتي مع جافا، أما خلفيتي عن الدون نت فهي نظرية بحتة

الجافا لغة برمجة متعددة المنصات، وحسب ترتيب موقع tiobe فهي تحتل خُمس لغات البرمجة من حيث الانتشار والكود المكتوب بها:

أهم شيء هو تعدد المنصات، في عالم الاتصالات موجودة بكثرة لاستخدام نظام لينكس فيها

ايضاً هي مستخدمة في المواقع اﻷولى في العالم:

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

نعم أخي الكريم كما تفضل الأخ معتز لا بد من شخص ملم بالأمرين يعطيك إجابة جيدة كما تقدم الأخ وجدي والأخ "bitsnaps"

بالنسبة لي الخيار الأفضل هو ASP.Net لكون خبرتي هي بال #C و SQL Server في النهاية كل شخص وما يرتاح له.

سلام عليكم

أهم فرق بين التقنيتين هو تعدد المنصات ، والحقيقة إنه أمر مهم جربته بنفسي ، فعند العمل بالجافا فلا داعي أن تهتم باي منصة تطور ولا إلى أي منصة ستنشر تطبيقك ، اهتم أنت فقط بالتطوير

وفرق آخر أن الجافا مفتوحة المصدر بالكامل يمكنك الاطلاع على كل متكتباتها وفهم كيف تعمل الدوال ، طبعا هذا امر يهم المحترفين وأما المبتدؤون فيعملون خارج الصندوق

وفرق آخر أنها أقل كلفة لأنك لن تضطر إلى شراء نظام ويندوز ولا إلى مفسر أو مترجم اللغة ASP هذا في حال اردت خادوما خاصا وإن أردت استضافة مشتركة فهي غالية مقارنة بالجافا

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

ستجده يكتب كثير في موقع مستخدمي أروكل العربية وهذا رابطه الشخصي

وهذه بعض مواضيعه

الصفحة اﻷولى لم تفتح وظهر هذا الخطأ

نأسف، ليس لديك صلاحية لذلك!

أوه نسيت ، لابد أن تكون مسجلا دخولك وهذا يعني أنه لا بد من التسجيل في الموقع ثم الدخول

هذه من اﻷشياء المُنفّرة في المنتديات، لابد من التسجيل لقراءة موضوع ربما لا يكون مفيد.

وهذا من المستحيلات بالنسبة لي أن أفوم بالتسجيل في مثل هذه المنتديات


تطوير الويب

مجتمع خاص بمناقشة وطرح المواضيع والقضايا العامة المتعلقة بتطوير الويب ولغاتها المختلفة

88.6 ألف متابع