13

استخدام لغة دلفي في برمجة تطبيقات الموبايل

  • ali mohamad

و قد قرأت عن هذا الموضوع و بأن المشكلة في برمجة تطبيقات الموبايل من خلالها هو أن حجم البرامج كبير جدا عند استخدامه في برمجة تطبيقات الأندرويد و هذه المشكلة لا تظهر عند استخدامه في برمجة تطبيقات الآيفون فهل هذا صحيح ؟

و ما هو الحل للتغلب على مشكلة الجحم الكبير للتطبيق في نظام الأندرويد ؟

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

توجد نقاط أخرى احب أن اضيفها، وهي تكلفة أداة التطوير، فآخر مرة سألت عن نُسخة دلفي كان سعرها ١٥٠٠ دولار، أما أداة التطوير Eclipse والتي تُستخدم لتطوير برامج أندرويد بلغة جافا فهي مجانية. فإذا كان لديك عدد من المُبرمجين كلما كانت التكلفة كبيرة، مثلاً خمس مبرمجين يحتاجون لخمس نُسخ من دلفي أي 7500 دولار.

كذلك فإن تطبيقات الموبايل يكون لها إمتدات آخر يتمثل في خدمات الويب والتي بدورها تكون وسيط بين برامج الموبايل وقواعد البيانات التي تحتوي على البيانات المُراد التعامل معها في الموبايل.

لذلك انت تُريد أداة تطوير ولغة برمجة تستطيع من خلالها البرمجة في كلا الهدفين: الموبايل وخدمات الويب.

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

ليس بالضرورة أنا برمجت لعبة لكلا النظامين وكان حجم التطبيق على نظام أندرويد أصغر من تطبيق نظام آي أو إس مع أن كلا التطبيقين يدعم نفس الخصائص ويستخدم نفس الصور والملفات الصوتية تقريباً. باختصار موضوع الحجم يعتمد على المبرمج ولو كان للنظام دور في ذلك.

أما بالنسبة لاستخدام لغة أخرى فهي لن تحل أي مشكلة لأن أندرويد لا يدعم سوى جافا أو C/C++ باستخدام NDK واستخدام أي لغة أخرى يعني أن الكود الذي ستقوم بكتابته بتلك اللغة ستتم ترجمته للجافا لكي يعمل. والنتيجة أن الكود على الأغلب سيكون أطول وقد يؤثر أيضاً على أداء التطبيق بشكل سلبي وقد لا تدعم كثير من الخصائص المدعومة بشكل افتراضي مثل الوصول للكاميرا أو غيرها والحسنة الوحيدة التي تأتي من استخدام لغة أخرى هو لتتم ترجمتها لأكثر من لغة كي تستهدف أكثر من نظام.

يعني بفهم من كلامك

أنه لا يجب برمجة تطبيقات للأندرويد باستخدام لغة الدلفي ؟

لكل شيء مزايا وعيوب. استخدام لغة تقوم بترجمة الكود للغة الأصلية له عيوبه لكن له مزايا مهمة فهو يوفر الوقت والجهد وأحياناً المال ويضمن تجربة مستخدم واحدة عبر مختلف المنصات.

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

بدلاً من ذلك قررت استخدام أداء تسمح لي باستهداف مجموعة من الأنظمة المكتبية والمحمولة والويب عن طريق كتابة التطبيق مرة واحدة وهو أمر شبيه بماتقوم به دلفي وهو يقدم لي أسرع وسيلة لاطلاق تطبيقاتي على مختلف الأنظمة في أقصر وقت ممكن.

لكن لو كنت مثلاً مسؤولاً في شركة ولدي عدة فرق برمجية فسأعين فريق لكل نظام لكي أحصل على أفضل أداء.

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

14

للمرة الثانية, الدلفى لا تترجم الى جافا او ما تسميها اللغة الاصلية, الدلفى تترجم الى لغة الالة الخاصة بARM و بالتالى فان برامج الاندرويد المكتوبة بدلفى هى أسرع من تلك المكتوبة بجافا.

و يمكنك مراجعة اللينك التالى :

كلامك صحيح من ناحية أنها لا تترجم إلى الجافا أنا لم اعلم بإمكانية استخدام NDK بلغة الدلفي وكان كلامي عن الأدوات المنتشرة التي تقوم بترجمة الكود من لغة إلى أخرى مثل C# بمشروع Mono و Lua بمشروع Corona و HTML+Javascrip بمختلف المشاريع

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

Before downloading the NDK, you should understand that the NDK will not benefit most apps. As a developer, you need to balance its benefits against its drawbacks. Notably, using native code on Android generally does not result in a noticable performance improvement, but it always increases your app complexity. In general, you should only use the NDK if it is essential to your app

المصدر:

ومماهو منتشر على الشبكة فإن حجم البرامج المكتوبة أكبر وأحياناً كثيرة أبطأ

البرامج التى تعمل على المعالج مباشرة native هى بالتأكيد و بالمنطق سوف تكون اسرع من البرامج التى تحتاج الى بيئة افتراضية لتشغيلها عموما, و أكثر سرعة من الجافا خصوصا لما لهذه اللغة بالذات من عيوب لا يتسع المجال لذكرها هنا.

هذا لا يمنع ان برنامج مكتوب بشكل جيد على الجافا سوف يكون أسرع من برنامج مكتوب بشكل سىء على الدلفى أو السى++. لكن برنامج جيد على الدلفى و السى++ سوف يكون اسرع من برنامج جيد على الجافا.

و يمكنك مراجعة اللينك مرة أخرى من شركة Embarcadero التى تسرد الاسباب لماذا الnative أفضل من اللغات الاخرى.

موضوع ان التطبيق على الدلفى حجمة كبير فهذا سمعته كثيرا, و السبب هو مكتبات firemonkey التى تضمن مع البرامج على الارجخ و لهذا السبب أيضا تأخذ وقتا فى التحميل, لكن بعد ذلك فانها تعمل بشكل أفضل و اسرع.

أتمنى أن تدلني على المكان الذي يقول أن برامج أندرويد المكتوبة بدلفي أو سي ++ أسرع من تلك المكتوبة بالجافا.

لو تلاحظ ميزة السرعة مذكورة مقارنة بتلك الأدوات التي أشرت إليها سابقاً التي تترجم الكود أو على شكل صفحات ويب.

مقتبس من اللينك الذي أعطيتني اياه: Delphi/FM Application Platform apps are faster than web based or hybrid mobile apps

عزيزي حزمة التطوير الـNative ليست موجودة لتمكنك من بناء تطبيقات أسرع بل على العكس وكما وضحت لك من قبل صفحة الحزمة تقول أن استخدام الحزمة لن يفيد أغلب البرامج ولن يعطي أداء أفضل ولكنه سيزيد من تعقيدها. بشكل عام استخدم الحزمة فقط إن كانت ضرورية لبرنامجك.

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

موضوع حجم التطبيق ووقت التحميل تعتبر عيوب في الأداء وهي تؤثر على تجربة المستخدم. حين أعلنت أدوبي عن أداة بناء تطبيقات فلاش لأندرويد نالت العديد من التقييمات السلبية بسبب حجم التطبيق فقط. وهو أيضاً أحد الأسباب التي تجعل الشركات تبني تطبيقات تحتاج لتحميل المحتويات بعد التنصيب.

لو أتعبتك معي أخي بس ما هو الحل لمشكلة الحجم الزائد للتطبيق تحديدا على نظام أندرويد

مثلا برنامج خرجه فقط كلمة مرحبا يستهلك 30 ميغابايت من الذاكرة على نظام أندرويد و بضع كيلوبايتات على ios

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

-1

تطبيقات الاندرويد يمكن برمجتها بالجافا لتعمل على dalvik او تتم برمجتها على سى++ أو دلفى و عندها تترجم الى native code و تعمل مباشرة على المعالج و لا يتم ترجمتها الى جافا, و لا يمكن أصلا ترجمة السى++ او الدلفى الى جافا و لكن العكس ممكن لأن الترجمة تكون من اللغة الاضعف الى اللغة الاقوى و ليس العكس.

و لكن معظم برامج الاندرويد تكتب بجافا عموما.

13

لايوجد شيء اسمه قوة برمجة. هناك عدة مقاييس للغة البرمجة لعلك تقصد مستوى اللغة والذي يشير لمدى قربها من لغة الآلة.

لكن كل هذا لا علاقة له بالترجمة من لغة لأخرى. في الماضي كلامك كان صحيحاً فلا معنى ولا حاجة لترجمة لغة قريبة من لغة الآلة للغة أبعد. لكن الآن تغير الأمر فأنا أكتب برامجي بلغة البيسك وهي لغة منخفضة المستوى وتتحول إلى جافا وسي++ وسي شارب بل وحتى لـhtml5 وactionscript للفلاش

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

هناك شىء اسمه لغة قوية و لغة ضعيفة.

لغة البيسك لغة مرتفعة المستوى High Level و ليست منخفضة المستوى, و يسمونها Level 4 بحسب بعدها عن لغة الالة, فكلما عزلتك لغة البرمجة عن الالة تصبح مستوى اعلى. فالاسمبلى مستوى ثانى و السى مستوى ثالث.

الجافا مثلا تعزلك تماما عن التحكم بالذاكرة و نظام التشغيل, لذا فان معظم البرامج الاحترافية التى نستخدمها يوميا تكتب على سى++ و سى و دلفى و لا تكتب على البيسك و الجافا و السى#. تمكنك هذه اللغات من التحكم بشكل دقيق فى الذاكرة و كل شىء كما أنه لا شىء يعمل فى الخلفية و يتسبب باختناقات و أداء غير متوقع مثل الGC.

دعك من احتياج هذه اللغات الى ألة افتراضية للتشغيل و هو ما يستهلك المزيد من قوة المعالج و المزيد من الذاكرة.

أنا ذكرت لغة بيسك لأقارنها بالأكشن سكربت والـhtml5 والجافا وهي كلها لغات مستواها أعلى (أو أضعف كما تقول) من البيسك فقط لأوضح أن موضوع ترجمة لغة يمكن أن يكون من لغة أعلى إلى أدنى أو العكس طالما هنالك حاجة لذلك.

الجافا لا تعزلك تماما عن التحكم بالذاكرة ونظام التشغيل. أبسط مثال هو أمر memcpy وهو موجود في السي++ والجافا يسمح لك بنسخ نطاق معين من البيانات دفعة واحدة (مثلاً Array كامل). الجافا توفر لك منصة فوق النظام تشغل التطبيقات المكتوبة بها لكن اختراق هذه الطبقة ليس مستحيلاً وإلا لما كانت الجافا من أسوأ لغات البرمجة من ناحية الحماية كثير من تطبيقات أندرويد مثلاً تتجاوز الـDalvik وتصل للنظام. أذكر أن أول جهاز أندرويد مثلاً يمكن الحصول على صلاحيات الروت عن طريق فتح أحد منافذ الجهاز باستخدام تطبيق موجود في متجر التطبيقات مكتوب بالجافا.

أخي فادي لغة البرمجة هي أداة للوصول إلى هدف معين أو حل لمشكلة معينة ولو كانت تلك اللغات هي الأفضل لما اضطررت أنا وغيري لتعلم عدد كبير من لغات البرمجة. مايكروسوفت صنعت نظام تشغيلها بالسي والسي++ فلماذا طورت سي# وبنت تطبيقات بها؟ آبل أيضاً لماذا استخدمت لغة Obj C بدلاً من سي/سي++ نظامها المحمول؟ لماذا اختارت جوجل الجافا ودخلت في مشاكل قضائية إن كان لديها حل أفضل؟ خصوصاً وأن محرك جوجل يعتمد بشكل هائل على سي++ وكذلك هو الأمر مع كثير من منتجات جوجل.

على فكرة لكل شيء مميزات وعيوب وذلك يشمل التحكم المطلق بالذاكرة ونظام التشغيل. وهذا ينطبق على الجافا أحد أسباب ظهور الجافا هو تمكين المبرمج من كتابة برنامج مرة واحدة بلغة واحدة فيعمل على كل الأنظمة بنفس الطريقة تماماً فكتابة برنامج بالجافا يضمن لك أنه سيعمل على الوندوز والماك واللينوكس والبي اس دي والسولاريس وغيرهم بنفس الأداء والطريقة وهو ما لايمكنك الوصول إليه بالسي/سي++ أو دلفي. كما أن ظهور لغات المستوى الثالث كما أشرت إليها كان ليس لسهولتها فقط بل ولأنها تمكن المستخدم من كتابة البرنامج ليعمل على كل النظام الذي تريد بغض النظر عن المعمارية حيث أن الاسمبلي تعمل بشكل مختلف باختلاف المعمارية.

أنا استخدم مايلبي احتياجاتي ويعطيني أفضل نتيجة ممكنة. فحين كنت أدرس كيفية صناعة لغات البرمجة استخدمت لغة البايثون لكتابة أداة لاختبار قوانين اللغات نظراً لسهولتها في تفكيك النصوص وتحليلها. لكن في المسابقات البرمجية دوماً استخدم السي++ التي أفضلها على الجافا في أي وقت. لكن لا مفر من استخدام الجافا حين يتطلب منك ذلك.

ha;v اشكرك ع المعلومات