מה זו סביבת ריצה (Runtime Environment)?
סביבת ריצה (runtime environment) היא התוכנה שתוכנית צריכה סביבה בזמן שהיא רצה: המנוע שמריץ את הקוד שלה, הספריות הסטנדרטיות שהיא קוראת להן, והשירותים שמנהלים זיכרון, שגיאות וגישה למערכת ההפעלה. ה-JVM, Node.js ו-CPython הן דוגמאות.
עודכן ב-24 בספטמבר 2026
הריצו console.log(typeof process) ב-Node.js והוא ידפיס object. הדביקו את אותה שורה בקונסול של Chrome והיא תדפיס undefined. השפה היא אותה JavaScript בשני המקומות, אבל התוכנית רצה בתוך שתי סביבות ריצה שונות, וכל אחת נותנת לה כלים אחרים.
console.log(typeof process); // "object" in Node.js, "undefined" in a browser
console.log(typeof document); // "undefined" in Node.js, "object" in a browser
מה סביבת ריצה מספקת
הקוד שלכם רק מתאר מה לעשות. כשהוא רץ, הוא נשען על שכבת תוכנה שהותקנה עוד לפני שכתבתם שורה. לשכבה הזו יש בדרך כלל חמישה חלקים:
- מנוע הרצה. משהו צריך להריץ את הקוד: interpreter, מכונה וירטואלית או קומפיילר just-in-time. CPython, ה-Java Virtual Machine (JVM) ו-V8 הם מנועי הרצה.
- ספרייה סטנדרטית. פונקציות מוכנות לטקסט, מתמטיקה, תאריכים, קבצים ורשת, כמו המודול
jsonשל Python או החבילהjava.utilשל Java. - ניהול זיכרון. סביבת הריצה מקצה זיכרון לאובייקטים שלכם, וב-Python, ב-Java וב-JavaScript גם משחררת אותו שוב בעזרת garbage collector כששום דבר לא משתמש בו.
- טיפול בשגיאות. כשמשהו משתבש, סביבת הריצה עוצרת את התוכנית בצורה מבוקרת ומדווחת איפה, כ-traceback או כ-stack trace.
- גישה למערכת ההפעלה. קריאת קבצים, פתיחת חיבורי רשת, קריאת משתני סביבה וארגומנטים של שורת הפקודה עוברים כולם דרך סביבת הריצה, שמבקשת ממערכת ההפעלה בשם התוכנית שלכם.
אפשר לשאול את סביבת הריצה של Python על עצמה:
התשובות תלויות במקום שבו הקוד רץ. בשרת Linux platform.system() מחזירה 'Linux', ב-Mac 'Darwin', וב-Windows 'Windows'. מגבלת הרקורסיה (1000 כברירת מחדל ב-CPython) היא כלל שנקבע על ידי סביבת הריצה, לא על ידי שפת Python, ועשרות המודולים שכבר נטענו לפני השורה הראשונה שלכם הם סביבת הריצה שמכינה את עצמה.
Java: JDK מול JRE מול JVM
Java הופכת את השכבות לגלויות, כי לכל אחת יש שם משלה:
| שם | ראשי תיבות של | מה הוא מכיל | מי צריך אותו |
|---|---|---|---|
| JVM | Java Virtual Machine | המנוע שמריץ bytecode (קובצי .class) ומנהל זיכרון | חלק משני אלה שלמטה |
| JRE | Java Runtime Environment | ה-JVM יחד עם ספריות המחלקות הסטנדרטיות | מי שרק מריץ תוכניות Java |
| JDK | Java Development Kit | ה-JRE יחד עם כלי פיתוח: javac, jar, javadoc, jdb | מי שכותב תוכניות Java |
הזרימה היא: javac Main.java (כלי של ה-JDK, הקומפיילר) הופך קוד מקור ל-Main.class, ו-java Main מפעיל את ה-JVM, שטוען את המחלקה ומריץ אותה עם הספריות של סביבת הריצה. ה-JVM הוא הסיבה שקובץ .class אחד רץ על Windows, macOS ו-Linux: לכל מערכת הפעלה יש JVM משלה, וכולם מבינים את אותו bytecode.
מאז Java 11, Oracle מפיצה רק את ה-JDK, בלי הורדה נפרדת של JRE. כמה הפצות, כמו Eclipse Temurin, עדיין מפרסמות חבילת JRE. אם אתם לומדים Java, התקינו JDK: הוא מכיל את כל מה שה-JRE מכיל. המדריך התקנת Java מסביר איך.
JavaScript: הדפדפן ו-Node.js
JavaScript תוכננה לרוץ בתוך דפי אינטרנט, ולכן סביבת הריצה הראשונה שלה הייתה הדפדפן. סביבת הריצה של הדפדפן נותנת לקוד שלכם את ה-document של הדף, את window, טיימרים ו-fetch לבקשות רשת, והיא חוסמת בכוונה גישה ישירה לקבצים שלכם.
Node.js מוציאה את מנוע V8 של Google מהדפדפן ועוטפת אותו בסביבת ריצה אחרת: בלי document, אבל עם מודולים כמו fs לקבצים, http לשרתים, והאובייקט process למשתני סביבה ולארגומנטים. Deno ו-Bun הן סביבות ריצה חדשות יותר לאותה שפה, עם כלים משלהן. כולן מריצות את אותה JavaScript בסיסית; ההבדל הוא מה שמקיף אותה. העמודים על סביבת הריצה Node.js ועל ה-event loop מעמיקים יותר.
Python: CPython וחברים
כשאומרים "להתקין Python" מתכוונים להתקין סביבת ריצה: ה-interpreter של CPython, הספרייה הסטנדרטית ו-pip להוספת חבילות. קיימות סביבות ריצה אחרות לאותה שפה. PyPy מוסיף קומפיילר JIT בשביל מהירות, ו-MicroPython קטן מספיק כדי לרוץ על מיקרו בקרים.
סביבה וירטואלית (python3 -m venv .venv) היא לא סביבת ריצה חדשה. היא מצביעה על interpreter קיים ונותנת לפרויקט אחד סט משלו של חבילות מותקנות, כך ששני פרויקטים יכולים להשתמש בגרסאות שונות של אותה ספרייה. ראו סביבות וירטואליות.
זמן קומפילציה וזמן ריצה
"Runtime" הוא גם שם של רגע: פרק הזמן שבו התוכנית רצה, בניגוד לזמן הקומפילציה, שבו קוד המקור מתורגם. טעות שהקומפיילר דוחה היא שגיאת זמן קומפילציה; טעות שמופיעה רק בזמן שהתוכנית רצה, כמו חלוקה באפס, היא שגיאת זמן ריצה. סביבת הריצה היא התוכנה שנוכחת במהלך פרק הזמן השני.
אפילו ל-C, שמתקמפלת ישר לקוד מכונה, יש סביבת ריצה קטנה. תוכנית C מתחילה בקוד אתחול שמספקת שרשרת הכלים של הקומפיילר, ופונקציות כמו printf ו-malloc מגיעות מהספרייה הסטנדרטית של C (glibc ברוב מערכות Linux, ה-Universal C Runtime ב-Windows). פשוט אין בה מכונה וירטואלית ואין garbage collector.
תפיסות שגויות נפוצות
- "סביבת הריצה היא מערכת ההפעלה." מערכת ההפעלה מנהלת את החומרה עבור כל התוכניות. סביבת הריצה היא השכבה של תוכנית אחת מעליה. ה-JVM הוא בעצמו תוכנית ש-Windows, macOS או Linux מריצות; הוא לא מחליף אותן.
- "Node.js היא שפה או פריימוורק." Node.js היא סביבת ריצה ל-JavaScript. פריימוורקים כמו Express הם ספריות שרצות בתוכה.
- "התקנת IDE מתקינה את סביבת הריצה." VS Code לא כולל Python או Java. העורך וסביבת הריצה הם התקנות נפרדות, אף שחלק מסביבות הפיתוח, כמו IntelliJ IDEA, יכולות להוריד JDK בשבילכם.
- "אותה שפה, אותה התנהגות בכל מקום." יכולות שסביבת הריצה מספקת, כמו גישה לקבצים, מגבלות ברירת מחדל ומודולים זמינים, יכולות להיות שונות. קוד שרץ ב-Node.js יכול להיכשל בדפדפן בדיוק מהסיבה הזו.
לאן ממשיכים מכאן
מנוע ההרצה בתוך רוב סביבות הריצה הוא interpreter, והעמוד הזה גם משווה אותו לקומפיילר. מתחת לכל סביבת ריצה יושבת מערכת ההפעלה. כדי לתרגל בסביבת ריצה שעוד לא השתמשתם בה, התחילו את קורס Java או את קורס JavaScript.
שאלות נפוצות
מה דוגמה לסביבת ריצה?
האם Node.js היא סביבת ריצה?
מה בעצם פירוש המילה runtime?
להתקין JRE או JDK?
javac ואת כל מה שיש ב-JRE. ה-JRE לבדו רק מריץ תוכניות Java קיימות. מאז Java 11, Oracle מפיצה רק את ה-JDK, כך שבגרסאות Java עדכניות ה-JDK הוא הבחירה הרגילה.מה פירוש הראשי התיבות JDK, JRE ו-JVM?
javac.