JVM נגד JRE
Java היא שפת תכנות חוצת פלטפורמות. הוא גם שומר על עקרון "כתוב פעם אחת, רץ לכל מקום". התוכנית שנכתבה ב-Java ניתנת לקומפילציה ל-Java bytecode על ידי מהדר Java. לאחר מכן, ניתן להפעיל את ה-bytecode בכל פלטפורמה המריץ את JRE (Java Runtime Environment). JRE כולל את ה-JVM (Java Virtual Machine), ספריות בסיס (שמיישמת את Java API) וקבצים תומכים אחרים. JVM היא מכונת מחשוב מופשטת הפועלת כמתווך בין הפלטפורמות הספציפיות JRE לבין קוד Java.
מה זה JVM?
JVM הוא סוג של מכונה וירטואלית המשמשת מכונות להפעלת Java bytecode.לפי Sun Microsystems (שפיתחה את Java עד שנרכשה על ידי אורקל, ממש לאחרונה), ישנם יותר מ-4 מיליארד מכשירים התומכים ב-JVM בעולם. ליתר דיוק, Java Virtual Machine היא מכונת מחשוב מופשטת המיושמת על חומרה ומערכת הפעלה סטנדרטית. אחת הפונקציונליות החשובות שמספק ה-JVM היא טיפול אוטומטי בחריגים. בדרך כלל, אוסף של ספריות סטנדרטיות מלווה את ה-JVM. למעשה, JRE הוא חבילה המכילה את ה-JVM ואת המחלקות שמיישמות את Java API. JVM הוא רכיב חשוב מאוד, המתאים לאופי "הידור פעם אחת, הרץ בכל מקום" של שפת התכנות Java. כל עוד ה-JVM פועל, קוד ה-Java שלך יכול לפעול על גביו, ללא קשר לפלטפורמה המשמשת במכונה. זו הסיבה ש-Java נקראת שפה חוצת פלטפורמות או שפה מרובת פלטפורמות.
מה זה JRE?
JRE היא סביבת הביצוע שבה מתנהל קוד Java. בדרך כלל, JRE מורכב מ-JVM, מחלקות בסיס סטנדרטיות (שמיישמות את ה-Java API הבסיס) וקבצים תומכים אחרים.סוג ומבנה JRE משתנים בהתאם למערכת ההפעלה וארכיטקטורת ה-CPU. כאשר קוד ה-Java מופעל, ה-JRE יתקשר עם מערכת ההפעלה, אשר בתורה תדבר עם רכיבי החומרה המתאימים. התקנת JRE במערכת שלך היא חובה כדי להפעיל כל קוד Java במחשב שלך. עם זאת, JRE אינו כולל מהדר, ניפוי באגים או כל כלים אחרים הדרושים לפיתוח תוכניות Java (כגון appletviewer ו-javac). אם אתה צריך לפתח תוכניות ב-Java, אתה צריך את ה-JDK (ערכת פיתוח ג'אווה), הכוללת גם את ה-JRE.
מה ההבדל בין לבין JVM ו-JRE?
למרות שבשימוש יומיומי משתמשים במונחים JVM ו-JRE זה בזה, יש ביניהם הבדלים. JVM היא מכונה וירטואלית הפועלת על גבי מערכת ההפעלה, בעוד ש-JRE היא סביבת הביצוע בזמן ריצה. JVM הוא חלק מה-JRE. מפרט JVM משמש כמקשר בין יישום JRE הספציפי לפלטפורמה לבין ספריות Java הסטנדרטיות.לכן, JVM היא הישות שמספקת את ההפשטה מפרטי היישום הפנימיים למתכנת. והוא אחראי לפרש את ה-bytecode המהידור. עם זאת, JVM צריך את ספריות הבסיס וקבצים תומכים אחרים כדי להפעיל את קוד ה-Java byte. אבל לפעמים, JRE פשוט מזוהה כיישום של JVM.