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

في الحوسبة ، البرمجيات متعددة المنصات (وتسمى أيضًا برمجيات متعددة المنصات ، أو برمجيات مستقلة عن منصة ، أو برمجيات غير مرتبطة بمنصة ) هي برمجيات حاسوبية مصممة للعمل في العديد من منصات الحوسبة . [1] تتطلب بعض البرمجيات متعددة المنصات إنشاءً منفصلًا لكل منصة، ولكن يمكن تشغيل بعضها مباشرةً على أي منصة دون تحضير خاص، حيث يتم كتابتها بلغة مفسرة أو تجميعها إلى بايت كود محمول حيث تكون المترجمات أو حزم وقت التشغيل مكونات مشتركة أو قياسية لجميع المنصات المدعومة. [2]

على سبيل المثال، قد يعمل تطبيق متعدد المنصات على Linux و macOS و Microsoft Windows . وقد يعمل برنامج متعدد المنصات على العديد من المنصات، أو على منصتين فقط. بعض الأطر للتطوير متعدد المنصات هي Codename One وArkUI-X و Kivy و Qt و GTK و Flutter و NativeScript و Xamarin و Apache Cordova و Ionic و React Native . [3]

المنصات

يمكن أن تشير المنصة إلى نوع المعالج (وحدة المعالجة المركزية) أو الأجهزة الأخرى التي يعمل عليها نظام التشغيل (OS) أو التطبيق ، أو نوع نظام التشغيل، أو مزيج من الاثنين. [4] مثال على منصة شائعة هو Android الذي يعمل على عائلة بنية ARM . المنصات الأخرى المعروفة هي Linux / Unix و macOS و Windows ، وكلها متعددة الأنظمة الأساسية. [4] يمكن كتابة التطبيقات لتعتمد على ميزات منصة معينة - إما الأجهزة أو نظام التشغيل أو الآلة الافتراضية (VM) التي تعمل عليها. على سبيل المثال، منصة Java هي منصة VM شائعة تعمل على العديد من أنظمة التشغيل وأنواع الأجهزة.

الأجهزة

يمكن أن تشير منصة الأجهزة إلى بنية مجموعة التعليمات . على سبيل المثال: ARM أو بنية x86. يمكن لهذه الأجهزة تشغيل أنظمة تشغيل مختلفة.

تعمل الهواتف الذكية والأجهزة اللوحية بشكل عام على بنية ARM، وهي تعمل غالبًا بنظام التشغيل Android أو iOS وأنظمة التشغيل المحمولة الأخرى .

برمجة

يمكن أن تكون منصة البرمجيات إما نظام تشغيل (OS) أو بيئة برمجة ، على الرغم من أنها في أغلب الأحيان عبارة عن مزيج من الاثنين. الاستثناء هو Java ، الذي يستخدم آلة افتراضية مستقلة عن نظام التشغيل (VM) لتنفيذ بايت كود Java . بعض منصات البرمجيات هي:

ثانوية، تاريخية

جافا

يتم تجميع لغة Java عادةً لتشغيلها على جهاز افتراضي يشكل جزءًا من منصة Java. تعد الآلة الافتراضية Java (Java VM, JVM) وحدة معالجة مركزية يتم تنفيذها في البرامج، والتي تقوم بتشغيل جميع أكواد Java. يتيح هذا تشغيل نفس الكود على جميع الأنظمة التي تنفذ JVM. يمكن تنفيذ برامج Java بواسطة معالج Java قائم على الأجهزة . يستخدم هذا غالبًا في الأنظمة المضمنة.

يتمتع كود Java الذي يتم تشغيله في JVM بإمكانية الوصول إلى الخدمات المرتبطة بنظام التشغيل، مثل إدخال/إخراج القرص (I/O) والوصول إلى الشبكة، إذا تم منح الامتيازات المناسبة. يقوم JVM بإجراء مكالمات النظام نيابة عن تطبيق Java. يتيح هذا للمستخدمين تحديد مستوى الحماية المناسب، اعتمادًا على قائمة التحكم في الوصول (ACL). على سبيل المثال، عادةً ما يتم تمكين الوصول إلى القرص والشبكة لتطبيقات سطح المكتب، ولكن ليس بالنسبة إلى البرامج الصغيرة المستندة إلى المتصفح . يمكن أيضًا استخدام واجهة Java الأصلية (JNI) للوصول إلى الوظائف الخاصة بنظام التشغيل، مع فقدان قابلية النقل.

حاليًا، يمكن تشغيل برنامج Java Standard Edition على أنظمة تشغيل Microsoft Windows وmacOS والعديد من أنظمة التشغيل الشبيهة بـUnix والعديد من أنظمة التشغيل في الوقت الفعلي للأجهزة المضمنة. بالنسبة للتطبيقات المحمولة، تُستخدم مكونات إضافية للمتصفح للأجهزة التي تعمل بنظامي التشغيل Windows وMac، كما يحتوي Android على دعم مدمج لـJava. هناك أيضًا مجموعات فرعية من Java، مثل Java Card أو Java Platform, Micro Edition ، المصممة للأجهزة ذات الموارد المحدودة.

تطبيق

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

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

تطبيقات الويب

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

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

تتضمن الأمثلة البارزة لتطبيقات الويب المتقدمة واجهة الويب الخاصة بـ Gmail و Google Maps . تعتمد مثل هذه التطبيقات بشكل روتيني على ميزات إضافية موجودة فقط في الإصدارات الأحدث من متصفحات الويب الشائعة. تتضمن هذه الميزات Ajax و JavaScript و Dynamic HTML و SVG ومكونات أخرى لتطبيقات الويب الغنية .

تصميم

ونتيجة للتنافس بين المصالح المتعلقة بالتوافق والوظيفة، ظهرت العديد من استراتيجيات التصميم.

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

التدهور الرشيق

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

قواعد بيانات متعددة

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

قاعدة بيانات واحدة

تعتمد هذه الاستراتيجية على وجود قاعدة بيانات واحدة يمكن تجميعها إلى تنسيقات متعددة خاصة بالمنصة. إحدى التقنيات هي التجميع المشروط . باستخدام هذه التقنية، لا يتم تكرار الكود المشترك بين جميع المنصات. يتم جعل كتل التعليمات البرمجية ذات الصلة بمنصات معينة مشروطة، بحيث يتم تفسيرها أو تجميعها فقط عند الحاجة. تقنية أخرى هي فصل الوظائف، والتي تعمل على تعطيل الوظائف التي لا تدعمها المتصفحات أو أنظمة التشغيل، مع الاستمرار في تقديم تطبيق كامل للمستخدم. (انظر أيضًا: فصل الاهتمامات .) تُستخدم هذه التقنية في تطوير الويب حيث يمكن للكود المفسر (كما هو الحال في لغات البرمجة النصية) الاستعلام عن المنصة التي يعمل عليها لتنفيذ كتل مختلفة بشكل مشروط. [6]

مكتبات الطرف الثالث

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

تصميم ويب متجاوب

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

الاختبار

تتطلب التطبيقات متعددة الأنظمة الأساسية اختبارات تكامل أكثر بكثير . تمنع بعض متصفحات الويب تثبيت إصدارات مختلفة على نفس الجهاز. هناك العديد من الأساليب المستخدمة لاستهداف منصات متعددة، ولكن جميعها تؤدي إلى برامج تتطلب جهدًا يدويًا كبيرًا للاختبار والصيانة. [7] تُستخدم أحيانًا تقنيات مثل المحاكاة الافتراضية الكاملة كحل بديل لهذه المشكلة.

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

التطبيقات التقليدية

تزداد شعبية تطبيقات الويب بشكل متزايد، ولكن العديد من مستخدمي الكمبيوتر ما زالوا يستخدمون برامج التطبيقات التقليدية التي لا تعتمد على بنية العميل/خادم الويب. والتمييز بين التطبيقات التقليدية وتطبيقات الويب ليس واضحًا دائمًا. تتداخل الميزات وطرق التثبيت والهندسة المعمارية لتطبيقات الويب والتطبيقات التقليدية وتطمس التمييز. ومع ذلك، فإن هذا التمييز التبسيطي هو تعميم شائع ومفيد.

برنامج ثنائي

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

بالنسبة للبرامج التي يتم توزيعها كملف ثنائي قابل للتنفيذ، مثل تلك المكتوبة بلغة C أو C++، يجب أن يكون هناك بناء برمجي لكل منصة، باستخدام مجموعة أدوات تترجم -تترجم- قاعدة كود واحدة إلى ملفات ثنائية قابلة للتنفيذ متعددة. على سبيل المثال، يتوفر Firefox ، وهو متصفح ويب مفتوح المصدر، على أنظمة Windows وmacOS (كل من PowerPC وx86 من خلال ما تسميه شركة Apple Inc. ثنائي عالمي ) وLinux وBSD على هياكل كمبيوتر متعددة. المنصات الأربع (في هذه الحالة، Windows وmacOS وLinux وBSD) هي توزيعات قابلة للتنفيذ منفصلة، ​​على الرغم من أنها تأتي إلى حد كبير من نفس الكود المصدر . في حالات نادرة، يتم دمج الكود القابل للتنفيذ المبني لمنصات متعددة في ملف قابل للتنفيذ واحد يسمى ملف ثنائي سميك .

قد لا يكون استخدام مجموعات أدوات مختلفة كافياً لبناء ملفات قابلة للتنفيذ تعمل على منصات مختلفة. في هذه الحالة، يجب على المبرمجين نقل الكود المصدر إلى المنصة الجديدة. على سبيل المثال، يمكن تعديل تطبيق مثل Firefox، الذي يعمل بالفعل على Windows على عائلة x86، وإعادة بنائه ليعمل على Linux على x86 (وربما على هياكل معمارية أخرى) أيضًا. يمكن تخزين الإصدارات المتعددة من الكود كقاعدة كود منفصلة، ​​أو دمجها في قاعدة كود واحدة.

البديل للنقل هو المحاكاة الافتراضية عبر الأنظمة الأساسية ، حيث يمكن تشغيل التطبيقات المجمعة لمنصة واحدة على منصة أخرى دون تعديل الكود المصدر أو الثنائيات. على سبيل المثال، يقوم برنامج Rosetta من Apple ، المدمج في أجهزة كمبيوتر Macintosh التي تعمل بنظام Intel ، بتشغيل التطبيقات المجمعة للجيل السابق من أجهزة Mac التي تستخدم وحدات المعالجة المركزية PowerPC. مثال آخر هو IBM PowerVM Lx86 ، والذي يسمح لتطبيقات Linux/x86 بالعمل دون تعديل على Linux/Power OS.

مثال على برنامج ثنائي متعدد الأنظمة:

  • تم تصميم مجموعة 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]

النصوص واللغات المفسرة

يمكن اعتبار البرنامج النصي متعدد المنصات إذا كان المترجم الخاص به متاحًا على منصات متعددة ويستخدم البرنامج النصي فقط المرافق المضمنة في اللغة. على سبيل المثال، من المرجح أن يعمل البرنامج النصي المكتوب بلغة بايثون لنظام يشبه يونكس مع القليل من التعديلات أو بدونها على نظام التشغيل Windows، لأن بايثون يعمل أيضًا على نظام التشغيل Windows؛ في الواقع، هناك العديد من التطبيقات (على سبيل المثال IronPython لـ .NET Framework ). وينطبق الشيء نفسه على العديد من لغات البرمجة النصية مفتوحة المصدر .

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

بعض لغات البرمجة النصية الشائعة عبر الأنظمة الأساسية هي:

  • bashغلاف Unix يعمل عادةً على Linux وأنظمة Unix الحديثة الأخرى، بالإضافة إلى Windows عبر طبقة توافق Cygwin POSIX .
  • Perl – تم إصداره لأول مرة في عام 1987. يستخدم في برمجة CGI ومهام إدارة النظام الصغيرة والمزيد.
  • PHP – يستخدم في الغالب لتطبيقات الويب.
  • بايثون – لغة تركز على التطوير السريع للتطبيقات وسهولة الكتابة، بدلاً من الكفاءة في وقت التشغيل.
  • Ruby – لغة برمجة كائنية التوجه تهدف إلى أن تكون سهلة القراءة. ويمكن أيضًا استخدامها على الويب من خلال Ruby on Rails .
  • Tcl – لغة برمجة ديناميكية، مناسبة لمجموعة واسعة من الاستخدامات، بما في ذلك تطبيقات الويب وسطح المكتب، والشبكات، والإدارة، والاختبار وغير ذلك الكثير.

ألعاب الفيديو

العابر للأنظمة الأساسية أو متعدد الأنظمة الأساسية هو مصطلح يمكن أن ينطبق أيضًا على ألعاب الفيديو التي تم إصدارها على مجموعة من وحدات تحكم ألعاب الفيديو . تشمل أمثلة الألعاب العابرة للأنظمة الأساسية ما يلي: Miner 2049er و Tomb Raider: Legend وسلسلة FIFA وسلسلة NHL و Minecraft .

تم إصدار كل منهما عبر مجموعة متنوعة من منصات الألعاب، مثل Wii ، وPlayStation 3 ، وXbox 360 ، وأجهزة الكمبيوتر الشخصية ، والأجهزة المحمولة .

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

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

اللعب عبر المنصات

لقد قام العديد من المطورين بتنفيذ طرق للعب الألعاب عبر الإنترنت أثناء استخدام منصات مختلفة. تمتلك كل من Psyonix و Epic Games و Microsoft و Valve تقنية تسمح للاعبي Xbox 360 و PlayStation 3 باللعب مع لاعبي الكمبيوتر الشخصي، تاركين قرار المنصة التي سيتم استخدامها للمستهلكين. كانت أول لعبة تسمح بهذا المستوى من التفاعل بين ألعاب الكمبيوتر الشخصي وألعاب وحدة التحكم (Dreamcast مع لوحة مفاتيح وفأرة تم إنتاجهما خصيصًا) هي Quake 3. [11] [12]

تتضمن الألعاب التي تتميز باللعب عبر الإنترنت عبر الأنظمة الأساسية Rocket League و Final Fantasy XIV و Street Fighter V و Killer Instinct و Paragon و Fable Fortune و Minecraft مع تحديث Better Together على Windows 10 وإصدارات VR و Pocket Edition و Xbox One .

برمجة

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

النهج

هناك طرق مختلفة لكتابة تطبيق متعدد المنصات. أحد الأساليب هو إنشاء إصدارات متعددة من نفس البرنامج في أشجار مصدر مختلفة - بعبارة أخرى، قد يكون لإصدار Microsoft Windows من أحد التطبيقات مجموعة واحدة من ملفات التعليمات البرمجية المصدرية وإصدار Macintosh مجموعة أخرى، بينما قد يكون لنظام FOSS *nix مجموعة ثالثة. في حين أن هذا واضح، إلا أنه مقارنة بتطوير نظام أساسي واحد فقط، قد يكلف دفع مبلغ أكبر لفريق أكبر أو إصدار المنتجات بشكل أبطأ. يمكن أن يؤدي أيضًا إلى تعقب المزيد من الأخطاء وإصلاحها.

هناك نهج آخر يتمثل في استخدام برامج تخفي الاختلافات بين المنصات. تعمل طبقة التجريد هذه على عزل التطبيق عن المنصة. مثل هذه التطبيقات لا تعتمد على منصة معينة . يتم إنشاء التطبيقات التي تعمل على JVM بهذه الطريقة.

تمزج بعض التطبيقات بين طرق مختلفة من البرمجة عبر الأنظمة الأساسية لإنشاء التطبيق النهائي. ومن الأمثلة على ذلك متصفح الويب Firefox، الذي يستخدم التجريد لبناء بعض المكونات ذات المستوى الأدنى، مع وجود أشجار فرعية منفصلة للمصدر لتنفيذ ميزات خاصة بالمنصة (مثل واجهة المستخدم الرسومية)، وتنفيذ أكثر من لغة برمجة نصية لتسهيل قابلية نقل البرامج . ينفذ Firefox XUL و CSS وJavaScript لتوسيع المتصفح، بالإضافة إلى مكونات إضافية للمتصفح على غرار Netscape الكلاسيكية . تمت كتابة جزء كبير من المتصفح نفسه بلغات XUL وCSS وJavaScript.

أدوات وبيئات

هناك العديد من الأدوات [13] [14] المتاحة للمساعدة في عملية البرمجة عبر الأنظمة الأساسية:

  • 8- لغة تطوير تستخدم Juce كطبقة واجهة رسومية. وهي تدعم حاليًا Android وiOS وWindows وmacOS وLinux وRaspberry Pi.
  • Anant Computing: منصة تطبيقات جوال تعمل بجميع اللغات الهندية، بما في ذلك لوحات المفاتيح الخاصة بها، كما تدعم أيضًا AppWallet والأداء الأصلي في جميع أنظمة التشغيل.
  • AppearIQ: إطار عمل يدعم سير عمل تطوير التطبيقات ونشرها في بيئة مؤسسية. تقدم الحاويات المطورة محليًا ميزات الأجهزة للأجهزة المحمولة أو الأجهزة اللوحية من خلال واجهة برمجة التطبيقات إلى كود HTML5، مما يسهل تطوير التطبيقات المحمولة التي تعمل على منصات مختلفة.
  • Boden: إطار عمل لواجهة المستخدم مكتوب بلغة C++.
  • القاهرة : مكتبة برمجيات مجانية تستخدم لتوفير واجهة برمجة تطبيقات تعتمد على الرسومات المتجهة ولا تعتمد على الأجهزة. وهي مصممة لتوفير أساسيات للرسم ثنائي الأبعاد عبر عدد من الواجهات الخلفية المختلفة. القاهرة مكتوبة بلغة C ولديها ارتباطات بالعديد من لغات البرمجة.
  • Cocos2d : مجموعة أدوات مفتوحة المصدر ومحرك ألعاب لتطوير الألعاب والتطبيقات البسيطة ثنائية الأبعاد وثلاثية الأبعاد عبر الأنظمة الأساسية.
  • Codename One : إطار عمل مفتوح المصدر للكتابة مرة واحدة والتشغيل في أي مكان (WORA) لمطوري Java وKotlin.
  • Delphi : بيئة تطوير متكاملة تستخدم لغة تعتمد على Pascal للتطوير. وهي تدعم Android وiOS وWindows وmacOS وLinux.
  • Ecere SDK: مجموعة أدوات واجهة المستخدم الرسومية والرسوميات ثنائية الأبعاد/ثلاثية الأبعاد وبيئة التطوير المتكاملة، مكتوبة بلغة eC مع دعم للغات إضافية مثل C وPython. وهي تدعم Linux وFreeBSD وWindows وAndroid وmacOS والويب من خلال Emscripten أو Binaryen (WebAssembly).
  • Eclipse : بيئة تطوير مفتوحة المصدر. تم تنفيذها بلغة Java مع بنية قابلة للتكوين تدعم العديد من الأدوات لتطوير البرامج. تتوفر إضافات للعديد من اللغات، بما في ذلك Java وC++.
  • FLTK : مجموعة أدوات مفتوحة المصدر، ولكنها أخف وزناً لأنها تقتصر على واجهة المستخدم الرسومية.
  • Flutter : إطار عمل واجهة مستخدم متعدد الأنظمة الأساسية لنظامي التشغيل Android وiOS تم تطويره بواسطة Google .
  • 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 : مجموعة أدوات تطوير برمجيات تستخدم محرك Godot.
  • GTK +: مجموعة أدوات مفتوحة المصدر لأنظمة تشبه Unix مع X11 وMicrosoft Windows.
  • Haxe : لغة مفتوحة المصدر.
  • عصير : إطار عمل تطبيقي مكتوب بلغة C++، يستخدم لكتابة برامج أصلية على أنظمة عديدة (Microsoft Windows، POSIX، macOS)، دون أي تغيير في الكود.
  • Kivy : إطار عمل مفتوح المصدر لواجهة المستخدم ومتعدد المنصات مكتوب بلغة Python . وهو يدعم Android و iOS و Linux و OS X و Windows و Raspberry Pi .
  • LEADTOOLS: مكتبات SDK متعددة الأنظمة لدمج تقنيات التعرف والمستندات والطب والتصوير والوسائط المتعددة في أنظمة التشغيل Windows وiOS وmacOS وAndroid وLinux وتطبيقات الويب. [15]
  • LiveCode : لغة تطوير تطبيقات سريعة متعددة الأنظمة التجارية مستوحاة من HyperTalk.
  • Lazarus : بيئة برمجة لمترجم FreePascal. تدعم إنشاء تطبيقات رسومية وتطبيقات وحدة تحكم مستقلة وتعمل على Linux وMacOSX وiOS وAndroid وWinCE وWindows وWEB.
  • Max/MSP : لغة برمجة مرئية تغلف الكود المستقل عن النظام الأساسي ببيئة تشغيل خاصة بالنظام الأساسي في تطبيقات لنظامي التشغيل macOS وWindows بيئة تشغيل Android متعددة الأنظمة الأساسية. تسمح بتشغيل تطبيقات Android غير المعدلة بشكل أصلي على iOS وmacOS
  • Mendix : منصة تطوير تطبيقات منخفضة التكلفة تعتمد على السحابة.
  • MonoCross : نمط تصميم مفتوح المصدر للنموذج والعرض ووحدة التحكم حيث يكون النموذج ووحدة التحكم متعددي الأنظمة الأساسية ولكن العرض خاص بالمنصة. [16]
  • Mono : إصدار مفتوح المصدر ومتعدد المنصات من Microsoft .NET (إطار عمل للتطبيقات ولغات البرمجة)
  • MoSync : مجموعة أدوات تطوير برمجيات مفتوحة المصدر لتطوير تطبيقات المنصات المحمولة في عائلة C++.
  • إطار عمل تطبيقات Mozilla : منصة مفتوحة المصدر لبناء تطبيقات 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++ متعددة الوسائط توفر الوصول على مستوى منخفض وعالي إلى الرسومات والإدخال والصوت وما إلى ذلك.
  • طبقة الوسائط المباشرة البسيطة : مكتبة وسائط متعددة مفتوحة المصدر مكتوبة بلغة C تعمل على إنشاء تجريد على واجهات برمجة التطبيقات الرسومية والصوتية والإدخالية للعديد من المنصات . تعمل على أنظمة التشغيل بما في ذلك Linux وWindows وmacOS وهي موجهة للألعاب وتطبيقات الوسائط المتعددة.
  • Smartface : أداة تطوير تطبيقات أصلية لإنشاء تطبيقات جوال لنظامي التشغيل Android وiOS، باستخدام محرر تصميم WYSIWYG مع محرر كود JavaScript.
  • تي سي ال / تي كيه
  • Titanium Mobile : إطار عمل مفتوح المصدر متعدد المنصات لتطوير Android و iOS.
  • U++ : إطار عمل واجهة مستخدم رسومية بلغة C++ لتحسين الأداء. يتضمن مجموعة من المكتبات (واجهة المستخدم الرسومية، SQL، إلخ..)، وبيئة تطوير متكاملة. وهو يدعم أنظمة التشغيل Windows وmacOS وLinux.
  • Unity : مجموعة أدوات تطوير برمجيات أخرى متعددة الأنظمة تستخدم محرك Unity.
  • منصة Uno : Windows، macOS، iOS، Android، WebAssembly وLinux باستخدام C#.
  • Unreal : مجموعة أدوات تطوير برمجيات متعددة الأنظمة تستخدم محرك Unreal.
  • محرك V-Play : V-Play عبارة عن مجموعة أدوات تطوير برمجية متعددة الأنظمة تعتمد على إطار عمل Qt الشهير. يتم إنشاء تطبيقات وألعاب V-Play داخل Qt Creator.
  • WaveMaker : أداة تطوير منخفضة التكلفة لإنشاء تطبيقات ويب سريعة الاستجابة وتطبيقات جوال هجينة (Android وiOS).
  • WinDev: بيئة تطوير متكاملة لأنظمة Windows وLinux و.Net وJava ومتصفحات الويب. تم تحسينها لتطبيقات الأعمال والصناعة.
  • wxWidgets : مجموعة أدوات واجهة مستخدم مفتوحة المصدر وهي أيضًا إطار عمل للتطبيق . [17] تعمل على أنظمة شبيهة بنظام يونكس مع X11 وMicrosoft Windows وmacOS.
  • Xojo : بيئة تطوير متكاملة RAD تستخدم لغة برمجة موجهة للكائنات لتجميع تطبيقات سطح المكتب والويب وiOS. يدعم Xojo التجميع الأصلي لأنظمة Windows وmacOS وiOS وLinux، ويمكنه أيضًا إنشاء تطبيقات ويب مجمعة يمكن تشغيلها كخوادم مستقلة أو من خلال CGI.

التحديات

هناك العديد من التحديات عند تطوير البرامج متعددة الأنظمة.

  • قد يكون اختبار التطبيقات متعددة الأنظمة أكثر تعقيدًا إلى حد كبير، نظرًا لأن الأنظمة المختلفة قد تظهر سلوكيات مختلفة قليلاً أو أخطاء خفية. وقد دفعت هذه المشكلة بعض المطورين إلى السخرية من تطوير الأنظمة المتعددة باعتباره "اكتب مرة واحدة، واعمل على تصحيح الأخطاء في كل مكان"، وهو ما يشبه شعار التسويق لشركة Sun Microsystems " اكتب مرة واحدة، واعمل في أي مكان ".
  • غالبًا ما يقتصر عمل المطورين على استخدام مجموعة فرعية من الميزات المشتركة الأدنى المتاحة على جميع المنصات. وقد يعيق هذا أداء التطبيق أو يمنع المطورين من استخدام الميزات الأكثر تقدمًا في كل منصة.
  • غالبًا ما يكون لدى المنصات المختلفة اتفاقيات مختلفة لواجهة المستخدم، والتي لا تستوعبها التطبيقات متعددة المنصات دائمًا. على سبيل المثال، من المفترض أن تضع التطبيقات المطورة لنظامي التشغيل macOS و GNOME الزر الأكثر أهمية على الجانب الأيمن من النافذة أو مربع الحوار، في حين أن Microsoft Windows و KDE لديهما الاتفاقية المعاكسة. على الرغم من أن العديد من هذه الاختلافات دقيقة، إلا أن التطبيق متعدد المنصات الذي لا يتوافق مع هذه الاتفاقيات قد يبدو أخرقًا أو غريبًا للمستخدم. عند العمل بسرعة، قد تؤدي مثل هذه الاتفاقيات المعارضة إلى فقدان البيانات ، كما هو الحال في مربع الحوار الذي يؤكد ما إذا كان يجب حفظ التغييرات أو تجاهلها.
  • يجب ترجمة لغات البرمجة النصية وبايت كود الآلة الافتراضية إلى كود قابل للتنفيذ في كل مرة يتم استخدامها، مما يفرض عقوبة على الأداء. يمكن التخفيف من هذه العقوبة باستخدام تقنيات مثل التجميع في الوقت المناسب ؛ ولكن قد يكون من غير الممكن تجنب بعض النفقات الحسابية.
  • تتطلب المنصات المختلفة استخدام تنسيقات الحزم الأصلية مثل RPM و MSI . تلبي برامج التثبيت متعددة المنصات مثل InstallAnywhere هذه الحاجة.
  • قد تعاني بيئات التنفيذ عبر الأنظمة الأساسية من ثغرات أمنية عبر الأنظمة الأساسية، مما يخلق بيئة خصبة للبرامج الضارة عبر الأنظمة الأساسية. [18]

انظر أيضا

مراجع

  1. ^ "Design Guidelines: Glossary". java.sun.com. مؤرشف من الأصل في 2012-02-13 . تم الاسترجاع في 2011-10-19 .
  2. ^ "مدونة SDD Technology: تعريف منصة متعددة". SDD Technology . تم الاسترجاع في 2020-10-18 .
  3. ^ Lee P Richardson (2016-02-16). "Xamarin vs Ionic: A Mobile, Cross Platform, Shootout".
  4. ^ "تعريف المنصة". مشروع معلومات لينكس . تم الاسترجاع في 2014-03-27 .
  5. ^ "حول مونو". mono-project.com . تم الاسترجاع في 2015-12-17 .
  6. ^ كورتي، ساشا ب. (أكتوبر 2011). "اكتشاف المتصفح والميزات". مجلة MSDN . تم الاسترجاع في 28 يناير 2014 .
  7. ^ Choudhary, SR (2014). "اختبار وصيانة تطبيقات الويب والجوال عبر الأنظمة الأساسية". وقائع المؤتمر الدولي السادس والثلاثين حول هندسة البرمجيات. ص. 642-645. doi :10.1145/2591062.2591097. hdl : 1853/53588 . ISBN 9781450327688. S2CID  1903037.
  8. ^ مهروترا، برانوب (2020-12-01). "مجموعة Collabora Office تحصل على تصميم جديد لأجهزة Android اللوحية وأجهزة Chromebook". XDA-Developers . تم الاسترجاع في 2021-01-15 . Collabora Office هو بديل مفتوح المصدر شائع لمجموعة Microsoft Office. إنه يعتمد على LibreOffice، وهو متاح على مجموعة متنوعة من المنصات، بما في ذلك Windows وLinux وiOS وAndroid. في شهر يوليو من هذا العام، جلب تحديث رئيسي لمجموعة Office الدعم لأجهزة Chrome OS.
  9. ^ "برنامج Collabora Office على iOS وAndroid أصبح أفضل!". Adfinis . 2020-12-15 . تم الاسترجاع 2021-01-15 . ...واجهات محسّنة للمس: واحدة للأجهزة اللوحية وواحدة لشاشات الهواتف. ...(iOS، iPadOS، Chromebooks، Android).
  10. ^ "جهاز Nextcloud Ubuntu Appliance يضيف Collabora Online إلى صورة Raspberry Pi". MuyLinux . 2021-03-26 . تم الاسترجاع 2021-03-30 . أول حل قابل للتطبيق لمكتب الويب المستضاف ذاتيًا لمنصة Raspberry Pi 4 الشهيرة
  11. ^ Cribba. Quake III Arena، Giant Bombcast ، 15 فبراير 2013.
  12. ^ نظرة أقرب على مجموعة أدوات بدء تشغيل الإنترنت من Dreamcast
  13. ^ مجموعة أدوات واجهة المستخدم الرسومية، صفحة الإطار
  14. ^ "الأسئلة الشائعة حول المنصات المستقلة". مؤرشف من الأصل في 2008-08-16 . تم الاسترجاع في 2009-04-25 .
  15. ^ "مكتبات SDK متعددة المنصات للتعرف على المستندات والطب والتصوير والوسائط المتعددة". www.leadtools.com . تم الاسترجاع في 2021-03-03 .
  16. ^ "12 فائدة لتطوير التطبيقات متعددة المنصات باستخدام Xamarin". HeadWorks . 15 مارس 2019.
  17. ^ وصف WxWidgets
  18. ^ وارن، توم (2020-01-14). "مايكروسوفت تودع ويندوز 7 والملايين من أجهزة الكمبيوتر التي لا تزال تعمل به". ذا فيرج . تم الاسترجاع في 2020-02-06 .
تم الاسترجاع من "https://en.wikipedia.org/w/index.php?title=البرمجيات_متعددة_الأنظمة&oldid=1247633195"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate