Обучение программированию на Java. Обучение программированию на языке JAVA Уроки программирования на java

Наверное многие скажут: "по Java уже написано много хороших книг, зачем еще одна"? И для многих скорее всего моя книга не даст ничего нового. Ведь основным ее читателем должен стать (предположительно) человек, который вообще не имеет никакого опыта в программировании. Со одной стороны кажется, что достаточно взять книгу с хорошим, наиболее полным описание и все. Но на практике это далеко не так. Недостаточно прочитать о чем-то. Главное понять, как это использовать. Уметь приспособить разный набор средств для решения конкретной задачи. Оценить, что из существующих вариантов лучше. Как этого добиться? Практика. Очень много практики с разбором тривиальных примеров и решением похожих задач самостоятельно. Однако практика, к сожалению, это еще не все. Помимо нее должна быть и правильно подобранная, дозированная теория. Это значит, что я не буду вываливать все знания в полном объеме на читателя сразу. Многое буду сознательно упрощать для лучшего понимания сути вещей. Надеюсь профессионалы меня за это не будут гневно хулить. Ведь после прочтения моей книги, читатель сможет перейти к литературе, дающей более развернутые знания, и разобраться в ней самостоятельно.


Глава: Введение (или рассказ о программировании)

Наверное, в наш прогрессивный век многие слышали такие слова как "программа" и "программирование". Давайте разберемся что это такое, откуда взялось и на какие направления сейчас разбивается.
Во-первых, начнем с термина "программа". Если простыми словами, то программа - это последовательность действий или указаний компьютеру, которую он должен выполнить. Запуская программу, мы запускаем по очереди все команды или инструкции, указанные в ней. Программирование, соответственно, - это процесс создания или написания программ.
Как компьютер понимает или расшифровывает команды записанные в программе?
По сути дела, программа, которую видит компьютер, и программа, которую видит человек на экране, очень сильно отличаются, так как написаны на разных языках. Компьютерная машина понимает только так называемый двоичный код - определенные комбинации из единиц и нулей. Почему так? Все просто, если мы обратимся к механике процесса. Команды компьютеру передаются по шлейфам, состоящие из набора проводов (каналов), и так называемой шине данных. Есть электрический сигнал в канале - значит поступила единица. Нет сигнала - ноль.
Однако, если мы откроем текст программы, написанной программистом, он не будет выглядеть как сплошной набор единиц и нулей и его вполне можно будет "прочитать" и разобрать на команды. Как же тогда компьютер понимает программы, написанные людьми? А вот здесь работают так называемые переводчики с одного языка на другой. Называют эти переводчики - трансляторами. Трансляторы можно разделить на два вида: компиляторы и интерпретаторы. Компиляторы переводят всю программу целиком и сохраняют в специальных исполняемых файлах. Чтобы запустить такую программу, нужно запустить полученный файл. Интерпретаторы переводят команды в режиме он-лайн и сразу их выполняют. По одной команде за один шаг: перевел команду - выполнил, перевел следующую - выполнил, и т. д.
От уровня сложности языка, с которого переводит транслятор, зависит количество команд в двоичном коде. Если язык достаточно приближен к двоичному коду, то на одну команду такого языка будет выходить от 1 (ассемблеры) до 10 команд в двоичном коде. К таким языкам можно отнести, например, Pascal, C. Для высокоуровневых языков, такие например, как С++ и Java, количество команд в двоичном коде на одну команду высокоуровневого языка может быть равным 100 и более.
С одной стороны использование компиляторов лучше, так как программы переведенные целиком на машинный язык работают быстрее. Однако эти программы работают только в какой-то одной операционной системе, для которой они были скомпилированы. К достоинствам интерпретаторов можно отнести так называемую кроссплатформенность, то есть независимость от конкретной операционной системы (платформы). Что здесь имеется ввиду? Дело в том что для запуска одной и той же программы в разных операционных системах будут использоваться разные интерпретаторы: в Windows один интерпретатор, в Linux - другой, в третьей операционной системе - третий и т. д. А текст самой программы остается неизменным и наглядным, где бы мы его ни открыли. Со скомпилированной программой все сложнее. Во-первых, она уже переведена на машинный язык и просмотреть в привычном виде мы ее не сможем. Во-вторых, программа четко ориентирована на определенную операционную систему и изменить это в скомпилированной программе невозможно. Для того, чтобы провернуть подобный фокус нужно взять исходную программу, которая написана на понятном программисту языке, внести необходимые изменения и скомпилировать ее под другую платформу (операционную систему).
В принципе для любого языка можно разработать как компиляторы так и интерпретаторы. К таким языкам, для которых существуют как компиляторы так и интерпретаторы, например, можно отнести Visual Basic. Однако есть ряд языков, для которых существуют только компиляторы или интерпретаторы. Например, для языка Pascal есть множество компиляторов, но нет интерпретаторов (по крайней мере я о них не слышала). Для языков VBScript, JavaScript существуют только интерпретаторы.
Отдельно можно выделить языки программирования, в которых используется некоторое сочетание принципов компиляции и интерпретации. К таким языкам можно отнести и Java. Сначала программа, написанная на Java, обрабатывается компилятором. Однако на выходе получается не машинный, а некоторый промежуточный код (псевдо-код или байт-код), который затем интерпретируется виртуальной машиной Java. Виртуальная машина Java - это программа, которая должна быть установлена в операционной системе, где будет запускаться превращенная в псевдо-код программа.
Как и где пишутся программы?
Давайте подумаем что нам понадобится для создания работающей программы. Во-первых, нам нужно где-то набирать текст программы. А значит нужен какой-то текстовый редактор, в котором мы это проделаем и сможем сохранить. Во-вторых, понадобится компилятор или интерпретатор. В принципе это необходимый минимум. Однако! Следует учесть, что по мере написания программ мы, как и все люди допускаем ошибки. Во-первых, ошибку мы можем сделать в тексте. Было бы удобно, чтобы текстовый редактор умел видеть хотя бы простейшие ошибки в синтаксисе написанных команд и как-то оповещал нас об этом (например, подчеркиванием, как это делает Word для обычных текстов). Во-вторых, могут быть логические ошибки, когда в тексте все вроде верно написано, но ничего не работает так как ожидалось. На этот случай, было бы неплохо иметь удобные инструменты для поиска ошибок во время работы программы.
Для удобства программистов все удобные инструменты объединены в особые программы - системы программирования. Обычно в них есть и особый текстовый редактор, и трансляторы, и отладчик (для поиска ошибок в ходе выполнения программы), и уйму удобных инструментов для облегчения нелегкого труда программиста. К таким "плюшкам" можно отнести автогенерацию кусочков программы, удобный запуск программ по одному щелчку (когда система программирования сама запускает нужный транслятор и полученную исполняемую программу) и многое-многое другое.
Обычно для одного языка существует не одна система программирования, а несколько. Каждый программист, естественно, сам выбирает наиболее удобную для себя систему. Например, для Java самыми распространенными системами программирования являются "IntelliJ Idea","Eclipse","NetBeans".
Поскольку автор предпочитает первую из них и остальные вам пока неизвестны, для нашей практики мы с вами будем использовать "IntelliJ Idea".


Часть 1. Установка необходимых программ и их настройка

Глава: JDK - Java Development Kit (комплект для разработки на Java)

Начнем с самого главного - установки набора необходимых программ для разработки и выполнения программ, написанных на Javа. На английском название этого набора звучит как Java Development Kit или коротко - JDK. Именно последнюю аббревиатуру мы будем использовать в дальнейшем.
Что входит в JDK?
В JDK входят следующие компоненты:
1) JRE - Java Runtime Environment (Среда выполнения Java)
Набор программ и библиотек, необходимых для выполнения псевдо-кода. Фактически это и есть виртуальная машина Java, необходимая для запуска скомпилированных под нее программ.
Примечание: Если нужно только запускать скомпилированные программы, написанные на Java, а не создавать их, устанавливать JDK не имеет смысла. Достаточно установить только JRE.
2) компиляторы
3) отладчики
4) специализированные библиотеки
5) и другие средства разработки
Что такое библиотеки и что в них находится?
Программы на языке высокого уровня пользуются готовыми, проверенными фрагментами кода для выполнения различных типовых действий. К таким действиям можно отнести: отображение информации на экране, ввод данных с клавиатуры, вычисление стандартных математических функций и т. д. Подобные фрагменты кода находятся в библиотеках, представленных в виде отдельных файлов.
Где взять JDK?
Любую версию JDK можно скачать совершенно бесплатно с официального сайта Oracle. Для этого сначала наберем в любом интернет-поисковике следующие слова для поиска: "JDK download". Первый же сайт в списке - наш.

В табличке с нужной версией выбирайте сначала опцию "Accept License Agreement" (переводится с английского как "Согласиться с лицензионным соглашением"), а затем щелкайте по нужному файлу в этой таблице.
Как вы уже знаете, Java - кроссплатформенный язык программирования, то есть одна и та же программа, написанная на нем, одинаково работает в разных операционных системах. Последнее свойство достигается за счет различающихся JRE и JDK на разных операционных системах (платформах).
Естественно вы должны скачать установочный файл, который соответствует вашей операционной системе. Например, если вы работаете под Linuх, выбирайте соответствующий файл для Linux. Если под Windows - файл для Windows.
Если вы устанавливаете JDK под 32 битную операционную систему, качайте файл с пометкой x86. Если под 64 битную - с пометкой х64.
Примечание. Разрядность системы в Windows 7 можно узнать так: жмем «Пуск», правой кнопкой мыши «Компьютер», выбираем «Свойства». Смотрим значение свойства "Тип системы".

Например:

Для 64-битной операционной системы Windows и JDK 8u101 нужный файл будет иметь следующее название:
"jdk-8u101-windows-x64.exe"

Для 32-битной операционной системы Windows и JDK 8u101 нужный файл будет иметь следующее название:
"jdk-8u101-windows-i586.exe"

Как установить и правильно настроить JDK (для ОС Windows 7)?
Этап первый: Установка JDK
Для того чтобы установить JDK, необходимо запустить установочный exe-файл с нужной версией JDK. Дальше нужно лишь следовать по окнам-шагам инсталляции.
Примечание: На одной операционной системе может быть установлено несколько версий JDK и JRE. Сделать какую-то JRE основной (которую и будет использовать виртуальная машина Java) можно в настройках операционной системы. Задать определенную JDK для проекта можно как в операционной системе(будет общей для всех проектов) так и в системе программирования, в которой этот проект пишется.
Давайте рассмотрим весь процесс установки JDK на примере установки JDK 8u102 на 64-битную операционную систему Windows 7 (нужно будет запускать файл jdk-8u102-windows-x64.exe).

1. В первом окне просто нажимаем кнопку "Next"

2. Во втором окне сначала выбираем папку, куда будет устанавливаться наше JDK. Для этого нажимаем кнопку "Change..." и выбираем нужное место на диске.

Примечание: Желательно придерживаться одного общего места для всех папок с разными версиями JRE. То есть чтобы структура общей папки была наподобие следующей:

После этого нажимаем кнопку "Next".

Этап второй: Настройка переменных окружения
Для того, чтобы система программирования знала какую jdk использовать по умолчанию для своих программ и операционная система умела распознавать файлы java, необходимо настроить системные переменные в нашей операционной системе.
Для этого в Windows 7 нужно сделать следующие шаги:

1) Зайдите в следующие настройки:
Кнопка "Пуск" --> правой кнопкой мыши в пункт "Компьютер"--> пункт "Свойства" --> пункт "Дополнительные параметры среды" --> вкладка "Дополнительно" --> кнопка "Переменные среды..."

2) Под списком "Cистемные Переменные" нажать кнопку "Создать"

3) Внести необходимые данные и нажать кнопку "OK":
Имя переменной JAVA_HOME
Значение переменной <путь к папке, куда устанавливалось JDK(не JRE!)>

4) Найдите в списке системных переменных переменную "Path", выберете ее и нажмите кнопку "Изменить".

5) Перейдите в конец поля "Значение переменной"(ничего не удалять!!!), добавьте следующий кусочек текста и нажмите кнопку "OK":
;%JAVA_HOME%\bin\

6) Нажмите кнопку "OK" для окна "Переменные среды", затем для вкладки "Дополнительно" и перезагрузите компьютер.


Глава: IDE (Integrated Development Environment) "IntelliJ Idea"- Интегрированная среда разработки (система программирования) "IntelliJ Idea"

"IntelliJ Idea" одна из наиболее распространенных систем программирования для Java. Она удобна и имеет много инструментов, облегчающих работу программиста. К несомненным плюсам можно отнести доступные бесплатные версии этой среды разработки в интернете.

Примечание. Термин IDE(интегрированная среда разработки) идентичен понятию "система программирования", однако в профессиональной среде его используют чаще.

Где взять "IntelliJ Idea"?
Данную IDE можно скачать с официального сайта компании "JetBrains". Для этого сначала нужно набрать в любом интернет-поисковике следующие слова для поиска: "Intellij Idea". Первый же сайт в отобразившемся списке - наш.


Общие сведения о программировании

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

8 крутых Youtube-каналов, которые помогут изучить Java

Существуют два типа трансляторов: компиляторы и интерпретаторы. Компилятор- это программа, переводящая текст, написанный на языке программирования, в какой-либо файл. Интерпретатор - это программа, способная переводить текст какой-либо программы в машинный код и одновременно выполнять ее.

Программирование на Java (он является компилирующим языком) имеет то преимущество, что код, написанный на данном языке программирования, переводится с помощью соответствующей программы-транслятора в так называемый байт-код, а он, в свою очередь, - в машинный код с помощью виртуальной машины Java (Java Virtual Machine, или просто JVM). Поэтому написанная на Java программа выполняема на любом компьютере с любой системой, лишь бы на нем была установлена виртуальная машина Java. Таким образом и обеспечивается одно из главных преимуществ языка Java - переносимость создаваемых на нем программ на компьютеры разных типов.

Программирование бывает двух типов: системное и прикладное .
Системное программирование позволяет нам программировать в системе, например в Windows, с целью решения глобальных задач.
Прикладное программирование направлено на создание прикладных программ, т.е. программ, выполняющих какую-то определенную функцию, например Microsoft Word, WordPad, Calculator и т.д. В этой книге мы будем заниматься прикладным программированием.

Основы программирования

Введение. Что такое JDK?

Введение. Что такое JRE?

Введение. Как установить JDK?

Введение. Как использовать JDK?

1. Типы программирования. Первые листинги.

2. Переменные и идентификаторы

3. Переменные и константы в Java

4. Литералы в Java

Все курсы программирования

5. Изучаем типы данных

6. Преобразовываем типы данных

7. Какие бывают операторы в языке Java

8. Массивы в Java

9. Управляющие структуры. Общие сведения о циклах

10. Конструкции выбора в языке Java

11. Инструкции выхода в Java

12. ООП, создание объектов

13. Конструкторы и блоки инициализации

14. Методы в Java

15. Наследование в Java

16. Интерфейсы

17. Вложенные классы и вопросы

18. Исключения в Java

19. Документирование кода

20. Полезные методы и контрольные вопросы

21. Пакеты в Java

22. Пакет java.lang

23. Пакет Java.util и вопросы

Поступить на факультет «Java-разработки»

24. Знакомимся с JBuilder

25. Настраиваем параметры программы

26. Создаем сами аплет на Java

27. Работа с палитрой компонентов в JBuilder 2005

28. Класс JButton из пакета javax. swing

29. Создание меню с помощью пакета java

30. Компоненты для работы с текстом в Java

31. Ползунок JSIider и индикатор в Java

32. Списки в Java

33. Работаем в в JBuilder 2005: компонент JScrollPane

34. Компонент JSplitPane и JTabbedPane

35. Формы и диалоговые окна в Java

36. Компоновки в Java и создание сервлетов

37. Мастера в JBuilder, а также вопросы к теме

38. Немного об HTML

39. Основы языка программирования JavaScript 1.5

40. Синтаксис языка JavaScript 1.5

41. Цикл for…in и функции в JavaScript

42. Работа с объектами в JavaScript

43. Встроенные объекты JavaScript

44. Подобъекты объекта document

45. Математический объект Math

46. Рисунки в HTML

47. Таблицы в HTML

48.Слои в HTML

49. Таблицы стилей CSS

Полезные сайты для java-программиста

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

Доброго времени суток всем!

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

Задача:

Я планирую создать игру, напоминающую шутер с видом от 3 лица.

Начало:

Ну что, приступим!

Для начала создадим проект. Назовем его «Just game». И сразу создаем класс Display.java. В него пишем:

Теперь разберемся, что мы сделали.

мы создаем рамку, которая и будет отображаться при запуске нашей игры

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

устанавливаем нашей рамке максимальные размеры, убираем декорации(кнопки свернуть, закрыть, уменьшить/увеличить и т.п.), т.е. делаем игру на весь экран. Если вы хотите, чтобы игра не была бы на весь экран, то используйте:

Делаем рамку видимой

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

Ну чтож, теперь нажимаем «Run» и пробуем запустить нашу игру. Если все написано правильно, у вас не должны возникать ошибки и должно появиться пустое, серое окно.

Серое окно… Как скучно… Давайте создадим что-нибудь поинтереснее.

Создадим новый класс, под названием «Main». Main класс у нас будет являться панелью, которую мы вставим в рамку, по этому он должен расширять JPanel. (Для тех, кто не знает, расширять пишется как extends после названия класса)

Возвращаемся в класс Display и после настроек рамки, но перед установлением её видимости, пишем:

Вы спросите - «Ну и зачем мы это сделали?». Представьте себе картину. Эта картина и является конечная наша игра. А теперь представьте рамку. Без ничего внутри, просто пустую рамку. На ней ничего нельзя нарисовать, она бесполезна. Для этого, мы вставили в картину пустой лист, на котором программа в дальнейшем может рисовать картину. На этом закончим наше лирическое отступление и вернемся к классу Main.

Нам нужно осуществить отрисовку, по этому мы должны добавить метод paint. Для этого пишем:

Ну и для начала, можем написать внутри этого метода отрисовку линии. Для этого пишем:

Даааааа, не густо…

Давайте отрисуем какую-нибудь картинку. Например эту:

Для начала, нам нужно указать путь к картинке. Для этого не в методе paint, пишем:

(предварительно надо в наш проект скинуть картинку и назвать ее 2.png)

После этого удаляем строчку отрисовки линии, а вместо нее в метод paint пишем:

Разберемся поближе с методом drawImage, так как мы будем часто его затрагивать.

drawImage(картинка которую мы будем рисовать, которую мы объявили раннее, координата X с которой будет рисоваться картинка, координата Y с которой будет рисоваться картинка, paint);

Отдельно хочу поговорить о параметре paint. Лучше всего оставляйте его null. Я только однажды сталкивался, когда мне нужно было использовать paint. Это было когда я отрисовывал текст, и задавал ему размер шрифта. Но советую не лезть туда и использовать null.

Теперь запускаем программу, и видим:

Чего-то она маленькая, не правда ли? Давайте научимся увеличивать её размеры. Добавляем к drawImage() параметры так, чтобы вышло:

Получается:

Ну наконец-то. Теперь мы умеем любые картинки растягивать на весь экран. Но вот проблема. Метод paint вызывается только один раз. И как же его обновлять постоянно? Для этого существует очень полезная вещь - таймер. Давайте создадим его.

Для этого пишем:

(20 это частота с которой обновляется таймер, this- где выполнять метод при обновлении таймера
Это мы должны вписать сразу после строки определения класса, т.е. после:

Также, надо дополнить строку определения класса таким образом:

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

Этот метод будет выполняться при обновлении таймера. В него мы должны написать repaint(); чтобы при каждом обновлении таймера у нас все элементы бы стирались, и нарисовывались заново.

Изучаем Java

Для этого, создаем конструктор класса Main и в него пишем:

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

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

И перед конструктором добавим:

И сходим еще в класс Display.java и там немного изменяем метод frame.add:

Таким образом, наша рамка будет передаваться в класс Main.java. Переходим в этот класс, и там где у нас метод paint() меняем строку drawImage() на:

Таким образом, теперь наша игра будет отрисовывать картинку на весь экран, в независимости от его разрешения. Запускаем:

На сегодня все. Оставляю код, для тех, кто запутался:

Display.java

Main.java

Как создать java-игру?

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

Создание игр для мобильного телефона

  1. Для начала необходимо установить необходимые компоненты:
  2. Набор эмуляторов, при помощи которых будет проводиться тестирование написанных модулей. Это J2ME Wireless Toolkit.
  3. Компилятор, который используется для создания архивов. Это J2SE.
  4. Текстовый редактор.
  5. Далее нужно запустить приложение WTK Toolbar
  6. Создать новый проект, воспользовавшись меню «Файл», «Новый проект».
  7. Заполнить поля: наименование проекта и класс. Нажать Ok. Новый проект будет находиться в программе WTK в папке apps. Папки каталога будут содержать следующее:
  8. папка bin – исполняемые файлы;
  9. папка res – ресурсы;
  10. папка lib – библиотеки;
  11. папка src – исходные файлы.
  12. Необходимо тщательно продумать сюжетную линию и графику.
  13. В соответствии с выбранной тематикой написать программу для java-игры.
  14. Обязательно ее протестировать, сначала с помощью эмулятора, а потом запустить на телефоне.
  15. Для этого нужно откомпеллировать проект через редактор WTK пункт Build.

    Материалы для изучения Java

    Нажать кнопку Run

  16. Если проблем с запуском нет, для загрузки на телефон нужно запаковать приложение в 2 архива (.jad и.jar).
  17. Для этого выбрать пункт Project. Далее Package. Архивы, которые появились в папке bin нужно загрузить на телефон.

Основные трудности

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

  • Возможности аппаратных ресурсов.
  • Удовлетворенность пользователей.
  • Отладка игры.

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

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

Удовлетворенность пользователей. При создании java-игр для мобильных устройств, есть факторы, которые способны повлиять негативно на мнение об игре:

  • Во-первых, из-за того, что экран маленький, на нем не просто уместить все, как было задумано;
  • Маленькие клавиши не очень удобны в использовании, иногда это мешает игроку добиться высоких результатов в игре;
  • Очень ограниченные звуковые возможности.

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

Отладка. Это самый трудоемкий процесс. Для этого удобнее всего использовать эмулятор, например, WTK. Еще один неплохой способ отладки – демонстрационный режим игры. В идеале, в демонстрационном режиме должна быть задействована вся функциональность игры. Теперь, если у вас возникнет желание сделать игру для мобильного телефона, вы знаете, как создать 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. Дополнительный вывод: есть возможность - читайте на английском. Русские переводы в основном очень слабые.
English version of this post: top books about Java for beginners on CodeGym

Программирую на 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 для вывода логов начинающим программистам уже через неделю обучения следует отрубать руки.

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

Варианты изучения

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

  1. Специализированные курсы. Их стоимость намного меньше, чем уроки персонального репетитора. Стоит заметить, что множество работодателей положительно реагируют на наличие разнообразных сертификатов о завершении обучения в компьютерных академиях. Обратите внимание на курсы всемирно популярных компаний «Майкрософт» и «Циско».
  2. Удаленные бесплатные курсы. В интернете очень большое количество сервисов, с помощью которых вы сможете просмотреть курсы лекций Оксфорда, Гарварда и других именитых учебных заведений мира. Также существуют специальные платформы для тренировки практических навыков программирования. Более подробно об удаленном обучении и полезных интернет-сервисах читайте далее в статье.
  3. Самообучение. С чего начать изучение программирования с нуля, если вы не планируете записываться на курсы и тратить деньги? В таком случае проще всего заняться самообразованием. Начать изучение следует с прочтения основ, не углубляйтесь в теорию, сразу приступайте к практике, ведь только в процессе создания программы вы будете приобретать необходимые навыки.

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

Как выбрать подходящее направление?

Напрямую зависит от типа ПО, которые вы будете создавать в будущем:


Если наиболее важную роль для вас играет размер заработной платы, обратите свое внимание на рынок вакансий. Сейчас самыми востребованными считаются разработчики, которые специализируются на языках Java, C#, ASP.NET, C++.

Языки низкого и высокого уровней. Разница и области применения

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

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

Программирование с нуля: с чего начать приложений?

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

  1. Google Play. Магазин приложений для пользователей операционной системы "Андроид". Данная ОС имеет наибольшую долю пользователей на рынке. Для разработки приложений и игр используются языки java и C/C++. Наибольшей популярностью пользуются приложения-мессенджеры, клиенты социальных сетей, облачные хранилища, игры.
  2. Windows Mobile Store. Данный магазин стремительно набирает популярность вместе со смартфонами от компании «Майкрософт». В странах СНГ большинство пользователей предпочитают планшеты на платформе Windows Phone. Программирование приложений для такого магазина помогает заработать больше денег на монетизации, ведь, в отличие от "Андроида", практически все программы в магазине Windows распространяются на платной основе.
  3. App Store. Еще одна выгодная площадка для разработки (язык - Objective-C). Процесс создания программ для устройств компании Apple требует предустановленной среды разработки под названием Xcode. Следующим шагом нужно изучить Objective-C программирование с нуля. С чего начать написание кода, подскажет книга Дэвида Марка «Изучение С для Mac. Издание второе».

Язык Java

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

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

Программирование с нуля. С чего начать Java- и Web-кодинг?

Язык Java широко используется в веб-разработке. Прежде чем начать полноценный процесс программирования, следует изучить Java, PHP, MySQL, HTML, CSS. Более подробная расшифровка этих понятий приведена ниже:

  1. Java - используется в написании утилит для сайтов и прописания логики функционала веб-страниц.
  2. PHP - язык для создания персональных страниц сайтов. Имеет скриптовую структуру. Лидирующий язык в создании популярных сегодня динамических веб-сайтов. PHP нужен, чтобы понять скрипты и программирование с нуля. С чего начать? C прочтения книги Джоша Локхата «PHP: Правильный путь».
  3. MySQL - система для руководства азами данных. Широко применяется в создании веб-сайтов, которые требуют хранения больших объемов сгруппированных данных.
  4. HTML - не является языком программирования. Это язык разметки, использующийся для написания базы веб-страницы (построения блоков, распределение текста и абзацев и так далее).
  5. CSS - каскадная таблица стилей. Используется только совместно с HTML для придания языку разметки стиля и внешнего вида.

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

Web-программирование. Актуальность и особенности

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

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

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

Создание приложений под операционную систему Windows

Для разработки таких программ вам понадобятся познания языка C#. Бесплатный сервис от компании «Майкрософт» под названием Virtual Academy позволит вам выучить все особенности данного языка и попрактиковаться в написании простых приложений.

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

Семейство языков С (С, С++, С#). Особенности

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

Языки С, С++, С# имеют одну общую черту - наличие функции ООП (объектно-ориентированного программирования). Такая технология позволяет значительно упростить процесс написания программного кода. Каждый программный объект описывается в определенном классе и имеет свои параметры, методы и свойства. Таким образом, программист может не прописывать каждый раз огромные куски кода, если один и тот же объект нужно использовать несколько раз.

Полезные интернет-сервисы для изучения основных принципов программирования и структуры кода любого приложения

На первом этапе обучения практически любой веб-сервис предложит вам попробовать свои возможности, используя «Паскаль» - наиболее простой из языков высокого уровня. Он используется в обучающих целях, его преподают в школах и техникумах, дабы студенты смогли понять программирование с нуля. С чего начать «Паскаль»-кодинг? Прежде всего, нужно скачать на ваш ПК среду разработки. Это небольшой исполняемый файл, в котором и предстоит писать программный код. Используйте TurboPascal, ведь это наиболее популярная среда изучения данного языка программирования.

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

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

Udacity - сервис, который предоставляет своим пользователям бесплатный доступ к лекциям именитых профессоров и разработчиков.

Получение начального опыта. Фриланс

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

Итог

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