Неважно, кто вы — разработчик ПО или пользователь, в любом случае вы слышали о языке Java. В этой книге вы на конкретных примерах изучите основы Java, API, библиотеки классов, приемы и идиомы программирования. Особое внимание авторы уделяют построению реальных приложений. Вы освоите средства управления ресурсами и исключениями, а также познакомитесь с новыми возможностями языка, появившимися в последних версиях Java. • Программируйте на Java с использованием компилятора, интерпретатора и других инструментов. • Исследуйте средства управления потоками и параллельной обработки. • Изучайте обработку текста и мощные API. • Создавайте приложения и службы на базе современных сетевых коммуникаций или веб-технологий.
Совокупность всей информации о типах в любой конкретный момент называется состоянием типов стека; именно его Java анализирует перед запуском приложения. Java ничего не знает о фактических значениях, хранящихся в стеке и в переменных; известны только их типы. Однако этой информации достаточно для соблюдения правил безопасности и для уверенности в том, что с объектами не будут выполняться некорректные операции.
Одно дело — создать язык, который мешает вам «выстрелить себе в ногу», и совсем другое — создать язык, который помешает кому-то другому «выстрелить вам в ногу».
Начиная с Java 7, компилятору хватает сообразительности, чтобы определить тип инициализирующего выражения по типу той переменной, которой присваивается значение. Это называется выведением типа, или автоматическим определением обобщенного типа (generic type inference). Как показано в нашем примере, при сокращенной записи в правой части объявления переменной достаточно пустых угловых скобок: <>.