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?
