אז ככה
ג'אווה רץ על רוב מערכות ההפעלה היום, אבל למרות מה ש- Sun מנסים למכור, לא באופן תואם ומושלם בכולן. היום המצב יחסית טוב, אבל - לדוגמא, Netscape 4 לא הריץ Java Applets כמו שצריך (לא משנה מי אשם - העובדה היא שאי אפשר לסמוך בעיניים עצומות על התאימות של ג'אווה). רוב תוכניות הג'אווה מכילות גם קוד מכונה ספציפי (דרך JNI = Java Native Interface) - פשוט כי יש דברים שאי אפשר לעשות מג'אווה ישירות. ואז, כמובן, יש את כל הצרות של כל מערכת הפעלה ספציפית. לדוגמא, Eclispe שהוא מופת לכל תוכנת ג'אווה אינטרקטיבית, מסתמך על עזרי גרפיקה שהם שונים וספציפיים לכל פלטפורמה. הן לגבי Java והן לגבי .NET, זליגות הזכרון לא נעלמות אלא מקבלות צורה אחרת - אם יש עדיין מצביע למידע, גם אם לא צריך אותו, הוא לא ישוחרר. יצא לי לראות לא פעם תוכנית Java שגומרת את הזכרון של המחשב בגלל באג שכזה. לגבי .NET, הגרסה של מיקרוסופט רצה אך ורק מעל Windows, אבל יש גרסה של Ximian שנקראת Mono, שרצה על Unix, Mac ועוד אי אלו פלטפורמות. היא לא שלמה לחלוטין, בחלק בשל העובדה שמיקרוסופט לא מתעדת כל מה שצריך (מישהו מופתע?) ובחלק בגלל שהם פשוט עוד לא הספיקו. בכל מקרה, תוכנה שתפותח עם Mono תרוץ בלי בעיה גם על חלונות, ותוכנה שתפותח עם הכלים של Microsoft, יש סיכוי טוב (אבל לא ודאות) שהיא תרוץ על Mono. לגבי C/C++, יש תוכניות שפועלות ללא שינוי על עשרות פלטפורמות - אבל נכון להגיד באופן כללי שיש הרבה יותר איפה להכשל בנושאי תאימות בין מערכות. גם ב- C אפשר לנהל זכרון ע"י Garbage Collections, אבל זה פחות מקובל. השפה הפורטבלית ביותר שיצא לי לפגוש היא בכלל Python, אגב.