Эффективность Java
Курс предназначен для разработчиков, желающих улучшить свои навыки в проектировании и оптимизации кода, используя рекомендуемые технологии и подходы, доказавшие свою эффективность на практике. В рамках курса вы познакомитесь с различными методиками и инструментами, которые помогут вам создавать более эффективный и масштабируемый код.
30 ак.ч.
Онлайн
JVA-017
Эффективность Java
Записаться на курс
Длительность
30 ак.ч.
Локация
Онлайн
Код
JVA-017
Расписание и цены
10.06.2024 - 24.06.2024
38 000 руб.
* Для физических лиц действует скидка 10% Закажите корпоративное обучение с учетом ваших потребностей
Эффективность Java
Записаться на курс
Длительность
30 ак.ч.
Локация
Онлайн
Код
JVA-017
Расписание и цены
10.06.2024 - 24.06.2024
38 000 руб.
* Для физических лиц действует скидка 10% Закажите корпоративное обучение с учетом ваших потребностей

Описание

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

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

Цели

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

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

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

Разбираемые темы

  • 1. Создание и уничтожение объектов [Теория 2 ч.; Практика 2 ч.]

    • Выбор статических фабричных методов вместо конструкторов
    • Шаблон Builder в случае большого количества параметров конструктора
    • Применение семантики шаблона Singleton с приватным конструктором или enum
    • Применение приватного конструктора
    • Как избежать создания ненужных объектов
    • Удаление устаревших ссылок на объекты
    • Отказ от использования финализаторов
  • 2. Методы, применяемые ко всем объектам [Теория 1ч.; Практика 1 ч.]

    • Выполнение общего контракта при переопределении метода equals
    • Обязательное переопределение hashCode при переопределении метода equals
    • Обязательное переопределение toString
    • Осмысленное переопределение клонов
    • Выбор реализации Comparable
  • 3. Классы и интерфейсы [Теория 2 ч.; Практика 2 ч.]

    • Минимизация доступности классов и компонентов
    • Использование методов доступа вместо public полей
    • Минимизация изменчивости
    • Предпочтение композиции наследованию
    • Проектирование с учётом дальнейшего наследования
    • Предпочтение интерфейсов абстрактным классам
    • Использование только интерфейсов для определения типов
    • Используйте иерархии классов вместо "тег-классов"
    • Использование объектов-функций для представления стратегий
    • Отдавайте предпочтение статическим внутренним классам над не статическими
  • 4. Обобщенные типы [Теория 1 ч.; Практика 2 ч.]

    • В новом коде всегда используйте generic типы
    • Исключение непроверенных предупреждений
    • Предпочтение списков массивам
    • Предпочтение generic типов
    • Предпочтение generic методов
    • Использование ограниченных обобщений для повышения гибкости API
    • Выбор однородных контейнеров typesafe
  • 5. Enums и аннотации [Теория 1 ч.; Практика 2 ч.]

    • Использование enums вместо констант int
    • Использование полей экземпляра вместо ordinals
    • Использование EnumSet вместо битовых полей
    • Использование EnumMap вместо порядкового индексирования
    • Эмуляция расширяемых enums с интерфейсами
    • Предпочтение аннотаций паттернам именования
    • Всегда используйте аннотацию Override
    • Использование интерфейсов-маркеров для определения типов
  • 6. Методы [Теория 1 ч.; Практика 2 ч.]

    • Проверка параметров на валидность
    • Использование защитного копирования при необходимости
    • Тщательное проектирование сигнатур методов
    • Осмысленное использование перегрузки
    • Осмысленное использование varargs
    • Возврат пустых массивов или коллекций, вместо null
    • Написание документации для всех public элементов API
  • 7. Общее программирование [Теория 2 ч.; Практика 2 ч.]

    • Минимизация области видимости локальных переменных
    • Предпочтение циклов for-each традиционным циклам for
    • Знание и использование библиотек
    • Отказ от использования float и double, если требуются точные ответы
    • Предпочтение примитивных типов "классам обвёрткам"
    • Избегайте строк, где более подходящими являются другие типы
    • Учитывайте производительность во время выполнения конкатенации строк
    • Ссылки на объекты по их интерфейсам
    • Предпочтение интерфейсов к reflection
    • Осмысленное использование нативных методов
    • Осмысленная оптимизация
    • Соблюдение общепринятых норм именования
  • 8. Исключения [Теория 1 ч.; Практика 2 ч.]

    • Использование исключений только для исключительных условий
    • Использование checked exceptions для проверки условий и unchecked exceptions для ошибок программирования
    • Отказ от ненужного использования checked exceptions
    • Предпочтительное использование стандартных исключений
    • Выброс исключений соответствующих абстракции
    • Документирование всех исключений, выданных каждым методом
    • Включение информации о failure-capture в подробные сообщения
    • Стремление к атомарности сбоев
    • Не допускайте игнорирования исключений
  • 9. Параллелизм [Теория 1 ч.; Практика 1 ч.]

    • Синхронизация доступа к общим изменяемым данным
    • Исключение чрезмерной синхронизации
    • Предпочтение использованию Executor-ов
    • Предпочтение утилит параллелизма методам wait и notify
    • Документирование безопасности потоков
    • Осмысленное использование отложенной инициализации
    • Независимость от планировщика потоков
    • Исключение групп потоков
  • 10. Сериализация [Теория 1 ч.; Практика 1 ч.]

    • Осмысленная реализация Serializable
    • Использование настраиваемой сериализированной формы
    • Безопасное написание методов readObject
    • Для контроля экземпляров лучше выбрать типы enum вместо readResolve
    • Выбор прокси сериализации вместо сериализированных экземпляров
  • Итого на курс 30 часов: теория – 13 ч (43%), практика – 17 ч (56%)

  • Развернуть программу
Раcписание курсов
Вид:
10.06.2024 - 24.06.2024
7:00-10:00
Локация:Онлайн
Длительность:30 ак.ч.
Время:7:00-10:00
38 000 руб.
Записаться
Смотреть полное расписание
Тренеры
Соколов Михаил
Эксперт в области разработки и архитектуры ПО
Михаил работает в области разработки ПО уровня Enterprise с 2004 года. С 2010 года Михаил работает в компании Luxoft. За это время участвовал в нескольких проектах для крупной американской авиастроительной компании в различных ролях от разработчика до архитектора. Михаил интересуется технологиями создания масштабируемых, высокопроизводительных, распределенных приложений, а также функциональными языками программирования.

О проектах:

В рамках своих проектов Михаил работал в компании "ЭТИС"и Luxoft, где занимался java/web-разработкой, архитектурой и pl/sq.

Также у Михаила большой преподавательский опыт. Он разрабатывал учебные материалы, проводил семинары, пракитческие занятия и экзамены в ОмГУ на темы: СУБД, защита СУБД, криптографические методы защиты информации.

Публикации в СМИ

Отзывы (3)
Хороший тренинг и интересные темы! Понравилось, что информация была полезной (особенно про API, функции Java 8 и выше), а практика занимала больше времени, чем теоретическая подготовка. Тренер был действительно хорош в объяснении, всегда был на связи и помогал выполнять задания.
Участник тренинга
Понравились все темы этого курса Java (например, Concurrency, Serialization, Lambdas...). Отдельно стоит выделить акцент на Java 8+ и практических примерах. Тренер не оставляет вопросы без ответа, может на время отойти от темы и объяснить материал ещё раз, если ты что-то не понял. Хороший материал, но мне кажется, что он больше подходит для начинающих.
Участник тренинга
Хочу выразить огромную благодарность за этот курс и особенно хочу поблагодарить нашего тренера. Нам предоставили качественную информацию, сложные упражнения и хорошо структурированную информацию. Я получил новые навыки программирования и узнал много полезных трюков. Мне понравилось, что курс был не напряженным, нам дали возможность учиться в своем собственном темпе. Я бы сказал, что это один из лучших курсов, которые я посещал, хотя и один из самых сложных 😊
Участник тренинга
Показать все отзывы
Связанные курсы
Шаблоны проектирования (GoF). Редакция для Java
Шаблоны проектирования представляют собой совокупность некоего опыта, пригодную для повторного использования. Паттерны находят применение во всех областях деятельности, поскольку дают возможность использовать сработавшие ранее решения. Знание паттернов проектирования позволяет не только быстрее реализовать ваши решения и получать качественный исходный код, но и эффективнее общаться с коллегами, которые уже освоили данную технологию. В курсе рассматривается 23 основных паттерна, которые описаны в книге “Design Patterns: Elements of Reusable Object-Oriented Software" («Шаблоны проектирования: элементы повторно используемого объектно-ориентированного программного обеспечения»), написанной четырьмя авторами («бандой четырех» - Gang of Four, GoF) – Erich Gamma, Richard Helm, Ralph Johnson и John Vlissides.
Онлайн:
21.05.2024 - 31.05.2024
Рефакторинг кода на Java
В курсе рассматривается понятие рефакторинга, как способ предотвращения распада программы. Рассматриваются различные признаки плохого кода (smells), требующего рефакторинга, объясняется, какой именно рефакторинг наилучшим образом подходит для той или иной ситуации, и описывается его механика, которая подробно разбирается на конкретных примерах из реальных задач.
Онлайн:
17.06.2024 - 26.06.2024
Онлайн:
02.10.2024 - 11.10.2024
Разработка на платформе Java SE. Базовые темы
В данном курсе слушатели получат базовые знания и навыки, которые позволят им заниматься разработкой на платформе Java SE. В курсе рассматриваются основы объектно-ориентированного программирования, использование UML для проектирования архитектуры приложений, а также основы использования языка Java (типы языка, операторы, классы, пакеты, исключения). Курс содержит большое количество практических упражнений.
Разработка на платформе Java SE. Расширенные темы
В данном курсе слушатели получат расширенные знания и навыки, необходимые для разработки ПО на платформе Java SE. В этом курсе рассматриваются основные классы системных библиотек и основы проектирования программного обеспечения. Благодаря этому слушатели научатся работать не только как программисты, но и как проектировщики ПО. Базовые темы по платформе Java рассматриваются в связанном курсе JVA-007 Разработка на платформе Java® SE: Базовые темы.
Смотреть каталог
Ваши преимущества
Экспертность
Тренеры-эксперты из реальных проектов крупнейших компаний, лидеров в своей отрасли
Живое обучение
“Живая” коммуникация с тренером даже в онлайн-формате
Практика
Максимально наполненные практикой занятия, работа в группах, выполнение домашних заданий
Пользователь только что записался на курс ""
Спасибо!
Форма отправлена успешно.