בדקתי על VCPP6 ו-VJPP6 תוכניות "Hello, World"(בקונפיגורציות release), והסתבר
שתכנית הג'אווה לוקחת 8K מול תכנית ה-cpp שלוקחת 64K.
ברגע הראשון הייתי מופתע. הכיצד זה יתכן?! תכנית cpp פשוטה לוקחת
פי 8 מקום מאשר
תכנית הג'אווה המקבילה?!
הוספתי לחישוב 70 מגה של ה-JVM, ואז העניין התחיל להראות הגיוני יותר...
תכנית ה-cpp קושרה באופן סטטי עם הספריה הסטנדרטית של cpp, ואילו תכנית הג'אווה
מקושרת לספריה הסטנדרטית של ג'אווה באופן דינמי(בדומה ל-MSVBVM של VB), ולכן
נראית כאילו היא לוקחת יותר מקום.
זו שגיאה להתייחס לעניין כך משתי סיבות:
- ככל שהתכנית גדלה, הגודל של הספריות נהיה פחות משמעותי, וגודל התוכנה
"עצמה" נהיה משמעותי יותר, ושם ל-cpp יש עדיפות.
(אני כמעט בטוח לגבי זה) - כשמחשבים כמה מקום אנחנו דורשים מהלקוח, אסור לנו להניח שיש לו JVM
או כל דרישה מוקדמת מלבד מערכת ההפעלה. לכן עלינו לכלול את ה-JVM
בחישוב.
(זה בטוח)
הערה לגבי הסעיף השני:
ברור שאם יש לנו הרבה תוכנות ג'אווה שמקושרות דינמית לספרייה הסטנדרטית של
ג'אווה והרבה תוכנות CPP שמקושרת סטטית לספריה הסטנדרטית של CPP, יש בזבוז
של מקום מבחינת תוכנות ה-CPP - אבל זה שיקול אסטרטגי של המפתח(וממילא CPP
תומכת כמובן בקישור דינמי)