sonyps4.ru

Как научиться программировать на Java — полное руководство. Лучшие книги по Java

Русскоязычные каналы, которые помогут изучить Java

1. Образование онлайн

Думаю, каждый хоть раз натыкался на уроки от этого автора. Может показаться, что он объясняет слишком медленно, но на деле именно такой темп позволяет хорошо усвоить и закрепить полученную информацию. Работает с Eclipse, что подойдет тем, кто не знаком с шорткатами, библиотеками и другими плюсами данной IDE (тем более, знание Eclipse требуется повсеместно). Плейлисты разделены на введение, Java для профессионалов, алгоритмы сортировок, JSP, Swing, паттерны и многое другое.

2. ZhirniToni

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

3. loftblog

Сборная солянка. Нет, правда: на этом канале собрано много всего. Можно найти уроки по основам программирования, HTML, CSS, Python, Git. Даже монтаж видео в Adobe Premiere. То есть опыт у ребят колоссальный. Но мы поговорим о Java. Здесь нам демонстрируют работу со всеми (ну точно многими) любимой IntelliJ IDEA. Показывают даже установку IDE, что полезно, если вы новичок или просто никогда не работали с IntelliJ. При этом уроки разные по продолжительности, которая зависит от сложности темы. Подача материала легкая, но основательная.

4. Evil Nerd

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

Англоязычные Youtube-каналы

5. Derek Banas

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

6. Durga Software Solutions

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

7. Java Brains

Преподаватель Java Brains является отличным учителем и техническим экспертом в том, чему он учит. Он уже давно работает разработчиком программного обеспечения, поэтому вы точно знаете, что гарантированно получите во всех смыслах правильный контент. Порой автор показывает один из способов, а затем объясняет, как можно изменить код, чтобы сделать то же самое, но лучше, чище. Плейлистов много, включая Java Enterprise Edition, а также разбор таких популярных фреймворков, как Spring и Hibernate.

8. Deege U

На этом канале вам расскажут, что такое , как создать репозиторий на Github, продемонстрируют микросервисы, туториалы, etc. В общем-то, ничего сверхнового, но этот канал станет отличным дополнением к предыдущим, так как моментами затрагиваются действительно интересные темы, которые не везде освещаются. Например Java EE-сервер приложений Wildfly. Хорошая палочка-выручалочка, как для начинающих джавистов, так и для более опытных разработчиков.

Возьмите нашу подборку на карандаш. Она обязательно пригодиться новичкам, стремящимся изучить Java, и программистам с опытом, которые хотят вспомнить «матчасть». Удачи в открытии новых горизонтов!

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

«Для самых маленьких»

Следующие две книги можно начинать читать на старте учёбы, параллельно с видео или, если учитесь на JavaRush, - вместе с первыми уровнями. Они, особенно первая, подходят людям с нулевым программистским прошлым.

Head First Java

Я начал с этой книги не потому, что она мне больше всего нравится, а потому, что она самая простая. Эта книга, по мнению очень многих программистов, - лучший самоучитель Java с нуля. Причём она по-настоящему и совсем «с нуля», то есть подходит тем, кто только-только начинает и не совсем понимает ещё, что за зверь такой - программирование. Ко мне она попала слишком поздно. Думаю, именно поэтому я не смог её оценить по достоинству. «Просто читать» её было очень приятно, а вот искать что-то конкретное в ней мне приходилось подолгу. Материал там подан живо, но довольно поверхностно (потому что с нуля!) и многих тем и нужных пояснений попросту нет. А вот мой друг, которому она ушла по наследству, был от нее в восторге и кричал, что это не просто лучший учебник по Java для начинающих, а прям мировой шедевр и именно так нужно подавать сложный материал. Достоинства:
  • Лучший самоучитель Java с нуля, для полных чайников, написан живым языком;
  • Прикольные иллюстрации и юмор;
  • Пояснения с жизненными примерами.
Недостатки:
  • Многовато «воды» для тех, кто уже въехал в тему;
  • Не всегда удачные паззлы и упражнения.

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

Полистав этот учебник, я подумал, что он хорошо подойдёт тем, кому нравится более традиционное изложение материала, нежели в Headfirst, и при этом они ищут самоучитель «с нуля». Местами изложение в книге очень детальное, напоминает расширенную и переведённую документацию с хорошими наглядными примерами. Иногда, как по мне, автор переходит границу, и начинает слишком уж разжевывать, читать становиться скучновато… и вдруг - кульбит - и какое-то довольно сложное место проскакивается почти мгновенно, и ты в полном недоумении пытаешься понять, что и где пропустил. Тем не менее, таких мест в книге не слишком много, и я знаю людей, которые считают, что «Руководство для начинающих» - лучший самоучитель Java для тех, кто ещё ничего не знает. Лично мне он показался не очень ровным. Скажем, начинаю разбирать коллекции, и вместо человеческого пояснения мне подсовывают задачу по самостоятельному созданию Set на основе массивов. Классная задача, но я бы хотел для начала лучше понять, что такое стандартные коллекции! Хотя эта книга, как и предыдущая, считается учебником для начинающих, мой опыт преподавателя подсказывает, что она хороша только в совокупности с другими материалами: гуманитарию-свитчеру будет не всё просто и понятно. Лучше всего "Руководство для начинающих" подойдёт тому, кто худо-бедно учил программирование (например, в универе), давным-давно на него забил, и при этом ему нравится стиль изложения автора. Достоинства:
  • Традиционное вдумчивое изложение основ;
  • Хорошие примеры.
Недостатки:
  • Есть «прыжки» от «слишком разжевано» до «мельком сказано»;
  • Местами скучновато.
Кстати, у Герберта Шилдта есть ещё одна известная книга по программированию - «Java 8. Полное руководство». Это совсем другой учебник, более фундаментальный. К нему и переходим.

Справочники и расширенные руководства

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

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

Эту книгу я решил загрузить из интернета, чтобы оценить, а потом - купить или не купить. Шутка ли, 1300 страниц текста! Ну и цена впечатляет не меньше объема. Точно так же я поступил и с двухтомником «Библиотека профессионала» Кея Хорстманна (о ней - ниже). Забегая наперед скажу, что я остановил свой выбор на второй. Почему? Потому что в книге «Java. Полное руководство» я узрел те же недостатки, что и в «Руководстве для начинающих». Иногда разжевано, иногда - скомкано, но при этом не просто скомкано, а как-то многословно скомкано. Вероятно, это - авторский стиль и, думаю, кому-то он будет по нраву, а точнее - по мышлению. В целом «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. Позднее я обнаружил её более новое и переработанное издание, уже под именем «Java. Методы программирования ».

Достоинства:
  • Отличная подборка задач и тестовых заданий;
  • Есть официальная бесплатная версия (я полагаю, что она официальная, поскольку лежит не на каком-нибудь рутрекере, а на сайте EPAM);
  • Сравнение с С++.
  • Возможность понять, что проходят на стажировке EPAM.
Недостатки:
  • Слишком фундаментальное изложение. Но для повторения с практикой - подойдёт.
  • Нет Java 8.

Неувядающая классика

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

Effective Java, Джошуа Блох

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

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

Название этой книги говорит само за себя. Это ещё одна «альфа и омега» для всех, кто хочет знать Java! В этой книге вы найдёте хорошие и внятные примеры, и из них будет понятно, как работает Java. Мне сложно сказать, какая из двух книг - «Философия Java» или «Эффективное программирование» - лучше. Я бы сказал, что Эккель несколько лояльнее к новичкам, в то время как Блох требует какого-никакого опыта. Впервые я прочитал главу из «Философии Java», когда только начинал учиться на JavaRush (кажется, на одном из ранних уровней она значилась в рекомендованных). Тогда она мне не пошла. Зато после 10 или 12 уровня - это была песня! И, я скажу, очень полезная песня. Я возвращался к ней и позже, уже когда пришёл к «Эффективному программированию». Скажу так: Блох и Эккель пускай говорят об одном и том же, но по-разному, и примеры приводят разные. Достоинства
  • Глубокое изложение принципов Java от профессионала;
  • Хорошо зайдет тем, кто переходит с других языков - много сравнений с С++, например.
  • Как мне кажется, её можно начинать читать уровня с 10-го, а вот Эккеля - чуть позднее.
Недостатки
  • Очень неудачные русские переводы;
  • Отсутствие нового издания книги на русском.

Краткие выводы

  1. Лучший самоучитель Java с нуля для тех, кто совсем ничего не знает - Head First Java;
  2. Лучший справочник-учебник по Java и настольная книга - «Библиотека профессионала». И, конечно, документация Oracle.
  3. Лучший сборник задач по программированию на Java - JavaRush. Ну а среди книг - «Java. Методы программирования».
  4. Лучшая неувядающая классика - «Философия Java» и «Effective Java». Это must read для всех, кто решил разобраться во всем по-настоящему, для глубокого понимания. Но лучше их читать постепенно и с расстановкой.
  5. Дополнительный вывод: есть возможность - читайте на английском. Русские переводы в основном очень слабые.

От автора: на этом языке программирования работает примерно 3 миллиарда смартфонов, 125 миллионов телевизоров и все до единого Blu-Ray проигрыватели в мире. Этот язык регулярно занимает призовые места в рейтингах разработчиков ПО и является самым востребованным среди крупнейших IT-компаний. Он является техническим феноменом и работает абсолютно на любом устройстве, что соответствует его принципу «написал один раз - запускай везде» (WORA - «write once, run anywhere»). Кто догадался, поднимите руки! Конечно же, это язык Java. И сегодня я раскрою вам все карты и расскажу всю правду о том, как стать Java программистом с нуля! Устраивайтесь поудобнее!

Несколько фактов о Java

Дабы не утомлять вас длинными теоретическими проповедями, я сгруппировал некоторые сведения о Java в списочек, после прочтения которого вы получите озарение понимание того, что это за язык такой, и какова его роль в дикой природе программировании:

Java - это «модный» и кроссплатформенный язык программирования. Он работает на любом устройстве с любой операционкой. На нем написаны все Google и Android-приложения. Ни по одному другому языку вы не найдете столько информации и обучающих материалов;

официальная дата выпуска языка - 23 мая 1995 г. Изначально он задумывался для интерактивного кабельного телевидения, но «не срослось». Изобретателем Java является компания Sun Microsystems, которую в 2010 г. выкупила Oracle;

многие путают Java и JavaScript. Если вы хотите заниматься (веб-сайты, веб-приложения), то выбирайте второй вариант. Java - это back-end, т. е. разработка начинки приложений;

это объектно-ориентированный язык программирования, код которого выполняется специальной виртуальной java-машиной (JVM). В США примерно на 9 из 10 компьютеров установлена эта самая JVM;

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

Вы все еще здесь или побежали сделать себе чашку ароматного кофе? Тогда продолжим разговор о том, как стать Java программистом.

Установка программной среды

Как ни странно, у некоторых возникают проблемы уже на этапе установки программной среды Java. Для этого нужно перейти на официальный сайт компании-разработчика - Oracle. Ссылку на актуальную версию вы увидите в самом верху сайта. Вам нужны Java SE (Standard Edition) и Java Development Kit - набор инструментов для разработки. Обратите внимание, что существуют разные дистрибутивы под разные операционные системы.

Допустим, у нас Windows. Заходим в «Свойства системы» и смотрим, какая у нас система - 32-разрядная или 64-разрядная. Скачиваем файл, который подходит нам по разрядности. Если выберете неправильный дистрибутив, то при компиляции кода получите ошибку. После подтверждения Accept License Agreement нажимаем кнопку скачивания.

Каков инструментарий Java-разработчика?

Большую часть времени программист проводит в IDE (IntelliJ IDEA, Eclipse, WebStorm, NetBeans). IDE - это интегрированная среда разработки, специальный интерфейс для программирования. Он не только помогает при написании кода, но и упрощает использование других инструментов программирования. Некоторые советуют тем, кто хочет стать Java программистом с нуля, первые свои программы писать в обычном блокноте или Notepad++.

Может, элементарные программы и стоит писать в редакторе. Но в дальнейшем все-таки настоятельно рекомендую использовать IDE. У нее есть функции автодополнения кода, контроля синтаксиса, перехода к определению метода и многие другие. А интеллектуальные подсказки избавят вас от необходимости помнить все названия функций и их параметры, что просто физически невозможно.

При командной работе, когда над одной программой работает сразу несколько человек, нужно обязательно использовать, так называемую, систему контроля версий (Perforce, Git, Subversion и т. д.). Впрочем, системы контроля версий очень удобны и при работе в одиночку.

Примерный алгоритм изучения Java

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

Разбор расширенных возможностей языка Java. На этом этапе изучите синтаксис, библиотеки и фреймворки, которые пригодятся вам при создании более сложных приложений с практическим уклоном. Хороший программист не только умеет пользоваться различными библиотеками, но и знает, как они устроены внутри. Кроме этого, такие понятия, как операции ввода/вывода, наследование и абстракции, сериализация, родовые типы, регулярные выражения, не должны быть для вас пустым звуком.

Современные тенденции и подходы в веб-разработке

Узнайте алгоритм быстрого роста с нуля в сайтостроении

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

Как начать программировать?

Для тех, кто собирается стать Java-программистом с полного нуля, я расскажу, как написать свою первую программу.
Итак, открываем любой текстовый редактор и записываем:

class HelloWorld { public static void main(String args) { System.out.println("Hello World!"); } }

class HelloWorld {

public static void main (String args ) {

System . out . println ("Hello World!" ) ;

Сохраняем файл под именем HelloWorld.java. Обращаю ваше внимание, что Java чувствительна к регистру, поэтому слова «helloworld» и «HelloWorld» являются разными. Если названия файла и класса в коде будут отличаться, то программа попросту не запустится. Кроме этого, важно, чтобы кодировка была ANSI.

Теперь мы должны скомпилировать программу, используя компилятор javac из JDK. Пока мы не установили среду разработки, будем компилировать с помощью командной строки cmd, вызвав ее из меню «Пуск». В появившемся окне набираем cmd и жмем Enter.

Если мы сохранили HelloWorld.java в папку Progа на диске C, то вписываем команду:

cd C : \ Prog а

и нажимаем Enter. Таким образом, мы изменили каталог на тот, где расположена наша программа. Затем вводим.

Программирую на Java вот уже 7 лет. Но на работе часто приходится обучать новое поколение. В связи с этим и решил сделать некоторую шпаргалку, которая, надеюсь, пригодится и для хабрчан. Если кто-то может помочь дополнить чем-то информацию из этой статьи, то пишите! Итак:

Основные ресурсы для начального обучения

  • www.javable.com - сайт со статьями и tutorial"ом по Java. Все в основном на русском.
  • www.exampledepot.com - очень полезный ресурс, где собраны краткие примеры использования классов для тех или иных пакетов
  • java.sun.com - без первоисточника не обойтись. Для любого Java программиста JavaDoc должен быть истиной в последней инстанции. Так же здесь можно найти серию tutorial"ов на все возможные темы.

Основные Java пакеты

Ниже приведён список Java пакетов, в которых программист должен свободно ориентироваться. Знакомиться с ними рекомендуется как по JavaDoc"ам , так и с помощью www.exampledepot.com . Все пакеты выстроены в рекомендуемом порядке для изучения. Итак:
  1. java.lang - основа основ. Каждый класс в этом пакете нуждается в отдельном внимании.
  2. java.io - ни одна программа не может обойтись без операций с вводом-выводом.
  3. java.util - пакет в основном содержит все необходимое для работы с коллекциями: Collection, Enumeration, Set, List, Map и т.д. и т.п.
  4. java.net - содержит основные классы для работы с сетью.
  5. java.text - все необходимое для форматирования текста
  6. java.lang.reflect - Java не была бы Java"ой если бы не Reflection. Reflection стирает грань между данными и кодом.
  7. javax.sql - все необходимое по работе с базами данных
  8. javax.xml.* , org.w3c.dom.* , org.xml.sax.* - без этих пакетов работа с XML просто немыслима

Ресурсы для расширения кругозора

  • onjava.com - рано или поздно все новости мира Java попадают сюда
  • www.javaspecialists.eu - ресурс полезен как новичкам, так и продвинутым программистам, так как содержит много статей о тонкостях работы с Java.
  • www.theserverside.com - рекомендуется подписаться на RSS, так как часто проскакивают весьма интересные вещи по Java.

Java Библитеки, которые должны знать все

Java не заканчивается знаниями лишь о возможностях JSDK. Чтобы чувствовать себя комфортно необходимо знать еще десятка два сторонних библиотек, используемых Java программистами повсеместно. Итак, начнем с основных:
  • Commons Lang - то что «забыли» включить в JDK
  • Commons Math - отличное дополнение для java.math
  • Commons Logging - логирование должно быть грамотным. За System.out.println для вывода логов начинающим программистам уже через неделю обучения следует отрубать руки.

Исходный файл на языке Java - это текстовый файл, содержащий в себе одно или несколько описаний классов. Транслятор Java предполагает,

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

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

Итак, вот ваша первая Java-программа

:

class HelloWorld {

System. out. println ("Hello World");

Для того, чтобы поработать с приведенными в книге примерами вам нужно получить по сети из Sun Microsystems и установить Java Developers Kit - пакет для разработки Java-приложений (

http://java.sun.com/products/jdk ). Полное описание утилит пакета JDK – в Приложении 1 .

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

\> javac HelloWorld.Java

Транслятор создаст файл HelloWorld.class с независимым от процессора байт-кодом нашего примера. Для того, чтобы исполнить полученный код, необходимо иметь среду времени выполнения языка Java (в нашем случае это программа java), в которую надо загрузить новый класс для исполнения. Подчеркнем, что указывается имя класса, а не имя файла, в котором этот класс содержится.

> java HelloWorld

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

Шаг за шагом

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

class HelloWorld {

В этой строке использовано зарезервированное слово

class. Оно говорит транслятору, что мы собираемся описать новый класс. Полное описание класса располагается между открывающей фигурной скобкой в первой строке и парной ей закрывающей фигурной скобкой в строке 5. Фигурные скобки в Java используются точно так же, как в языках С и С ++.

public static void main (String args ) {

Такая, на первый взгляд, чрезмерно сложная строка примера является следствием важного требования, заложенного при разработке языка Java. Дело в том, что в

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

Разбивая эту строку на отдельные лексемы, мы сразу сталкиваемся с ключевым словом

public. Это - модификатор доступа, который позволяет программисту управлять видимостью любого метода и любой переменной. В данном случае модификатор доступа public означает, что метод main виден и доступен любому классу. Существуют еще 2 указателя уровня доступа - private и protected, с которыми мы более детально познакомимся в главе 8 .

Следующее ключевое слово -

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

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

int для целых значений, float - для вещественных или имя класса для типов данных, определенных программистом. В нашем случае нужно просто вывести на экран строку, а возвращать значение из метода main не требуется. Именно поэтому и был использован модификатор void. Более детально этот вопрос обсуждается в главе 4 .

Наконец, мы добрались до имени метода

main. Здесь нет ничего необычного, просто все существующие реализации Java-интерпретаторов, получив команду интерпретировать класс, начинают свою работу с вызова метода main. Java-транслятор может оттранслировать класс, в котором нет метода main. А вот Java-интерпретатор запускать классы без метода main не умеет.

Все параметры, которые нужно передать методу, указываются внутри пары круглых скобок в виде списка элементов, разделенных символами ";" (точка с запятой). Каждый элемент списка параметров состоит из разделенных пробелом типа и идентификатора. Даже если у метода нет параметров, после его имени все равно нужно поставить пару круглых скобок. В примере, который мы сейчас обсуждаем, у метода

main только один параметр, правда довольно сложного типа. String args объявляет параметр с именем args, который является массивом объектов - представителей класса String. Обратите внимание на квадратные скобки, стоящие после идентификатора args. Они говорят о том, что мы имеем дело с массивом, а не с одиночным элементом указанного типа. Мы вернемся к обсуждению массивов в следующей главе, а пока отметим, что тип String - это класс. Более детально о строках мы поговорим в главе 9 .

System. out. prlntln("Hello World!");

В этой строке выполняется метод

println объекта out. Объект out объявлен в классе OutputStream и статически инициализируется в классе System. В главах 9 и 13 у вас будет шанс познакомиться с нюансами работы классов String и OutputStream.

Закрывающей фигурной скобкой в строке 4 заканчивается объявление метода

main, а такая же скобка в строке 5 завершает объявление класса HelloWorld.

Лексические основы

Теперь, когда мы подробно рассмотрели минимальный Java-класс, давайте вернемся назад и рассмотрим общие аспекты синтаксиса этого языка. Программы на

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

Комментарии

Хотя комментарии никак не влияют на исполняемый код программы,

при правильном использовании они оказываются весьма существенной частью исходного текста. Существует три разновидности комментариев: комментарии в одной строке, комментарии в нескольких строках и, наконец, комментарии для документирования. Комментарии, занимающие одну строку, начинаются с символов // и заканчиваются в конце строки. Такой стиль комментирования полезен для размещения кратких пояснений к отдельным строкам кода:

а = 42; // если

42 - ответ, то каков же был вопрос?

Для более подробных пояснений вы можете воспользоваться комментариями, размещенными на нескольких строках, начав текст комментариев символами /* и закончив символами */ При этом весь текст между этими парами символов будет расценен как комментарий и транслятор его проигнорирует.

* Этот код несколько замысловат...

* Попробую объяснить:

Третья, особая форма комментариев, предназначена для сервисной программы

javadoc, которая использует компоненты Java-транслятора для автоматической генерации документации по интерфейсам классов. Соглашение, используемое для комментариев этого вида, таково: для того, чтобы разместить перед объявлением открытого (public) класса, метода или переменной документирующий комментарий , нужно начать его с символов /** (косая черта и две звездочки). Заканчивается такой комментарий точно так же, как и обычный комментарий - символами */. Программа javadoc умеет различать в документирующих комментариях некоторые специальные переменные, имена которых начинаются с символа @. Вот пример такого комментария:

* Этот класс умеет делать замечательные вещи. Советуем всякому, кто

* захочет написать еще более совершенный класс, взять его в качестве

* базового.

* @see Java. applet. Applet

* ©author Patrick Naughton

class CoolApplet extends Applet { /**

* У этого метода два параметра:

key - это имя параметра. - это значение параметра с именем key.

*/ void put (String key, Object value) {

Зарезервированные ключевые слова

Зарезервированные ключевые слова - это специальные идентификаторы, которые в языке

Java используются для того, чтобы идентифицировать встроенные типы, модификаторы и средства управления выполнением программы. На сегодняшний день в языке J ava имеется 59 зарезервированных слов (см. таблицу 2). Эти ключевые слова совместно с синтаксисом операторов и разделителей входят в описание языка Java. Они могут применяться только по назначению, их нельзя использовать в качестве идентификаторов для имен переменных, классов или методов.

Таблица 2

Зарезервированные слова Java

Отметим, что слова

byvalue, cast, const, future, generic, goto, inner, operator, outer, rest, var зарезервированы в Java, но пока не используются Кроме этого, в Java есть зарезервированные имена методов (эти методы наследуются каждым классом, их нельзя использовать, за исключением случаев явного переопределения методов класса Object).

Таблица 3

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

Java

Идентификаторы

Идентификаторы используются для именования классов, методов и переменных. В качестве идентификатора может использоваться любая последовательность строчных и прописных букв, цифр и символов _ (подчеркивание) и $ (доллар). Идентификаторы не должны начинаться с цифры, чтобы транслятор не перепутал их с числовыми литеральными константами, которые будут описаны ниже.

Java - язык, чувствительный к регистру букв. Это означает, что, к примеру, Value и VALUE - различные идентификаторы.

Литералы

Константы в

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

Целые литералы

Целые числа - это тип, используемый в обычных программах наиболее часто. Любое целочисленное значение, например, 1, 2, 3, 42 - это целый литерал. В данном примере приведены десятичные числа, то есть числа с основанием 10 - именно те, которые мы повседневно используем вне мира компьютеров. Кроме десятичных, в качестве целых литералов могут использоваться также числа с основанием 8 и 16 - восьмеричные и шестнадцатиричные. Java распознает восьмеричные числа по стоящему впереди нулю. Нормальные десятичные числа не могут начинаться с нуля, так что использование в программе внешне допустимого числа 09 приведет к сообщению об ошибке при трансляции, поскольку 9 не входит в диапазон 0..

7, допустимый для знаков восьмеричного числа. Шестнадцатиричная константа различается по стоящим впереди символам нуль-х (0х или 0Х). Диапазон значений шестнадцатиричной цифры - 0.. 15, причем в качестве цифр для значений 10.. 15 используются буквы от А до F (или от а до f). С помощью шестнадцатиричных чисел вы можете в краткой и ясной форме представить значения, ориентированные на использование в компьютере, например, написав Oxffff вместо 65535.

Целые литералы являются значениями типа

int, которое в Java хранится в 32-битовом слове. Если вам требуется значение, которое по модулю больше, чем приблизительно 2 миллиарда, необходимо воспользоваться константой типа long. При этом число будет храниться в 64-битовом слове. К числам с любым из названных выше оснований вы можете приписать справа строчную или прописную букву L, указав таким образом, что данное число относится к типу long. Например, Ox7ffffffffffffffL или 9223372036854775807L - это значение, наибольшее для числа типа long.

Литералы с плавающей точкой

Числа с плавающей точкой представляют десятичные значения, у которых есть дробная часть. Их можно записывать либо в обычном, либо экспоненциальном форматах. В обычном формате число состоит из некоторого количества десятичных цифр, стоящей после них десятичной точки, и следующих за ней десятичных цифр дробной части. Например, 2.0, 3.14159 и.6667 - это допустимые значения чисел с плавающей точкой, записанных в стандартном формате. В экспоненциальном формате после перечисленных элементов дополнительно указывается десятичный порядок. Порядок определяется положительным или отрицательным десятичным числом, следующим за символом Е или е. Примеры чисел в экспоненциальном формате: 6.022е23, 314159Е-05, 2е+100. В

Java числа с плавающей точкой по умолчанию рассматриваются, как значения типа double. Если вам требуется константа типа float, справа к литералу надо приписать символ F или f. Если вы любитель избыточных определений - можете добавлять к литералам типа double символ D или d. Значения используемого по умолчанию типа double хранятся в 64-битовом слове, менее точные значения типа float - в 32-битовых.

Логические литералы

У логической переменной может быть лишь два значения -

true (истина) и false (ложь). Логические значения true и false не преобразуются ни в какое числовое представление. Ключевое слово true в Java не равно 1, a false не равно 0. В Java эти значения могут присваиваться только переменным типа boolean либо использоваться в выражениях с логическими операторами.

Символьные литералы

Символы в

Java - это индексы в таблице символов UNICODE. Они представляют собой 16-битовые значения, которые можно преобразовать в целые числа и к которым можно применять операторы целочисленной арифметики, например, операторы сложения и вычитания. Символьные литералы помещаются внутри пары апострофов (" "). Все видимые символы таблицы ASCII можно прямо вставлять внутрь пары апострофов: - "a", "z", "@". Для символов, которые невозможно ввести непосредственно, предусмотрено несколько управляющих последовательностей.

Таблица 3.

2. Управляющие последовательности символов

Управляющая последовательность

Описание

Восьмеричный символ

(ddd)

Шестнадцатиричный символ

UNICODE (xxxx)

Апостроф

Обратная косая черта

Возврат каретки (carriage return)

Перевод строки (line feed, new line)

Перевод страницы

(form feed)

Горизонтальная табуляция

(tab)

Возврат на шаг

(backspace)

Строчные литералы

Строчные литералы в

Java выглядят точно также, как и во многих других языках - это произвольный текст, заключенный в пару двойных кавычек (""). Хотя строчные литералы в Java реализованы весьма своеобразно (Java создает объект для каждой строки), внешне это никак не проявляется. Примеры строчных литералов: “Hello World!”; "две\строки; \ А это в кавычках\"". Все управляющие последовательности и восьмеричные / шестнадцатиричные формы записи, которые определены для символьных литералов, работают точно так же и в строках. Строчные литералы в Java должны начинаться и заканчиваться в одной и той же строке исходного кода. В этом языке, в отличие от многих других, нет управляющей последовательности для продолжения строкового литерала на новой строке.

Операторы

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

главе 5 , их перечень приведен в таблице 3. 3.

Таблица 3.

3. Операторы языка Java

Разделители

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

Название

Для чего применяются

круглые скобки

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

фигурные скобки

квадратные скобки

Используются в объявлениях массивов и при доступе к отдельным элементам массива.

точка с запятой

Разделяет операторы.

Разделяет идентификаторы в объявлениях переменных, также используется для связи операторов в заголовке цикла

for.

Отделяет имена пакетов от имен подпакетов и классов, также используется для отделения имени переменной или метода от имени переменной.

Переменные

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

Объявление переменной

Основная форма объявления переменной такова:

тип идентификатор [ = значение] [, идентификатор [ = значение

7...];

Тип - это либо один из встроенных типов, то есть,

byte, short, int, long, char, float, double, boolean, либо имя класса или интерфейса. Мы подробно обсудим все эти типы в следующей главе . Ниже приведено несколько примеров объявления переменных различных типов. Обратите внимание на то, что некоторые примеры включают в себя инициализацию начального значения. Переменные, для которых начальные значения не указаны, автоматически инициализируются нулем.

В приведенном ниже примере создаются три переменные, соответствующие сторонам прямоугольного треугольника, а затем

c помощью теоремы Пифагора вычисляется длина гипотенузы, в данном случае числа 5, величины гипотенузы классического прямоугольного треугольника со сторонами 3-4-5.

class Variables {

public static void main (String args ) {

= Math.sqrt (a* a + b* b);

System.out.println ("c = "+ c);

Ваш первый шаг

Мы уже многого достигли: сначала написали небольшую программу на языке

Java и подробно рассмотрели, из чего она состоит (блоки кода, комментарии). Мы познакомились со списком ключевых слов и операторов, чье назначение будет подробно объяснено в дальнейших главах. Теперь вы в состоянии самостоятельно различать основные части любой Java-программы и готовы к тому, чтобы приступить к чтению главы 4 , в которой подробно рассматриваются простые типы данных.

Загрузка...