5 из 5
5
26 отзывов на Udemy

Разработка Java подобного языка программирования за 2 месяца

Интерактивный Java курс по разработке языка программирования от задумки и до получения конечного продукта
Инструктор:
Дмитрий .
290 студентов зачислены
Использовать принципы SOLID при разработке проекта любой сложности
Использовать императивные и функциональные стили программирования на Java
Использовать технику TDD при разработке проекта любой сложности
Реализовывать корректные Unit тесты
Оценивать качество покрытия тестами Вашего кода
Автоматизировать анализ качества написания кода
Тестировать графический пользовательский интерфейс
Использовать возможности мультимодульной архитектуры Java
Правильно использовать шаблоны проектирования в сложном проекте
Писать чистый и понятный другому программисту код
Разрабатывать кроссплатформенные приложения на Java
Реализовывать программный код по неизвестному Вам ранее алгоритму

Вы познакомились с основами программирования, написали несколько простых программ и Вам очень понравился сам процесс создания приложений. Вы твердо решили стать программистом уже сейчас или через несколько месяцев/лет, потому что Вы понимаете что в ближайшем будущем (которое наступит не через 50 лет, а уже через 3-4 года) многие профессии будут заменены роботами. Поэтому уже сейчас разобраться в принципах разработки сложных программ является отличной инвестицией в Ваше будущее. В этом случае выбор в пользу Java — это правильный и удачный выбор, потому что с помощью Java могут быть созданы любые типы приложений:

  1. Обычные десктопные приложения;

  2. Web приложения, Web порталы и Web сервисы;

  3. Приложения для мобильной платформы Android;

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

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

  1. Уметь работать в команде и писать свой код таким образом, чтобы он не при каких обстоятельствах не ломал код написанный другими разработчиками. (Один из самых важных навыков, так как при разработке большинства программных продуктов используется труд нескольких разработчиков одновременно);

  2. Уметь писать простой и понятный любому разработчику код. (Второй по важности навык. В мире огромной конкуренции бизнес правила работы приложения изменяются иногда даже чаще чем эти правила успевают быть полностью реализованы разработчиками и почти в 90% случаев разработчик изменяет написанный им же код через некоторое время. Если код простой и понятный, то при его изменениях вероятность возникновения новых ошибок стремится к нулю.);

  3. Уметь правильно обрабатывать ошибки. (Ошибка в современных программах — это не исключительная ситуация, а ожидаемое поведение. В правильно написанной программе скорость нахождения и исправления ошибки очень высока);

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

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

——————————————————————–

Данный курс направлен на практическое освоение описанных выше навыков программирования на примере языка Java.

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

  1. Знания языка программирования, навыков работы со средой разработки, а также умение автоматизировать рутинные операции;

  2. Знания предметной области (например, если разрабатываемая система — это интернет магазин, то знание правил вычисления скидок на товары, а также правила действия акционных предложений; если разрабатываемая система — это автоматизированная система приема анализов пациентов, то знание основных форм приема анализов и правил их валидации и т.д.)

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

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

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

Для эффективного обучения на данном курсе ознакомьтесь с рекомендациями по обучению, доступными в разделе: “Рекомендации по обучению на курсе” и выберите для себя наиболее подходящий подход.

——————————————————————–

Технологии разработки проекта:

  • Система контроля версий: git;

  • Система хостинга исходного кода: GitHub;

  • Основной язык программирования: Java 11 и выше;

  • Основная реализация Java: OpenJDK

  • Основная среда разработки: IntelliJ IDEA Community Edition;

  • Основная система автоматизации сборки проекта: Maven;

  • Используемые операционные системы: Windows, Linux, Mac OS;

  • Библиотека создания графического пользовательского интерфейса: JavaFX 11 (OpenJFX);

  • Библиотеки для автоматизированного тестирования: JUnit 5, Mockito;

  • Библиотека проверки стиля исходного кода: checkstyle;

  • Библиотека проверки степени покрытия тестами: jacoco;

  • Библиотека синтаксического анализатора исходного кода: pmd;

——————————————————————–

Статистика проекта:

  • Количество модулей: 8;

  • Общее количество классов: 525;

  • Количество классов автоматизированного тестирования: 100; (т.е. 20% кода — это автоматизированные тесты)

  • Количество строк кода: 32 421;

  • Количество строк кода без учета комментариев и пустых строк: 22 677;

  • Процент кода, который будет написан слушателем курса: от 0 до 30% (Зависит от того какой процент домашних заданий будет выполнен слушателем курса. Если все, то суммарно это почти 30% кода всего проекта)

——————————————————————–

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

  1. В курсе используется повествовательный стиль изложения материала;

  2. Повествование начинается с описанием проблемы и далее рассматривается как эта проблема решается средствами языка программирования Java;

  3. Видео лекции лаконично чередуются с текстовыми статьями для улучшения эффективности усвоения материала;

  4. Уроки на курсе делятся на следующие категории:

    1. Если урок начинается с префикса “Теория: “, то это означает, что в данном уроке приводится теоретические сведения по теме повествования.

    2. Если урок начинается с префикса “Практика: “, то это означает, что в данном уроке приводится текстовое описание задания, которое должно быть выполнено учеником.

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

    4. Все остальные уроки без каких-либо префиксов – это повествовательные уроки курса с теоретическим описание и (или) практическим выполнением какой-либо задачи.

  5. Каждый значимый раздел в курсе завершается уроком с названием “Резюме“, в котором собраны основные тезисы по всему разделу в текстовом виде. Основная цель данного урока – систематизировать знания, которые Вы получили в текущем разделе.

P. S. Такая структура уроков с практическими заданиями выбрана не случайно:

  1. Если у студента есть опыт, то он сразу же справится с заданием и на этапе проверки сравнит свою версию с той, которая реализована преподавателем.

  2. Если опыта мало, то студент может, воспользовавшись подсказками и дополнительными пояснениями, реализовать задачу.

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

Необходимые знания и навыки для успешного прохождения курса

1
Собеседование на позицию Java студент
2
Задача 1: FizzBuzz
3
Решение задачи 1: Реализация задачи FizzBuzz
4
Задача 2: Линейный поиск в массиве
5
Решение задачи 2: Реализация линейного поиска в массиве
6
Задача 3: Реализовать класс Stack
7
Решение задачи 3: Реализация класса Stack
8
Обзор результатов собеседования
9
Рекомендуемые источники знаний

Инструкции по обучению на курсе

1
Введение
2
Ожидаемый результат
3
Если Вы достаточно опытный разработчик и хотите просто расширить свой кругозор
4
Если Вы хотите попрактиковаться в реализации компонентов реального проекта
5
Если Вы хотите разработать полноценный проект паралельно с лектором
6
Резюме

Техническое задание на разработку проекта

1
Описание и основные требования к языку Java−−
2
Структура программы на Java−−
3
Основные компоненты будущего проекта
4
Структура виртуальной машины Java−−
5
Схема работы виртуальной машины Java−−
6
Требование к проекту
7
Проверка усвоенных знаний

Настройка окружения

1
Введение
2
Теория: Выбор системы контроля версий
3
Создание git репозитория для кода на GitHub
4
Теория: Выбор версии и реализации Java
5
Установка OpenJDK 11 для Windows
6
Установка OpenJDK 11 для MacOS
7
Установка OpenJDK 11 для Linux
8
Заметка: Обновление окна приветствия для IntelliJ IDEA
9
Заметка: Пользовательское соглашение на использование IntelliJ IDEA
10
Заметка: Статистика использования среды IntelliJ IDEA
11
Установка среды разработки IntelliJ IDEA для Windows
12
Установка среды разработки IntelliJ IDEA для MacOS
13
Установка среды разработки IntelliJ IDEA для Linux
14
Начальная настройка среды разработки IntelliJ IDEA, используя последнюю версию
15
Установка git для Windows
16
Установка git для Mac OS
17
Установка git для Linux
18
Клонирование репозитория с GitHub
19
Теория: Лицензирование программного обеспечения
20
Выбор лицензии для проекта javamm
21
Резюме
22
Проверка усвоенных знаний

Структура будущего проекта

1
Введение
2
Теория: Зачем нужны системы сборки проекта?
3
Теория: Краткий обзор Maven
4
Теория: Использование Maven для разработки проекта
5
Теория: Модули IntelliJ IDEA, Maven, Java9+. В чем отличия?
6
Создание модульного проекта в Maven
7
Сохранение изменений в локальный и удаленный git репозитории
8
Использование checkstyle в проекте
9
Настройка кодогенерации в IDE
10
Настройка Maven
11
Создание Java9+ модулей проекта и основных пакетов
12
Изменения в структуре модулей
13
Особенности многомодульного проекта
14
Резюме
15
Проверка усвоенных знаний

Создание упрощенной версии для вывода сообщения: Hello world

1
Введение
2
Рекомендации по исправлению Kotlin ошибки при работе над проектом
3
Теория: Принципы SOLID
4
Обзор основных компонентов упрощенной версии
5
Структурная схема упрощенной версии компилятора
6
Структурная схема упрощенной версии интерпретатора
7
Основные классы модели
8
Основные классы ошибок
9
Теория: Шаблон ImmutableObject
10
Теория: Использование коллекций вместо массивов
11
Теория: Шаблон NullObject
12
Теория: Важность валидации
13
Композиция шаблонов
14
Основные классы компилятора
15
Реализация первого компонента компилятора
16
Практика: Реализация SourceLineReaderImpl
17
Теория: Основы модульного тестирования
18
Теория: Краткий обзор JUnit
19
Теория: Важное значение моков при модульном тестировании
20
Теория: Краткий обзор Mockito
21
Теория: Основы TDD
22
Основы TDD на примере SourceLineReaderImpl
23
Подробная демонстрация реализации класса используя TDD методологию
24
Оценка покрытия тестами
25
Компоненты чтения операций
26
Реализация компилятора
27
Упрощенная версия запуска виртуальной машины
28
Сравнение реализации компилятора с изначальной блок схемой
29
Теория: Важность метода toString
30
Теория: Возможности параметризации
31
Теория: Шаблон проектирования Iterator
32
Теория: Императивный и функциональный стили программирования
33
Теория: Дополнительные источники знаний по функциональному Java программированию
34
Обзор примененных шаблонов проектирования на компиляторе
35
Практика: реализация Unit теста AbstractOperation_UnitTest
You can view and review the lecture materials indefinitely, like an on-demand channel.
Definitely! If you have an internet connection, courses on Udemy are available on any device at any time. If you don't have an internet connection, some instructors also let their students download course lectures. That's up to the instructor though, so make sure you get on their good side!
c1bc7b2694ea305eaf16ecdf61fbfb66
3-дневная гарантия возврата денег

Включает

25 часов видео по запросу
87 статей
Полный пожизненный доступ
Доступ с мобильного и ТВ
Сертификат об окончании
Разработка Java подобного языка программирования за 2 месяца
Цена:
0,12 ₽ 12,990 ₽