مرحبا بكم :
يمكنك ان تسألني في هذا الموضوع في كلا من :
Spring Framework
Hibernate Framework
سؤال خارج الموضوع
هل تفيدني لغة جافا في العمل الحر كمستقل أم لغات الدوت نت لأني أحاول أن أبتعد عن ميكروسوفت
اذا كنت تتحدث عن Java EEتفيدك في العمل (كمستقل) اذا كنت على مستوى استشاري Consultant لان هذه التقنيات تستخدم عادة لبناء منصات وبوابات Portals ضخمة. كالخدمات الالكترونية الحكومية والمنصات التي تتفاعل وتتبادل بيانات مع منصات أخرى وأي مشاريع ضخمة تتخيلها.
فإذا كان لديك رصيد ضخم من الخبرات لن تتردد مؤسسات في استئجارك كاستشاري في هذه الأشياء.
اما اذا كنت تتحدث عن Java العادية بكل استخداماتها فقد تكون بديل رائع عن الدوت نت لكن بالمقابل ستفقد كل (الدلال) والأدوات الجميلة التي اعتدت عليها في مايكروسوفت وستظطر للتكويد والتكويد وثم التكويد وما أجملها من متعة !
لكن كمستقل أنصحك بالمحافظة على خط معين في التطوير. لأن التغيير يؤدي الى كسر الخبرة , والثبات يؤدي الى صقل الخبرة وتراكها. صدقني ما تستطيع عمله بالدوت نت تستطيع عمله بالجافا على الأقل في اطار المشاريع ذات النطاق المعقول Limited Scope !
هل يمكنك شرح هذه الجملة بتفاصيل أكثر بعد أذنك
"صدقني ما تستطيع عمله بالدوت نت تستطيع عمله بالجافا على الأقل في اطار المشاريع ذات النطاق المعقول Limited Scope !"
وعموما أنا أتحدث عن جافا لسطح المكتب فأنا لا أحب الويب
Limited Scope بمعنى مشاريع عادية صغيرة او متوسطة ولا تتطلب ميزات متقدمة خاصة ! .
ميزة برامج الجافا لسطح المكتب انها Cross-Platform وتعمل في كل أنظمة التشغيل تقريبا. ولكن يظل الدوت نت أفضل وأسرع في وقت التطوير في مجال برمجيات سطح المكتب. حيث انك في الجافا يتطلب منك تكويد الواجهات اكثر من رسمها وكثير من الجهد للافتقار الى IDE او برمجيات تساعدك في ذلك على عكس .NET فهي مدعومة بواجهة Visual Studio التفاعلية التي تتيح لك سحب وادراج المكونات والنواقد وتعديل خصائصها بسهولة.
نصيحتي لك استمر بالدوت نت !
على سبيل المثال أقوم حاليا بتطوير مشروع ضخم للتعامل مع البيانات الكبيرة Big Data وتحليلها عبر بوابة Portal على الويب وهذا هو مشروعي الحالي.
سابقا عندما كنت موظفا طورنا منصة
(عماننا) كبوابة حكومية للخدمات الالكترونية في سلطنة عمان وايضا طورنا نظام ضريبي ضخم يقوم بأتمتة ٩٠٪ (النسبة من تقديري) من العمليات بما فيه حساب ضريبة الدخل وقراءة الموازنات التي ترسلها الشركات للنظام. بوابة الأعمال في عمان
وهي بوابة تتفاعل مع منصة (عماننا) كخدمة حكومية الكترونية ستحتوي على 64 خدمة الكترونية بما فيها (حجز اسم تجاري, انشاء سجل تجاري , تجديد سجل تجاري , البحث عن المؤسسات والشركات في عمان , دفع الرسوم , الخ ) ولك ان تتخيل انك تستطيع القيام بذلك وأنت تلبس (البيجامة) في البيت والخدمات هذه طورت باستخدام منصات داعمة بالاضافة الى الاطارات السابقة الذكر مثلا بوابة Websphere المكتوبة ايضا باستخدام JEE :).
المنصات السابقة اصبحت بؤرة للخدمات الحكومية الالكترونية وعملية الدخول فيها موحدة وتدعم قراءة البطاقة المدنية وبطاقات الاقامة !
سلبياتها الوحيدة : انها ليست لقليلي العزيمة لأن Learning Curve ليس سهل ويتطلب وقتا كبيرا للفهم والاستيعاب. والفهم لا يكفي حيث يلزمك على الاقل سنتين من العمل المكثف حتى تستطيع كتابة منصات حقيقية فيها.
وعلى العكس من جميع التقنيات الأخرى فهذه التقنيات تجعل مشروعك معتمدا بكثرة على الاعدادات Configuration اكثر من الكود نفسه حيث تقوم بعملية Decoupling لفصل القيم المعقدة والبسيطة من التكوين الاعتيادي لل Class وتحول هذه الكائنات إلى ما يسمى POJO او Plain Old Java Object وهذا يعني ان يتحول دور الكلاس الى دور وصفي أكثر منه عملي :) وكما تساهم هذه العملية في استبدال التقنيات واطر العمل الفرعية بسهولة عبر تعديل هذه الاعدادات فلو مثلا قررت استبدال محرك Logging بمحرك آخر فلن يلزمك اجراء تعديلات جذرية على كودك وربما لن تفعل ! صدقني ! فكل ذلك العمل العفن تم فصله عن الكود ووضعه في طبقة منفصلة سهلة القراءة والتعديل.
الاطار الأول (Spring) : وهو اطار مبني على تقنية Java EE ومكون من اجزاء كثيرة ويعتمد على تقنية حقن الاعتماديات (Dependency Injection) الفريدة من نوعها للتعامل مع مختلف الكائنات خلال دورة حياة التطبيق. وعموما اهم مكونات (وليس الكل وهي كثيرة جدا) السبرنج :
في مجال الويب (Web,WebSocket,Servlet,Portlet)
في مجال البيانات (JDBC,ORM,OXM,JMS,Transaction)
الحبوب Beans
البرمجة الغرضية AOP
السياق Context
التعابير Expressions
الحماية Security
الاختبار Test
والكثير الكثير. والكثير من هذه المكونات تفتقر اليها اطر العمل الأخرى وقد تكون فريدة في نوعها وتقنيتها ومثال على ذلك تقنية AOP التي يمكنك من خلال التعامل مع احداث اللغة (وليس احداث التطبيق) في عمل ردات فعل معينة او مقطاعتها باجراءات معينة.
والميزة التي تميز السبرنج وهي ميزة جبارة انه صديق لأطر العمل الأخرى التي تتخصص في مجالات معينة وكما انه صديق بالنسبة للتقنيات الاصلية الموجودة بلغة الجافا. فلو مثلا اردنا استخدام محرك JDBC الذي هو من مكونات الجافا الاصلية سيتيح لنا السبرنج التفاعل معه ببساطة عبر صيغه الخاصة واذا اردنا مثلا استبدال محرك JDBC باطار صديق مثل Hibernate لتحويل طبقة البيانات الى كائنات , سيتيح لنا ذلك ايضا وسيتفاعل عبر واجهاته البرمجية بسهولة تامة.
والامكانيات جبارة جدا في اطار عمل السبرنج فلو اخذنا مثال جانب الحماية Security فهو يمكننا مثلا من ادارة عملية التصديق والدخول الى النظام وتأمين الجلسات والخروج منها فضلا عن الصلاحيات عبر اعدادات بسيطة مهما كان هيكل قاعدة البيانات لديك. ولو كنت مثلا تريد ان يتم الدخول عبر انظمة LDAP او الكيربوس او Webservices او عبر آي الية تتخيلها فالسبرنج سكيورتي معد لهذا الامر. السبرنج اطار عمل هائل !
الويب في السبرنج وما ادراك ما الويب ! سنتحدث عن ذلك لاحقا لان المجال شيق فيه ويطول. ولكن اضافة الى ما ذكرت فالسبرنج يلزمك بالعمل على تسلسل معين في الطبقات كمقال طبقة الخدمات Service وطبقة البيانات DAO وطبقات أخرى. مما يجعل تطبيقك مرتبا ومحترفا وقابلا للصيانة والتوسع بشكل ملحوظ !
الاطار الثاني (Hibernate) : وهو اطار ضخم جدا ل Object Relational Mapping او لتحويل طبقة قاعدة البيانات الى طبقة كائنات ويستخدم لغة شبيهة بال SQL ولكنها معدة خصيصا للتفاعل مع Objects عوضا عن الجداول وبالتالي تتعامل مع البيانات كأنها كائنات في داخل دورة حياة تطبيقك وهذا بلاشك يسهل العملية ويختصرها بطريقة رائعة. وعملية Mapping لمكونات قاعدة بياناتك في السبرنج هائلة وتتم بشكل دقيق ولا يمكن تخيله ويمكنني اعطاء امثلة والتوسع كلما كبر الموضوع.
تعبت من الكتابة :) !
التعليقات