استخدمت الاثنين وطبعاً تستطيع بناء 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.
اذا كان سؤالك هذا مثلاً لداعي الحصول على وظيفة مثلاً، فيمكنك النظر في معدل الوظائف باللغة في مكانك التي تريد العمل وسوف تعرف أنه اكثر رغبة في ذلك المحيط، وحينها يمكنك العمل عليها. طبعاً كون اللغه مطلوبة في مكان لا يعني أنه مطلوبة بنفس الشدة في مكان اخر.
التعليقات