بينما يخطط أثرياء العالم لإنشاء مراكز بيانات لتشغيل تريليونات الأسطر من أكواد الذكاء الاصطناعي، اتجه مهندس برمجيات واحد في اتجاه مختلف تمامًا: بناء نظام بيئي لكتابة وتشغيل تطبيقات صغيرة تعمل على أجهزة الكمبيوتر المكتبية، وكأننا عدنا إلى عام 1992.
وصف تاروين سترو-سباير، الذي وصف نفسه بأنه «صانع أشياء»، بيئة تشغيل JavaScript تُدعى TinyJS، مخصصة لإنشاء تطبيقات صغيرة جدًا (العديد منها يشغل حوالي 6 ميجابايت أو أقل على القرص) لأنظمة macOS وLinux وWindows.
ما الذي يميز TinyJS؟
يوضح المصدر أن TinyJS ليس إطار عمل بدون كود بقدرات محدودة، بل يوفر قوة البرمجة الكاملة للغة JavaScript، بالإضافة إلى إمكانيات العرض المرئي والاتصال الخاصة بنظام التشغيل الأساسي.
يكمن سر اقتصاد TinyJS في أنه يستخدم نافذة WebView الخاصة بكل نظام تشغيل، مستفيدًا من محرك المتصفح المدمج لعرض التطبيق بصريًا، بدلاً من تنفيذ طبقة واجهة مستخدم من الصفر. يستخدم WebKit لتشغيل التطبيقات بهذه الطريقة على macOS، وWebView2 لنظام Windows، وWebKitGTK لنظام Linux.
يختلف نهج TinyJS بشكل كبير عن استخدام إطار عمل Electron، الذي يضم نواة متصفح Chromium مفتوحة المصدر مع كل تطبيق سطح مكتب. ولكن بينما يعد Electron بمظهر وإحساس متطابقين للتطبيق عبر جميع المنصات، فإن تطبيقات TinyJS ستظهر اختلافات بصرية طفيفة عند تشغيلها على المنصات المختلفة، بسبب الفروق الطفيفة في كيفية عمل محرك العرض الخاص بكل نظام تشغيل.
يدفع تطبيق Electron ثمن هذا التوحيد عبر المنصات: فمع Electron، يمكن أن يصل حجم أبسط تطبيق إلى 150 ميجابايت.
كيف يعمل TinyJS؟
النواة الأساسية لـ TinyJS هي txiki.js، وهي بيئة تشغيل JavaScript مدمجة للغاية كتبها ساؤول إيبارا كوريتجيه، وتجعل Deno وBun يبدوان كعملاقين. يبلغ حجم حزمة البدء حوالي 5.6 ميجابايت، ويشغل المشغل ميجابايت أخرى تقريبًا. والباقي من الحزمة هو بالأساس كود المطور.
قام سترو-سباير أيضًا بتبسيط عملية التطوير باستخدام آليات الاتصال بين العمليات في نظام التشغيل للتعامل مع نقل البيانات، مما يلغي الحاجة إلى تضمين خادم HTTP لكل تطبيق، وما يترتب على ذلك من مشكلات أمنية.
يتم جميع عمليات البرمجة في TinyJS باستخدام JavaScript وCSS وHTML – دون الحاجة إلى التجميع. وهناك متسع كبير للإبداع هنا، حيث تتزايد قدرات تصميم الويب بشكل كبير في الآونة الأخيرة.
بالإضافة إلى ذلك، يسلم TinyJS الكثير من بنية التطبيق الأساسية لنظام التشغيل – مثل مربعات الحوار والقوائم وعلبة النظام والحافظة والتحديثات التلقائية – والتي سيتعين استيرادها في Tauri كإضافات واحدة تلو الأخرى.
لا يحتاج المطورون إلى Node.js كاعتمادية هنا، إلا إذا أرادوا تشغيل إطار عمل يتطلب ذلك، مثل Vite. يمكنه أيضًا دعم أطر عمل JavaScript أخرى مثل React وVue وSvelte. أو يمكن تشغيله بدون أي اعتماديات على الإطلاق.
يمكنك أيضًا استخدام TinyJS لتغليف صفحة ويب، عن طريق توجيه النافذة إلى عنوان URL. تخيل أن يكون موقعك المفضل كتطبيق على سطح مكتبك.
أنشأ سترو-سباير متجر تطبيقات يمكن تشغيله، بطبيعة الحال، من سطح المكتب (يمكن تنزيل نسخة Windows المضغوطة من هنا). وحتى وقت النشر، يقوم بفهرسة 25 تطبيقًا نموذجيًا كتبها.
تتنوع التطبيقات النموذجية، وجميعها مجانية، في فائدتها وغرابتها. تتضمن الرف ساعة عالمية (يتم شحنها كملف مضغوط بحجم 3.8 ميجابايت)، وتطبيق سجل الحافظة (3.7 ميجابايت)، ومحرر Markdown (4.9 ميجابايت)، وشبح سطح مكتب (3.8 ميجابايت)، ومتصفح SQLite (4.1 ميجابايت)، والأكثر إثارة للإعجاب، نسخة طبق الأصل من مشغل الموسيقى الشهير Winamp، والذي يتطلب 7.4 ميجابايت فقط من القرص الصلب الخاص بك.
بمجرد إقناع Windows Defender بالوثوق بالمشغل، يمكنك تنزيل وفتح التطبيق الذي تختاره مباشرة من الرف.
في الاختبارات، كان تطبيق النسخ واللصق، المكتوب بوضوح لمفاتيح اختصار Mac، لا يزال مليئًا بالأخطاء لنظام Windows، على الرغم من أن الساعة العالمية عملت بشكل جيد واستهلكت 15.5 ميجابايت فقط من ذاكرة الوصول العشوائي على جهازي. (تحذير: يتحقق المشغل من التجزئة لضمان صلاحية التطبيقات التي تم تنزيلها، على الرغم من أنك تثق في أن سترو-سباير لا يحمل أي نية سيئة هنا).
أو، يمكنك ببساطة تخطي الأمثلة وبناء تطبيقات الاختبار الخاصة بك.
تعد أجهزة الكمبيوتر الشخصية اليوم قوية، ولكن لا تزال هناك العديد من الأسباب الوجيهة لبناء تطبيقات صغيرة حتى بمعايير القرن الماضي. فالتطبيقات التجارية (تلك التي لا تزال موجودة على أي حال) ومتصفحات الويب تستهلك كميات كبيرة من ذاكرة الوصول العشوائي، لذا فإن إضافة المزيد من الأدوات إلى سطح المكتب بحد أدنى من النفقات العامة يعد أمرًا إيجابيًا. بالإضافة إلى ذلك، على عكس التطبيقات الضخمة، تبدأ التطبيقات الصغيرة بسرعة، ومن الناحية النظرية، تستهلك طاقة أقل على أجهزة الكمبيوتر المحمولة.
®
جرّب الأداة: منسق ومتحقق JSON




