Предисловие 15
Глава 1. Введение в язык Java 21
Глава 2. Среда программирования на Java 35
Глава 3. Основные языковые конструкции Java 51
Глава 4. Объекты и классы 125
Глава 5. Наследование 195
Глава 6. Интерфейсы, лямбда-выражения и внутренние классы 273
Глава 7. Исключения, утверждения и протоколирование 339
Глава 8. Обобщенное программирование 393
Глава 9. Коллекции 437
Глава 10. Программирование графики 509
Глава 11. Компоненты пользовательского интерфейса в Swing 567
Глава 12. Параллелизм 661
Глава 13. Библиотека JavaFX 759
Приложение А. Ключевые слова Java 849
Предметный указатель 851
В главе 1 дается краткий обзор тех функциональных возможностей языка Java, которыми он отличается от других языков программирования. В ней сначала поясняется, что было задумано разработчиками Java и в какой мере им удалось воплотить задуманное в жизнь. Затем приводится краткая исrория развития языка Java и показывается, как он сrал тем, чем он есrь в насrоящее время.
В rлаве 2 сначала поясняется, как загрузить и установить инструментарий JDК, а также примеры программ к этой книге. Затем рассматривается весь процесс компиляции и запуска трех типичных программ на Java (консольного приложения, графического приложения и аплета) только средствами JDK, текстового редактора, специально ориентированного на Java, а также интегрированной среды разработки на Java.
В rлаве 3 начинается обсуждение языка программирования Java и излагаются самые основы: переменные, циклы и простые функции. Если у вас имеется опыт программирования на С или С++, вам нетрудно будет усвоить материал этой главы, поскольку синтаксис этих языковых средств, по существу, ничем не отличается в Java. А если вам приходилось программировать на языках, не похожих на С, например на Visual Basic, прочитайте эту главу с особым вниманием.
Ныне объектно-ориентированное программирование (ООП) - господствующая методика программирования, и ей в полной мере отвечает язык Java. В rлаве 4 представлены понятие инкапсуляции - первой из двух фундаментальных составляющих объектной ориентации, а также механизмы, реализующие ее в языке Java: классы и методы. В дополнение к правилам языка Java здесь также приводятся рекомендации по правильному объектно-ориентированному проектированию. И, наконец, будет представлен замечательный инструмент javadoc, форматирующий комментарии из исходного кода в набор веб-страниц с перекрестными ссылками. Если у вас имеется опыт программирования на С++, можете лишь бегло просмотреть эту главу. А тем, кому раньше не приходилось программировать на объектно-ориентированных языках, придется потратить .больше времени на усвоение принципов ООП, прежде чем изучать Java дальше.
Классы и инкапсуляция - это лишь часть методики ООП, и поэтому в rлаве 5 представлен еще один ее краеугольный камень - наследование. Наследование позволяет модифицировать существующий класс в соответствии с конкретными потребностями программирующего. Это - основополагающий прием программирования на Java. Механизм наследования в Java очень похож на аналогичный механизм в С++. Опять же программирующие на С++ могут сосредоточить основное внимание лишь на языковых отличиях в реализации наследования.
В rлаве 6 поясняется, как пользоваться в Java понятием интерфейса. Интерфейсы дают возможность выйти за пределы простого наследования, описанного в главе 5. Овладение интерфейсами позволит в полной мере воспользоваться объектно-ориентированным подходом к программированию на Java. После интерфейсов рассматриваются лямбда-выражения в качестве краткого способа выражения блока кода, который может быть выполнен впоследствии. И, наконец, рассматривается также удобное языковое средство Java, называемое внутренними класса.ми.
Глава 7 посвящена обработке исключений - надежному механизму Java, призванному учитывать тот факт, что непредвиденные ситуации могут возникать и в грамотно написанных программах. Исключения обеспечивают эффективный способ отделения кода нормальной обработки от кода обработки ошибок. Но даже после оснащения прикладной программы проверкой всех возможных исключительных ситуаций в ней все-таки может произойти неожиданный сбой. Во второй части этой главы будет представлено немало полезных советов по организации отладки программ. Кроме того, здесь рассматривается весь процесс отладки на конкретном примере.
В rлаве 8 дается краткий обзор обобщенного програ.м.мирования. Обобщенное программирование делает прикладные программы легче читаемыми и более безопасными. В этой главе будет показано, как применяется строгая типизация, исключается потребность в неприглядном и небезопасном приведении типов и как преодолеваются трудности на пути совместимости с предыдущими версиями Java.
Глава 9 посвящена каркасу коллекций на платформе Java. Всякий раз, когда требуется сначала собрать множесгво объектов, а в дальнейшем извлечь их, приходится обращаться к коллекции, которая наилучшим образом подходит для конкретных условий, вместо того чтобы сбрасывать их в обычный массив. В этой главе будут продемонстрированы те преимущества, которые дают стандартные, предварительно подготовленные коллекции.
В главе 10 представлено введение в программирование графических пользовательских интерфейсов. Будет показано, как создаются окна, как в них выполняется раскраска, рисуются геометрические фигуры, форматируется текст многими шрифтами и как изображения выводятся на экран. Далее здесь будет пояснено, как писать прикладной код, реагирующий на такие события, как щелчки мышью или нажатия клавиш.
Глава 11 посвящена более подробному обсуждению инструментальных средств Swing. Набор инструментов Swing позволяет строить межплатформенный графический пользовательский интерфейс. В этой главе вы ознакомитесь с различными видами экранных кнопок, текстовых компонентов, рамок, ползунков, комбинированных списков, меню и диалоговых окон. Но знакомство с некоторыми из более совершенных компонентов Swing будет отложено до второго тома настоящего издания.
Глава 12 посвящена обсуждению параллельного программирования, которое позволяет выполнять программируемые задачи параллельно. Это очень важное и любопытное применение технологии Java в эпоху многоядерных процессоров, которые нужно загрузить работой, чтобы они не простаивали.
В главе 13, завершающей первый том настоящего издания, приведено краткое введение в библиотеку JavaFX, позволяющую разрабатывать современный графический пользовательский интерфейс настольных приложений.
В приложении А перечислены зарезервированные слова языка Java.