Содержание страницы:
Программирование на Java. Изучение Java может стать для вас головной болью, если вы новичок и не знаете, с чего начать. Почему? Да хотя бы потому, что перед тем, как начать изучать программирование, вам нужно подготовить ваш компьютер. Вам нужно установить все необходимое, чтобы начать разрабатывать программы.
Но не переживайте — мы подготовим вас к этому, чтобы вы были во всеоружии, когда начнете. Однако стоит вас предупредить, что перед тем, как начать разрабатывать веб-приложения на Java, вам обязательно нужно будет изучить верстку на HTML+CSS. Читайте еще: Поведенческие факторы ранжирования.
Начнем с маленького отступления. Java — это высокоуровневый, объектно-ориентированный язык программирования, который разработали в Sun Microsystems. В изучении Java есть ряд преимуществ.
Например то, что это достаточно мощное средство для разработки кросс-платформенных приложений как для обычных компьютеров, так и мобильных приложений, веб-приложений и даже может использоваться в робототехнике! Будь на вашем компьютере установлен Windows, Linux или даже Mac OS, для Java абсолютно нет разницы — она выполняется на своей особой виртуальной машине.
Язык Java
Java — не просто язык программирования, а целая программная платформа с широкими возможностями. Основными составляющими блоками этой платформы являются:
- Базовые инструменты для написания и запуска программ на Java.
- Библиотеки и классы — ядро языка. Они обеспечивают основные функциональные возможности программирования на Java: обработку исключений, многопоточность, коллекции, логирование, рефлексию, безопасность, работу с сетью, работу с XML, сериализацию, регулярные выражения.
- Инструменты для развертывания и автоматического запуска приложений.
- Инструменты для создания фронтенда (GUI, интерфейса пользователя). Это классы библиотек JavaFX, Swing и Java2D.
- Библиотеки, для работы с базами данных, удаленно по сети, такие как JDBC, JNDI, RMI и Java RMI-IIOP.
Если вы хотите узнать больше о классах и инструментах Java, прочтите:
Документацию Oracle — там есть всё. Первая версия Java JDK 1.0 включала «всего лишь» несколько сотен классов. Зато в настоящее время их число увеличилось до нескольких тысяч. За время жизни языка авторы внесли огромное количество изменений, которые повышают его безопасность, функциональность и переносимость.
Благодаря постоянному совершенствованию и поддержке языка со стороны его разработчиков, Java всегда шла в ногу с развитием IT-технологий. Так что в настоящее время перед нами — современный язык, основными характеристиками которого являются:
- Невысокий порог вхождения.
Изучать Java проще, чем большинство языков с Си-подобным синтаксисом. - Объектно-ориентированность.
Программы в Java строятся на основании объектов и их взаимодействии, что позволяет задействовать все преимущества ООП. - Переносимость.
Благодаря использованию интерпретатора — виртуальной машины Java, — программы переносятся на различные платформы и устройства. - Платформенная независимость
Программа, написанная на Java для одной платформы, компилируется в промежуточный байт-код, который может запускаться на других платформах благодаря интерпретации с помощью JVM под каждую платформу. - Развитая многопоточность.
Средства Java позволяют управлять выполнением нескольких потоков, что позволяет создавать многопоточные приложения. - Безопасность.
Благодаря встроенной в JVM верификации байт-кода, отсутствии в Java ручного управления памятью, слежением за переполнением стека, а также наличию различных API, которые позволяют контролировать безопасность, на этом языке можно создавать действительно безопасные приложения. - Отказоустойчивость.
Механизм исключений как при компиляции, так и во время непосредственного выполнения повышает отказоустойчивость программ и снижает количество ошибок. - Интерпретируемость.
Java-интерпретатор может выполнять байт-коды Java на любой машине, на которой имеется JVM и JRE. - Распределенность.
У Java есть инструменты для создания распределенных приложений. - Производительность.
Использование JIT(Just-in-time)-компилятора обеспечивает высокую скорость работу приложений, сопоставимую по скорости с языками С и С++.
Первые шаги в освоении новой профессии не всегда даются легко. Особенно если не знаешь, с чего начать, а вопросов возникает множество. В случае с программированием вопрос «с чего начать изучение Java» возникнет первым.
Поля и методы
Поля — это все переменные, связанные с классом или объектом. По умолчанию они являются локальными и не могут использовать в других классах. Для доступа к полям используется оператор «.»: classname.variable Можно задать статические поля с помощью ключевого слова static. Такие поля являются единственным способом хранить глобальные переменные.
Это связано с тем, что в «Джава» попросту нет global variables. Реализована возможность импорта переменных для получения доступа из других пакетов: import static classname; Метод — подпрограмма для тех классов, в которых объявлена. Описывается на том же уровне, что и переменные.
Задается в виде функции и может иметь любой тип, в том числе void: class Point { int х, у; void init(int a, int b) { х = а; У = b; } } В примере выше класс Point имеет поля типа integer x и y, метод init(). Доступ к методам, как и к переменным, осуществляется путем использования оператора «.»: Point.init(); Свойство init ничего не возвращает, поэтому имеет тип void.
Чтобы начать
Изучение Java с нуля, в первую очередь желательно разобраться с основными понятиями. То есть усвоить, что включает в себя язык Java, что представляет собой программа на Java и как происходит ее выполнение. Затем следует переходить к освоению синтаксиса языка, его основ, изучению основных библиотек.
После элементарного прочтения парочки статей о самом языке Java, можно начинать изучение основ. Но нужно установить программное обеспечение для разработки и запуска программ — JDK (Java Development Kit).
Установка Java на компьютер
Итак, делаем первый шаг при изучении Java с нуля — устанавливаем JDK. Для этого вам потребуется проделать несколько простых операций:
- Перейти на сайт
- Выбрать и скачать установочный файл в зависимости от вашей операционной системы.
- Выполнить установку, следуя рекомендациям программы-установщика.
- Настроить переменную окружения, если вы используете Windows.
Основные определения
Если вы только начали изучать Java, непременно встретите следующие термины: JVM (Java Virtual Machine) — виртуальная машина Java. Это программный модуль, зависящий от платформы, который служит для интерпретации исходного байт-кода в машинный код и его исполнения. JRE (Java Runtime Environment) — среда выполнения Java.
Включает в себя реализацию JVM для конкретной платформы и набор библиотек, необходимых для выполнения программ на Java. JDK (Java Development Kit) — набор инструментов разработчика, необходимых для написания программ на Java. Включает в себя компилятор, JRE, набор стандартных библиотек Java, документацию, различные утилиты.
Исходный код — текстовый файл на языке Java, имеющий расширение .java Байт-код — машинно-независимый низкоуровневый код, представляющий собой набор инструкций для JVM. Машинный код — набор машинных инструкций в двоичном формате, которые непосредственно выполняются процессором.
Компиляция — преобразование исходного кода в байт-код. Интерпретация — преобразование байт-кода в машинный код. Платформа — программно-аппаратная среда, в которой происходит выполнение программ и приложений. Наиболее популярными платформами являются Microsoft Windows, Linux, ОС Solaris и Mac OS.
Жизненный цикл программы
Жизненный цикл программы на языке Java начинается с написания исходного кода в текстовом формате. Обычно для этого используются специальные среды для разработки — Integrated Development Environment (IDE), но простые программы можно набирать и в текстовом редакторе, даже в Notepad, который поставляется с любой редакцией ОС Windows. Исходный код необходимо сохранить в файл, имеющий расширение .java.
Прежде, чем выполнить этот исходный код, его необходимо скомпилировать в байт-код с помощью компилятора. Компилятор — это утилита, которая является частью JDK. В результате его работы мы получим файл с расширением .class. Он содержит байт-код — инструкции для JVM, формат которых напоминает язык ассемблер.
Наша программа HelloWorld.java будет скомпилирована в файл HelloWorld.class. Платформа Java не предусматривает инструментов для редактирования байт-кода, но возможность просмотреть его все же есть. Чтобы посмотреть, что представляет собой байт-код программы на Java, можно воспользоваться утилитой дизасcемблера javap, которая входит в состав JDK. HelloWorld.
Теперь наша программа хранится в скомпилированном виде в файле HelloWorld.class. Для ее выполнения на любой из платформ необходима установленная JRE. Возможность переносимости Java-программ на любую платформу обеспечивается за счет использования JVM.
Исполнение программы — это выполнение байт-кода виртуальной машиной Java. Выполнение программ производит утилита java, которой необходимо указать имя скомпилированного файла. Выполнение происходит в следующей последовательности:
- В оперативной памяти компьютера запускается JVM. По сути это программа, которая служит для выполнения написанных нами Java-программ.
- С помощью начального загрузчика классов JVM загружает и инициализирует наш класс в памяти компьютера. В нашем примере это класс HelloWorld.
- Далее в нашем классе JVM ищет методpublic static void main(String[]).
- Выполняется код метода main. Если это необходимо для выполнения программы, производиться загрузка и инициализация других классов.
- После выполнения кода производится уборка мусора — очистка памяти и закрытие программы JVM.
При выполнении всех этих действий JVM интерпретирует (преобразовывает) байт-код в машинную инструкцию для процессора с учетом операционной системы, на которой она выполняется.
Выбор и установка среды разработки
Чтобы быстро и эффективно программировать на Java, вам понадобится среда разработки — приложение для написания программ на Java. Наиболее популярными IDE среди разработчиков на Java являются:
- IntelliJ IDEA
- Eclipse
- NetBeans
Согласно обзору популярности инструментов Java-разработки, который подготовила компания RebelLabs, в 2017 году лидером стал IntelliJ IDEA, второе место занимает Eclipse, а на третьем месте со значительным отставанием от пары лидеров расположился NetBeans. Доля остальных IDE невелика и не превышает в общем объеме 3%. Для новичков вполне достаточно установить IntelliJ IDEA Community Edition.
Во-первых, вы получите все плюсы современной IDE, такие как: подсказки, проверка кода, возможность отладки кода, удобная интеграция с БД, серверами и поддержка многих инструментов и технологий разработки.
Во-вторых, вы сделаете первый шаг в освоении профессионального инструмента разработки, используемого большинством разработчиков. Инструкция по установке IntelliJ IDEA приводится в начале третьего уровня обучающего онлайн-курса JavaRush, также с ней можно ознакомиться на этом ресурсе.
Итого
Самостоятельно изучить Java с нуля не составит труда для большинства начинающих. Для этого вполне достаточно знаний на уровне пользователя персонального компьютера. Чтобы эффективно начать изучать Java, проделайте несколько простых шагов:
- Установите Java на компьютер
- Изучите основные понятия
- Установите среду разработки
- Напишите и запустите свою первую программу.
Топ-7 книг по Java для начинающих
Следующие две книги можно начинать читать на старте учёбы, параллельно с видео или, если учитесь на JavaRush, — вместе с первыми уровнями. Они, особенно первая, подходят людям с нулевым программистским прошлым.
Head First Java
Я начал с этой книги не потому, что она мне больше всего нравится, а потому, что она самая простая. Эта книга, по мнению очень многих программистов, — лучший самоучитель Java с нуля. Причём она по-настоящему и совсем «с нуля», то есть подходит тем, кто только-только начинает и не совсем понимает ещё, что за зверь такой — программирование. Ко мне она попала слишком поздно.
Думаю, именно поэтому я не смог её оценить по достоинству. «Просто читать» её было очень приятно, а вот искать что-то конкретное в ней мне приходилось подолгу. Материал там подан живо, но довольно поверхностно (потому что с нуля!) и многих тем и нужных пояснений попросту нет.
А вот мой друг, которому она ушла по наследству, был от нее в восторге и кричал, что это не просто лучший учебник по Java для начинающих, а прям мировой шедевр и именно так нужно подавать сложный материал.
Достоинства:
- Лучший самоучитель Java с нуля, для полных чайников, написан живым языком;
- Прикольные иллюстрации и юмор;
- Пояснения с жизненными примерами.
Недостатки:
- Многовато «воды» для тех, кто уже въехал в тему;
- Не всегда удачные паззлы и упражнения.
Герберт Шилдт. Java 8. Руководство для начинающих
Полистав этот учебник, я подумал, что он хорошо подойдёт тем, кому нравится более традиционное изложение материала, нежели в Headfirst, и при этом они ищут самоучитель «с нуля». Местами изложение в книге очень детальное, напоминает расширенную и переведённую документацию с хорошими наглядными примерами.
Иногда, как по мне, автор переходит границу, и начинает слишком уж разжевывать, читать становиться скучновато… и вдруг — кульбит — и какое-то довольно сложное место проскакивается почти мгновенно, и ты в полном недоумении пытаешься понять, что и где пропустил. Тем не менее, таких мест в книге не слишком много, и я знаю людей, которые считают, что «Руководство для начинающих» — лучший самоучитель Java для тех, кто ещё ничего не знает.
Лично мне он показался не очень ровным. Скажем, начинаю разбирать коллекции, и вместо человеческого пояснения мне подсовывают задачу по самостоятельному созданию Set на основе массивов. Классная задача, но я бы хотел для начала лучше понять, что такое стандартные коллекции!
Хотя эта книга, как и предыдущая, считается учебником для начинающих, мой опыт преподавателя подсказывает, что она хороша только в совокупности с другими материалами: гуманитарию-свитчеру будет не всё просто и понятно. Лучше всего «Руководство для начинающих» подойдёт тому, кто худо-бедно учил программирование (например, в универе), давным-давно на него забил, и при этом ему нравится стиль изложения автора.
Достоинства:
- Традиционное вдумчивое изложение основ;
- Хорошие примеры.
Недостатки:
- Есть «прыжки» от «слишком разжевано» до «мельком сказано»;
- Местами скучновато.
Кстати, у Герберта Шилдта есть ещё одна известная книга по программированию — «Java 8. Полное руководство». Это совсем другой учебник, более фундаментальный. К нему и переходим.
Справочники и расширенные руководства
Книги из этого раздела пригодятся тем, кто уже ввязался в программирование на Java по полной и ищет книги для лучшего понимания теории и практики.
Герберт Шилдт «Java 8. Полное руководство»
Эту книгу я решил загрузить из интернета, чтобы оценить, а потом — купить или не купить. Шутка ли, 1300 страниц текста! Ну и цена впечатляет не меньше объема. Точно так же я поступил и с двухтомником «Библиотека профессионала» Кея Хорстманна (о ней — ниже). Забегая наперед скажу, что я остановил свой выбор на второй. Почему?
Потому что в «Полном руководстве» я узрел те же недостатки, что и в «Руководстве для начинающих». Иногда разжевано, иногда — скомкано, но при этом не просто скомкано, а как-то многословно скомкано. Вероятно, это — авторский стиль и, думаю, кому-то он будет по нраву, а точнее — по мышлению. В целом «Java 8. Полное руководство» — это неплохой справочник по Java. Но лично мне изложение тех же самых тем больше понравилось в другой книге.
Достоинства:
- Полное руководство. Кажется, там есть все темы, которые нужно знать новичку, и не только новичку.
- Подробные пояснения.
Недостатки:
- Много воды (но это кому-то может нравиться!);
- Русский перевод не лучший.
Java. Библиотека профессионала, Кей С. Хорстманн, Гари Корнелл
Книги Шилдта и Хорстманна часто сравнивают друг с другом. И у той, и у другой есть преданные поклонники. Для меня именно двухтомник Хорстманна — лучший учебник по Java. Он же стал для меня настольной книгой на начальных и средних уровнях JavaRush. Когда я не понимал какую-то тему, в основном лез именно в Хорстманна, и тот многое прояснял.
В книге рассматривается всё — от синтаксиса до многопоточного программирования, локализации приложений и работы с XML. И пусть вас не пугает название «Библиотека профессионала» (меня именно оно и отпугнуло), основы тут разобраны довольно хорошо. Кроме того, её полезно периодически перечитывать, чтобы освежить и упорядочить знания. Говорят, даже профессионалы находят в ней что-то полезное для себя…
Достоинства:
- При впечатляющем количестве страниц — мало воды (в отличие от Шилдта).
- Содержит всё, что нужно новичкам.
- Раскрывает Java 8.
- Хорошая подача тем по коллекциям и дженерикам.
- Очень хорошо сочетается с JavaRush. Доходите до темы, решаете задачки, в какой-то момент что-то не понимаете — смотрите Хорстманна, пробуете снова.
Недостатки:
- Кому-то может показаться, что книга суховата;
- Нет практики;
- Русский перевод с ляпами.
«Java. Методы программирования». Блинов, Романчик
Когда-то я вычитал на форуме, что есть такая книга «Промышленное программирование», и в ней неплохие задачи. Оказалось — не соврали. Я нашёл её копию в PDF на сайте белорусского EPAM’а.
Там издание не самое новое (по Java 6), а написана книга как основательный университетский учебник, то есть местами изложение несколько тяжеловесное, академическое. НО! Там действительно очень хороший сборник задач по программированию на Java, а также тестовые задания. Говорят, по этой книге учатся стажёры EPAM, а также её взяли на вооружение многие оффлайновые курсы по Java.
Там подход к задачам немного не такой, как у JavaRush, то есть, в среднем тут задачи чуть сложнее и каждая из них — что-то вроде… не мини, но микро-проекта. Так что рекомендую даже студентам JavaRush, так как недостатком практической стороны курса я считаю то, что все задачи в нём уже полностью спроектированы и есть слишком много подсказок.
Скажем, задачи на ООП из этого сборника помогли мне очень неплохо разобраться в этом самом ООП наряду с книгами «неувядающей классики», о которых я пишу ниже. Книга написана как бы для будущих «гребцов», поэтому в ней описаны технологии Hibernate для разработки распределённых систем, а также основы HTML, XML, JavaScript.
«Промышленное программирование» — если не лучший самоучитель Java, то очень неплохое учебное пособие. Но к ней нужно приходить уже подготовленным. Скажем, после десятка-другого уровней JavaRush. Позднее я обнаружил её более новое и переработанное издание, уже под именем «
Достоинства:
- Отличная подборка задач и тестовых заданий;
- Есть официальная бесплатная версия (я полагаю, что она официальная, поскольку лежит не на каком-нибудь рутрекере, а на сайте EPAM);
- Сравнение с С++.
- Возможность понять, что проходят на стажировке EPAM.
Недостатки:
- Слишком фундаментальное изложение. Но для повторения с практикой — подойдёт.
- Нет Java 8.
Неувядающая классика
Книги, о которых я пишу ниже можно назвать священными текстами для начинающих и продолжающих «джавистов».
Effective Java, Джошуа Блох
Это просто сокровище, а не книга, и посвящена она базовым принципам языка от одного из его авторов Джошуа Блоха. Скорее всего, вы уже пользовались его библиотеками (в Java Collection, например). Сразу оговорюсь: полнейшим новичкам, кроме каких-нибудь вундеркиндов-спидлёрнеров книга Effective Java не нужна.
Сначала лучше усвоить синтаксис, и получить хоть какую-то практику программирования, так сказать, «набить шишки», а затем уже — браться за творение Джошуа Блоха. Книга пригодится тем, кто хочет по-настоящему понимать Java, сформировать правильный подход при программировании на этом языке, понять не только как нужно делать, но прочему нужно делать именно так.
А ещё тем, кто хочет глубоко познать ООП (в принципе, это взаимосвязанные вещи). Эта книга — лучший учебник по Java в разрезе объектно-ориентированного подхода к программированию.
Достоинства
- Блестящее изложение материала по теме ООП.
- Приведены лучшие практики программирования.
- Автор очень хорошо знает Java изнутри.
Недостатки
- Пока что отсутствует перевод самого нового издания книги (третьего).
Философия Java, Брюс Эккель
Название этой книги говорит само за себя. Это ещё одна «альфа и омега» для всех, кто хочет знать Java! В этой книге вы найдёте хорошие и внятные примеры, и из них будет понятно, как работает Java. Мне сложно сказать, какая из двух книг — «Философия Java» или «Эффективное программирование» — лучше.
Я бы сказал, что Эккель несколько лояльнее к новичкам, в то время как Блох требует какого-никакого опыта. Впервые я прочитал главу из «Философии Java», когда только начинал учиться на JavaRush (кажется, на одном из ранних уровней она значилась в рекомендованных). Тогда она мне не пошла. Зато после 10 или 12 уровня — это была песня! И, я скажу, очень полезная песня. Я возвращался к ней и позже, уже когда пришёл к «Эффективному программированию». Скажу так: Блох и Эккель пускай говорят об одном и том же, но по-разному, и примеры приводят разные.
Достоинства
- Глубокое изложение принципов Java от профессионала;
- Хорошо зайдет тем, кто переходит с других языков — много сравнений с С++, например.
- Как мне кажется, её можно начинать читать уровня с 10-го, а вот Эккеля — чуть позднее.
Недостатки
- Очень неудачные русские переводы;
- Отсутствие нового издания книги на русском.
Краткие выводы
- Лучший самоучитель Java с нуля для тех, кто совсем ничего не знает — Head First Java;
- Лучший справочник-учебник по Java и настольная книга — «Библиотека профессионала». И, конечно, документация Oracle. Читайте еще: Как создать свой блог.
- Лучший сборник задач по программированию на Java — JavaRush. Ну а среди книг — «Java. Методы программирования».
- Лучшая неувядающая классика — «Философия Java» и «Effective Java». Это must read для всех, кто решил разобраться во всем по-настоящему, для глубокого понимания. Но лучше их читать постепенно и с расстановкой.
- Дополнительный вывод: есть возможность — читайте на английском. Русские переводы в основном очень слабые.