برامج متعددة المنصات

في مجال الحوسبة ، يُعرف برنامج متعدد المنصات (يُسمى أيضًا برنامجًا مستقلًا عن المنصة أو برنامجًا يعمل على منصات متعددة ) بأنه برنامج حاسوبي مصمم للعمل على عدة منصات حوسبة . [ 1 ] يتطلب بعض برامج المنصات المتعددة إصدارًا منفصلاً لكل منصة، بينما يمكن تشغيل بعضها الآخر مباشرةً على أي منصة دون أي تحضير خاص، وذلك لكونه مكتوبًا بلغة تفسيرية أو مُترجمًا إلى بايت كود قابل للنقل، حيث تكون المفسرات أو حزم وقت التشغيل مكونات شائعة أو قياسية في جميع المنصات المدعومة. [ 2 ]
على سبيل المثال، قد يعمل تطبيق متعدد المنصات على أنظمة لينكس ، وماك أو إس ، ومايكروسوفت ويندوز . ويمكن أن يعمل برنامج متعدد المنصات على العديد من المنصات، أو على منصتين فقط. ومن أطر تطوير التطبيقات متعددة المنصات: Codename One ، وArkUI-X، و Kivy ، وQt ، و GTK ، وFlutter ، و NativeScript ، وXamarin ، و Apache Cordova ، و Ionic ، و React Native . [ 3 ]
المنصات
يمكن أن تشير المنصة إلى نوع المعالج (CPU) أو أي مكون مادي آخر يعمل عليه نظام التشغيل أو التطبيق ، أو نوع نظام التشغيل نفسه، أو مزيج من الاثنين. [ 4 ] ومن الأمثلة على المنصات الشائعة نظام أندرويد الذي يعمل على معمارية ARM . ومن المنصات الأخرى المعروفة أنظمة لينكس / يونكس ، وماك أو إس ، وويندوز ، وجميعها منصات متعددة. [ 4 ] يمكن برمجة التطبيقات لتعتمد على خصائص منصة معينة، سواءً كانت المكونات المادية، أو نظام التشغيل، أو الآلة الافتراضية التي تعمل عليها. على سبيل المثال، تُعد منصة جافا منصة شائعة للآلات الافتراضية، وتعمل على العديد من أنظمة التشغيل وأنواع المكونات المادية.
الأجهزة
يمكن أن تشير منصة الأجهزة إلى بنية مجموعة التعليمات . على سبيل المثال: بنية ARM أو بنية x86. يمكن لهذه الأجهزة تشغيل أنظمة تشغيل مختلفة.
تعتمد الهواتف الذكية والأجهزة اللوحية عمومًا على معمارية ARM، وغالبًا ما تعمل هذه الأجهزة بنظامي التشغيل Android أو iOS وأنظمة تشغيل أخرى للأجهزة المحمولة .
برمجة
يمكن أن تكون منصة البرمجيات إما نظام تشغيل أو بيئة برمجة ، مع أنها في الغالب مزيج من الاثنين. ويُستثنى من ذلك لغة جافا ، التي تستخدم آلة افتراضية مستقلة عن نظام التشغيل لتنفيذ بايت كود جافا . ومن أمثلة منصات البرمجيات:
- أندرويد (ARM64)
- ChromeOS (ARM32, ARM64, IA-32, x86-64)
- بنية اللغة المشتركة (CLI) من مايكروسوفت ، تم تنفيذها في:
- إطار عمل .NET القديم الذي يعمل فقط على نظام التشغيل مايكروسوفت ويندوز.
- إطار عمل .NET الأحدث (يسمى ببساطة ".NET") الذي يعمل عبر أنظمة التشغيل Microsoft Windows و macOS و Linux.
- تطبيقات أخرى مثل Mono (التي كانت سابقًا من إنتاج Novell و Xamarin [ 5 ] )
- OpenHarmony /Oniro (ARM64، RISC-V، x86، x64، وLongArch)
- نظام التشغيل HarmonyOS (ARM64)
- نظام التشغيل iOS ((ARMv8-A))
- iPadOS (ARMv8-A)
- جافا
- لينكس ( ألفا، آرك، إيه آر إم، سي-سكاي، هيكساغون، لونغ آرك، إم 68 كيه، مايكروبليز، ميبس، نيوس 2، أوبن ريسك، بي إيه-ريسك ، باور بي سي، ريسك-في، إس 390، سوبر إتش، سبارك، إكس 86، إكستنسا)
- مايكروسوفت من لغة C إلى لغة P (1980-1982: العديد من البنى والأنظمة)
- نظام التشغيل macOS x86، معالج ARM ( معالج أبل سيليكون )
- ويندوز (IA-32، x86-64، ARM، ARM64)
- بلاي ستيشن 4 (x86)، بلاي ستيشن 3 (PowerPC) وبلاي ستيشن فيتا (ARM)
- سولاريس (SPARC، x86)
- سبارك
- يونكس (العديد من المنصات منذ عام 1969)
- متصفحات الويب - متوافقة إلى حد كبير مع بعضها البعض، وتشغل تطبيقات الويب التي تعمل بلغة جافا سكريبت.
- إكس بوكس
- تاريخي ثانوي
- AmigaOS (m68k)، AmigaOS 4 (PowerPC)، AROS (x86، PowerPC، m68k)، MorphOS (PowerPC)
- أتاري TOS ، مينت
- BSD (العديد من المنصات؛ انظر NetBSDnet، على سبيل المثال)
- أنظمة MS-DOS والأنظمة المتوافقة معها: IBM PC DOS و DR-DOS و FreeDOS
- نظام التشغيل OS/2 ، محطة التجارة الإلكترونية
- BeOS (PowerPC، x86)
جافا
تُترجم لغة جافا عادةً لتشغيلها على آلة افتراضية (VM) تُعد جزءًا من منصة جافا. آلة جافا الافتراضية (JVM) هي وحدة معالجة مركزية (CPU) مُنفذة برمجياً، تُشغل جميع أكواد جافا. وهذا يُتيح تشغيل الكود نفسه على جميع الأنظمة التي تُنفذ JVM. يُمكن تنفيذ برامج جافا بواسطة معالج جافا مُدمج في العتاد . ويُستخدم هذا غالبًا في الأنظمة المُدمجة.
يتمتع كود جافا الذي يعمل في بيئة جافا الافتراضية (JVM) بإمكانية الوصول إلى خدمات نظام التشغيل، مثل عمليات الإدخال/الإخراج للقرص والوصول إلى الشبكة، وذلك في حال منحه الصلاحيات اللازمة. تقوم بيئة جافا الافتراضية (JVM) بإجراء استدعاءات النظام نيابةً عن تطبيق جافا. يتيح هذا للمستخدمين تحديد مستوى الحماية المناسب، بناءً على قائمة التحكم بالوصول (ACL). على سبيل المثال، عادةً ما يتم تمكين الوصول إلى القرص والشبكة لتطبيقات سطح المكتب، ولكن ليس لتطبيقات المتصفح المصغّرة . كما يمكن استخدام واجهة جافا الأصلية (JNI) للوصول إلى وظائف خاصة بنظام التشغيل، مع ما يترتب على ذلك من فقدان قابلية النقل.
يمكن تشغيل برامج Java Standard Edition حاليًا على أنظمة تشغيل Microsoft Windows و macOS والعديد من أنظمة التشغيل الشبيهة بنظام Unix، بالإضافة إلى العديد من أنظمة التشغيل في الوقت الحقيقي للأجهزة المدمجة. أما بالنسبة لتطبيقات الجوال، فتُستخدم إضافات المتصفح لأجهزة Windows و Mac، بينما يدعم نظام Android لغة Java بشكلٍ مدمج. كما توجد إصدارات فرعية من Java، مثل Java Card و Java Platform, Micro Edition ، المصممة خصيصًا للأجهزة ذات الموارد المحدودة.
تطبيق
لكي يُعتبر البرنامج متعدد المنصات، يجب أن يعمل على أكثر من بنية حاسوبية أو نظام تشغيل. قد يكون تطوير مثل هذا البرنامج مهمة تستغرق وقتًا طويلاً لأن أنظمة التشغيل المختلفة لها واجهات برمجة تطبيقات (API) مختلفة.
قد لا يعمل البرنامج المصمم لنظام تشغيل معين تلقائيًا على جميع البنى التي يدعمها ذلك النظام. فمجرد كتابة البرنامج بلغة برمجة شائعة مثل C أو C++ لا يعني بالضرورة أنه سيعمل على جميع أنظمة التشغيل التي تدعم تلك اللغة، أو حتى على إصدارات مختلفة من نظام التشغيل نفسه.
تطبيقات الويب
تُوصف تطبيقات الويب عادةً بأنها متعددة المنصات، لأنها، من الناحية المثالية، قابلة للوصول من أي متصفح ويب ، حيث يُعد المتصفح هو المنصة. وتعتمد تطبيقات الويب عمومًا على نموذج العميل والخادم ، لكنها تختلف اختلافًا كبيرًا في التعقيد والوظائف. وقد يكون من الصعب التوفيق بين الرغبة في الحصول على ميزات إضافية والحاجة إلى التوافق.
تُجري تطبيقات الويب الأساسية معظم عمليات المعالجة أو كلها من خادم غير مُحتفظ بالحالة ، ثم تُمرر النتيجة إلى متصفح المستخدم. يقتصر تفاعل المستخدم مع التطبيق على تبادل بسيط لطلبات البيانات واستجابات الخادم. كان هذا النوع من التطبيقات هو السائد في المراحل الأولى لتطوير تطبيقات الويب . تتبع هذه التطبيقات نموذج معاملات بسيط ، مماثل لنموذج عرض صفحات الويب الثابتة . ولا تزال شائعة نسبيًا اليوم، خاصةً عندما تُعتبر التوافقية عبر المنصات والبساطة أكثر أهمية من الوظائف المتقدمة.
من الأمثلة البارزة على تطبيقات الويب المتقدمة واجهة الويب الخاصة بـ Gmail وخرائط جوجل . وتعتمد هذه التطبيقات عادةً على ميزات إضافية لا تتوفر إلا في الإصدارات الأحدث من متصفحات الويب الشائعة. وتشمل هذه الميزات Ajax و JavaScript و HTML الديناميكي و SVG ومكونات أخرى لتطبيقات الويب الغنية .
تصميم
بسبب المصالح المتضاربة بين التوافق والوظائف، ظهرت العديد من استراتيجيات التصميم.
تستخدم العديد من أنظمة البرمجيات بنية متعددة الطبقات حيث يقتصر الكود المعتمد على النظام الأساسي على الطبقات العليا والسفلى.
التدهور الرشيق
يهدف التدهور التدريجي إلى توفير وظائف متطابقة أو مشابهة لجميع المستخدمين والمنصات، مع تقليل هذه الوظائف إلى الحد الأدنى المطلوب للمتصفحات ذات الإمكانيات المحدودة. على سبيل المثال، قد يلاحظ المستخدم الذي يحاول استخدام متصفح ذي ميزات محدودة للوصول إلى Gmail أن Gmail يتحول إلى الوضع الأساسي، بوظائف أقل ولكنها لا تزال قابلة للاستخدام.
قواعد بيانات متعددة
تُصان بعض البرامج في قواعد بيانات منفصلة لمنصات مختلفة (من حيث الأجهزة وأنظمة التشغيل)، مع الحفاظ على وظائفها المتطابقة. يتطلب هذا جهدًا أكبر لصيانة الكود، ولكنه قد يكون مجديًا عندما يكون حجم الكود الخاص بكل منصة كبيرًا.
قاعدة بيانات واحدة
تعتمد هذه الاستراتيجية على وجود قاعدة بيانات واحدة قابلة للترجمة إلى تنسيقات متعددة خاصة بمنصات مختلفة. إحدى التقنيات هي الترجمة المشروطة ، حيث لا يتم تكرار الكود المشترك بين جميع المنصات. تُجعل أجزاء الكود الخاصة بمنصات معينة مشروطة، بحيث يتم تفسيرها أو ترجمتها عند الحاجة فقط. تقنية أخرى هي فصل الوظائف، والتي تُعطّل الوظائف غير المدعومة من المتصفحات أو أنظمة التشغيل، مع الاستمرار في تقديم تطبيق كامل للمستخدم. (انظر أيضًا: فصل الاهتمامات ). تُستخدم هذه التقنية في تطوير الويب، حيث يمكن للكود المُفسَّر (كما في لغات البرمجة النصية) الاستعلام من المنصة التي يعمل عليها لتنفيذ أجزاء مختلفة بشكل مشروط. [ 6 ]
مكتبات الطرف الثالث
تحاول مكتبات الطرف الثالث تبسيط إمكانية العمل عبر المنصات المختلفة من خلال إخفاء تعقيدات التمييز بين العملاء خلف واجهة برمجة تطبيقات موحدة واحدة، على حساب احتكار البائع .
تصميم مواقع الويب المتجاوب
تصميم المواقع المتجاوب (RWD) هو منهج لتصميم المواقع الإلكترونية يهدف إلى تصميم تخطيط مرئي للمواقع يوفر تجربة مشاهدة مثالية - سهولة القراءة والتصفح مع الحد الأدنى من تغيير الحجم والتحريك والتمرير - عبر مجموعة واسعة من الأجهزة، من الهواتف المحمولة إلى شاشات أجهزة الكمبيوتر المكتبية. ولا يُستخدم في هذه التقنية إلا القليل من التعليمات البرمجية الخاصة بالمنصة أو لا يُستخدم على الإطلاق.
الاختبار
تتطلب التطبيقات متعددة المنصات اختبارات تكامل أكثر شمولاً. تمنع بعض متصفحات الويب تثبيت إصدارات مختلفة على نفس الجهاز. توجد عدة طرق لاستهداف منصات متعددة، لكنها جميعًا تُنتج برامج تتطلب جهدًا يدويًا كبيرًا للاختبار والصيانة. [ 7 ] تُستخدم تقنيات مثل المحاكاة الافتراضية الكاملة أحيانًا كحل بديل لهذه المشكلة.
تتيح أدوات مثل نموذج كائن الصفحة كتابة اختبارات متعددة المنصات بحيث تغطي حالة اختبار واحدة إصدارات متعددة من التطبيق. فإذا كانت الإصدارات المختلفة تتشابه في واجهات المستخدم، فيمكن اختبارها جميعًا باستخدام حالة اختبار واحدة.
التطبيقات التقليدية
تزداد شعبية تطبيقات الويب، لكن العديد من مستخدمي الحاسوب ما زالوا يستخدمون برامج التطبيقات التقليدية التي لا تعتمد على بنية العميل/الخادم. ولا يكون التمييز بين التطبيقات التقليدية وتطبيقات الويب واضحًا دائمًا، إذ تتداخل خصائصها وطرق تثبيتها وبنيتها، مما يُصعّب التمييز بينها. ومع ذلك، يُعد هذا التمييز المُبسّط تعميمًا شائعًا ومفيدًا.
البرامج الثنائية
تُوزَّع برامج التطبيقات التقليدية عادةً كملفات ثنائية، وخاصةً الملفات التنفيذية . تدعم هذه الملفات التنفيذية النظام الأساسي الذي صُمِّمت من أجله فقط، مما يعني أن ملفًا تنفيذيًا واحدًا متعدد المنصات قد يكون مُثقلًا بشيفرة لا تُنفَّذ أبدًا على نظام أساسي مُعيَّن. بدلًا من ذلك، يوجد عادةً مجموعة من الملفات التنفيذية، كلٌّ منها مُصمَّم لنظام أساسي واحد.
بالنسبة للبرامج التي تُوزّع كملف تنفيذي ثنائي، مثل تلك المكتوبة بلغة C أو C++، يجب أن يكون هناك إصدار برمجي لكل منصة، باستخدام مجموعة أدوات تُترجم - أو تُحوّل - قاعدة بيانات واحدة إلى ملفات تنفيذية ثنائية متعددة. على سبيل المثال، متصفح الويب مفتوح المصدر Firefox متوفر على أنظمة Windows و macOS (بمعالجات PowerPC و x86 عبر ما تسميه شركة Apple " ملفًا تنفيذيًا عالميًا" ) و Linux و BSD على بنى حاسوبية متعددة. تُعدّ المنصات الأربع (في هذه الحالة، Windows و macOS و Linux و BSD) توزيعات تنفيذية منفصلة، على الرغم من أنها تستمد في الغالب من نفس شفرة المصدر . في حالات نادرة، تُدمج الشفرة التنفيذية المُصممة لعدة منصات في ملف تنفيذي واحد يُسمى " ملفًا تنفيذيًا شاملًا" .
قد لا يكفي استخدام مجموعات أدوات مختلفة لبناء ملفات تنفيذية تعمل على منصات متعددة. في هذه الحالة، يجب على المبرمجين نقل شفرة المصدر إلى المنصة الجديدة. على سبيل المثال، يمكن تعديل تطبيق مثل فايرفوكس، الذي يعمل بالفعل على نظام ويندوز على معالجات x86، وإعادة بنائه ليعمل على نظام لينكس على معالجات x86 (وربما على بنى معمارية أخرى أيضًا). يمكن تخزين الإصدارات المتعددة من الشفرة في قواعد بيانات منفصلة، أو دمجها في قاعدة بيانات واحدة.
يُعدّ المحاكاة الافتراضية متعددة المنصات بديلاً عن النقل ، حيث يمكن تشغيل التطبيقات المُجمّعة لمنصة معينة على منصة أخرى دون تعديل الشفرة المصدرية أو الملفات التنفيذية. على سبيل المثال، يُشغّل برنامج Rosetta من Apple ، المُدمج في أجهزة Macintosh التي تعمل بمعالجات Intel ، تطبيقات مُجمّعة للجيل السابق من أجهزة Mac التي كانت تستخدم معالجات PowerPC. مثال آخر هو IBM PowerVM Lx86، الذي يسمح بتشغيل تطبيقات Linux/x86 دون تعديل على نظام التشغيل Linux/Power.
مثال على برنامج ثنائي متعدد المنصات:
- تم تصميم حزمة LibreOffice المكتبية لأنظمة تشغيل Microsoft Windows و macOS و Linux و FreeBSD و NetBSD و OpenBSD و Android و iOS و iPadOS و ChromeOS و Collabora Online وغيرها الكثير. [ 8 ] [ 9 ] يدعم العديد من هذه الأنظمة منصات أجهزة متعددة ذات معالجات معمارية متنوعة، بما في ذلك IA -32 و x86-64 و ARM (ARMel و ARMhf و ARM64) و MIPS و MIPSel و PowerPC و ppc64le و S390x. [9] [ 10 ]
النصوص واللغات المترجمة
يمكن اعتبار البرنامج النصي متعدد المنصات إذا كان مترجمه متاحًا على منصات متعددة، وكان البرنامج النصي يستخدم فقط الإمكانيات المدمجة في اللغة. على سبيل المثال، من المرجح أن يعمل برنامج نصي مكتوب بلغة بايثون لنظام شبيه بنظام يونكس على نظام ويندوز مع تعديلات طفيفة أو بدون أي تعديلات، لأن بايثون تعمل أيضًا على ويندوز؛ بل إن هناك العديد من التطبيقات (مثل IronPython لإطار عمل .NET ). وينطبق الأمر نفسه على العديد من لغات البرمجة النصية مفتوحة المصدر .
على عكس الملفات التنفيذية الثنائية، يمكن استخدام نفس البرنامج النصي على جميع أجهزة الكمبيوتر التي تحتوي على برامج لتفسيره. وذلك لأن البرنامج النصي يُخزَّن عادةً كنص عادي في ملف نصي . قد تظهر بعض المشكلات البسيطة، مثل تمثيل حرف سطر جديد .
بعض لغات البرمجة النصية الشائعة متعددة المنصات هي:
- bash – غلاف يونكس يتم تشغيله عادةً على لينكس وأنظمة يونكس الحديثة الأخرى، وكذلك على ويندوز عبر طبقة توافق Cygwin POSIX ، أو Git لنظام ويندوز، أو نظام ويندوز الفرعي لنظام لينكس .
- بيرل – تم إصدارها لأول مرة في عام 1987. تستخدم لبرمجة CGI ، ومهام إدارة النظام الصغيرة ، والمزيد.
- PHP – تُستخدم في الغالب لتطبيقات الويب.
- بايثون – لغة تركز على التطوير السريع للتطبيقات وسهولة الكتابة، بدلاً من كفاءة وقت التشغيل.
- روبي – لغة برمجة كائنية التوجه تهدف إلى أن تكون سهلة القراءة. يمكن استخدامها أيضًا على الويب من خلال روبي أون ريلز .
- Tcl – لغة برمجة ديناميكية ، مناسبة لمجموعة واسعة من الاستخدامات، بما في ذلك تطبيقات الويب وتطبيقات سطح المكتب والشبكات والإدارة والاختبار وغيرها الكثير.
ألعاب الفيديو
يُستخدم مصطلح "متعدد المنصات" أو "متعدد المنصات" لوصف ألعاب الفيديو التي تُصدر على مجموعة متنوعة من أجهزة ألعاب الفيديو . ومن أمثلة هذه الألعاب: Miner 2049er ، و Tomb Raider: Legend ، وسلسلة FIFA ، وسلسلة NHL ، و Minecraft .
تم إصدار كل منها عبر مجموعة متنوعة من منصات الألعاب، مثل Wii و PlayStation 3 و Xbox 360 وأجهزة الكمبيوتر الشخصية والأجهزة المحمولة .
تُعدّ كتابة البرامج لبعض المنصات أصعب من غيرها، مما يتطلب وقتًا أطول لتطوير لعبة فيديو بنفس الجودة. وللتغلب على ذلك، قد تُطرح لعبة الفيديو على عدد قليل من المنصات أولًا، ثم على منصات أخرى لاحقًا. يحدث هذا عادةً عند إطلاق نظام ألعاب جديد، لأن مطوري ألعاب الفيديو يحتاجون إلى التعرف على مكوناته المادية والبرمجية.
قد لا تكون بعض الألعاب متوافقة مع منصات متعددة بسبب اتفاقيات الترخيص بين المطورين ومصنعي أجهزة ألعاب الفيديو، والتي تقصر التطوير على منصة واحدة محددة. على سبيل المثال، قد تُنتج ديزني لعبةً بهدف إصدارها على أحدث أجهزة ألعاب نينتندو وسوني . إذا حصلت ديزني على ترخيص اللعبة من سوني أولاً، فقد يُطلب منها إصدار اللعبة حصرياً على جهاز سوني لفترة قصيرة أو بشكل دائم .
اللعب عبر المنصات
ابتكر العديد من مطوري الألعاب طرقًا للعب عبر الإنترنت باستخدام منصات مختلفة. تمتلك شركات Psyonix و Epic Games و Microsoft و Valve تقنيات تُمكّن لاعبي Xbox 360 وPlayStation 3 من اللعب مع لاعبي الكمبيوتر، تاركين للمستخدمين حرية اختيار المنصة. وكانت لعبة Quake 3 أول لعبة تتيح هذا المستوى من التفاعل بين ألعاب الكمبيوتر وألعاب منصات الألعاب (Dreamcast مع لوحة مفاتيح وفأرة مصممتين خصيصًا) . [ 11 ] [ 12 ]
تشمل الألعاب التي تتميز باللعب عبر الإنترنت عبر المنصات المختلفة Rocket League و Final Fantasy XIV و Street Fighter V و Killer Instinct و Paragon و Fable Fortune و Minecraft مع تحديث Better Together على Windows 10 وإصدارات الواقع الافتراضي و Pocket Edition و Xbox One .
برمجة
البرمجة متعددة المنصات هي ممارسة كتابة البرامج عمداً للعمل على أكثر من منصة واحدة.
الأساليب
توجد طرق مختلفة لكتابة تطبيق متعدد المنصات. إحدى هذه الطرق هي إنشاء نسخ متعددة من البرنامج نفسه في هياكل برمجية مختلفة ؛ بمعنى آخر، قد تحتوي نسخة مايكروسوفت ويندوز من التطبيق على مجموعة من ملفات الشيفرة المصدرية، ونسخة ماكنتوش على مجموعة أخرى، بينما قد يحتوي نظام *nix مفتوح المصدر على مجموعة ثالثة. مع أن هذه الطريقة تبدو بسيطة، إلا أنها قد تكلف أكثر بكثير مقارنةً بالتطوير لمنصة واحدة فقط، وذلك لتوظيف فريق أكبر أو إصدار المنتجات بوتيرة أبطأ. كما قد ينتج عنها المزيد من الأخطاء التي يجب تتبعها وإصلاحها.
ثمة نهج آخر يتمثل في استخدام برمجيات تخفي الاختلافات بين المنصات. تعمل طبقة التجريد هذه على عزل التطبيق عن المنصة، ما يجعل هذه التطبيقات مستقلة عن المنصة . وتُبنى التطبيقات التي تعمل على JVM بهذه الطريقة.
تجمع بعض التطبيقات بين أساليب برمجة متعددة المنصات لإنشاء التطبيق النهائي. ومن الأمثلة على ذلك متصفح الويب فايرفوكس، الذي يستخدم التجريد لبناء بعض المكونات الأساسية، مع فروع مصدرية منفصلة لتنفيذ ميزات خاصة بكل منصة (مثل واجهة المستخدم الرسومية)، بالإضافة إلى استخدام أكثر من لغة برمجة نصية لتسهيل قابلية نقل البرمجيات . يستخدم فايرفوكس لغات XUL و CSS وجافا سكريبت لتوسيع وظائف المتصفح، إلى جانب إضافات المتصفح الكلاسيكية على غرار نتسكيب . ويُكتب جزء كبير من المتصفح نفسه باستخدام لغات XUL وCSS وجافا سكريبت.
مجموعات الأدوات والبيئات
هناك العديد من الأدوات [ 13 ] [ 14 ] المتاحة للمساعدة في عملية البرمجة عبر المنصات:
- الإصدار الثامن : لغة برمجة تستخدم Juce كطبقة واجهة المستخدم الرسومية. وهي تدعم حاليًا أنظمة Android وiOS وWindows وmacOS وLinux وRaspberry Pi.
- Anant Computing : منصة تطبيقات جوالة تعمل بجميع اللغات الهندية، بما في ذلك لوحات المفاتيح الخاصة بها، كما تدعم AppWallet والأداء الأصلي في جميع أنظمة التشغيل.
- AppearIQ : إطار عمل يدعم سير عمل تطوير التطبيقات ونشرها في بيئة مؤسسية. توفر الحاويات المطورة أصلاً ميزات الأجهزة المحمولة أو اللوحية من خلال واجهة برمجة تطبيقات (API) إلى كود HTML5، مما يسهل تطوير تطبيقات جوالة تعمل على منصات مختلفة.
- Boden : إطار عمل لواجهة المستخدم مكتوب بلغة C++.
- كايرو : مكتبة برمجية مجانية تُستخدم لتوفير واجهة برمجة تطبيقات (API) تعتمد على الرسومات المتجهة وتتوافق مع مختلف الأجهزة. صُممت كايرو لتوفير عناصر أساسية للرسم ثنائي الأبعاد عبر عدد من الأنظمة الخلفية المختلفة. كُتبت كايرو بلغة C ولها روابط للعديد من لغات البرمجة.
- Cocos2d : مجموعة أدوات مفتوحة المصدر ومحرك ألعاب لتطوير ألعاب وتطبيقات ثنائية الأبعاد وثلاثية الأبعاد بسيطة متعددة المنصات.
- الاسم الرمزي واحد : إطار عمل مفتوح المصدر للكتابة مرة واحدة والتشغيل في أي مكان (WORA) لمطوري Java و Kotlin.
- دلفي : بيئة تطوير متكاملة تستخدم لغة برمجة مبنية على لغة باسكال. وهي تدعم أنظمة أندرويد، وiOS، وويندوز، وماك أو إس، ولينكس.
- Ecere SDK : مجموعة أدوات رسومية ثنائية وثلاثية الأبعاد وبيئة تطوير متكاملة، مكتوبة بلغة eC وتدعم لغات إضافية مثل C و Python. وهي تدعم أنظمة Linux و FreeBSD و Windows و Android و macOS والويب عبر Emscripten أو Binaryen (WebAssembly).
- إكليبس : بيئة تطوير مفتوحة المصدر. مُنفذة بلغة جافا، وتتميز ببنية قابلة للتخصيص تدعم العديد من أدوات تطوير البرمجيات. تتوفر إضافات للعديد من اللغات، بما في ذلك جافا وسي++.
- FLTK : مجموعة أدوات مفتوحة المصدر، ولكنها أخف وزنًا لأنها تقتصر على واجهة المستخدم الرسومية.
- فلاتر : إطار عمل واجهة مستخدم متعدد المنصات لأنظمة التشغيل iOS و Android و Mac و Windows، تم تطويره بواسطة جوجل .
- fpGUI : مجموعة أدوات مفتوحة المصدر للعناصر الرسومية، تم تنفيذها بالكامل بلغة Object Pascal. وهي تدعم حاليًا أنظمة Linux وWindows وجزءًا من Windows CE.
- GeneXus : حل سريع لتطوير البرمجيات لنظام التشغيل Windows لإنشاء ونشر التطبيقات متعددة المنصات استنادًا إلى تمثيل المعرفة ويدعم C# و COBOL و Java بما في ذلك أجهزة Android و BlackBerry الذكية و Objective-C لأجهزة Apple المحمولة و RPG و Ruby و Visual Basic و Visual FoxPro .
- GLBasic : لهجة BASIC ومترجم يُولّد كود C++. يتضمن مترجمات متقاطعة للعديد من المنصات ويدعم العديد من المنصات (Windows وMac وLinux وAndroid وiOS وبعض الأجهزة المحمولة النادرة).
- Godot : مجموعة تطوير برمجيات (SDK) تستخدم محرك Godot.
- GTK +: مجموعة أدوات مفتوحة المصدر للعناصر الرسومية لأنظمة شبيهة بنظام Unix مع X11 و Microsoft Windows.
- هاكس : لغة مفتوحة المصدر.
- Juce : إطار عمل للتطبيقات مكتوب بلغة C++، ويستخدم لكتابة برامج أصلية على العديد من الأنظمة (Microsoft Windows و POSIX و macOS)، دون أي تغيير في الكود.
- Kivy : إطار عمل مفتوح المصدر ومتعدد المنصات لواجهة المستخدم مكتوب بلغة بايثون . وهو يدعم أنظمة أندرويد ، وiOS ، ولينكس ، و OS X ، وويندوز ، وراسبيري باي .
- LEADTOOLS : مكتبات SDK متعددة المنصات لدمج تقنيات التعرف على المستندات والطب والتصوير والوسائط المتعددة في تطبيقات Windows و iOS و macOS و Android و Linux وتطبيقات الويب. [ 15 ]
- LiveCode : لغة تطوير تطبيقات سريعة تجارية متعددة المنصات مستوحاة من HyperTalk.
- لازاروس : بيئة برمجة لمترجم فري باسكال. تدعم إنشاء تطبيقات رسومية وتطبيقات سطر أوامر مستقلة، وتعمل على أنظمة لينكس، وماك أو إس إكس، وآي أو إس، وأندرويد، ووين سي إي، وويندوز، والويب.
- Max/MSP : لغة برمجة مرئية تُغلف شيفرة برمجية مستقلة عن النظام الأساسي مع بيئة تشغيل خاصة بالنظام الأساسي في تطبيقات لأنظمة macOS وWindows. بيئة تشغيل Android متعددة المنصات. تسمح بتشغيل تطبيقات Android الأصلية دون تعديل على أنظمة iOS وmacOS.
- Mendix : منصة تطوير تطبيقات منخفضة التعليمات البرمجية قائمة على الحوسبة السحابية.
- MonoCross : نمط تصميم مفتوح المصدر يعتمد على نموذج-عرض-متحكم، حيث يكون النموذج والمتحكم متوافقين مع مختلف المنصات، بينما يكون العرض خاصًا بكل منصة. [ 16 ]
- مونو : نسخة مفتوحة المصدر ومتعددة المنصات من مايكروسوفت دوت نت (إطار عمل للتطبيقات ولغات البرمجة)
- MoSync : مجموعة تطوير برمجيات مفتوحة المصدر لتطوير تطبيقات منصات الهواتف المحمولة باستخدام لغة C++.
- إطار عمل تطبيقات موزيلا : منصة مفتوحة المصدر لبناء تطبيقات macOS وWindows وLinux.
- OpenGL : مكتبة رسومات ثلاثية الأبعاد.
- Pixel Game Maker MV : برنامج تطوير ألعاب ثنائي الأبعاد خاص بنظام التشغيل Windows لتطوير ألعاب Windows و Nintendo Switch .
- PureBasic : لغة برمجة وبيئة تطوير متكاملة خاصة لبناء تطبيقات macOS وWindows وLinux.
- ReNative : حزمة تطوير برمجية شاملة لبناء مشاريع متعددة المنصات باستخدام React Native. تتضمن أحدث منصات iOS، وtvOS، وAndroid، وAndroid TV، والويب، وTizen TV، وTizen Watch، وLG webOS، وmacOS/OSX، وWindows، وKaiOS، وFirefox OS، وFirefox TV.
- Qt : إطار عمل للتطبيقات ومجموعة أدوات واجهة المستخدم لأنظمة Unix مع X11 و Microsoft Windows و macOS وأنظمة أخرى - متوفرة بموجب تراخيص احتكارية ومفتوحة المصدر .
- مكتبة وسائط متعددة بسيطة وسريعة : واجهة برمجة تطبيقات C++ للوسائط المتعددة توفر وصولاً منخفضًا وعالي المستوى إلى الرسومات والإدخال والصوت وما إلى ذلك.
- Simple DirectMedia Layer : مكتبة وسائط متعددة مفتوحة المصدر مكتوبة بلغة C، تُنشئ طبقة تجريدية فوق واجهات برمجة تطبيقات الرسومات والصوت والإدخال لمختلف المنصات . تعمل على أنظمة تشغيل تشمل Linux وWindows وmacOS، وهي مُصممة خصيصًا للألعاب وتطبيقات الوسائط المتعددة.
- Smartface : أداة تطوير تطبيقات أصلية لإنشاء تطبيقات جوال لنظامي التشغيل Android و iOS، باستخدام محرر تصميم WYSIWYG مع محرر أكواد JavaScript.
- Tcl / Tk
- تيتانيوم موبايل : إطار عمل مفتوح المصدر متعدد المنصات لتطوير تطبيقات أندرويد و iOS.
- U++ : إطار عمل واجهة المستخدم الرسومية للغة C++ لتحسين الأداء. يتضمن مجموعة من المكتبات (واجهة المستخدم الرسومية، SQL، إلخ)، وبيئة تطوير متكاملة. يدعم أنظمة التشغيل Windows و macOS و Linux.
- يونيتي : مجموعة تطوير برمجيات أخرى متعددة المنصات تستخدم محرك يونيتي.
- منصة أونو : ويندوز، ماك أو إس، آي أو إس، أندرويد، ويب أسيمبلي ولينكس باستخدام لغة سي شارب.
- Unreal : مجموعة تطوير برمجيات متعددة المنصات تستخدم محرك Unreal Engine.
- محرك V-Play : V-Play عبارة عن حزمة تطوير برمجية (SDK) متعددة المنصات تعتمد على إطار عمل Qt الشهير. يتم إنشاء تطبيقات وألعاب V-Play داخل Qt Creator.
- WaveMaker : أداة تطوير منخفضة التعليمات البرمجية لإنشاء تطبيقات ويب متجاوبة وتطبيقات جوال هجينة (Android و iOS).
- WinDev : بيئة تطوير متكاملة لأنظمة ويندوز ولينكس و.نت وجافا ومتصفحات الويب. مُحسَّنة لتطبيقات الأعمال والتطبيقات الصناعية.
- wxWidgets : مجموعة أدوات مفتوحة المصدر للويدجت، وهي أيضًا إطار عمل للتطبيقات . [ 17 ] تعمل على أنظمة شبيهة بنظام يونكس مع X11 ، وأنظمة مايكروسوفت ويندوز وماك أو إس.
- Xojo : بيئة تطوير متكاملة سريعة (RAD IDE) تستخدم لغة برمجة كائنية التوجه لتجميع تطبيقات سطح المكتب والويب وتطبيقات iOS. يدعم Xojo التجميع الأصلي لأنظمة Windows و macOS و iOS و Linux، كما يمكنه إنشاء تطبيقات ويب مجمعة قابلة للتشغيل كخوادم مستقلة أو عبر CGI.
التحديات
توجد العديد من التحديات عند تطوير برامج متعددة المنصات:
- قد يكون اختبار التطبيقات متعددة المنصات أكثر تعقيدًا، نظرًا لأن المنصات المختلفة قد تُظهر سلوكيات مختلفة قليلاً أو أخطاءً دقيقة. وقد دفعت هذه المشكلة بعض المطورين إلى الاستهزاء بتطوير التطبيقات متعددة المنصات ووصفه بـ "اكتب مرة واحدة، وصحح الأخطاء في كل مكان"، وهو تعبير مستوحى من شعار شركة صن مايكروسيستمز التسويقي " اكتب مرة واحدة، وشغّل في أي مكان ".
- غالباً ما يقتصر المطورون على استخدام الحد الأدنى من الميزات المتاحة على جميع المنصات. قد يُعيق هذا أداء التطبيق أو يمنع المطورين من استخدام الميزات الأكثر تقدماً في كل منصة.
- تختلف معايير واجهة المستخدم باختلاف المنصات، وهو ما لا تتوافق معه التطبيقات متعددة المنصات دائمًا. على سبيل المثال، من المفترض أن تضع التطبيقات المصممة لنظامي macOS و GNOME الزر الأكثر أهمية على الجانب الأيمن من النافذة أو مربع الحوار، بينما يتبع نظاما Microsoft Windows و KDE معيارًا معاكسًا. ورغم أن العديد من هذه الاختلافات طفيفة، إلا أن التطبيق متعدد المنصات الذي لا يلتزم بهذه المعايير قد يبدو غير سلس أو غريبًا للمستخدم. عند العمل بسرعة، قد تؤدي هذه المعايير المتضاربة إلى فقدان البيانات ، كما في مربع حوار لتأكيد حفظ التغييرات أو تجاهلها.
- يجب ترجمة لغات البرمجة النصية ورمز الآلة الافتراضية إلى رمز تنفيذي أصلي في كل مرة تُستخدم فيها، مما يُؤثر سلبًا على الأداء. يمكن التخفيف من هذا التأثير باستخدام تقنيات مثل الترجمة الفورية ؛ ولكن قد يكون بعض العبء الحسابي أمرًا لا مفر منه.
- تتطلب المنصات المختلفة استخدام تنسيقات حزم أصلية مثل RPM و MSI . وتلبي برامج التثبيت متعددة المنصات مثل InstallAnywhere هذه الحاجة.
- قد تعاني بيئات التنفيذ متعددة المنصات من ثغرات أمنية متعددة المنصات، مما يخلق بيئة خصبة للبرمجيات الخبيثة متعددة المنصات. [ 18 ]
انظر أيضاً
مراجع
- ↑ "إرشادات التصميم: مسرد المصطلحات" . java.sun.com. مؤرشف من الأصل بتاريخ 13 فبراير 2012. تم الاطلاع عليه بتاريخ 19 أكتوبر 2011 .
- ↑ "مدونة SDD Technology: تعريف المنصات المتعددة" . SDD Technology . تم الاطلاع بتاريخ 18-10-2020 .
- ↑ لي ب ريتشاردسون (2016-02-16). "Xamarin vs Ionic: مقارنة بين تطبيقات الهاتف المحمول متعددة المنصات" .
- 1 2 "تعريف المنصة" . مشروع معلومات لينكس . تم الاسترجاع في 27-03-2014 .
- ↑ "حول مونو" . mono-project.com . تم الاطلاع عليه بتاريخ 17-12-2015 .
- ↑ كورتي، ساشا ب. (أكتوبر 2011). "المتصفح واكتشاف الميزات" . مجلة MSDN . تم الاطلاع عليه بتاريخ 28 يناير 2014 .
- ↑ تشودري، إس آر (2014). "اختبار وصيانة تطبيقات الويب والهواتف المحمولة عبر المنصات". وقائع المؤتمر الدولي السادس والثلاثين لهندسة البرمجيات . ص 642-645 . doi : 10.1145/2591062.2591097 . hdl : 1853/53588 . ISBN 9781450327688. S2CID 1903037 .
- ↑ ميهروترا، برانوب (1 ديسمبر 2020). "حزمة Collabora Office تحصل على تصميم جديد لأجهزة Android اللوحية وأجهزة Chromebook" . XDA-Developers . تم الاطلاع عليه بتاريخ 15 يناير 2021.
تُعد Collabora Office بديلاً شائعًا مفتوح المصدر لحزمة Microsoft Office. وهي مبنية على LibreOffice، ومتوفرة على مجموعة متنوعة من المنصات، بما في ذلك Windows وLinux وiOS وAndroid. في يوليو من هذا العام، أضاف تحديث رئيسي لحزمة Office دعمًا لأجهزة Chrome OS.
- ↑ "أصبح تطبيق Collabora Office على نظامي iOS وAndroid أفضل!" . Adfinis . 15 ديسمبر 2020. تاريخ الاسترجاع: 15 يناير 2021.
...واجهات مُحسّنة للمس: واحدة للأجهزة اللوحية وأخرى لشاشات الهواتف. ...(iOS، iPadOS، Chromebooks، Android).
- ↑ "جهاز Nextcloud Ubuntu يضيف Collabora Online إلى صورة Raspberry Pi" . MuyLinux . 2021-03-26 . تم الاسترجاع في 2021-03-30 .
أول حل عملي مُستضاف ذاتيًا لمكتب الويب لمنصة Raspberry Pi 4 الشهيرة
- ↑ كريبا. ساحة كويك 3 ، جاينت بومبكاست ، 15 فبراير 2013.
- ↑ تشارنوك، توم. "نظرة فاحصة على مجموعة أدوات بدء تشغيل الإنترنت لجهاز دريم كاست" .
- ↑ "مجموعة أدوات واجهة المستخدم الرسومية، صفحة الإطار" . geocities.com . مؤرشف من الأصل في 26 أكتوبر 2009.
- ↑ "أسئلة وأجوبة مستقلة عن المنصة" . مؤرشف من الأصل بتاريخ 16-08-2008 . تم الاطلاع عليه بتاريخ 25-04-2009 .
- ↑ "مكتبات SDK متعددة المنصات للتعرف على المستندات والطب والتصوير والوسائط المتعددة" . www.leadtools.com . تاريخ الاسترجاع: 3 مارس 2021 .
- ↑ "12 فائدة لتطوير تطبيقات Xamarin متعددة المنصات" . HeadWorks . 15 مارس 2019.
- ↑ "wxWidgets: مكتبة واجهة المستخدم الرسومية متعددة المنصات" . wxwidgets.org .
- ↑ وارن، توم (14 يناير 2020). "مايكروسوفت تودع ويندوز 7 وملايين أجهزة الكمبيوتر التي لا تزال تعمل به" . ذا فيرج . تم الاطلاع عليه بتاريخ 6 فبراير 2020 .
- برامج متعددة المنصات
- منصات الحوسبة
- قابلية التشغيل البيني
