نود.جي إس

نود.جي إس هو محرك جافاسكريبت بالوقت الفعلي مفتوح المصدر ومُصمم لكتابة تطبيقات متعدد المنصات، وكذلك تطبيقات سهلة التوسيع كخوادم الويب. تم اختياره بواسطة InfoWorld لجائزة تقنية العام في 2012. يسمح نود.جي إس للمبرمجين بكتابة برمجيات بلغة جافاسكربت تعمل خارج مُتصفح الويب، ويقوم NodeJS بترجمتها إلى لغة تفهمها الآلة من خلال مُحرك جافاسكربت V8 المصمم من طرف جوجل، والمستخدم في متصفح كروم وتستخدمه باقي المتصفحات المبنية على نواة كروميوم، هذا يمكن المبرمجين من برمجة العديد من الأمور باستخدام لغة جافاسكربت وجعلها تعمل خارج المتصفح، كبرمجة الواجهة الخلفية للمواقع (back-end)، برمجة سكربت يعمل على سطر الآوامر، وكذلك برمجة تطبيقات بواجهات رُسومية باستخدام تقنيات مثل آلكترون (Electron).
أُنشئ نود.جي إس على يد ريان دال ابتداءً في عام 2009، وقامت برعاية نموها Joyent، مشغله. يتألف نود.جي إس من في 8 التابع لجوجل مع العديد من المكتبات المدمجة. وأخذت بعض مواصفات مشروع CommonJS.
تكتب برامج نود.جي إس بلغة الجافا سكربت، باستخدام نمط حدثّي التوجه، إدخال وإخراج غير متزامنين للحد من النفقات وتحقيق أكبر قدر من قابلية التوسع. وعلى عكس أغلب برامج الجافاسكريبت فهي لا تشتغل على متصفح الويب، ولكن عوضا عن ذلك فيتم تشغيلها من طرف الخادم.
أمثلة
تطبيق كامل لبرنامج "أهلا بالعالم" كخادم ويب:
var http = require('http');
http.createServer(function (request, response) {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Hello World\n');
}).listen(8000);
console.log('Server running at http://localhost:8000/');
خادم ميفاق ضبط الإرسال ينصت لبورت 7000 ويرد بـ'hello' عند الاتصال:
var net = require('net');
net.createServer(function (stream) {
stream.write('hello\r\n');
stream.on('end', function {
stream.end('goodbye\r\n');
});
stream.pipe(stream);
}).listen(7000);
مميزات نود.جي إس
من مميزات نود.جي إس سرعة الآداة مع المحافظة على الفاعلية، فسرعتها في إرسال الرسائل البريدية هي 10 أضعاف سرعة بي إتش بي، مع عدد أقل من العمليات الغير ناجحة، من مميزاتها أيضا أنك تستدعي المكتبات التي تعمل عليها في الوقت الذي تريد، الأمر الذي يفضي إلى أفضل استغلال للموارد.
سرعة نود.جي إس هي نتيجة لسرعة المحرك الذي تستخدمه الذي يعتبر نواتها. تقوم نود.جي إس بمعالجة النص المصدري سطرا سطرا، من خلال خيط واحد على عكس ما يحدث في PHP مثلا، المعنى أنه لو زار 1000 شخص موقعا يعمل على نود.جي إس فسيتم خدمتهم بالتتالي، المشكل أنه لو أضطر شخص ما لانتظار عملية ما مدة دقيقة فيجب على الكل الانتظار حتى تنتهي تلك العملية، إلا أنه يكمن تفادي هذا من خلال بنية الجافا سكربت التي تمكن من استدعاء دالة ما (أو مع صياغتها) عند الانتهاء من عملية ما والمرور للعملية الموالية، ككل تمكن نود.جي إس من بناء تطبيقات كبيرة، أحيانا بسهولة، إلا أن بنية الجافاسكريبت الشاذة تجعل الأمر محبط، يجدر بالذكر أن نود.جي إس تعمل على نواة معالج واحدة، كما أن يجب تنشيط الملف بعد برمجته ليتحول إلى Thread مستعد للرد على أي طلب داخل الوب، في النهاية يمكن القول أن نود.جي إس ليست تلك الوسيلة بعد التي يمكنها التعامل مع مختلف المتطلبات -و هذا من أسباب سرعتها- إلا أنه لا يمكن لوم أحد على ذلك ما دامت لم تتجاوز الإصدار 1.0 بعد، إلا أنها يمكنها تقديم حلول سحرية للأنشطة التي تتطلب تبادل بيانات بين مختلف الزوار في الوقت الحقيقي (Real-Time).
المجتمع
نود.جي إس لديه مجتمع مطورين متمركزين بقائمتين بريديتين،، nodejs و nodejs-dev, وقناة آي آر سي #نود.جي إس على فرينود. يجتمع المجتمع في NodeConf، مؤتمر مطورين سنوي يركز على نود.جي إس.‎
لغات أخرى
تمت كتابة بيئات مشابهة في لغات برمجة أخرى تشمل:
EventMachine لروبي.
libevent للسي
بيئة بيرل الكائنية لبيرل
توستيد لبايثون
انظر أيضًا
جافا سكريبت
محرك جافا سكربت في-8 (v8)
البرمجة التركيبية
مراجع
وصلات خارجية
مستودعات Node.JS على Github
إطارات عمل جافا سكريبت
برمجيات 2009
برمجيات تستخدم رخصة إم أي تي
برمجيات حرة بلغة جافا سكريبت
برمجيات حرة بلغة سي++
برمجيات حرة بلغة سي
مكتبات جافا سكريبت