Today, a Java backend developer is expected to be familiar with a vast array of technologies, frameworks, and tools, which can be overwhelming. This repository and accompanying mind map are intended to help both novice and experienced developers find their way through this variety. Additionally, you can view the project specifications for the educational project by following the provided link, where I have included 90% of the technologies currently used in professional settings.
Note
Courses:
- Complexity
- Big O
- Data structure
- Array
- Linked List
- Stack
- Queue
- Graph
- Tree
- Trie
- Heap
- Hash table
- Base algorithms
- Sort
- Bubble Sort
- Selection Sort
- Insertion Sort
- Merge Sort
- Quick Sort
- Heap Sort
- Radix Sort
- Counting Sort
- Search
- Linear Search
- Binary Search
- Graph
- Traversal
- Depth-First Search (DFS)
- Breadth-First Search (BFS)
- Shortest Path
- Dijkstra’s algorithm
- Bellman-Ford algorithm
- A* search
- Minimum Spanning Tree
- Prim’s algorithm
- Kruskal’s algorithm
- Network Flow
- Traversal
- Sort
- Advanced algorithms
- Paradigms
- Brute Force
- Greedy Algorithms
- Divide and Conquer
- Dynamic Programming
- Patterns
- Two Pointers
- Fast and Slow Pointers
- Sliding Window
- Merge Intervals
- In-place Reversal of a Linked List
- Two Heaps
- Top K Elements
- Subsets
- Greedy Techniques
- Dynamic Programming
- Backtracking
- Matrices
- Bitwise Manipulation
Note
Books
- Refactoring: Improving the Design of Existing Code - Martin Fowler
- Patterns of Enterprise Application Architecture - Martin Fowler
- Clean Code - Robert Martin
- The Clean Coder - Robert Martin
- Code Complete - Steve McConnell
- Working Effectively with Legacy Code - Michael Feathers
- The Pragmatic Programmer - David Thomas
Courses
Note
Books
- Head First Design Patterns - Eric Freeman
Resources
- OOP
- SOLID
- KISS
- Design patterns (GoF)
- DDD
- Anti patterns
Note
Books
- Head first Java - Kathy Sierra
- Core Java, Vol 1 & 2 - Horstmann
- Core Java for the Impatient - Horstmann
- Effective Java - Joshua Bloch
- Java Concurrency in Practice - Goetz, Joshua Bloch
Documentation
- JDK 21 Documentation - Home
- The Java Language Specification
- The Java Virtual Machine Specification
Courses
Base
- Syntax
- DataTypes, Variables
- Conditionals
- DataStructures
- OOP, Interfaces, Classes
- Packages
- IO
- File IO
- Network IO
- Sockets
- NIO
- Loops
- Exception Handling
- Collections
Intermediate
- Serialization
- Generics
- Lambdas
- Stream API
- Data Time API
- Optional
- Sealed Class
- Record
- Concurrency
- Thread, Runnable
- volatile
- synchronize
- Networking & Sockets
Advanced
- JVM, Heap, Stack
- GC
- Classloader
- Memory Managment (JMM)
- Concurrency
- Atomic
- Executors
- ReentranceLock
- Collections
- Virtual threads
- Profiling
- jconsole
- jvisualvm
- jProfiler
- thread dump
- heap dump
- Servlets
- JSP
- JMS
- Application Servers
- Tomcat
- Jetty
- WildFly
Note
Books
- "Spring in Action" series
Documentation
- Official documentation
Spring
- Spring Core
- Configuration
- DI, IoC
- AOP
- Annotations
- Bean Scope
- Bean Factory
- Application Context
- Spring Boot
- Starters
- Autoconfiguration
- Actuators
- Embedded Server
- Spring MVC
- Architecture
- Components
- Spring Data
- Spring Data JPA
- Spring Data JDBC
- Spring Security
- Authentification
- Authorization
- OAuth2
- JWT
- SAML
- LDAP
- Databases
Databases
- JDBC
- JDBI3
- JDBC Template
- ORM/JPA
- Hibernate
- ORM
- Persistence Context
- Relationships
- Lazy, Eager
- Entity Lifecycle
- Cache
- OpenJPA
- Hibernate
- JOOQ
- Liquibase/Flyway
Other
- Logging
- Log4j2
- Logback
- SLF4J
- Apache Spark
- Utils
- Guava
- Apache Commons
- Jackson
- Quartz
- Flux
- RXJava
- Spring WebFlux
- Vert.x
- Akka
Note
Books
- Designing Data-Intensive Applications - Kleppmann
- Building Microservices - Sam Newman
- Microservices Patterns - Chris Richardson
- Implementing Domain-Driven Design - Vaughn Vernon
Courses
- https://github.com/ByteByteGoHq/system-design-101
- https://github.com/donnemartin/system-design-primer
- https://www.educative.io/courses/grokking-modern-system-design-interview-for-engineers-managers
- https://www.educative.io/courses/distributed-systems-practitioners
- https://www.designgurus.io/course/grokking-the-advanced-system-design-interview
Sites
Patterns
- Enterprise Integration Patterns
- Monolithic
- Microservices
- BFF
- CQRS
- Event sourcing
- Circuit Breaker
- Strangler Facade
- Pub/Sub
- Ambassador
- Leader Election
- CAP
- Consistency
- SOA
- Serverless
- Service Mash
- Twelve Factor Apps
Networks
- Topologies
- DNS
- OSI & TCP/IP models
- Protocols
Integration
- Frameworks
- Spring Integration
- Apache Camel
- API
- REST
- HATEOAS
- GraphQL
- gRPC
- SOAP
- Websockets
- Webhook
- REST
- Messaging
- JMS
- MQ
- ActiveMQ
- RabbitMQ
- Kafka
- Proxy
- Load Balancers
- Nginx
- HAProxy
- Reverse Proxy
- API Gateway
- Load Balancers
- Process management
- BPM
- BPEL
- Activiti
- Camunda
DB
- RDBMS
- Core
- DML & DDL
- Transactions
- ACID
- Isolation
- Normalization
- N+1 problem
- PostgreSQL
- H2
- Core
- NoSQL
- Document
- MongoDB
- CouchDB
- Time Series
- InfluxDB
- TimeScale
- Realtime
- Firebase
- RethingDB
- Column
- Cassandra
- HBase
- Key-Value
- Redis
- DynamoDB
- Graph
- Neo4J
- Document
- IMDG
- Hazelcast
- Apache Ignite
- GridGane
- Scaling
- Indexes
- Replication
- Sharding
- Profiling
- CAP theorem
Cache
- Client side
- CDN
- Server side
- Redis
- Memcached
BigData
- Hadoop
- HDFS
- Ozone
- S3
- Hive
- MapReduce
- Spark
- Oozie
Search Engine
- Elasticsearch
- Solr
Security
- Authentification
- OAuth
- Basic Auth
- Token Auth
- JWT
- OpenID
- SAML
- Hashing
- MD5
- SHA
- scrypt/bcrypt
- SSL/TLS
- HTTPS
- API Security
- JavaScript
- React, Vue, Angular
- SPA, SSR, SSG
Note
Books
- Тестирование Дот Ком - Роман Савин
- Unit
- JUnit
- Mockito
- TestNG
- PowerMock
- TDD
- Integration
- Cucumber
- JMeter
- Selenium
- Behavior
- JBehave
- BDD
- Waterfall
- Agile
- Scrum
- Kanban
- Lean
- Prototype
- RAD
- FDD
- XP (Extreme Programming)
- Communication
- Conflict management
- Creativity
- Critical thinking
- Decision-making
- Emotional management
- Flexibility
- Leadership
- Orientation to results
- Planning
- Problem-solving
- Teamwork
- Time management
- Build Tools
- Maven
- Gradle
- Ant
- jShell
- VCS
- Git
- Github
- Gitlab
- Bitbucket
- GitFlow
- Trunk-based Development
- Git
- CI
- Сoncepts
- Jenkins
- SonarQube
- PMD, CheckStyle
- JaCoCo
- CD
- Сoncepts
- Ansible
- Containers
- Concepts
- Docker
- Docker Compose
- K18s
- Linux
- Core commands
- OS Concepts
- shell
