Изучаем Java
Интернет-портал MegaWEB

Интернет-портал MegaWEB содержит много ресурсов для веб-мастеров, интернет-разработчиков, веб-дизайнеров и seo-оптимизаторов. Это видеоуроки, книги и справочники в формате ebook: PDF-CHM-DJVU, а также программы и утилиты для того, чтобы сделать сайт или раскрутить сайт в сети Интернет.

Книга «Изучаем Java»

 

Изучаем Java

Книга «Изучаем Java» научит вас теории языка Java и объектно-ориентированного программирования и сделает вас настоящим программистом. В основу материала положен уникальный метод обучения на практике. В отличие от классических учебников информация дается не в текстовом, а в визуальном представлении. Вы освоите в деле все самое нужное: синтаксис и концепции языка Java, работу с потоками, взаимодействие в сети, распределенное программирование. Вся теория закрепляется интереснейшими примерами и тестами. Изучение комплекса нового языка не является легкой задачей, особенно, когда речь идет о таком объектно-ориентированном языке программирования, как Java.

Изучаем Java

Обзор книги «Изучаем Java»

Погружаемся: Java открывает новые возможности. Еще во времена первой версии 1.02 этот язык покорил разработчиков своим дружественным синтаксисом, объектно-ориентированной направленностью, управлением памятью и, что важнее всего, перспективой переносимости на разные платформы. Соблазн написать код один раз и запускать его везде оказался слишком велик. Однако, по мере того как программистам приходилось бороться с ошибками, ограничениями и чрезвычайной медлительностью Java, первоначальный интерес к языку остывал. Но это было давно. Сегодня Java достаточно мощный и работает быстрее.

  • Как работает Java
  • Краткая история Java
  • Структура кода в Java
  • Структура класса
  • Создание класса с методом main
  • Что можно разместить внутри главного метода
  • Зацикливаем, зацикливаем и…
  • Условное ветвление
  • Создание серьезного бизнес-приложения
  • Генератор фраз

Путешествие в Объектвилль. Размещение всего кода программы в методе main – это не совсем объектно-ориентированный подход. По сути, он не имеет ничего общего с объектами. Даже если при этом используются некоторые объекты библиотечных классов, но не создаются свои собственные типы объектов. Теперь вам предлагается оставить позади мир процедур и самим начать разрабатывать объекты. Вы узнаете, чем же так удобно объектно-ориентированное программирование на языке Java, и почувствуете разницу между классом и объектом.

  • Война за кресло, или Как объекты могут изменить вашу жизнь
  • Создаем первый объект
  • Создание и тестирование объектов Movie
  • Скорее! Выбирайтесь из главного метода!
  • Запускаем нашу игру

Свои переменные нужно знать в лицо. Переменные делятся на два вида: примитивы – простые типы, и ссылки. В жизни должно быть что-то помимо чисел, строк и массивов. Как быть с объектом PetOwner с переменной экземпляра типа Dog? Или Cat с переменной экземпляра Engine? Вы узнаете, что именно можно объявлять в качестве переменных, какие значения присваивать им и как вообще с ними работать.

  • Объявление переменной
  • Простые типы
  • Ключевые слова в Java
  • Управление объектом
  • Управление объектом с помощью ссылки
  • Массивы

Как себя ведут объекты: состояние влияет на поведение, а поведение – на состояние. Вы знаете, что объекты характеризуются состоянием и поведением, которые представлены переменными экземпляра и методами. До этого момента вопрос о связи между состоянием и поведением не поднимался. Вам уже известно, что каждый экземпляр класса может иметь уникальные значения для своих переменных экземпляра. Суть объектов заключается в том, что их поведение зависит от состояния. Иными словами, методы используют значения переменных экземпляра. Теперь пришло время узнать, как изменить состояние объекта.

  • Класс описывает, что объект знает и делает
  • Передаем методу разные значения
  • Получаем значения обратно из метода
  • Передаем в метод сразу несколько значений
  • Трюки с параметрами и возвращаемыми значениями
  • Инкапсуляция
  • Объекты внутри массива
  • Объявление и инициализация переменных экземпляра
  • Разница между переменными экземпляра и локальными переменными
  • Сравниваем переменные (примитивы или ссылки)

Особо мощные методы: сделаем методы еще более мощными. Вы уже поработали с переменными, несколькими объектами и написали небольшой код. Но для полноценной работы требуется гораздо больше инструментов, например операторы и циклы. Почему бы вам во время учебы не создать что-нибудь настоящее, чтобы собственными глазами увидеть, как с нуля пишутся и тестируются программы.

  • Создадим аналог Морского боя: игра Потопи сайт
  • Плавное введение в игру Потопи сайт
  • Разработка класса
  • Записываем реализацию метода
  • Тестовый код для класса SimpleDotCom
  • Метод checkYouself()
  • Метод main() в игре
  • Поговорим о циклах for
  • Путешествия сквозь цикл
  • Улучшенный цикл for
  • Приведение простых типов

Использование библиотеки Java: вместе с Java поставляются сотни готовых классов. Можете не тратить время на изобретение собственного велосипеда, если знаете, как отыскать нужное в библиотеке Java, называемой еще Java API. При написании кода сосредоточьтесь на той части, которая уникальна для вашего приложения. Стандартная библиотека Java представляет собой гигантский набор классов, готовых к применению в качестве строительных блоков.

  • Небольшая интрига из предыдущей главы – ошибка
  • Примеры использования ArrayList
  • Сравнение ArrayList с обычным массивом
  • Исправляем код класса DotCom
  • Новый и улучшенный класс DotCom
  • Создаем настоящую игру Потопи сайт
  • Что делает каждый элемент в игре DotComBust (и в какой момент)
  • Псевдокод для настоящего класса DotComBust
  • Окончательная версия класса DotCom
  • Супермощные булевы выражения
  • Использование библиотеки (Java API)
  • Как работать с API

Прекрасная жизнь в Объектвилле: планируйте свои программы с прицелом на будущее. Как вы оцените способ создания Java-приложений, при котором у вас останется много свободного времени? Заинтересует ли вас создание гибкого кода, которому не страшны досадные изменения в техническом задании, возникающие в последний момент? Поверьте, вы можете получить все это лишь за три простых подхода по 60 минут каждый. Изучив принципы полиморфизма, вы узнаете о пяти шагах грамотного проектирования классов, трех приемах для достижения полиморфизма и восьми способах создания гибкого кода.

  • Принципы наследования
  • Использование наследования для предотвращения дублирования кода в дочерних классах
  • Ищем новые возможности, которые дает наследование
  • Проектирование иерархии наследования
  • Отношения IS-A и HAS-A
  • Как узнать, что наследование оформлено правильно
  • Настоящая ценность наследования
  • Перегрузка метода

Серьезный полиморфизм: наследование – это только начало. Чтобы задействовать полиморфизм, нужны интерфейсы. Новый уровень гибкости и масштабируемости может обеспечить только архитектура, основанная на интерфейсах. Вероятно, вы захотите их использовать. Вы удивитесь, как могли жить без них раньше. Что такое интерфейс? Это на 100% абстрактный класс. Что такое абстрактный класс? Это класс, для которого нельзя создать экземпляр.

  • Абстрактный против Конкретного
  • Абстрактные методы
  • Полиморфизм в действии
  • Класс Object
  • Использование полиморфических ссылок типа Object
  • Интерфейс спешит на помощь!

Жизнь и смерть объектов: объекты рождаются и умирают. Вы управляете их жизненным циклом. Вы решаете, когда и как создавать их. И вы решаете, когда их уничтожать. Но на самом деле вы не уничтожаете их, а просто делаете брошенными и недоступными. Уже после этого безжалостный сборщик мусора может аннулировать объекты, освобождая используемую память. Вы узнаете, как создаются объекты, где размещаются, как эффективно использовать их и делать недоступными.

  • Стек и куча: где все хранится
  • Методы размещаются в стеке
  • Как работают локальные переменные, являющиеся объектами
  • Создание объекта
  • Создаем объект Duck
  • Инициализация состояния нового объекта Duck
  • Роль конструкторов родительского класса в жизни объекта
  • Как вызвать конструктор родительского класса
  • Конструкторы родительских классов с аргументами
  • Вызов одного перегруженного конструктора из другого
  • Сколько живет объект

Числа имеют значение: поговорим о математике. В Java API есть множество удобных и простых в использовании методов для работы с числами. Поскольку большинство из них статические, то сначала нужно разобраться, какими особенностями обладают статические переменные и методы, включая константы, которые в Java считаются статическими финализированными переменными.

  • Математические методы – наиболее близкие к глобальным
  • Разница между обычными (не статическими) и статическими методами
  • Что значит иметь класс со статическими методами
  • Инициализация статической переменной
  • Автоматическая упаковка: стираем границы между примитивом и объектом
  • Форматирование чисел
  • Спецификатор форматирования
  • Работа с датами
  • Работа с объектами Calendar
  • Основные методы класса Calendar
  • Статический импорт

Опасное поведение. В жизни случается всякое: то файл пропадает, то сервер падает. Не важно, насколько хорошо вы программируете, ведь невозможно контролировать все. Что-то может пойти не так. При создании опасного метода вам понадобится код, который будет обрабатывать возможные нестандартные ситуации. Но как узнать, опасен ли метод? И куда поместить код для обработки непредвиденной ситуации? Вам предлагается разработать музыкальный MIDI-проигрыватель, использующий опасный JavaSound API.

  • Что происходит, если вы вызываете опасный метод
  • Методы в Java используют исключения, чтобы сообщить вызывающему коду: "Случилось нечто плохое. Я потерпел неудачу"
  • Исключение – объект типа Exception
  • Управление программным потоком в блоках try / catch
  • Finally: для действий, которые нужно выполнить несмотря ни на что
  • Исключения поддерживают полиморфизм
  • Приложение для проигрывания звуков
  • Создание MIDI-событий (данных о композиции)
  • MIDI-сообщение: сердце MidiEvent
  • Как изменить сообщение

Очень графическая история: соберитесь вам предстоит придумать GUI – графический пользовательский интерфейс. Даже если вы уверены, что всю оставшуюся жизнь будете писать код для серверных программ, где работающий на клиентской стороне пользовательский интерфейс представляет собой веб-страницу, рано или поздно вам придется создавать инструменты, и вы захотите применить графический интерфейс. Вы узнаете, как поместить на экран кнопку и заставить ее реагировать на нажатие. Кроме того, вы научитесь рисовать на экране, добавлять изображение в формате JPEG и даже создавать анимацию.

  • Ваш первый графический интерфейс: кнопка во фрейме
  • Пользовательское событие
  • Слушатели, источники и события
  • Вернемся к графике…
  • Личный виджет для рисования
  • Что интересного можно сделать в paintComponent()
  • За каждой хорошей графической ссылкой стоит объект Graphics2D
  • Компоновка графических элементов: помещаем несколько виджетов во фрейм
  • Попробуем сделать это с двумя кнопками
  • Как создать экземпляр внутреннего класса
  • Используем внутренний класс для анимации
  • Легкий способ создания сообщений / событий

Улучшай свои навыки: Swing – это просто. Код для работы со Swing выглядит просто, но, скомпилировав его, запустив и посмотрев на экран, вы подумаете: "Эй, этот объект должен быть в другом месте". Инструмент, который упрощает создание кода, одновременно усложняет управление им – это диспетчер компоновки. Приложив небольшие усилия, вы можете подчинить диспетчер компоновки. Вам предлагается поработать со Swing и ближе познакомиться с виджетами.

  • Компоненты Swing
  • Диспетчеры компоновки
  • Как диспетчер компоновки принимает решения
  • Три главных диспетчера компоновки: border, flow и box
  • Играем со Swing-компонентами

Сохранение объектов: объекты могут быть сплющенными и восстановленными. Они характеризуются состоянием и поведением. Поведение содержится в классе, а состояние определяется каждым объектом в отдельности. Что же происходит при сохранении состояния объекта? Если вы создаете игру, вам понадобится функция сохранения / восстановления игрового процесса. Если вы пишете приложение, которое рисует графики, вам также необходима функция сохранения / восстановления. Вы можете сделать это легким объектно-ориентированным способом – нужно просто сублимировать / сплющить / сохранить / опустошить сам объект, а затем реконструировать / надуть / восстановить / наполнить его, чтобы получить снова.

  • Сохранение состояния
  • Запись сериализованного объекта в файл
  • Что на самом деле происходит с объектом при сериализации
  • Десериализация: восстановление объекта
  • Сохранение и восстановление игровых персонажей
  • Запись строки в текстовый файл
  • Пример текстового файла: электронные флеш-карты
  • Quiz Card Builder: структура кода
  • Класс java.io.File
  • Чтение из текстового файла
  • Quiz Card Player: структура кода
  • Разбор текста с помощью метода split() из класса String
  • Использование serialVersionUID
  • Сохранение схемы BeatBox
  • Восстановление схемы BeatBox

Устанавливаем соединение: свяжитесь с внешним миром. Обо всех низкоуровневых сетевых компонентах заботятся классы из библиотеки java.net. В Java отправка и получение данных по Сети – это обычный ввод / вывод, разве что со слегка измененным соединительным потоком в конце цепочки. Получив класс BufferedReader, вы можете считывать данные. Ему все равно, откуда они приходят – из файла или по сетевому кабелю. Вы узнаете, как установить связь с внешним миром с помощью сокетов и создадите клиентские и серверные сокеты. В итоге у вас будут клиенты и серверы. После того как вы сделаете так, чтобы они смогли общаться между собой, вы получите полноценный многопоточный клиент для чатов.

  • Чат в BeatBox в режиме реального времени
  • Подключение, отправка и прием
  • Устанавливаем сетевое соединение с помощью сокета
  • BufferedReader для считывания данных из сокета
  • PrintWriter для записи данных в сокет
  • DailyAdviceClient
  • Код программы DailyAdviceClient
  • Создание простого сервера
  • Код приложения DailyAdviceServer
  • Создание чат-клиента
  • Несколько стеков вызовов
  • Планировщик потоков
  • Приостановление потока
  • Метод sleep()
  • Создание и запуск двух потоков
  • Использование блокировки объектов
  • Новая улучшенная версия SimpleChatClient
  • Очень-очень простой чат-сервер

Структуры данных. У вас уже есть все необходимые инструменты для сбора данных и управления ими, поэтому не нужно писать собственные алгоритмы для сортировки. Фреймворк для работы с коллекциями в Java – Java collections framework, содержит структуры данных, которые должны подойти практически для всего, что вам может понадобиться.

  • Коллекции
  • Сортировка ArrayList методом Collections.sort()
  • Обобщения и безопасность типов
  • Коллекция API – List (Список), Set (Множество) и Map (Отображение, или Ассоциативный массив)
  • Переопределение hashCode() и equals()
  • Использование полиморфических аргументов и обобщений

Выпусти свой код. Вы написали код, протестировали и откорректировали, но что же дальше? Теперь пришло время узнать про организацию и упаковывание вашего кода – это то, что нужно знать вне зависимости от выбранного варианта доставки приложения конечным пользователям.

  • Варианты развертывания
  • Отделение исходных файлов от скомпилированных
  • Помещаем программу в JAR-архив
  • Помещаем классы в пакеты
  • Предотвращение конфликтов при именовании пакетов
  • Компилируем и запускаем, используя пакеты
  • Флаг -d
  • Создание исполняемых Java-архивов с пакетами внутри
  • Java Web Start
  • JNLP-файл

Распределенные вычисления: находиться далеко – это не всегда плохо. Конечно, задача упрощается, когда все компоненты приложения собраны в одном месте и всем этим управляет одна JVM. Но это не всегда возможно. И это не всегда целесообразно. Как быть, если ваше приложение выполняет сложные вычисления и должно работать на маленьком симпатичном пользовательском устройстве? Что делать, если вашему приложению нужна информация из базы данных, но в целях безопасности к ней может получить доступ только код на вашем сервере? Вы узнаете про технологии EJB – Enterprise Java Beans, и Jini, а также в каких случаях их работа зависит от RMI.

  • Технология RMI
  • Создание удаленного сервиса
  • Сервлеты
  • Enterprise JavaBeans
  • Немного о Jini
  • Создаем обозреватель универсальных сервисов

В книге «Изучаем Java» приводится большое количество примеров Java-программ. Для работы над ним вам не потребуются какие-либо специализированные инструменты, такие как интегрированные среды разработки – IDE. Авторы настоятельно рекомендуют не использовать ничего, кроме простого текстового редактора, поскольку среда IDE может скрыть от вас действительно важные детали. При изучении языка лучше пользоваться командной строкой, а уже потом, вникнув в происходящее, перейти к работе с инструментами, которые автоматизируют процесс разработки.

Формат: PDF + файлы примеров
Качество: eBook
Страниц: 720

Купить книгу «Изучаем Java»

Интернет-магазин OZON.RU: Изучаем Java / Интернет-магазин OZON.RU / Описание товара / Изучаем Java / Интернет-магазин OZON.RU / Оформить заказ

Скачать бесплатно книгу «Изучаем Java»

01.12.20125840.16823

Карта сайта

 
]]>