6.2. Проверка java кода
Многие ошибки при тестировании методом «черного ящика» являются прямым следствием ошибок выделения памяти и переполнения буфера. Создание приложений на безопасном языке с функциями «уборки мусора», который выполняется в виртуальной машине (например, Java или управляемый C#), исключает многие потенциальные проблемы. Даже если вы пишете свой код на C или C++, необходимо использовать надежную библиотеку для очистки памяти. С 2006 года никто из программистов настольных или серверных программ не должен самостоятельно организовывать управление памятью.
Рабочий цикл Java обеспечивает дополнительный уровень защиты собственного кода. Перед загрузкой файла .class в виртуальную машину он анализируется механизмом проверки байтового кода и, опционально, системой SecurityManager. Java не предполагает, что компилятор, который создал файл .class, был лишен ошибок или отработал корректно. Язык Java был с самого начала спроектирован таким образом, чтобы выполнение потенциально вредоносного кода, которому нельзя доверять, осуществлялось в отдельной безопасной ограниченной среде. Эта среда даже не доверяет тому коду, который сама и скомпилировала. Ведь кто-нибудь мог изменить байтовый код вручную с помощью редактора шестнадцатеричных символов и попытаться вызвать переполнение буфера. У нас у всех должна быть подобного рода паранойя относительно входных данных для наших программ.