Философия java брюса эккеля: Философия Java | Эккель Брюс

Содержание

Читать онлайн «Философия java» автора Эккель Брюс — RuLit

Читать онлайн «Философия java» автора Эккель Брюс — RuLit — Страница 1 Выбрать главу

Чтобы изменить документ по умолчанию, отредактируйте файл «blank.fb2» вручную.

Предисловие 13

Java SE5 и SE6 14

Благодарности 14

Глава 1. Введение в объекты 17

Развитие абстракции   18

Объект имеет интерфейс 20

Объект предоставляет услуги 22

Скрытая реализация 23

Повторное использование реализации 24

Наследование 25

Взаимозаменяемые объекты и полиморфизм 29

Однокорневая иерархия 33

Контейнеры 33

Параметризованные типы 35

Создание, использование объектов и время их жизни 36

Обработка исключений: борьба с ошибками 38

Параллельное выполнение  38

Java и Интернет 39

Резюме 47

Глава 2. Все является объектом 48

Для работы с объектами используются ссылки 48

Все объекты должны создаваться явно 49

Объекты никогда не приходится удалять 53

Создание новых типов данных   54

Методы, аргументы и возвращаемые значения 56

Создание программы на Java 58

Ключевое слово static 60

Наша первая программа на Java 61

Комментарии и встроенная документация 64

Стиль оформления программ 70

Резюме 70

Глава 3.

Операторы 71

Простые команды печати 71

Операторы Java 72

Литералы 82

В Java отсутствует sizeof() 92

Резюме 100

Глава 4. Управляющие конструкции 101

Синтаксис foreach 105

return,   107

break и continue 108

Нехорошая команда goto 109

Резюме 115

Глава 5. Инициализация и завершение 116

Конструктор гарантирует инициализацию 116

Перегрузка методов 118

Очистка: финализация и сборка мусора 130

Инициализация членов класса 137

Инициализация конструктором 140

Инициализация массивов 146

Резюме 151

Глава 6. Управление доступом 152

Пакет как библиотечный модуль 153

Спецификаторы доступа Java 159

Интерфейс и реализация 163

Доступ к классам 164

Резюме 167

Глава 7. Повторное использование классов 169

Синтаксис композиции 170

Синтаксис наследования 172

Делегирование 176

Сочетание композиции и наследования 178

Композиция в сравнении с наследованием 184

protected 185

Восходящее преобразование типов 186

Ключевое слово final 188

Инициализация и загрузка классов 195

Резюме 197

Глава 8. Полиморфизм 198

Снова о восходящем преобразовании. . . > 199

Особенности 201

Конструкторы и полиморфизм 208

Ковариантность возвращаемых типов 216

Разработка с наследованием 217

Резюме 220

Глава 9. Интерфейсы 221

Абстрактные классы и методы 221

Интерфейсы 224

Отделение интерфейса от реализации 227

Расширение интерфейса через наследование 233

Интерфейсы как средство адаптации 236

Вложенные интерфейсы 239

Интерфейсы и фабрики 242

Резюме 244

Глава 10. Внутренние классы 245

Создание внутренних классов 245

Связь с внешним классом 246

Конструкции .this и .new 248

Внутренние классы и восходящее преобразование 249

Безымянные внутренние классы 253

Внутренние классы: зачем? 261

Наследование от внутренних классов 272

Можно ли переопределить внутренний класс? 272

Локальные внутренние классы 274

Резюме 276

Глава 11. Коллекции объектов 277

Параметризованные и типизованные контейнеры 277

Основные концепции 280

Добавление групп элементов 281

List 285

Итераторы 288

LinkedList 291

Стек 292

Множество 294

Карта 296

Очередь 298

PriorityQueue 299

Collection и Iterator 301

Идиома «метод-адаптер» 306

Резюме 309

Глава 12. Обработка ошибок и исключения 310

Основные исключения 310

Перехват исключений 312

Создание собственных исключений 314

Спецификации исключений 319

Перехват произвольных исключений 320

Стандартные исключения Java 328

Завершение с помощью finally 330

Использование finally с return 334

Ограничения при использовании исключений 336

Конструкторы 339

Идентификация исключений 343

Альтернативные решения 344

Резюме 351

Глава 13. Информация о типах 352

Необходимость в динамическом определении типов (RTTI) 352

Регистрация фабрик 372

Рефлексия: динамическая информация о классе 376

Динамические посредники 380

Объекты с неопределенным состоянием 384

Интерфейсы и информация о типах 390

Резюме 394

Глава 14.

Параметризация 397

Простая параметризация 398

Параметризованные интерфейсы 404

Параметризованные методы 407

Построение сложных моделей 419

Ограничения 437

Метасимволы 440

Резюме 452

Глава 15. Массивы 454

Особенности массивов 454

Массив как объект 456

Возврат массива 458

Многомерные массивы 460

Массивы и параметризация 463

Создание тестовых данных 465

Создание массивов с использованием генераторов 470

Вспомогательный инструментарий Arrays 474

Резюме 482

Глава 16. Система ввода/вывода Java 483

Класс File 484

Ввод и вывод 489

Добавление атрибутов и интерфейсов 491

Классы Reader и Writer 494

RandomAccessFile: сам по себе 497

Типичное использование потоков ввода/вывода 498

Средства чтения и записи файлов 505

Стандартный ввод/вывод 507

Новый ввод/вывод (nio)  510

Сжатие данных 531

Сериализация объектов 536

Предпочтения 553

Резюме 555

Глава 17. Параллельное выполнение 557

Класс Thread 559

Исполнители 561

Совместное использование ресурсов 578

Взаимодействие между потоками 598

Взаимная блокировка 602

Новые библиотечные компоненты 607

CountDownLatch 607

CyclicBarrier 609

DelayQueue 611

PriorityBlockingQueue 614

Семафоры 619

Exchanger 623

Моделирование 624

Резюме 629

Алфавитный указатель 631

Введение в объекты

Мы препарируем природу, преобразуем ее в концепции и приписываем им смысл так, как мы это делаем во многом, потому что все мы являемся участниками соглашения, которое имеет силу в обществе, связанном речью, и которое закреплено в структуре языка.

.. Мы не можем общаться вовсе, кроме как согласившись с установленными этим соглашением организацией и классификацией данных.

Бенджамин Ли Ворф (1897-1941)

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

Но в то же время компьютеры не столько механизмы, сколько средства уси¬ления мысли («велосипеды для ума», как любит говорить Стив Джобе), и еще одно средство самовыражения. В результате инструменты программирования все меньше склоняются к машинам и все больше тяготеют к нашим умам, также как и к другим формам выражения человеческих устремлений, как-то: литера¬тура, живопись, скульптура, анимация и кинематограф. Объектно-ориентиро- ванное программирование (ООП) — часть превращения компьютера в средство самовыражения.

Эта глава познакомит вас с основами ООП, включая рассмотрение основ¬ных методов разработки программ. Она, и книга вообще, подразумевает нали¬чие у вас опыта программирования на процедурном языке, не обязательно С. Если вам покажется, что перед прочтением этой книги вам не хватает познаний в программировании и синтаксисе С, воспользуйтесь мультимедийным семина¬ром Thinking in С, который можно загрузить с сайта www.MindView.net.

© 2011 — 2021 with by Me

7 лучших книг по Java

 

Есть список книг, прочитать которые должен каждый Java-программист. Чтобы разобраться во всех нюансах и специфике этого объектно-ориентированного языка, программисты и преподаватели курса Java-программирования рекомендуют читать несколько книг параллельно.

Брюс Эккель. Философия Java

Отличное руководство по программированию на Java, между прочим, считающееся одним из лучших. С этой книги, по мнению многочисленного сообщества, и следует начинать изучение Java. Книга одинаково полезна новичкам, так и тем, кто уже пишет код на Java. К книге обращаются за уточнениями во время написания кода. Автор отвечает на вопросы о Java: как, что и почему (почему Java создан именно таким, почему Java работает так, а не иначе и т.д.). По этой книге желающие даже готовятся к экзамену SCJP (Sun Certified Java Programmer), Java-экзамен начального уровня. Программисты утверждают, что читать книгу лучше в оригинале. Разберетесь с Java, а заодно и прокачаете English skills.

Герберт Шилдт. Java 8. Руководство для начинающих

Книга всемирно известного автора позволит студентам приступить к созданию проектов на Java. В самом начале книги автор уделяет внимание основам программирования и правилам создания, компилирования и выполнения программ на Java. Подробно рассматривает и объясняет составляющие элементы ядра Java. В книге также рассматриваются очень сложные темы: многопоточное программирование, библиотека Swing, обобщенные типы.

Кен Арнольд, Джеймс Гослинг. Язык программирования Java

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

Яков Файн. Программирование на Java для детей, родителей, дедушек и бабушек

Эта книга написана самым простым языком для младшего сына Java-чемпиона Дейва. Однажды ребенок попросил отца научить его программированию, чтобы он смог сам создавать компьютерные игры. Книга предназначалась для детей старше 11 лет, их родителей и абсолютных новичков в программировании. Чтобы получить максимум от книги, читайте ее от начала и до конца, тем более, что автор обещает, что в ходе обучения вместе с читателями создаст программу-калькулятор, игру в крестики-нолики и пинг-понг.

Джошуа Блох. Эффективное программирование

Невероятно полезная книга, которая написана программистом и получила признание в профессиональной среде. Джошуа научит каждого читателя писать код на Java лучше и поделится своими советами. Его книга является доступной практической инструкцией для создания программ, которые невозможно или трудно написать на других языках.

Патрик Нимейер и Дэниэл Леук. Программирование на Java

Исчерпывающее руководство по Java в подробностях для студентов, начинающих программистов и финских хакеров. Одно только содержание в этой книге занимает несколько страниц. Для новичка книга будет помощником в изучение Java, а программисту со стажем она поможет разобраться в тонкостях программирования на Java.

Алексей Васильев. Java. Объектно-ориентированное программирование

Книги по Java были написаны в результате чтения лекций и проведения серий мастер-классов по программированию. Книга адаптирована для всех желающих выучить Java. Ее можно использовать в качестве самоучителя. Материала достаточно, чтобы начать писать простые программы после проработки первой части учебника.

Учитесь, читайте и пишите качественный код!

Хочешь научиться Java-разработке? Поступай к нам → https://vitebsk.itstep.by/java/

ООП и Java. Объект, класс. – Николай Соловьёв @leonnight

Все чаще, основным инструментом в творческом процессе создания становится компьютер. Живопись, музыка, стихи, архитектура — идеи зарождаются в умах, но планируются в машинах. По мере роста сложности реализации, возникает необходимость в новых инструментах, в результате чего вопрос о способе их разработки перекладывается на плечи программистов.

Разбираясь с основами ООП, для большего понимания материала, я обратился к литературе и ознакомился с книгой Брюса Эккеля «Философия java». В первой главе-введении, он дает простые определения основам, для дальнейшего манипулирования далее этими понятиями. Далее приведены вырезки из разделов главы.

Здесь возникает вопрос о понимании программистом того, что он должен сделать, ведь здесь происходит установление связи между моделью машины и моделью задачи, каждая из которых обладает своим набором свойств.

Основная задача ООП есть описание задачи в контексте самой задачи, а не в контексте компьютера, а исходят из этого, элементы пространства задачи и их представления в пространстве решения называются объекты.

Гради Буч предложил лаконичное и полное описание объекта:

Объект обладает состоянием, поведением и индивидуальностью.

Суть сказанного в том, что объект может иметь в своем распоряжении внутренние данные (которые есть состояние объекта), методы (которые определяют поведение) и уникальным адресом в памяти.

Объекты, идентичные во всем, кроме внутреннего состояния во время работы программы, группируются в классы объектов. Создание абстрактных типов данных есть фундаментальное понятие в ООП.
Абстрактные типы данных действуют почти так же, как и встроенные типы: можно создавать переменные типов (называемые объектами или экземплярами в терминах ООП) и манипулировать ими (посылать запрос).

Поскольку класс определяет набор объектов с идентичными характеристиками (элементы данных) и поведением (функциональность), класс на самом деле является типом данных, потому что, например, число с плавающей запятой тоже имеет ряд характеристик и особенностей поведения.

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

Механизм передачи запроса к объекту, определяется его интерфейсом, в свою очередь, определяющийся его типом. Код, выполняющий запросы, наряду со скрытыми данными, составляет реализацию.

Источник: Философия Java. Брюс Эккель, 2009 год 4-ое издание.

Брюс Эккель Философия Java 2015 Полиморфизм

Вопрос: Литература по Java


Здесь будет список литературы по Java
очень часто новички ищут максимально эффективный учебник — спойлер этих людей, а те кто мне поверит на слово, могут его смело пропустить

Кликните здесь для просмотра всего текста


типичный вопрос
Сообщение от Hensem

Скажи,какая тебе больше понравилась и какую бы ты посоветовал как для новичка?

всё что нужно новичкам уже давно собрано в отдельную тему Литература по Java
не советую искать поновее, так как это ошибочный путь
объясню почему: начиналось всё с простого синтаксиса и литература была только о нём, дальше появились некие продукты по которым со временем были приняты стандарты и появилась литература описывающая синтаксис и стандарты, а так как уместить в стандартный формат 1 тома это уже сложно появились двухтомники. Дальше больше — стандартов стало достаточно много, что они на сегодняшний момент не влезут и в 8митомник, а может и больше.
такми образом начиная читать с более старой литературы вы можете рассчитывать на более подробное разжёвывание темы чем в более новых там где эти вещи проскакиваются по быстренькому (этим особенно отличается Шилдт) вы можете не понять очевидных вещей.
Поэтому все кто читал всю перечисленную литературу посовещались и я выложил в шапке темы про литературу результат данного обсуждения. (Кто не верит — прочитайте весь тред) Можно не пытаться искать короткий VIP путь к успеху, а просто воспользоваться уже пройденной дорожкой которая гарантированно ведёт к успеху
 Комментарий модератора mutagen
Пожалуй пришло время создать нормальный заголовок у этой темы с учётом всего что сюда напостили
Добавил книжку по андроиду, дата обновления — 17. 01.2014 (для тех кто подумает что тут всё устарело)

Для новичка:
Хорстманн К.С., Корнелл Г. — Java 2. Том 1. Основы
Хорстманн К.С., Корнелл Г. — Java 2. Том 2. Тонкости программирования
Брюс Эккель — Философия Java — не стоит читать перед Хорстманом
(русский перевод старого издания) http://javatutor.net/books/tiej/


«Java .ПРОМЫШЛЕННОЕ ПРОГРАММИРОВАНИЕ Практическое пособие И.Н. Блинов, В.С. Романчик»
Для начинающего, на русском, довольно подробно рассматриваются все базовые вещи
и в том числе часть EE технологий с азов, у кого проблемы с английским — лучший выбор
!!! (большая часть вопросов с этого форума там разжёвана очень подробно)

видеокурсы:
от Игоря Мирончика http://mironchik.com/?p=450
от Харьковчан http://dou.ua/forums/topic/8113/

http://habrahabr.ru/post/67763/

Маст хев всем:
Джошуа Блох Java. Эффективное программирование 2002 — типичные проблемы и их решения
Joshua Bloch, «Effective Java (2nd Edition)» 2008
Чистый код. Создание, анализ и рефакторинг — прекрасное дополнение к предыдущей книге, чтобы отучиться писать быдлокод.
Паттерны проектирования — эта книга в представлении не нуждается. Лучший учебник по паттернам. Все примеры на Джаве.

Мультипоток:

«JavaConcurrency InPractice» BrianGöetz, TimPeierls, JoshuaBloch, JosephBowbeer, DavidHolmes, DougLea (Англ.)- ну в общем вы сами по авторам видите — да?
«Taming Java Threads» — 2000 by Allen I. Holub — всё про низкоуровневую синхронизацию и проблемы с ней связанные, также приводятся альтернативные (от java.util.concurrent) варианты реализации локов , кью и тд. (Автор не любит кемел-кейс, но довольно хорошо объясняет)

Андроид:
Pro Android 4 by Satya Komatineni , Dave MacLean — довольно неплохо разжёваны все базовые вещи, но совершенно отсутствует JNI, нет роадмапа по правильному написанию приложения не хавающего акамулятор и дизайну удобного интерфейса

Остальное:
Кен Арнольд, Джеймс Гослинг. Язык программирования Java — книжка от создателей языка
Г. Шилдт — полный справочник по java SE6. — как книга не очень, но зато как перевод javadoc очень неплохо
«Java. Полное руководство» Герберт Шилдт 2012 — чуть актуальнее предыдущей
Java в примерах.СПРАВОЧНИК Дэвид Флэнаган
Объектно-ориентированное программирование с примерами применения.3-е изд.(2008).Гради Буч
Самоучитель Java с примерами и программами (+ CD-ROM) — есть претензии к оформлению листингов прог. Автор учит быдлокодить. Но именно как самоучитель — книга очень хорошая и полезная. Всё подробно и доступно.
Pro Java 7 NIO 2 — как ускорить файловые операции
«Структуры данных и алгоритмы Java» Р. Лафоре
Кэти Сьерра и Берт Бейтс «Изучаем Java»

 Комментарий модератора mutagen

Кроме того существует огромное количество литературы на английском, буду по мере сил добавлять с коротким резюме

http://www.tutorialspoint.com/jsp/ и http://www.tutorialspoint.com/servlets/ — отлично и подробно с примерами про JSP и сервлеты

если не лень начинать грызть всё и сразу то со стартовой страницы http://www.tutorialspoint.com/index.htm в разделе Java Technologies есть довольно много по теме
правда без указания порядка в котором рекомендовано изучать

Если кому необходимо на немецком, то могу посоветовать Christian Ullenboom «Java ist auch eine Insel».

Хорошие статьи для начинающих:

По Java Hibernate:

http://javaxblog.ru/article/java-hibernate-1/
http://javaxblog.ru/article/java-hibernate-2/
http://javaxblog.ru/article/java-hibernate-3/
http://javaxblog. ru/article/java-hibernate-4/

По Java Spring Framework:

http://javaxblog.ru/article/java-spring-1/
http://javaxblog.ru/article/java-spring-2/

По Java Struts 2:

http://javaxblog.ru/article/java-struts-1/
http://javaxblog.ru/article/java-struts-2/
http://javaxblog.ru/article/java-struts-3/
http://javaxblog.ru/article/java-struts-4/

По Java Maven:

http://javaxblog.ru/article/java-maven-1/
http://javaxblog.ru/article/java-maven-2/

По Java Ant:

http://javaxblog.ru/article/java-ant-1/

По Java JUnit:

http://javaxblog.ru/article/java-junit-1/

По Java JDBC:

http://javaxblog.ru/article/java-jdbc-1/

По Java JSP, Tomcat:

http://javaxblog.ru/article/java-jsp-1/
http://javaxblog.ru/article/java-jsp-2/

По Java Spring AOP:

http://javaxblog.ru/article/java-spring-aop-1/
http://javaxblog.ru/article/java-spring-aop-2/
http://javaxblog.ru/article/java-spring-aop-3/

По Oracle ADF на русском:
http://denisorlovmusic.ru/articles/j…_Rus/Part1.htm

тем кто уже устал читать и не любит учиться по книгам , но любит играть
идём сюда http://javarush.ru/course.html

Ответ: 3ее издание вышло в 2002 году, это было время 1.4
С тех пор в Java появилась много нового (generics, annotation, enums, varargs и т.д.), поэтому читать в 2011 году книгу 9ти летней давности нет смысла.

javatalks.ru / Реально ли за год стать Junior Java Developer?

В марте прошлого года обратился в филиал крупной международной компании в Самаре (да. наглости и амбиций у меня с детства в избытке). Знал на тот момент html, css, java, javascript (основы), pascal, visualbasic6, запросы mysql, php, общее представление: c++. Джаву я не знал вообще. Предложили работу верстальщика, но я отказался. Только программистом! Тогда дали список:

-Брюс Эккель Thinking in Java (русский перевод 2го издания или оригинал 4го — прочел и то и другое)
-Стив Макконел — совершенный код.
-Банда четырех — Дизайн паттернов. (это почти азбука ООП)
-иметь максимально четкое представление разницы j2se и j2ee.

в декабре возникла необходимость работы. устроился в мелкую самарскую web-студию. сразу было ясно, что это мошенники, но нужны были любые работы, которые я смог бы показать будущим работодателям. платить не платили(хоть все уши обещаниями проели), но код к стандартам оформления приводили, а главное научили куда смотреть и что искать при ошибках, какие мелочи легко упустить.

Помимо литературы выше прошел курс intuit (сейчас понимаю, что он смехотворен по своему объему, но в принципе основы там есть)

В конце февраля я повторно выслал резюме и получил приглашение пройти собеседование. Всего собеседований оказалось 6 и длились 1.5 месяца. Два из них прошли по видеосвязи с Москвой. Вся картина напоминала кино «Приходите завтра». Но в конце-концов я получил предложение о работе. Договор был составлен на неполную занятость, т.к. на тот момент диплома у меня не было. В прошлом месяце я диплом получил и договор перезаключили на полный рабочий.

Текущая должность Soft-Engeneer. Оклад более чем устраивает. Вчера в связи с переходом на полный рабочий подняли на 30%.

Даже в той жуликовской конторе спрашивали примеры работ. Я предъявил работы, выполненные мною по фрилансу. Даже работы на других языках всегда значительно лучше отсутствия таковых.

Ps: Диплом синий по ФИЗИКЕ. я полностью самоучка, так что все в ваших руках. только еще английский со школы Free у меня (7 часов в неделю был). хотя американец, который к нам приезжал во время своей кругосветки его плохо знает. я еле половину понял из-за его акцента. но это в моем отделе не так критично. вся документация на английском — выучишь даже если не знал)))))

Отдельное спасибо этому форуму. я учился фактически здесь — ежедневно учил все топики, что попадутся)
Если вы так не можете — усваивать большое количество информации за короткий срок — постарайтесь найти гуру среди друзей, который научит вас. В крайнем случае подойдут видеоуроки. Я на неделе начну писать, но не собираюсь гнать голопом и непременно уложиться в год. 😀

Викиучебник «Философия Java»

 «Thinking in Java 4 Edition

Скорее всего не ошибусь предположив, что  большинство изучавших Java начинали делать это с помощью знаменитой книги Брюса Эккеля: «Thinking in Java», известной в русской редакции как «Философия Java». К сожалению в электронном виде (на русском языке) наиболее распостранено 2-е издание этой книги,  основанное на версии Java 1.1 давно утратившей актуальность.   Нововведения появившиеся в очередных версиях Java (и особенно в Java SE5)  были весьма значительны, что привело к серьезной переработке книги в ее четвертом издании (перевод которого был издан на русском языке). Однако в удобном для чтения (и главное — для быстрого поиска) электронном формате, русской версии этого издания не существовало. Потому я решил восполнить этот пробел и произвести полную версию этой популярной книги в формате «викиучебника». Полагаю что эта информация будет интересна и полезна не только для изучающих язык, но и для всех кто работает на Java в силу огромного числа прекрасных примеров иллюстрирующих практически все аспекты программирования на этом языке. Особенно в тех случаях когда речь идет о редко используемых возможностях Java.

Викиучебник «Философия Java» размещен по адресу:

 http://wikijava.org.ua/index.php?title=Thinking_in_Java_4th_edition

«Spring in Action» 

Книги из серии «….. in Action» (обычно в PDF формате и как правило на английском) заслуженно популярны в определенных кругах 🙂 Среди них встречаются и емкие талмуды, типа «JSTL in Action» (легко читаемый и при умеренных познаниях в английском, но годный на роль хорошего справочника по теме), и поделки поскромнее, типа«Struts in Action» («не все то — золото. ..»). Книга «Spring in Action» в этом списке все же из разряда «тяжеловесов», причем во всех смыслах данного слова. Читать ее без владения «fluent English» наверное непросто. И дело скорее не в сложности излагаемого материала(он не сложен), а в том, она получилась — чрезмерно «английско-художественной», что ли…. Полный лирических отступлений, крылатых выражений, игры слов и прочего бла бла бла, язык авторов, быстро превращает чтение этого справочника (на языке оригинала), в утомительный процесс. Но с другой стороны, это позволяет узнать, что слово «draw»(обычно -«рисовать») можно применять в значении «извлекать из»(букв.- «тянуть, тащить»). В итоге (с учетом общего стиля изложения, принятого в книге) понять точный смысл фраз, типа: «…Spring draw this data …» , бывает одновременно — и непросто, и крайне нужно. Потому читателям не переведенных мною глав, придется по ходу самим решать, чего же в подобных случаях желали авторы: поэтично выразиться о создании(записи) — файла, или игриво поведать о его чтении.

Эта книга была преобразована мною из PDF в викиучебник в качестве экспресс-справочника для личного пользования. Потому перевод не тотальный а лишь в местах — на которые хватило энтузиазма. Остальные главы были просто приведены в удобный для быстрого поиска вид.   Публикуется, ВСЕ в виде — «как есть», и на качество русского текста пенять не стоит… я не являюсь профессиональным переводчиком, и литературного редактора у меня не было. Возможно я кого то разочарую тем, что некоторые места и главы книги я не переводил(и даже не планирую их переводить), но надо же было оставить в задел для будущих поколений 

Викиучебник "Spring в действии" размещен по адресу:

http://wikijava.org.ua/index.php?title=Spring_in_Action

Если Вам понравилась статья, проголосуйте за нее

Голосов: 35 Голосовать  

4 книги по Java от новичка до профи


Иван Брель, Java / Web-архитектор с 15-летним опытом разработки и тренер курсов Java в нашем институте, подготовил список книг, которые помогут вам на каждом этапе становления как Java-разработчика — от начинающего до профи.

Книги расположены по степени увеличения сложности:

1. «Java 8. Полное руководство», Герберт Шилдт, 2015

«Книга «Java 8. Полное руководство» является исчерпывающим руководством по программированию на языке Java. В этом справочном пособии, полностью обновленном с учетом последней версии Java SE 8, поясняется, как разрабатывать, компилировать, отлаживать и выполнять программы на языке программирования Java.»

2. «Философия Java», Брюс Эккель, 2017

«Чтобы по-настоящему понять язык Java, необходимо рассматривать его не просто как набор неких команд и операторов, а понять его «философию», подход к решению задач, в сравнении с таковыми в других языках программирования. На этих страницах автор рассказывает об основных проблемах написания кода: в чем их природа и какой подход использует Java в их разрешении.»

3. «Microservices for Java Developers», Christian Posta, 2016 (ENG).

«В этом практическом руководстве, ориентированном на примеры, разработчики и архитекторы Java узнают, как перемещаться по популярным платформам приложений таким как Dropwizard и Spring Boot, и как развертывать и управлять микрослужбами в масштабе с контейнерами Linux.»

4. «Spring 5.0 Microservices — Second Edition: Scalable systems with Reactive Streams and Spring Boot»,  Rajesh R V, 2017

«Эта книга поможет вам реализовать архитектуру микрослужб в Spring Framework, Spring Boot и Spring Cloud. Написанная по последним спецификациям Spring, эта книга фокусируется на Реактивном Программировании, и вы научитесь создавать современные приложения Java в интернет-масштабе в кратчайшие сроки.»

Читайте и повышайте свои скиллы паралелльно вместе с изучением Java на наших курсах!

Экель, Брюс: 0076092039389: Amazon.com: Книги

Изначально я рассматривал Java как «просто еще один язык программирования», что во многих смыслах так и есть.

Но по прошествии времени, когда я изучил его более глубоко, я начал понимать, что основной смысл этого языка отличался от других языков, которые я видел до того момента.

Программирование — это управление сложностью: сложность проблемы, которую вы хотите решить, зависит от сложности машины, на которой она решена.Из-за этой сложности большинство наших программных проектов терпят неудачу. И все же из всех языков программирования, о которых я знаю, почти ни один не выложился на полную и не решил, что основная цель — преодоление сложности разработки и сопровождения программ. 1 Конечно, многие языковые дизайнерские решения принимались с учетом сложности, но в какой-то момент всегда были другие проблемы, которые считалось важным, чтобы их добавить в смесь. Неизбежно эти другие проблемы являются причиной того, что программисты в конечном итоге «бьют стену» с этим языком.Например, C ++ должен быть обратно совместим с C (чтобы облегчить миграцию для программистов на C), а также быть эффективным. Обе эти цели являются очень полезными целями и составляют большую часть успеха C ++, но они также демонстрируют дополнительную сложность, которая не позволяет завершить некоторые проекты (конечно, вы можете винить программистов и руководство, но если язык может помочь, вылавливая ваши ошибки, почему бы и нет?). В качестве другого примера, Visual BASIC (VB) был привязан к BASIC, который на самом деле не был разработан как расширяемый язык, поэтому все расширения, нагроможденные на VB, создали действительно неподдерживаемый синтаксис.Perl обратно совместим с awk, sed, grep и другими инструментами Unix, которые он должен был заменить, и в результате его часто обвиняют в создании «кода только для записи» (то есть через некоторое время вы не можете читать Это). С другой стороны, C ++, VB, Perl и другие языки, такие как Smalltalk, имели или своих проектных усилий, сосредоточенных на проблеме сложности и, как следствие, замечательно успешных в решении определенных типов проблем.

Что меня больше всего впечатлило, когда я пришел к пониманию Java, так это то, что где-то в смеси проектных целей Sun кажется, что была цель уменьшить сложность для программиста. Как бы говоря: «Мы заботимся о сокращении времени и трудностей, связанных с созданием надежного кода». Вначале эта цель приводила к тому, что код выполнялся не очень быстро (хотя со временем ситуация улучшалась), но она действительно приводила к поразительному сокращению времени разработки — вдвое или меньше времени, необходимого для создания эквивалента. Программа на C ++. Один только этот результат может сэкономить невероятное количество времени и денег, но Java на этом не останавливается. Далее многие сложные задачи, которые стали важными, такие как многопоточность и сетевое программирование, заключаются в языковые функции или библиотеки, которые иногда могут облегчить эти задачи.И, наконец, он решает некоторые действительно большие проблемы сложности: кроссплатформенные программы, динамические изменения кода и даже безопасность, каждая из которых может соответствовать вашему спектру сложности от «препятствий» до «препятствий». Итак, несмотря на проблемы с производительностью, которые мы наблюдали, перспективы Java огромны: она может сделать нас значительно более продуктивными программистами.

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

Я думаю, что результаты коммуникационной революции нельзя увидеть из эффектов перемещения большого количества битов. Мы увидим настоящую революцию, потому что нам всем будет легче общаться друг с другом: один на один, но также в группах и как планета. Я слышал, как предполагалось, что следующая революция — это формирование некоего глобального разума, который является результатом достаточного количества людей и достаточной взаимосвязанности. Java может быть или не быть инструментом, который разжигает эту революцию, но, по крайней мере, эта возможность заставила меня почувствовать, что я делаю что-то значимое, пытаясь обучить языку.

Java SE5 и SE6

В этом издании книги значительно улучшены улучшения, внесенные в язык Java в том, что Sun первоначально называла JDK 1.5, а затем изменила его на JDK5 или J2SE5, а затем, наконец, отказалась от устаревшей «2» и поменял на Java SE5. Многие изменения в языке Java SE5 были разработаны, чтобы улучшить опыт программиста. Как вы увидите, разработчикам языка Java не удалось полностью решить эту задачу, но в целом они сделали большие шаги в правильном направлении.

Одна из важных целей этого издания — полностью усвоить улучшения Java SE5 / 6, а также представить и использовать их на протяжении всей книги. Это означает, что это издание предприняло несколько смелый шаг, сделав его «только для Java SE5 / 6», и большая часть кода в книге не будет компилироваться с более ранними версиями Java; система сборки пожалуется и остановится, если вы попытаетесь. Однако я думаю, что польза стоит риска.

Если вы каким-то образом привязаны к более ранним версиям Java, я рассмотрел основы, предоставив бесплатные загрузки предыдущих изданий этой книги через www.MindView.net. По разным причинам я решил не предоставлять текущее издание книги в бесплатном электронном виде, а только предыдущие издания.

Java SE6

Эта книга была монументальным и трудоемким проектом, и до того, как она была опубликована, Java SE6 (кодовое название mustang ) появилась в бета-форме. Хотя в Java SE6 было внесено несколько незначительных изменений, улучшивших некоторые примеры в книге, по большей части фокус на Java SE6 не повлиял на содержание этой книги; в основном это были улучшения скорости и функции библиотеки, которые выходили за рамки этого текста.

Код в этой книге был успешно протестирован с кандидатом на выпуск Java SE6, поэтому я не ожидаю каких-либо изменений, которые повлияют на содержание этой книги. Если к моменту официального выпуска Java SE6 произойдут какие-либо важные изменения, они будут отражены в исходном коде книги, который можно загрузить с www.MindView.net.

На обложке указано, что эта книга предназначена для «Java SE5 / 6», что означает «написана для Java SE5 и очень значительных изменений, внесенных этой версией в язык, но в равной степени применима и к Java SE6.

4-е издание

Удовольствие от создания нового издания книги — это получение «правильных» вещей в соответствии с тем, что я узнал с момента выхода последнего издания. Часто эти идеи носят характер поговорки: «Опыт обучения — это то, что вы получаете, когда не получаете того, чего хотите», и моя возможность состоит в том, чтобы исправить что-то смущающее или просто утомительное. Так же часто создание следующего издания рождает новые увлекательные идеи, и смущение намного перевешивается радостью открытия и способностью выражать идеи в лучшей форме, чем то, что я достиг ранее.

Еще есть проблема, которая шепчет мне в голове, — сделать книгу чем-то, что захотят купить владельцы предыдущих изданий. Это заставляет меня улучшать, переписывать и реорганизовывать все, что я могу, чтобы книга стала новым и ценным опытом для преданных читателей.

Изменения

Компакт-диск, который традиционно входит в состав этой книги, не является частью этого издания. Важная часть этого компакт-диска, мультимедийный семинар Thinking in C (созданный для MindView Чаком Эллисоном), теперь доступна в виде загружаемой Flash-презентации.Цель этого семинара — подготовить тех, кто недостаточно знаком с синтаксисом C, к пониманию материала, представленного в этой книге. Хотя две из глав этой книги дают достойное вводное описание синтаксиса, их может быть недостаточно для людей без соответствующего опыта, и Thinking in C предназначен для того, чтобы помочь этим людям достичь необходимого уровня.

Глава Concurrency (ранее называвшаяся «Многопоточность») была полностью переписана, чтобы соответствовать основным изменениям в библиотеках параллелизма Java SE5, но она по-прежнему дает вам базовую основу для основных идей параллелизма.Без этого ядра трудно понять более сложные проблемы многопоточности. Я потратил много месяцев на работу над этим, погрузившись в тот потусторонний мир, который называется «параллелизм», и, в конце концов, эта глава не только обеспечивает базовую основу, но и позволяет перейти на более продвинутую территорию.

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

Книга претерпела существенную реорганизацию. Многое из этого пришло из процесса обучения вместе с осознанием того, что, возможно, мое восприятие того, что такое «глава», можно было бы переосмыслить. Я был склонен к необдуманному убеждению, что тема должна быть «достаточно большой», чтобы быть главой. Но особенно при обучении шаблонам проектирования я считаю, что участникам семинара лучше всего получается, если я представляю один шаблон, а затем мы сразу выполняем упражнение, даже если это означает, что я говорю только в течение короткого времени (я обнаружил, что этот темп был также более приятным для меня как учителя).Итак, в этой версии книги я попытался разбить главы по темам и не беспокоиться о полученной длине глав. Я думаю, это улучшение.

Я также осознал важность тестирования кода. Без встроенной тестовой среды с тестами, которые запускаются каждый раз, когда вы делаете сборку своей системы, у вас нет возможности узнать, надежен ли ваш код или нет. Для этого в книге я создал тестовую среду для отображения и проверки результатов каждой программы.(Фреймворк был написан на Python; вы можете найти его в загружаемом коде для этой книги на сайте www.MindView.net.) В целом тестирование рассматривается в приложении, которое вы найдете на http://MindView.net/Books/BetterJava, которое знакомит с тем, что, как я теперь считаю, является фундаментальными навыками, которые должны быть у всех программистов в своем базовом наборе инструментов.

Кроме того, я просмотрел каждый пример в книге и спросил себя: «Почему я сделал это таким образом?» В большинстве случаев я вносил некоторые изменения и улучшения, как для того, чтобы сделать примеры более последовательными внутри себя, так и для демонстрации того, что я считаю лучшими практиками в кодировании Java (по крайней мере, в рамках ограничений вводного текста).Многие из существующих примеров претерпели значительные изменения и переработку. Примеры, которые больше не имели для меня смысла, были удалены, и были добавлены новые примеры.

Читатели оставили много-много замечательных комментариев по поводу первых трех изданий этой книги, что, естественно, мне очень понравилось. Однако время от времени у кого-то будут жалобы, и по какой-то причине периодически возникает одна жалоба: «Книга слишком велика». На мой взгляд, это действительно слабое проклятие, если «слишком много страниц» — ваша единственная проблема.(Вспоминается жалоба австрийского императора на творчество Моцарта: «Слишком много нот!» Не то чтобы я никоим образом пытаюсь сравнить себя с Моцартом.) Кроме того, я могу только предположить, что такая жалоба исходит от кого-то, кто еще не знаком с обширностью самого языка Java и не видел остальных книг по этой теме. Несмотря на это, одна из вещей, которые я попытался сделать в этом издании, — это вырезать части, которые стали устаревшими или, по крайней мере, несущественными.В общем, я старался все перебрать, удалить то, что больше не нужно, внести изменения и улучшить все, что мог. Я чувствую себя комфортно, удаляя части, потому что исходный материал остается на веб-сайте (www.MindView.net) в виде свободно загружаемых 1–3 изданий книги и в загружаемых приложениях к этой книге. Приношу свои извинения тем из вас, кто все еще не переносит размер книги. Вы не поверите, но я много работал, чтобы уменьшить размер.

Примечание к дизайну обложки

Обложка Thinking in Java вдохновлена ​​американским движением искусств и ремесел, которое зародилось на рубеже веков и достигло своего апогея между 1900 и 1920 годами. Оно зародилось в Англии как реакция как к машинному производству промышленной революции, так и к очень декоративному стилю викторианской эпохи. Искусство и ремесла делали акцент на сдержанном дизайне, формах природы, которые видны в движении модерн, ручном ремесле и важности отдельных мастеров, и при этом не избегали использования современных инструментов.Есть много отголосков нынешней ситуации: рубеж веков, эволюция от необработанного начала компьютерной революции к чему-то более утонченному и значимому, а также упор на мастерство разработки программного обеспечения, а не просто на создание кода.

Я рассматриваю Java таким же образом: как попытку поднять программиста от механика операционной системы и превратить его в «мастера программного обеспечения».

И автор, и дизайнер книги / обложки (дружившие с детства) находят вдохновение в этом движении, и оба владеют мебелью, лампами и другими предметами, которые либо оригинальны, либо вдохновлены этим периодом.

Другая тема на этой обложке предлагает коробку для коллекций, которую естествоиспытатель может использовать для демонстрации сохраненных им образцов насекомых. Эти насекомые представляют собой объекты, которые помещаются в объекты коробки. Бокс-объекты сами помещаются внутри «объекта-обложки», что иллюстрирует фундаментальную концепцию агрегирования в объектно-ориентированном программировании. Конечно, программист не может не ассоциировать себя с «ошибками», и здесь ошибки были захвачены и предположительно уничтожены в банке с образцами и, наконец, заключены в небольшую коробку для отображения, как будто подразумевая способность Java находить, отображать , и устранять ошибки (что действительно является одним из его самых мощных атрибутов).

В этом выпуске я создал акварельный рисунок, который вы видите в качестве фона обложки.

Благодарности

Во-первых, спасибо коллегам, которые работали со мной, проводя семинары, консультируя и разрабатывая обучающие проекты: Дэйву Бартлетту, Биллу Веннерсу, Чаку Эллисону, Джереми Мейеру и Джейми Кингу. Я ценю ваше терпение, поскольку я продолжаю пытаться разработать лучшую модель для совместной работы таких независимых людей, как мы.

В последнее время, без сомнения, благодаря Интернету, я стал ассоциироваться с удивительно большим количеством людей, которые помогают мне в моих начинаниях, обычно работая из своих домашних офисов.Раньше мне пришлось бы платить за довольно большой офис, чтобы вместить всех этих людей, но благодаря Интернету, FedEx и телефону я могу воспользоваться их помощью без дополнительных затрат. В моих попытках научиться «хорошо играть с другими» вы все очень помогли, и я надеюсь продолжить учиться тому, как делать свою работу лучше за счет усилий других. Паула Стойер сыграла неоценимую роль в том, что взяла на себя мои бессистемные деловые практики и сделала их разумными (Паула, спасибо, что подталкиваешь меня, когда я не хочу что-то делать).Джонатан Уилкокс, эсквайр, тщательно проанализировал мою корпоративную структуру и перевернул все возможные камни, которые могли скрывать скорпионов, и провел нас через лягушку, чтобы все исправить, законно. Спасибо за заботу и настойчивость. Шарлинн Кобо стала экспертом в области обработки звука и сыграла важную роль в создании мультимедийных обучающих программ, а также в решении других проблем. Спасибо за вашу настойчивость при столкновении с неразрешимыми компьютерными проблемами. Люди из Amaio в Праге помогли мне с несколькими проектами.Дэниел Уилл-Харрис был оригинальным источником вдохновения для работы в Интернете, и он, конечно же, является основополагающим для всех моих дизайнерских решений.

За годы, проведенные на конференциях и семинарах, Джеральд Вайнберг стал моим неофициальным тренером и наставником, за что я ему благодарен.

Эрвин Варга был исключительно полезен с техническими исправлениями в 4-м издании — хотя другие люди помогали с различными главами и примерами, Эрвин был моим основным техническим рецензентом книги, и он также взял на себя задачу переписать руководство по решению для 4-го издания. версия.Эрвин обнаружил ошибки и внес в книгу улучшения, которые стали неоценимым дополнением к этому тексту. Его тщательность и внимание к деталям поразительны, и он, несомненно, лучший технический читатель, который у меня когда-либо был. Спасибо, Эрвин.

Мой блог Билла Веннерса www.Artima.com был источником помощи, когда мне нужно было поделиться идеями. Спасибо читателям, которые помогли мне прояснить концепции, отправив комментарии, включая Джеймса Ватсона, Ховарда Ловатта, Майкла Баркера и других, в частности тех, кто помогал с дженериками.

Спасибо Марку Уэлшу за его постоянную помощь.

Эван Кофски продолжает оказывать большую поддержку, зная все тайные детали настройки и обслуживания веб-серверов на базе Linux, а также поддерживая настройку и безопасность сервера MindView.

Отдельное спасибо моему новому другу кофе, который вызвал почти безграничный энтузиазм в этом проекте. Camp4 Coffee в Крестед-Бьютт, штат Колорадо, стал стандартным местом встречи, когда люди приходят на семинары MindView, а во время перерывов на семинарах это лучший кейтеринг, который я когда-либо ел.Спасибо моему приятелю Элу Смиту за его создание и за то, что он стал таким прекрасным местом, а также за то, что он был такой интересной и увлекательной частью опыта Крестед-Батт. И всем барристам Camp4, которые так весело раздают напитки.

Спасибо ребятам из Prentice Hall за то, что они продолжают давать мне то, что я хочу, смиряясь со всеми моими особыми требованиями, и изо всех сил стараются сделать все для меня гладким.

Некоторые инструменты оказались бесценными в процессе моей разработки, и я очень благодарен создателям каждый раз, когда я их использую.Cygwin (www.cygwin.com) решил для меня бесчисленное количество проблем, которые Windows не может / не может, и я становлюсь все более привязанным к ней с каждым днем ​​(если бы у меня было это только 15 лет назад, когда мой мозг все еще был жестко привязан к Gnu Emacs). Eclipse от IBM (www.eclipse.org) — поистине замечательный вклад в сообщество разработчиков, и я ожидаю увидеть от него великие вещи по мере его дальнейшего развития (как IBM стала модной? Я, должно быть, пропустил заметку). JetBrains IntelliJ Idea продолжает находить новые творческие пути в инструментах разработки.

Я начал использовать Enterprise Architect от Sparxsystems в этой книге, и он быстро стал моим предпочтительным инструментом UML. Программа форматирования кода Jalopy Марко Хунсикера (www.triemax.com) была полезна во многих случаях, и Марко мне очень помог в настройке ее в соответствии с моими конкретными потребностями. Я также обнаружил, что JEdit и плагины Славы Пестова иногда могут быть полезными (www.jedit.org), и это вполне разумный редактор для начинающих для семинаров.

И, конечно, если я недостаточно говорю об этом везде, я использую Python (www.Python.org) постоянно для решения проблем, детище моего приятеля Гвидо Ван Россума и банды глупых гениев, с которыми я провел несколько замечательных дней в бегах (Тим Петерс, теперь я создал ту мышку, которую вы позаимствовали, официально названную « TimBotMouse »). Вам, ребята, нужно найти более здоровые места, чтобы пообедать. (Кроме того, спасибо всему сообществу Python, замечательной группе людей.)

Множество людей прислали исправления, и я им всем в долгу, но особая благодарность (за 1-е издание): Кевину Раулерсону (найдено тонны) замечательных ошибок), Боб Ресендес (просто невероятно), Джон Пинто, Джо Данте, Джо Шарп (все трое были великолепны), Дэвид Комбс (много грамматических и поясняющих исправлений), Dr.Роберт Стивенсон, Джон Кук, Франклин Чен, Зев Гринер, Дэвид Карр, Леандер А. Строшейн, Стив Кларк, Чарльз А. Ли, Остин Махер, Деннис П. Рот, Роке Оливейра, Дуглас Данн, Дежан Ристич, Нил Галарно, Дэвид Б. Малковский, Стив Уилкинсон и многие другие. Проф. Ир. Марк Мерренс приложил огромные усилия для популяризации и выпуска электронной версии 1-го издания книги в Европе.

Спасибо тем, кто помог мне переписать примеры для использования библиотеки Swing (для 2-го издания) и за другую помощь: Джону Шварцу, Томасу Киршу, Рахиму Адатия, Раджешу Джайну, Рави Мантене, Бану Раджамани, Йенсу Брандту, Нитину. Шиварам, Малкольм Дэвис и все, кто выразил поддержку.

В 4-м издании Крис Гриндстафф очень помог при разработке раздела SWT, а Шон Невилл написал для меня первый черновик раздела Flex.

Крейг Брокшмидт и Джен Киюка были одними из умных технических людей в моей жизни, которые стали друзьями, а также влиятельными и необычными в том, что они занимаются йогой и практикуют другие формы духовного совершенствования, которые я считаю весьма вдохновляющими и полезными. .

Для меня не так уж удивительно, что понимание Delphi помогло мне понять Java, поскольку существует много общих концепций и языковых дизайнерских решений.Мои друзья из Delphi помогли мне разобраться в этой чудесной среде программирования. Это Марко Канту (еще один итальянец — возможно, знание латыни дает некую склонность к языкам программирования?), Нил Рубенкинг (который раньше занимался йогой / вегетарианством / дзеном, пока не открыл для себя компьютеры) и, конечно, Зак Урлокер (оригинал Delphi product manager), давнего друга, с которым я путешествовал по миру. Мы все в долгу перед Андерсом Хейлсбергом, который продолжает усердно трудиться над C # (который, как вы узнаете из этой книги, был главным источником вдохновения для Java SE5).

Идеи и поддержка моего друга Ричарда Хейла Шоу очень помогли (и Ким тоже). Ричард и я провели много месяцев вместе, проводя семинары и пытаясь разработать идеальный опыт обучения для участников.

Дизайн книги, дизайн обложки и фотография обложки были созданы моим другом Дэниелом Уиллом-Харрисом, известным автором и дизайнером (www.Will-Harris.com), который играл с натертыми буквами в младших классах средней школы, пока он ждал изобретения компьютеров и настольных издательских систем и жаловался на то, что я бормочу о своих задачах по алгебре.Тем не менее, я сам сделал готовые для камеры страницы, так что ошибки набора мои. Microsoft Word XP для Windows использовался для написания книги и создания готовых к камере страниц в Adobe Acrobat; книга была создана непосредственно из файлов PDF Acrobat. Как дань уважения электронному веку, мне довелось быть за границей, когда я подготовил окончательные версии 1-го и 2-го изданий книги — 1-е издание было отправлено из Кейптауна, Южная Африка, а 2-е издание было отправлено из Праги.3-й и 4-й прибыли из Крестед-Бьютт, штат Колорадо. Основной шрифт — Georgia , а заголовки — Verdana . Шрифт на обложке ITC Rennie Mackintosh .

Особая благодарность всем моим учителям и всем моим ученикам (которые также являются моими учителями).

Кошка Молли часто сидела у меня на коленях, пока я работал над этим изданием, и таким образом предлагала свою теплую пушистую поддержку.

В число друзей второго плана входят, помимо прочего: Пэтти Гаст (экстраординарная массажистка), Эндрю Бинсток, Стив Синофски, Джей Ди Хильдебрандт, Том Кеффер, Брайан МакЭлхинни, Бринкли Барр, Билл Гейтс в Midnight Engineering Magazine, Ларри Константин и Люси Локвуд, Джин Ван, Дэйв Майер, Дэвид Интерсимон, Крис и Лаура Стрэнд, Альмквисты, Брэд Джербич, Мэрилин Цвитаник, Марк Мабри, семьи Роббинсов, семьи Мёльтеров (и Макмилланы), Майкл Уилк, Дэйв Стоунер, Крэнстонс, Ларри Фогг, Майк Секейра, Гэри Энцмингер, Кевин и Сонда Донован, Джо Лорди, Дэйв и Бренда Бартлетт, Патти Гаст, Блейк, Аннет и Джейд, Рентчлеры, Судексы, Дик, Пэтти и Ли Экель, Линн и Тодд и их семьи.И, конечно же, мама и папа.

Примечание

1. Однако я считаю, что язык Python ближе всего к этому подходит. См. Www.Python.org.

Мыслить на Java, 4-е издание

Чтобы узнать о погоде и расписании рейсов аэропортов по всему миру, щелкните здесь.
  • Название Мышление на Java, 4-е издание
  • Автор (ы) Брюс Экель
  • Издатель: Прентис Холл; Выпуск 4 (20 февраля 2006 г.)
  • Мягкая обложка 1150 страниц
  • электронная книга PDF, ePub, Kindle и т. Д.
  • Язык: Английский
  • ISBN-10: 0131872486
  • ISBN-13: 978-0131872486
  • Поделиться:
Описание книги

Thinking in Java получил восторженные отзывы программистов по всему миру за его необычайную ясность, тщательную организацию и небольшие примеры прямого программирования.«Thinking in Java» предназначен для обучения, от основ синтаксиса Java до его наиболее продвинутых функций, по одному простому шагу за раз.

Идеально подходящее для перехода на Java с другого объектно-ориентированного языка (например, C ++), 3-е издание Thinking in Java продолжает продуманный подход предыдущей версии к изучению Java изнутри и снаружи, а также ускоряет его с помощью некоторых из последних в функциях Java 2. Это обширное руководство охватывает многие укромные уголки языка, который имеет большую ценность в мире программирования.

Самая выдающаяся особенность книги — это прилежное и чрезвычайно тщательное изучение языка Java с особым вниманием к объектному дизайну. (Например, на 10 страницах примера кода показаны все доступные операторы.) В этой книге содержатся некоторые из лучших размышлений об объектах, в том числе о том, когда использовать композицию вместо наследования. Эзотерические детали Java в отношении определения классов подробно изложены. (Материалы по интерфейсам, внутренним классам и проектированию для повторного использования порадуют любого эксперта.) В каждом разделе также есть примеры упражнений, которые позволят вам попробовать и расширить свои знания Java.

Об авторах
  • Брюс Эккель — программист, автор и консультант. Его самые известные работы — «Мышление на Java» и «Мышление на C ++», предназначенные для программистов, желающих изучать языки программирования Java или C ++, особенно тех, кто не имеет большого опыта объектно-ориентированного программирования. Экель был одним из основателей комитета по стандартизации ANSI / ISO C ++.
Обзоры, рейтинги и рекомендации: Связанные категории книг: Ссылки для чтения и скачивания: Похожие книги:

Thinking in Java by Bruce Eckel

Thinking in Java — это печатная версия онлайн-материалов Брюса Экеля, которая дает полезную перспективу в освоении Java для тех, кто уже имел опыт программирования.Взгляд автора на сущность Java как нового языка программирования и подробное знакомство с функциями Java делают это руководство полезным.

«Мышление на Java» начинается немного эзотерически, wi

«Мышление на Java» — это печатная версия онлайн-материалов Брюса Экеля, которая дает полезный взгляд на освоение Java для тех, кто уже имеет опыт программирования. Взгляд автора на сущность Java как нового языка программирования и подробное знакомство с функциями Java делают это руководство полезным.

Мышление на Java начинается немного эзотерически, с размышлений автора о том, почему Java является новой и лучше. (Выбор шрифта для заголовков глав в этой книге очень труден для глаз.) Автор излагает свои мысли о том, почему Java сделает из вас лучшего программиста без всяких сложностей. Книга лучше, когда в нем представлены актуальные языковые особенности. Есть руководство по основным типам, ключевым словам и операторам Java. Руководство включает обширный исходный код, который иногда пугает (как в примере кода автора для , все операторы Java в одном листинге.) Таким образом, этот текст будет наиболее полезен для опытного разработчика.

Затем текст переходит к вопросам дизайна класса, когда использовать наследование и композицию, а также связанным темам, связанным с сокрытием информации и полиморфизмом. (Обработка внутренних классов и области видимости, вероятно, покажется большинству читателей немного преувеличенной.) Глава о классах коллекций Java для Java Developer’s Kit (JDK) 1.1 и новых классов, таких как наборы, списки и карты, очень много лучше. В этой главе есть материал, который вы вряд ли найдете где-либо еще.

Также полезны главы по обработке исключений и программированию с информацией о типах, равно как и главы по новым интерфейсным классам Swing и сетевому программированию. Хотя здесь используется несколько смешанный подход, Thinking in Java содержит отличный материал для объектно-ориентированного разработчика, который хочет понять, из-за чего вся суета связана с Java.

Купить новую и подержанную книгу в Интернете с бесплатной доставкой

«» Мыслить на Java «должен прочитать от корки до корки каждый Java-программист, а затем держать под рукой для частого использования.Упражнения сложные, а глава о коллекциях великолепна! Эта книга не только помогла мне сдать экзамен Sun Certified Java Programmer; это также первая книга, к которой я обращаюсь всякий раз, когда у меня возникает вопрос о Java. «
» — Джим Плегер, правительство округа Лаудон (Вирджиния) «» «Намного» лучше, чем любая другая книга по Java, которую я видел. Сделайте это «по порядку величины» … Очень полным, с отличными примерами по существу и умными, а не отупляющими пояснениями … В отличие от многих других книг по Java, я обнаружил, что это быть необычайно зрелым, последовательным, интеллектуально честным, хорошо написанным и точным.ИМХО, идеальная книга для изучения Java. «
» — Анатолий Воробей, Университет Технион, Хайфа, Израиль «» Абсолютно одно из лучших руководств по программированию, которые я когда-либо видел для любого языка. «
» — Йоаким Циглер, сисоп FIX «» Еще раз спасибо за вашу замечательную книгу. Я действительно запутался (будучи программистом не на C), но ваша книга научила меня так быстро, как я мог ее прочитать. Действительно здорово иметь возможность понять основные принципы и концепции с самого начала, вместо того, чтобы пытаться построить эту концептуальную модель методом проб и ошибок.Надеюсь, я смогу посетить ваш семинар в недалеком будущем. «
» — Рэндалл Р. Хоули, специалист по автоматизации, Eli Lilly & Co. «» Это одна из лучших книг, о которых я когда-либо читал. язык программирования …. Лучшая книга, когда-либо написанная на Java. «
» — Равиндра Пай, Oracle Corporation, продуктовая линейка SUNOS «Брюс, твоя книга прекрасна! Ваши объяснения ясны и прямолинейны. Благодаря вашей фантастической книге я получил огромное количество знаний о Java. Упражнения также являются «фантастическими» и отлично дополняют идеи, изложенные в главах.Я с нетерпением жду возможности прочитать больше написанных вами книг. Спасибо за огромную услугу, которую вы оказываете, написав такие замечательные книги. Мой код станет намного лучше после прочтения «Мыслить на Java». Я благодарю вас и уверен, что любые программисты, которым придется поддерживать мой код, также будут вам благодарны. «
» — Ивонн Уоткинс, мастер Java, Discover Technologies, Inc. «» Другие книги посвящены тому, «что» в Java (описание синтаксиса и библиотек) или «как» Java (практические примеры программирования).«Мышление на Java» — единственная известная мне книга, которая объясняет «почему» Java: почему она была спроектирована именно так, почему она работает так, как работает, почему иногда не работает, почему она лучше, чем C ++ , почему это не так. Несмотря на то, что он также хорошо учит тому, что и как в языке, «Thinking in Java» определенно является выбором думающего человека в книге по Java. «
» — Роберт С. Стивенсон «Награды за» Thinking in Java » 2003 Премия Jolt «Журнал разработки программного обеспечения» за лучшую книгу
2003 «Выбор читателей» Журнал «Java Developer’s Journal» за лучшую книгу
2001 Премия «JavaWorld» Выбор редакции за лучшую книгу
2000 Приз читателей «JavaWorld» за лучшую книгу
1999 «Программное обеспечение Журнал разработчиков «Productivity Award»
1998 «Java Developer’s Journal» Выбор редактора за лучшую книгу

«Thinking in Java» получил восторженные отзывы программистов во всем мире за его исключительную ясность, тщательную организацию и небольшие прямые примеры программирования.»Thinking in Java» — от основ синтаксиса Java до его наиболее продвинутых функций — предназначен для обучения по одному простому шагу за раз. Классическое объектно-ориентированное введение для начинающих и экспертов, полностью обновленное для Java SE5 / 6 с множеством новые примеры и главы! В тестовой среде показаны выходные данные программы. Шаблоны проектирования показаны с несколькими примерами повсюду: адаптер, мост, цепочка ответственности, команда, декоратор, фасад, фабричный метод, легковес, итератор, объект передачи данных, нулевой объект, прокси, Синглтон, состояние, стратегия, шаблонный метод и посетитель.Введение в XML для передачи данных; SWT, Flash для пользовательских интерфейсов. Полностью переписанная глава, посвященная параллелизму, дает вам твердое представление об основах многопоточности. 500+ рабочих программ на Java в 700+ компилируемых файлах, переписанных для этого выпуска, а веб-сайт Java SE5 / 6 Companion включает весь исходный код с аннотациями руководство по решениям, блог и мультимедийные семинары. Подробное освещение основ; демонстрирует продвинутые темы. Объясняет надежные объектно-ориентированные принципы. «Практический компакт-диск с семинаром по Java» доступен в Интернете, с полным мультимедийным семинаром Брюса Экеля.Доступны живые семинары, консультации и обзоры. См. Www.MindView.net

Загрузите семь бесплатных примеров глав из книги «Thinking in Java, Fourth Edition». Посетите http://mindview.net/Books/TIJ4.

BruceEckel / TIJ4-code: Пример кода для книги «Thinking in Java, 4th Edition»

  • Загрузите код, нажав зеленую кнопку, которую вы видите вверху этой страницы. После нажатия кнопки выберите «Загрузить Zip».

  • Создайте каталог для установки кода.Для этих инструкции, мы будем называть этот каталог C: \ TIJ4 \ code .

  • Используя Winzip или другую zip-утилиту, распакуйте zip-файл в каталог C: \ TIJ4 \ code . Когда вы закончите, вы должны увидеть несколько уровней каталогов, а в C: \ TIJ4 \ код каталог, вы увидите, среди прочего, подкаталоги соответствующие главам книги.

  • Установите Java JDK SE5 или более позднюю версию с сайта загрузки по адресу Солнце.Вы также в конечном итоге нужна документация, которая доступна ниже на этой странице. Вы также можете установить Java SE6; код будет работать и с этим. Обратите внимание, что самый надежный подход — установить в каталоги по умолчанию.

  • Добавьте в свой путь каталог bin вашего JDK.

  • Установите CLASSPATH в среде вашего компьютера. Для Windows машины, щелкните правой кнопкой мыши значок «Мой компьютер» и выберите «Характеристики.»Затем выберите вкладку» Дополнительно «и нажмите кнопку Кнопка «Переменные среды» внизу. В разделе «Система Переменные », посмотрите, есть ли уже переменная« CLASSPATH ». Если есть, дважды щелкните и добавьте

     ;.; ..; C: \ TIJ4 \ code;
      

    до конца текущей записи. Если нет «КЛАССА» переменной, нажмите кнопку «Создать» и введите

      ПРОФИЛЬ
      

    в поле «Имя переменной» и

     .; ..; C: \ TIJ4 \ code;
      

    В поле «Значение переменной» нажмите «ОК».Чтобы убедиться, что ваш путь к классам был установлен, запустите командную строку (см. ниже), затем введите set и найдите информацию о CLASSPATH в выход.

  • Установите инструмент сборки Ant , следуя инструкциям, которые вы найдет в загрузке Ant. Примечание: Ant не требуется для компиляции примеров в книга. Он используется для автоматизации процесса, но вы также можете скомпилировать каждый пример индивидуально (если у вас установлен CLASSPATH, как описано выше) с помощью компилятора командной строки javac , который был установлен, когда вы выполнили предыдущий шаг (обратите внимание, что вы возможно, придется установить ПУТЬ Windows так, чтобы он указывал на javac.exe ). К скомпилируйте файл с именем MyProgram.java , введите javac MyProgram.java .

  • Запустите командную строку в каталоге C: \ TIJ4 \ code . Сделать это в Windows, нажмите кнопку «Пуск», затем выберите «Выполнить» и введите «cmd» и нажмите «ОК». затем введите

      компакт-диск C: \ TIJ4 \ code
      

    в появившееся командное окно.

  • На этом этапе вы сможете запустить командную строку в C: \ TIJ4 \ code и введите ant build , и сборка должна успешно скомпилировать все главы до главы io , где он завершится с ошибкой с сообщением об отсутствующей библиотеке.Если вам сейчас нужно работать только с главами до io , это на некоторое время хватит.

  • Вы также можете перейти к отдельным главам и набрать ant (чтобы скомпилировать и выполнить код из этой главы) или ant build (чтобы компилировать только код).

  • Для создания всей кодовой базы вам необходимо установить дополнительные библиотеки. К ним относятся:

    • XOM
    • Javassist
    • Челюсти .jar , которая поставляется со стандартной Java установку, но которую вы должны явно разместить в своем путь к классам (описанный ниже).
    • The Eclipse SWT библиотека. Щелкните номер самой последней сборки, затем прокрутите вниз до «SWT Binary and Source» и выберите файл, соответствующий ваша платформа. Дополнительные сведения о поиске файла jar приведены в в книге в рубрике «Установка SWT».

    Как правило, вы можете установить указанные выше файлы Jar, поместив их в каталог jre / lib / ext , который является частью «Java Runtime» который будет настроен при установке Java SE5 или Java SE6 Комплект для разработки.Возможно, вам придется поискать JRE, но это часто можно найти в каталоге «Program Files», в «Ява.»

  • Кроме того, вы можете явно установить каждый из файлов Jar. Для этого вы должны добавить каждый из них в свой КЛАСС, следуя направления, показанные ранее на этой странице. Однако вы также должны включите имя файла Jar в запись CLASSPATH. Для Например, если вы поместите файл xom.jar в каталог с именем C: \ TIJ4 \ libraries \ , затем связанная запись CLASSPATH будет C: \ TIJ4 \ libraries \ xom.банка; .

  • Этот код предназначен для работы вне IDE. Потому что пакеты не будут представлены в следующих главах, а некоторые из наиболее причудливых IDE, такие как Eclipse, требуют, чтобы весь код был в пакетах, если вы хотите чтобы использовать код внутри этих IDE, вам нужно будет сделать некоторые корректировки (однако см. программу Eclipse.py в скачать пакет для помощи). У разных IDE разные требования, и это может быть больше проблем, чем того стоит вы начинаете; вместо этого вы можете захотеть начать с большего базовый редактор, такой как JEdit.

  • На Java 8, Брюс Эккель [Leanpub PDF / iPad / Kindle]

    Эта книга учит программированию на Java с использованием функций 8-й версии этого языка.

    Моя предыдущая книга по Java, Thinking in Java, 4th Edition (Prentice Hall 2006), по-прежнему полезна для программирования на Java 5, версии языка, используемого для программирования Android. Но особенно с появлением Java 8 язык изменился настолько значительно, что новый код Java воспринимается и читается по-другому.Это оправдало двухлетние усилия по созданию новой книги.

    Каждая глава изучает понятие или группу связанных понятий, не полагаясь на функции, которые еще не были представлены. Таким образом, вы сможете переварить каждый фрагмент в контексте ваших текущих знаний, прежде чем двигаться дальше.

    В этой книге я ставлю перед собой следующие цели:

    1. Представлять материал поэтапно, чтобы вы могли легко включить каждую идею, прежде чем двигаться дальше, и тщательно упорядочить презентацию функций, чтобы вы познакомились с темой раньше. вы видите это в использовании.Это не всегда возможно; в таких ситуациях дается краткое вводное описание.

    2. Используйте как можно более простые и короткие примеры. Иногда это мешает мне решать проблемы «реального мира», но я обнаружил, что новички обычно более счастливы, когда они могут понять каждую деталь примера, а не быть впечатленными масштабом решаемой проблемы. За это меня могут критиковать за использование «игрушечных примеров», но я готов согласиться с этим в пользу создания чего-то педагогически полезного.

    3. Дать вам то, что я считаю важным для вас понимать в языке, а не все, что я знаю. Я считаю, что существует иерархия важности информации, и есть некоторые факты, которые 95% программистов никогда не должны будут знать — детали, которые просто сбивают с толку людей и усиливают их восприятие сложности языка. Если вы, , должны подумать об этом, это также запутает читателя / сопровождающего этого кода, поэтому я рекомендую выбрать более простой подход.

    4. Обеспечит вам прочную основу, чтобы вы достаточно хорошо понимали проблемы, чтобы переходить к более сложным курсовым работам и книгам.

    «Мышление на Java», Эккель, Брюс

    Обзор

    «Эта книга — огромное достижение. Вы обязаны иметь копию на своей полке. Глава, посвященная iostreams, является наиболее полным и понятным описанием этой темы, которое я когда-либо видел». — Al Stevens Ответственный редактор журнала Doctor Dobbs «Книга Экелса — единственная книга, которая так ясно объясняет, как переосмыслить конструирование программ для объектной ориентации.То, что эта книга также является отличным учебником по тонкостям C ++, является дополнительным бонусом ». — Эндрю Бинсток, редактор, Unix Review.« Брюс продолжает удивлять меня своим пониманием C ++, а «Thinking in C ++» — его лучшая коллекция идей. все же. Если вам нужны четкие ответы на сложные вопросы о C ++, купите эту выдающуюся книгу », — Гэри Энцмингер, автор книги« Дао объектов »« Мыслить на C ++ терпеливо и методично исследует вопросы, когда и как использовать встроенные строки, ссылки, перегрузку операторов, наследование. , и динамические объекты, а также дополнительные темы, такие как правильное использование шаблонов, исключения и множественное наследование.Все усилия вплетены в ткань, которая включает в себя собственную философию Эккельса в отношении дизайна объектов и программ. Обязательное условие для каждой книжной полки разработчиков C ++. Thinking in C ++ — это тот C ++, который вам необходим, если вы серьезно занимаетесь разработкой с помощью C ++ », — Ричард Хейл Шоу, соучастник редактора журнала PC Magazine.

    Об авторе

    Брюс Экель — автор книги Thinking in C ++ , получившей награду Software Development Jolt Award за лучшую книгу за 1995 год. Он профессионально занимается программированием в течение 20 лет и с 1986 года учил людей во всем мире программированию с объектами.

    Post A Comment

    Ваш адрес email не будет опубликован. Обязательные поля помечены *