Node.JS קורס: למה javascript על השרת?

למה javascript על השרת?

במשך שנים רבות, הדרך הנכונה לפיתוח אתר אינטרנט היתה שימוש בשפה אחת בדפדפן - Javascript ושפה אחרת בשרת. בשנתיים האחרונות רואים התעוררות של שרתים מבוססי Javascript, יש לכך כמה סיבות.

  • קודם כל, שימוש באותה שפה בשרת ובדפדפן מורידה עומס מהמתכנתים ומאפשרת ליותר מתכנתים לכתוב אפליקציות שלמות במקום להיות מוגבלים לדפדפן. בנוסף ניתן בקלות יחסית להעביר קוד מצד לצד בהתאמות קלות.
  • Javascript התבגרה בשנים האחרונות והפכה לשפה רצינית עם ספריות קוד (לא רק jQuery) ומערכת מקובלת לשימוש בספריות - commonJS וכתיבת קוד במודולים נפרדים עם בידוד משתנים אוטומטי. יש ספריות מגוונות הכתובות ב javascript וניתן לכתוב אפליקציות מורכבות המחולקות למודולים שונים ולהוסיף test
  • מנועי הרצת javascript השתכללו והשתפרו ומתחרים ביניהם בביצועים - כולם מרוויחים מכך. המנועים המובילים נמצאים בשימוש בדפדפנים chrome של גוגל, firefox של מוזילה ו-safari של אפל שנמצא גם ב iPhone, iPad וכו'. המנועים כתובים ב- C והקוד שלהם פתוח, כך חברות ויחידים תורמים ומשפרים אותו כל הזמן.

יש כמה פלטפורמות שרתים מבוססי javascript, הרשימה להלן לא ממצה, יש עוד פרוייקטים שלא הוזכרו בה.

אחת מסביבות הפיתוח לשרתים המשתמשת ב javascript הוותיקה ביותר. היחוד שלה הוא ביכולת לשלב ספריות Java. היא מבוססת על JVM Java Virtual Machine ויש סיטואציות בהן לשרתים מבוססים RingoJS יש ביצועים טובים מאוד.

ג'ק היא מערכת שמאפשרת יצירת servlets מערך של מיני-שרתים בפלטפורמה מבוססת JSGI .JSGI היא ספסיפיקציית שרתי אינטרנט מבוססי Javascript בדומה ל- Ruby-Rack או מערכת של WSGI של פייטון.
ג'ק היא אוסף של קבצי JSGI שמתחברים אחד לשני כדי ליצור מערכת שלמה על השרת. אפליקציות JSGI מבוססות פונקציות וזה הייחודיות של ג'ק. חשוב לוודא שהקוד שכותבים בג'ק הוא thread safe.

סלינג משלבת Java עם Javascript ושפות אחרות כמו Scala ומאפשרת כתיבת דפי HTML משולבים קוד כשהשפה נקבעת לפי הסיומת של הקובץ, כך index.esp הוא קובץ שמכיל קוד שירוץ בצד השרת בשפת javascript. באותו שרת אפשר לכתוב דפי HTML שירוצו בכמה שפות שונות.

התוספת האחרונה לקבוצה, Node שונה מאוד מהאחרים בכך שהוא לא מבוסס על שרת מרובה threads אלא מריץ לולאת ארועים יחידה. כך הוא מונע בעיות שנובעות מכתיבת קוד מרובה threads ומביא את המודל המוכר מהדפדפן של לולאת ארועים לשרת. כדי שלולאת הארועים לא "תיתקע" ברירת המחדל של כל הפונקציות והספריות בסביבה זו היא אסינכרונית. יש גם פונקציות סינכרוניות אך הן היוצאות מהכלל.
Node היא הפלטפורמה החמה ביותר בשוק, יש לה קהל מתכנתים גדול ופעיל מאוד. יש גם מגוון של פרוייקטים המבוססים על Node ומיועדים למגוון של מטרות. אין ספק היום ש Node.js מאפילה על כל הפלטפורמות הקודמות שמבוססות על Javascript למראת ואולי בגלל השימוש בקוד אסינכרוני מבוסס על לולאת ארועים.

נכתב על ידי עמיחי היינס