ення програми (наприклад, спроба несанкціонованого доступу до даних або з'єднання з іншим комп'ютером) викликають негайне переривання. p align="justify"> Часто до недоліків концепції віртуальної машини відносять те, що виконання байт-коду віртуальною машиною може знижувати продуктивність програм і алгоритмів, реалізованих на мові Java. Останнім часом було внесено низку удосконалень, які дещо збільшили швидкість виконання програм на Java:
В· застосування технології трансляції байт-коду в машинний код безпосередньо під час роботи програми (JIT-технологія) з можливістю збереження версій класу в машинному коді;
В· широке використання переносних орієнтованого коду (native-код) в стандартних бібліотеках;
В· апаратні засоби, що забезпечують прискорену обробку байт-коду (наприклад, технологія Jazelle, підтримувана деякими процесорами фірми ARM).
За даними сайту shootout.alioth.debian.org, для семи різних завдань час виконання на Java становить в середньому в півтора-два рази більше, ніж для C/C + +, в деяких випадках Java швидше, а в окремих випадках у 7 разів повільніше. З іншого боку, для більшості з них споживання пам'яті Java-машиною було в 10-30 разів більше, ніж програмою на C/C + +. Також примітно дослідження, проведене компанією Google, згідно з яким відзначається істотно нижча продуктивність і більше споживання пам'яті в тестових прикладах на Java в порівнянні з аналогічними програмами на C + +. p align="justify"> Ідеї, закладені в концепцію і різні реалізації середовища віртуальної машини Java, надихнули безліч ентузіастів на розширення переліку мов, які могли б бути використані для створення програм, що виконуються на віртуальній машині. Ці ідеї знайшли також вираження у специфікації загальномовний інфраструктури CLI, закладеної в основу платформи. NET компанією Microsoft. p align="justify"> Основні можливості
В· автоматичне керування пам'яттю;
В· розширені можливості обробки виняткових ситуацій;
В· багатий набір засобів фільтрації введення/виводу;
В· набір стандартних колекцій: масив, список, стек і т. п.;
В· наявність простих засобів створення мережевих додатків (у тому числі з використанням протоколу RMI);
В· наявність класів, що дозволяють виконувати HTTP-запити і обробляти відповіді;
В· вбудовані в мову засоби створення багатопоточних додатків;
В· уніфікований доступ до баз даних:
...