Java
Темы для изучения по Java
Что такое Java, в чем отличие от других языков, роль JVM Keywords языка и области их применения
История версий и ключевые изменения (annotations, modules, lambda, etc)
Java 9 Modularity, система модулей (подводные камни)
Best practices по структуризации кода (директории, namespaces/packages, файлы)
Best practices по работе или избеганию Null (Null Pointer Exception). Ссылки на дизайн подходы, Uncle Bob, Optional, etc.
Enums
Reflection/RTTI
RPC, Marshaling, Unmarshaling
Многопоточность, Mutability, Семафоры, Мьютексы, etc
Aspect Oriented Programming (Aspects, Proxies as an architecture pattern)
Управление памятью, custom memory allocators, освобождение
Советы по выбору основополагающих архитектурных подходов, e.g. contracts между модулями через интерфейсы и т.п.
Эффективное использование языка, Books: Effective Java, etc.
Генераторы кода (Lombok, Cofoja, etc), стоит ли их использовать, нюансы использования и миграции
Юнит тестирование (JUnit, TestNG, мок фреймворки). Best practices по организации и написанию тестов.
Матчеры под юнит тестирование. Что и как, примеры. Hamcrest, etc.
ORM (Hibernate, etc), какие есть, стоит ли использовать и в каких ситуациях лучше избегать.
Логирование (log4j, slf4j, etc), что сейчас “на коне”, best practices использования в мире микро сервисов и контейнеризации.
Модульная архитектура проекта, parent-child pom.xml, зачем и когда такое может пригодится.
Dependency Injection (Inversion of Control). Что, зачем и почему. Что можно сегодня использовать (Spring, Guice, etc). Best practices, примеры.
Сторонние полезные библиотеки велосипедов (Apache Commons, Google Guava, Reflections, etc). Примеры, что свежо и “модно” сегодня, а что уже лучше не использовать как устаревшее и т.п.
Периодические и background процессы (Quartz)
Messaging (JMX, RabbitMQ, PubSub)
Работа с XLS(x), Apache Poi, etc. Примеры, что сегодня лучше всего использовать, etc.
Работа с датами, временем, тайм зонами. Раньше использовали внешние библиотеки а-ля joda-time, сейчас в новой Java есть свой Data Time api. Примеры, best practices.
Работа с JSON. Jackson, Alibaba Fastjson, etc. Примеры, best practices, possible issues, etc.
Non-blocking I/O в Java. Основы event loop, Netty, etc. Фреймворки поверх Netty: новый Spring, Vertx.io, Ratpack, etc.
Microservice Architecture
Functional Reactive Programming в Java. Основы Reactive Extensions, RxJava, примеры, best practices, etc.
Контейнеризация. Примеры упаковки Java приложения в Docker, подводные камни, known issues of java in docker, best practices.
Как создать HTTP приложение на Java, т.е. реализовать HTTP endpoints, REST(ful), etc. Какие фреймворки, примеры. (тот же spring, vertx, ratpack, etc)
Spring Stack
Spring 4 (Core, Data Access, ORM, Web, AOP, Testing, Annotations, JMS)
Spring Security
Spring MVC
REST
Spring Boot
JSF
Java EE (теперь уже Jakarta EE), чем отличается от того же Spring и других фундаментальных подходов. MicroProfile под микро сервисы.
Java Performance.
Graal (GraalVM) Java Compiller
Garbage Collection https://blog.plan99.net/modern-garbage-collection-part-2-1c88847abcfd
Ajax long polling, Comet
JNI - интеграция с низкоуровневыми библиотеками (eg. C, C++, Asm)
Jasper reports
Cucumber
Netty (современный Tomcat)
Системы сборки проекта
Build инструменты, что лучше использовать в различных ситуациях
Ant - устарел, практически не используется. Или используется для сложных сборок в связке с Maven
Maven - сборка на основе предопределенной структуры проекта. Использует внешний репозиторий зависимостей
Gradle - современный фреймворк (написан на Grails) Часто используется для сборки новых проектов
Bazel - Фреймворк от Google. Используется для сборки проектов с множественными нативными зависимостями и подзависимостями под различные платформы. Хорошо подходит для моно репозиториев.
SBT - используется для Scala
Тематики для обучающих видео курсов
Spring Boot - Взаимосвязь внутри Spring Environment, рассматривается простое приложение REST, UI, DB
Reactive Java - Область использования, базовые функции
Swagger - Взаимодействие удаленных Front/Back команд.
ProtoBuff/Apache Thrift - Multi-cleint data streaming
Lambda, Cloud Functions - Базовые понятия, пример и deploy
Дополнительная информация
Базовый синтаксис: Thinking in Java by Bruce Eckel
Видео курсы по Java https://www.youtube.com/user/KharkovITCourses/videos
Last updated
Was this helpful?