Більшість запитань відповіли, але я хотів би додати, що довговічність - це ще одна річ, яку, можливо, доведеться враховувати.
Наприклад, JAVA можна записати один раз і запустити на будь-якій платформі, де VM (сьогодні це називається "середовище виконання"). Але ще одна перевага полягає в тому, що ви можете запустити код Java 1.1 з 1995 року на вашій машині 2011 року. Що неможливо, якщо ваш код був складений на i386 і ви намагаєтеся запустити його в архітектурі AMD64.
Ви також отримуєте удосконалення самої віртуальної машини.
Тоді я б сказав, що в цілому, переходячи від найменш портативного до більш портативних мов, які ви мали б: Асемблер, мова скомпільована на низькому рівні, як C, потім C ++, потім інтерпретовані мови або ті, які працюють у віртуальній машині.
Я насправді не захисник Java, принаймні, не для мови, ані для спільноти, наприклад, але це шлях, якщо ви шукаєте портативність та найменші втрати в порівнянні з C.