logo_jazzteam-300x135.png 

    JazzTeam.org

         Ресурсы для изучения Java

Задачи на проверку изучения java для самостоятельной проработки

Введение: изучение Java на словах

Java Core

Синтаксис и алгоритмика

Советы по практике

Задачи для обучения

CodeStyle

Форумы, на которых вы можете задать возникшие вопросы

Java API documentation

JUnit

Шаблоны проектирования

ООП и UML

Инструменты разработки

IDE

Системы сборки проектов

Системы контроля версий

JavaEE: промышленное программирование

Технологии разработки WEB-приложений

WEB

Базы данных

Spring Framework

Блоги

Материалы для изучения, созданные Jazzteam

Заключение

Задачи на проверку изучения java для самостоятельной проработки

Вот задачки, которые обычно прорешивают наши студенты - список задач на алгоритмику.

Когда вы почувствуете, что освоили алгоритмику - ждём от Вас решенными вот эти задачи:

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

  1. Перевод числа с цифровой записи в строковую. Например 134345 будет "сто тридцать четыре тысячи триста сорок пять". * Учесть склонения - разница в окончаниях (к примеру, две и два).
  1. Алгоритм должен работать для сколько угодно большого числа, соответственно, значения степеней - миллион, тысяча, миллиард и т.д. - должны браться из справочника, например, из текстового файла.

  1. Перевод числа с цифровой записи в римскую систему и назад.

  1. Введите строку из N символов. В функции определить и вывести на экран частоту встречаемости каждой буквы русского алфавита. Определить 5 наиболее часто встречающихся букв. Далее, по предоставленному шифру (вы знаете, что каждой букве русского языка соответствует 1 символ в шифре), попробовать расшифровать изначальный текст.

  1. Разработать класс, реализующий алгоритм составления польской записи по математическому выражению, а также предусмотреть возможность вычисления значения этого выражения. Предусмотреть вложенные скобки, а также простые операции (*-+/).

Обязательно для всех задач создать Data Driven Test. Я, как пользователь, должен иметь возможность ввести множество наборов 1) Проверяемое выражение, 2) Правильный эталонный результат. Тест самостоятельно проверяет все наборы и говорит, какой из них - неверный. Данный подход всеобъемлюще доказывает, что Ваш алгоритм работает правильно, и позволяет использовать нашего мануального тестировщика для проверки правильности Вашей работы! Использовать JUnit/TestNG. По возможности, применить ООП.

Введение: изучение Java на словах

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

На практике в первый рабочий день ребята устанавливают и настраивают всё необходимое ПО для работы (JDK, IDE, maven, subversion, Jenkins). Уже при написании первых алгоритмов (даже самых простых a+b), к ним пишутся unit-тесты на JUnit, код комитается на SVN и запускается на Jenkins, для проверки работы всей связки. Данный подход позволяет эмулировать работу, как на реальном проекте.

С самого начала, буквально на второй день, у практиканта должны быть установлены Jenkins и SonarQube.  В начале ребята изучают основу языка, базовые конструкции, переменные, условные операторы, циклы, массивы, динамические структуры данных (списки, карты), unit-тестирование, Java Core пакеты, также, мы можем обучить их Data Driven Testing (DDT).  Далее - работа с Input/Output, обработка исключений, изучение многопоточности, сериализации, решение задач на алгоритмику, написание unit-тестов.

Как только мы понимаем, что у практикантов все хорошо с вышесказанным, то переходим к следующему этапу - изучение ООП, оживление ООП-модели. Изучают основные парадигмы ООП, области видимости, интерфейсы и абстрактные классы, основные шаблоны проектирования. Начинают реализовывать свою ООП-модель. После реализации ООП модели начинается её оживление (реализация взаимодействия между всеми компонентами модели, которое должно продемонстрировать, что модель меняет свое состояние, в статье на Вики компании всё это расписано, приведено много примеров) и покрытие unit-тестами. Убеждаемся, что ребята владеют всеми принципами ООП, умеют строить диаграммы, оживляют модель. Параллельно начинается изучение web-технологий, таких как HTML, JS, CSS, протокол HTTP (или же, эта спецификация сервлетов 2.4). После изучения основ, ребята переходят к изучению и написанию сервлетов, изучают jquery, jsp, jstl, работают с базами данных (проектируют базу данных для своей ООП модели). Завершается оживление ООП модели.

После завершения оживления ООП-модели начинается изучение таких фреймворков, как Spring, Hibernate. Ребята применяют два этих фреймворка к своей ООП-модели.

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

        Ниже Вы можете изучить TimeLine с реальной практики компании, чтобы приблизительно планировать своё время, хотя без контроля со стороны компании, время можно умножать на 2, или на 3 :)

Java Core

Синтаксис и алгоритмика

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

Для этого можно почитать книги по Java, например, следующие:

 

Полезно будет изучить лекции.

Статьи, которые могут понадобиться при изучении конкретных тем:

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

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

Довольно широкий выбор видео-уроков изучению Java Core и не только:

Советы по практике

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

Для обучения можно воспользоваться обучающей игрой Robocode, которую можно программировать на Java.

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

Задачи для обучения

Все обучение сопровождается решением задач соответствующего уровня.

Вы можете воспользоваться списком задач на нашей wiki.

В компании существует открытый репозиторий jazzteamedu, где размещено более 200 собственных проектов и наработок (схемы, диаграммы, source code), а также приложение в виде таблицы index of jazzteamedu, позволяющее легко навигировать по проектам и сортировать их по технологиям, по автору и рейтингу проекта.

CodeStyle

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

Советуем изучить статьи:

 Книги:

Следует настроить CodeStyle для используемой среды разработки. Шаблоны используемые в нашей компании можно найти по ссылке.

Форумы, на которых вы можете задать возникшие вопросы

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

Форумы — это, конечно, не единственный способ получить ответы на интересующие вопросы.

Java API documentation

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

Java API documentation – вещь первой необходимости.

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

Java API documentation + Java tutorial - информация, которую следует держать локально, т.к. к ней придется периодически обращаться.

JUnit

Любой код должен сопровождаться тестированием. Советуем Вам с самого начала писать Unit-тесты, Data Driven-тесты.

В компании уже на второй день стажировки ребята пишут тесты на свой код. Старайтесь использовать метод main как можно реже.

Материалы, которые могут понадобиться:

Шаблоны проектирования

Полезным будет изучение шаблонов проектирования.

Книга: Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. «Паттерны проектирования»

ООП и UML

Наравне с синтаксисом необходимо хорошо знать ООП, уметь строить блок-схемы и различные диаграммы.

Объектно-ориентированное программирование, большая развёрнутая лекция для начинающих, на пальцах рассказывает обо всём, в том числе, о полиморфизме, рефлексии, плагинах https://www.youtube.com/watch?v=vWMpfCboP1w 

Книга: Гради Буч «Объектно-ориентированное программирование с примерами применения»

Видео лекция по оживлению ООП модели, объяснение важнейшей части практики компании на конкретном примере:

https://www.youtube.com/channel/UC86WNhLKwz5sSIr9Y14UOAA 

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

Мы советуем вам придумать тему ООП модели и оживить ее.

Темы для ООП-модели: http://wiki.jazzteam.org/index.php?title=Applying_knowledge_to_real_example/ru

Инструменты разработки

IDE

Видео: Интегрированная среда разработки. Для начинающих.

Привыкайте пользоваться горячими клавишами:

Системы сборки проектов

Системы контроля версий

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

JavaEE: промышленное программирование 

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

Технологии разработки WEB-приложений

WEB

Книги:

Для работы с web, в первую очередь, нужно понимать как все устроено.

Сервлеты

Сервлеты являются специализированным механизмом Java для создания WEB ресурсов.

Книга:  Брюс У. Перри. Java сервлеты и JSP. Сборник рецептов.

Ну и конечно стоит почитать спецификацию Java Server Pages.

Front-end

Front-end разработка. Javascript. Soligorsk Public IT Lections. Для начинающих, введение в тему. https://www.youtube.com/watch?v=Ua2b_7lXynk

Базы данных

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

SQL

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

Книга: Мартин Грубер "Понимание SQL". 

JPA

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

Hibernate

Hibernate – библиотека, реализующая отражение объектов Java на реляционные базы данных. Эта библиотека позволяет свести к минимуму усилия, требующиеся для того, чтобы обеспечить сохранение объектов в базе и восстановление их из нее.

Видео уроки

Spring Framework

Spring Framework - библиотека или набор инструментов для упрощения разработки любых Java программ. На данный момент - это один из самых продвинутых фреймворков в мире и популярность его растет каждый день.

Видео уроки:

Блоги

Многие из разработчиков делятся своим опытом посредствам блогов. Вот некоторые из них:

Материалы для изучения, созданные Jazzteam

Канал Solit MediaStore с коллекцией выступлений за 5 лет, более 200 часов видео на различную тематику, возможно, вы найдёте там что-то интересное. https://www.youtube.com/channel/UC86WNhLKwz5sSIr9Y14UOAA/playlists 

Заключение

В заключение хочу предложить почитать полезные советы по эффективному изучению Java: Эффективное изучение Java

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

При написании данной статьи использовались материалы: