Одно дело — создать язык, который мешает вам «выстрелить себе в ногу», и совсем другое — создать язык, который помешает кому-то другому «выстрелить вам в ногу».
2 Ұнайды
Когда Бьёрн Страуструп выбрал ключевое слово private для обозначения скрытых компонентов классов в C++, он думал, скорее всего, о том, чтобы разработчика не беспокоили запутанные подробности кода других разработчиков, а не о том, как защищать классы и объекты от атак вирусов и троянов. Произвольные преобразования типов и арифметические операции с указателями в C и C++ позволяют легко нарушать разрешения доступа к классам, не нарушая при этом правила языка. Возьмем следующий код:
// Код C++
class Finances {
private:
char creditCardNumber[16];
...
};
main() {
Finances finances;
// Формирование указателя для получения доступа
// к конфиденциальным данным внутри класса
char *cardno = (char *)&finances;
printf("Card Number = %.16s\n", cardno);
}
В этой маленькой драме на C++ мы написали код, который нарушает инкапсуляцию класса Finances и извлекает секретную информацию. Подобные фокусы — злоупотребления с нетипизованными указателями — в Java невозможны. Если этот пример кажется вам нереалистичным, подумайте, как важно защищать фундаментальные (системные) классы исполнительной системы от подобных атак. Если ненадежный код сможет повредить компоненты, предоставляющие доступ к реальным ресурсам (к файловой системе, к сети, к оконной системе), то у него появится возможность перехватить номера ваших кредиток.
1 Ұнайды
Совокупность всей информации о типах в любой конкретный момент называется состоянием типов стека; именно его Java анализирует перед запуском приложения. Java ничего не знает о фактических значениях, хранящихся в стеке и в переменных; известны только их типы. Однако этой информации достаточно для соблюдения правил безопасности и для уверенности в том, что с объектами не будут выполняться некорректные операции.
1 Ұнайды
Подведем итог. Проверяемые исключения — это проблемы, которые нормальное приложение должно всегда обрабатывать корректно. Непроверяемые исключения (исключения времени выполнения и ошибки) — это проблемы, на восстановление после которых ваше приложение обычно не может рассчитывать. Исключения типа Error означают фатальные ошибки, то есть в нормальном приложении вам уже бессмысленно их обрабатывать, стараясь восстановить работоспособность программы.
Ранее мы уже упоминали, что Java заставляет нас явно выражать свои намерения относительно обработки ошибок. Но нет необходимости обрабатывать все возможные типы ошибок во всех возможных ситуациях. Поэтому исключения Java делятся на две категории: проверяемые и непроверяемые.
в Java есть Swing — полноценный инструментарий для создания графических интерфейсов
Не все платформы, поддерживающие Java, совместимы с эмодзи; попробуйте запустить jshell, чтобы узнать, поддерживаются ли символы-эмодзи на вашем компьютере
Ему нравилась идея решения сложных задач простыми программными средствами,
- Басты
- ⭐️IT-технологии
- Дэн Лук
- Программируем на Java
- 📖Дәйексөздер
