О чём курс

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

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

Цели

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

Целевая аудитория

Java-разработчики начального и среднего уровня.

Предварительная подготовка

Для кого

Разработчик Разработчик

Улучшаемые навыки

Оптимизация производительности приложений
Управление памятью
Параллельное и многопоточное программирование
Использование оптимизированных коллекций
Тестирование и мониторинг производительности

Темы курса

01 Создание и уничтожение объектов [Теория 2 ч.; Практика 2 ч.]
  • Выбор статических фабричных методов вместо конструкторов
  • Шаблон Builder в случае большого количества параметров конструктора
  • Применение семантики шаблона Singleton с приватным конструктором или enum
  • Применение приватного конструктора
  • Как избежать создания ненужных объектов
  • Удаление устаревших ссылок на объекты
  • Отказ от использования финализаторов
02 Методы, применяемые ко всем объектам [Теория 1ч.; Практика 1 ч.]
  • Выполнение общего контракта при переопределении метода equals
  • Обязательное переопределение hashCode при переопределении метода equals
  • Обязательное переопределение toString
  • Осмысленное переопределение клонов
  • Выбор реализации Comparable
03 Классы и интерфейсы [Теория 2 ч.; Практика 2 ч.]
  • Минимизация доступности классов и компонентов
  • Использование методов доступа вместо public полей
  • Минимизация изменчивости
  • Предпочтение композиции наследованию
  • Проектирование с учётом дальнейшего наследования
  • Предпочтение интерфейсов абстрактным классам
  • Использование только интерфейсов для определения типов
  • Используйте иерархии классов вместо "тег-классов"
  • Использование объектов-функций для представления стратегий
  • Отдавайте предпочтение статическим внутренним классам над не статическими
04 Обобщенные типы [Теория 1 ч.; Практика 2 ч.]
  • В новом коде всегда используйте generic типы
  • Исключение непроверенных предупреждений
  • Предпочтение списков массивам
  • Предпочтение generic типов
  • Предпочтение generic методов
  • Использование ограниченных обобщений для повышения гибкости API
  • Выбор однородных контейнеров typesafe
05 Enums и аннотации [Теория 1 ч.; Практика 2 ч.]
  • Использование enums вместо констант int
  • Использование полей экземпляра вместо ordinals
  • Использование EnumSet вместо битовых полей
  • Использование EnumMap вместо порядкового индексирования
  • Эмуляция расширяемых enums с интерфейсами
  • Предпочтение аннотаций паттернам именования
  • Всегда используйте аннотацию Override
  • Использование интерфейсов-маркеров для определения типов
06 Методы [Теория 1 ч.; Практика 2 ч.]
  • Проверка параметров на валидность
  • Использование защитного копирования при необходимости
  • Тщательное проектирование сигнатур методов
  • Осмысленное использование перегрузки
  • Осмысленное использование varargs
  • Возврат пустых массивов или коллекций, вместо null
  • Написание документации для всех public элементов API
07 Общее программирование [Теория 2 ч.; Практика 2 ч.]
  • Минимизация области видимости локальных переменных
  • Предпочтение циклов for-each традиционным циклам for
  • Знание и использование библиотек
  • Отказ от использования float и double, если требуются точные ответы
  • Предпочтение примитивных типов "классам обвёрткам"
  • Избегайте строк, где более подходящими являются другие типы
  • Учитывайте производительность во время выполнения конкатенации строк
  • Ссылки на объекты по их интерфейсам
  • Предпочтение интерфейсов к reflection
  • Осмысленное использование нативных методов
  • Осмысленная оптимизация
  • Соблюдение общепринятых норм именования
08 Исключения [Теория 1 ч.; Практика 2 ч.]
  • Использование исключений только для исключительных условий
  • Использование checked exceptions для проверки условий и unchecked exceptions для ошибок программирования
  • Отказ от ненужного использования checked exceptions
  • Предпочтительное использование стандартных исключений
  • Выброс исключений соответствующих абстракции
  • Документирование всех исключений, выданных каждым методом
  • Включение информации о failure-capture в подробные сообщения
  • Стремление к атомарности сбоев
  • Не допускайте игнорирования исключений
09 Параллелизм [Теория 1 ч.; Практика 1 ч.]
  • Синхронизация доступа к общим изменяемым данным
  • Исключение чрезмерной синхронизации
  • Предпочтение использованию Executor-ов
  • Предпочтение утилит параллелизма методам wait и notify
  • Документирование безопасности потоков
  • Осмысленное использование отложенной инициализации
  • Независимость от планировщика потоков
  • Исключение групп потоков
10 Сериализация [Теория 1 ч.; Практика 1 ч.]
  • Осмысленная реализация Serializable
  • Использование настраиваемой сериализированной формы
  • Безопасное написание методов readObject
  • Для контроля экземпляров лучше выбрать типы enum вместо readResolve
  • Выбор прокси сериализации вместо сериализированных экземпляров
11 Итого на курс 30 часов: теория – 13 ч (43%), практика – 17 ч (56%)

38 000 ₽

34 200 ₽ — для физ. лиц

Записаться на курс

Чему вы научитесь

01 Научитесь применять различные методы и техники для оптимизации производительности Java-приложений
02 Освоите принципы работы с памятью в Java, включая управление сборкой мусора и использование различных типов памяти
03 Научитесь создавать многопоточные приложения и использовать параллелизм для повышения производительности
04 Освоите выбор и использование оптимизированных коллекций и структур данных в Java
05 Научитесь использовать инструменты для тестирования и мониторинга производительности Java-приложений

38 000 ₽

34 200 ₽ — для физ. лиц

Записаться на курс

Записаться на курс

38 000 ₽

34 200 ₽ — для физ. лиц

Юр. лицо — 38 000 ₽
Физ. лицо — 34 200 ₽
Открытая дата
Продолжая, я подтверждаю, что ознакомлен с Условиями использования и Порядком обработки персональных данных

Отзывы о курсе

Повысьте квалификацию И получите диплом
Отзывы учеников
Хороший тренинг и интересные темы! Понравилось, что информация была полезной (особенно про API, функции Java 8 и выше), а практика занимала больше времени, чем теоретическая подготовка. Тренер был действительно хорош в объяснении, всегда был на связи и помогал выполнять задания.
Понравились все темы этого курса Java (например, Concurrency, Serialization, Lambdas...). Отдельно стоит выделить акцент на Java 8+ и практических примерах. Тренер не оставляет вопросы без ответа, может на время отойти от темы и объяснить материал ещё раз, если ты что-то не понял. Хороший материал, но мне кажется, что он больше подходит для начинающих.
Хочу выразить огромную благодарность за этот курс и особенно хочу поблагодарить нашего тренера. Нам предоставили качественную информацию, сложные упражнения и хорошо структурированную информацию. Я получил новые навыки программирования и узнал много полезных трюков. Мне понравилось, что курс был не напряженным, нам дали возможность учиться в своем собственном темпе. Я бы сказал, что это один из лучших курсов, которые я посещал, хотя и один из самых сложных 😊

Связанные курсы

DEV-001_JVA
24 часа

Шаблоны проектирования (GoF). Редакция для Java

Шаблоны проектирования представляют собой совокупность некоего опыта, пригодную для повторного использования. Паттерны находят применение во всех областях деятельности, поскольку дают возможность использовать сработавшие ранее решения. Знание паттернов проектирования позволяет не только быстрее реализовать ваши решения и получать качественный исходный код, но и эффективнее общаться с коллегами, которые уже освоили данную технологию. В курсе рассматривается 23 основных паттерна, которые описаны в книге “Design Patterns: Elements of Reusable Object-Oriented Software" («Шаблоны проектирования: элементы повторно используемого объектно-ориентированного программного обеспечения»), написанной четырьмя авторами («бандой четырех» - Gang of Four, GoF) – Erich Gamma, Richard Helm, Ralph Johnson и John Vlissides.

от Middle

29 900 ₽

DEV-006_JVA
24 часа

Рефакторинг кода на Java

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

от Middle

29 900 ₽

JVA-007
40 часов

Разработка на платформе Java SE. Базовые темы

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

от Junior

44 500 ₽

JVA-008
40 часов

Разработка на платформе Java SE. Расширенные темы

В данном курсе слушатели получат расширенные знания и навыки, необходимые для разработки ПО на платформе Java SE. В этом курсе рассматриваются основные классы системных библиотек и основы проектирования программного обеспечения. Благодаря этому слушатели научатся работать не только как программисты, но и как проектировщики ПО. Базовые темы по платформе Java рассматриваются в связанном курсе JVA-007 Разработка на платформе Java® SE: Базовые темы.

от Middle

44 500 ₽

Наши ученики работают в:

Наши клиенты

Mail.ru
Альфа-Банк, банковская группа
Лаборатория Касперского
Магнит, розничная сеть
Спортмастер, сеть спортивных магазинов
ПСБ
Сбертех
Дзен
IT One
Ростелеком
Мегафон
Nexign
Ozon
Декатлон
X5 Group
Технониколь
Росатом
Газпром
Нлмк
ВСК
Синимекс

Не нашли, что искали? — Просто напишите, и мы поможем

Продолжая, я подтверждаю, что ознакомлен с Условиями использования и Порядком обработки персональных данных
Корпоративное обучение Оценка персонала Сертификация О нас Стань тренером Блог
Пользователь только что записался на курс ""
Спасибо!
Форма отправлена успешно.