Ресурсы для изучения Java
Задачи на проверку изучения java для самостоятельной проработки
Введение: изучение Java на словах
Форумы, на которых вы можете задать возникшие вопросы
JavaEE: промышленное программирование
Технологии разработки WEB-приложений
Материалы для изучения, созданные Jazzteam
Вот задачи, которые обычно выполняют наши студенты - список задач на алгоритмику.
Когда вы почувствуете, что освоили алгоритмику - ждём от Вас решенными вот эти задачи:
Задачи, которые мы часто используем для проверки базовой алгоритмики:
Обязательно для всех задач создать Data Driven Test. Я, как пользователь, должен иметь возможность ввести множество наборов 1) Проверяемое выражение, 2) Правильный эталонный результат. Тест самостоятельно проверяет все наборы и говорит, какой из них - неверный. Данный подход всеобъемлюще доказывает, что Ваш алгоритм работает правильно, и позволяет использовать нашего мануального тестировщика для проверки правильности Вашей работы! Использовать JUnit/TestNG. По возможности, применить ООП.
В компании 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 — понятие абстрактное. Изучить все классы Java — нереально, точно так же, как и наиболее востребованные библиотеки для Java. Изучить синтаксис Java — проще, поэтому изучение любого языка программирования лучше всего начинать с изучения его синтаксиса, основных алгоритмов, всего, что составляет основу языка: коллекции, строки, массивы, работа с файлами.
Для этого можно почитать книги по Java, например, следующие:
Полезно будет изучить лекции.
Статьи, которые могут понадобиться при изучении конкретных тем:
Изучение каждой темы, главы, раздела необходимо закрепить практикой. Обязательно делайте 2-3 примера на основе изученного материала.
Существует огромное количество бесплатных онлайн курсов, которыми можно воспользоваться. Вот некоторые из них:
Довольно широкий выбор видео-уроков изучению Java Core и не только:
Практика — это неотъемлемая часть в любом обучении, особенно в программировании. Самый лучший способ научиться программировать - это программировать, и лучше всего, чтобы это было в удовольствие.
Для обучения можно воспользоваться обучающей игрой Robocode, которую можно программировать на Java.
Также очень хорошо учить язык в процессе написания приложения среднего объема. Особенно хорошо, если это не абстрактное приложение, а что-то нужное. Или, например, тестовое задание на работу.
Все обучение сопровождается решением задач соответствующего уровня.
Вы можете воспользоваться списком задач на нашей wiki.
В компании существует открытый репозиторий jazzteamedu, где размещено более 200 собственных проектов и наработок (схемы, диаграммы, source code), а также приложение в виде таблицы index of jazzteamedu, позволяющее легко навигировать по проектам и сортировать их по технологиям, по автору и рейтингу проекта.
Написанный код должен соответствовать определенным правилам. Они позволяют сделать код более читаемым и аккуратным, избегать ошибок, связанных с разными стилями написания кода у людей, работающих над проектом, и в будущем легко редактировать его.
Советуем изучить статьи:
Книги:
Следует настроить CodeStyle для используемой среды разработки. Шаблоны используемые в нашей компании можно найти по ссылке.
У многих начинающих программистов на первых порах возникает большое количество вопросов, особенно когда нужно выполнять самостоятельное задание. Это нормально. Но в таких ситуациях надо понимать, что практически на любой возникший у вас вопрос можно найти ответ в интернете. Вряд ли Вы первый, кто с ней сталкивается, поэтому не торопитесь сразу же задавать вопросы на различные форумы программистов (о которых я напишу чуть позже). Посидите минутку, правильно сформулируйте проблему у себя в голове и смело ищите её в поисковике.
Наверняка, большинство будут искать на русском языке, но не забывайте, что язык программистов — это английский, поэтому, если Вы не нашли ответ на великом и могучем, стоит поискать на языке, который в школе, вроде бы все учили, но так и не выучили. Но если даже и в этом случае оказалось, что на Ваш вопрос нигде нет ответа, в бой вступают лучшие форумы интернета:
Форумы — это, конечно, не единственный способ получить ответы на интересующие вопросы.
В своей практике программисты повсеместно работают с официальной документацией языка, на котором они пишут.
Java API documentation – вещь первой необходимости.
Там описываются, как работают те или иные классы и интерфейсы, порой документация является единственным источником, который может помочь в разрешении вопросов, ведь это только на начальном этапе у всех схожие вопросы и без проблем можно найти готовые решения, но чем дальше Вы забираетесь в дебри, тем сложнее и сложнее находить ответы, поэтому приходиться уповать на свою, я надеюсь, уже умную голову.
Java API documentation + Java tutorial - информация, которую следует держать локально, т.к. к ней придется периодически обращаться.
Любой код должен сопровождаться тестированием. Советуем Вам с самого начала писать Unit-тесты, Data Driven-тесты.
В компании уже на второй день стажировки ребята пишут тесты на свой код. Старайтесь использовать метод main как можно реже.
Материалы, которые могут понадобиться:
Полезным будет изучение шаблонов проектирования.
Наравне с синтаксисом необходимо хорошо знать ООП, уметь строить блок-схемы и различные диаграммы.
Объектно-ориентированное программирование, большая развёрнутая лекция для начинающих, на пальцах рассказывает обо всём, в том числе, о полиморфизме, рефлексии, плагинах 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
Видео: Интегрированная среда разработки. Для начинающих.
Привыкайте пользоваться горячими клавишами:
Совет - сразу начинайте работать с репозиторием с первого дня, это позволит делиться кодом с другими людьми, также дает возможность вернуться к определенной версии файлов и дает ряд других преимуществ.
После изучения основ Java можно приступать к более серьезному программированию. JavaEE необходима для работы с серверными приложениями.
Книги:
Для работы с 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, для последующей работы с базами данных.
JPA
Также советуем изучить JPA. JPA облегчает работу программисту, так как берет на себя все заботы по работе с базой данных.
Hibernate
Hibernate – библиотека, реализующая отражение объектов Java на реляционные базы данных. Эта библиотека позволяет свести к минимуму усилия, требующиеся для того, чтобы обеспечить сохранение объектов в базе и восстановление их из нее.
Видео уроки
Spring Framework - библиотека или набор инструментов для упрощения разработки любых Java программ. На данный момент - это один из самых продвинутых фреймворков в мире и популярность его растет каждый день.
Видео уроки:
Многие из разработчиков делятся своим опытом посредствам блогов. Вот некоторые из них:
Канал Solit MediaStore с коллекцией выступлений за 5 лет, более 200 часов видео на различную тематику, возможно, вы найдёте там что-то интересное. https://www.youtube.com/channel/UC86WNhLKwz5sSIr9Y14UOAA/playlists
В заключение хочу предложить почитать полезные советы по эффективному изучению Java: Эффективное изучение Java
Мотивирующая статья: интересная классификация работы, зарплаты и получаемого опыта.
При написании данной статьи использовались материалы: