Welcome! This repository is a curated collection of high-quality resources for learning Java and the Spring Framework, from beginner to advanced topics. Whether you're just starting out or looking to deepen your expertise, you'll find helpful links, guides, and tutorials here.
- Chapter 1: Fundamentals of Java
- Chapter 2: Intermediate Java
- Chapter 3: Advanced Java
- Chapter 4: Java Build Tools
- Chapter 5: Java EE
- Chapter 6: Clean Code and Design Patterns
- Chapter 7: Java Spring Framework and Spring Boot
1.1.1 https://www.baeldung.com/java-primitives
1.1.2 https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
1.2.1. Basics
https://www.baeldung.com/java-control-structures
1.2.2 Some conventions to follow
https://www.baeldung.com/java-using-not-in-if-conditions
1.2.3 Switch Case
https://www.baeldung.com/java-switch
- https://www.baeldung.com/java-oop
- https://www.baeldung.com/java-concrete-class
- https://www.codejava.net/java-core/the-java-language/9-rules-about-constructors-in-java
- https://www.codejava.net/java-core/the-java-language/everything-you-need-to-know-about-interfaces-in-java
- https://java2blog.com/difference-between-abstract-class-and-interface-in-java
- https://www.baeldung.com/java-access-modifiers
- https://www.codejava.net/java-core/the-java-language/java-access-modifiers-examples-public-protected-private-and-default
- https://www.codejava.net/java-core/the-java-language/what-is-inheritance-in-java-the-what-why-and-how
- https://www.codejava.net/java-core/the-java-language/12-rules-and-examples-about-inheritance-in-java
- https://www.baeldung.com/java-inheritance-composition
- https://www.codejava.net/java-core/the-java-language/what-is-overloading-in-java-and-examples
- https://www.codejava.net/java-core/the-java-language/12-rules-of-overriding-in-java-you-should-know
- https://www.codejava.net/java-core/the-java-language/differences-between-overriding-and-overloading
- https://www.javatpoint.com/covariant-return-type
- Hidden Method
-
https://dzone.com/articles/default-and-private-methods-in-interfaces
-
Java Variables Passing Examples - Pass-by-value or Pass-by-reference?
-
https://dzone.com/articles/what-is-serialization-everything-about-java-serial
- https://www.techiedelight.com/difference-between-string-stringbuilder-java/#:~:text=A%20String%20is%20immutable%20in,created%20in%20the%20string%20pool.
- Check String API Section from here: https://www.baeldung.com/java-string
- https://java2blog.com/core-java-tutorial-for-beginners-experienced/#Chapter_11_String_Handling
- https://www.baeldung.com/java-exceptions
- https://www.baeldung.com/java-checked-unchecked-exceptions
- https://java2blog.com/difference-between-throw-and-throws-in-java/
- https://www.baeldung.com/java-new-custom-exception
- What is Collections Framework: https://www.codejava.net/java-core/collections/what-is-java-collections-framework
Fig: Collections Framework Hierarchy, Source: https://www.javatpoint.com/collections-in-java
- List:
- https://www.codejava.net/java-core/collections/java-list-collection-tutorial-and-examples
- https://www.codejava.net/java-core/collections/sorting-list-collections-examples
- https://www.codejava.net/java-core/collections/sorting-a-list-by-multiple-attributes-example
- Converting Iterator to List
- Java – Get Random Item/Element From a List
- Partition a List in Java
- Removing all nulls from a List in Java
- Removing all duplicates from a List in Java
- Check If Two Lists are Equal in Java
- How to Find an Element in a List with Java (popular)
- Java List UnsupportedOperationException
- Copy a List to Another List in Java
- Remove All Occurrences of a Specific Value from a List
- Add Multiple Items to an Java ArrayList
- Remove the First Element from a List
- Ways to Iterate Over a List in Java
- Intersection of Two Lists in Java
- How to Count Duplicate Elements in Arraylist
- Finding the Differences Between Two Lists in Java
- Reversing a Linked List in Java
- Assert Two Lists for Equality Ignoring Order in Java
- Set:
- Map:
- https://www.baeldung.com/java-hashmap
- https://www.baeldung.com/java-hashmap-advanced
- https://www.baeldung.com/java-treemap
- https://www.baeldung.com/java-treemap-vs-hashmap
- How to Store Duplicate Keys in a Map in Java?
- Initialize a HashMap in Java **
- Merging Two Maps with Java 8
- Sort a HashMap in Java
- Comparing Two HashMaps in Java
- Using the Map.Entry Java Class
- Working With Maps Using Streams **
- Using the Map.Entry Java Class
- Iterate over a Map in Java **
- Miscellaneous:
- Converting between an Array and a List in Java
- Converting Between an Array and a Set in Java
- Converting between a List and a Set in Java
- Convert a Map to an Array, List or Set in Java
- How to Convert List to Map in Java (popular)
- Map to String Conversion in Java
- Arrays.asList vs new ArrayList(Arrays.asList())
- Collecting Stream Elements into a List in Java
- The Difference Between Collection.stream().forEach() and Collection.forEach()
- A Guide to Iterator in Java
- https://www.baeldung.com/java-collections-complexity
- https://www.baeldung.com/java-generics
- http://tutorials.jenkov.com/java-generics/wildcards.html (Optional)
- https://www.baeldung.com/java-generics-type-parameter-vs-wildcard
- https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/Lambda-QuickStart/index.html
- https://www.jrebel.com/blog/java-streams-in-java-8#:~:text=Java%20streams%20enable%20functional%2Dstyle,where%20you%20can%20store%20elements.
- https://reflectoring.io/comprehensive-guide-to-java-streams/
- https://www.capitalone.com/tech/software-engineering/java-streams-explained-simple-example/
- Video Tutorials from java brains - https://www.youtube.com/watch?v=gpIUfj3KaOc&list=PLqq-6Pq4lTTa9YGfyhyW2CqdtW9RtY-I3&ab_channel=JavaBrains
- https://github.com/winterbe/java8-tutorial
- https://jenkov.com/tutorials/java-reflection/index.html
- https://www.baeldung.com/java-reflection
- https://docs.oracle.com/javase/tutorial/java/annotations/index.html
- https://www.baeldung.com/java-default-annotations
- Custom Annotation: https://www.youtube.com/watch?v=DkZr7_c9ry8
- https://reflectoring.io/java-annotation-processing/
- https://github.com/winterbe/java8-tutorial#annotations
- @Deprecated annotation examples
- @Override annotation examples
- @SuppressWarnings annotation examples
- Annotations under the hood
- All 14 Parts - https://foojay.io/today/java-thread-programming-part-1/
- Synchronized - https://www.baeldung.com/java-synchronized
- Volatile - https://jenkov.com/tutorials/java-concurrency/volatile.html
- Completable Future - https://www.baeldung.com/java-completablefuture
- Oracle Docs - https://docs.oracle.com/javase/tutorial/essential/concurrency/index.html
- Synchronization and Locks - https://web.mit.edu/6.005/www/fa15/classes/23-locks/
- Reentrant Lock - https://www.geeksforgeeks.org/reentrantreadwritelock-class-in-java/
- Executor Service - https://jenkov.com/tutorials/java-util-concurrent/executorservice.html
- Thread Pool - https://www.geeksforgeeks.org/thread-pools-java/
- Thread Pool Executor - https://www.digitalocean.com/community/tutorials/threadpoolexecutor-java-thread-pool-example-executorservice
- Fork Join Framework - https://www.educative.io/answers/what-is-the-use-of-fork-join-framework-in-java
- Java 8 Features: https://www.javacodegeeks.com/java-8-features-tutorial.html
- Java 9 Features: https://www.baeldung.com/new-java-9
- Java 10 Features: https://www.baeldung.com/java-10-overview
- Java 11 Features: https://www.baeldung.com/java-11-new-features
- Java 12 Features: https://www.baeldung.com/java-12-new-features
- Java 13 Features: https://www.baeldung.com/java-13-new-features
- Java 14 Features: https://www.baeldung.com/java-14-new-features
- Java 15 Features: https://www.baeldung.com/java-15-new
- Java 16 Features: https://blogs.oracle.com/java-platform-group/the-arrival-of-java-16
- Java 17 Features: https://www.techgeeknext.com/java/java17-features
- Java 18 Features: https://www.happycoders.eu/java/java-18-features/
- Understanding Object Ordering in Java with Comparable and Comparator
- Understanding Collections and Thread Safety in Java
- 18 Java Collections and Generics Best Practices
- Generics with extends and super Wildcards and the Get and Put Principle
- Generics with Subtyping and the Substitution Principle
- Differences between static and non-static stuffs in Java
- What is Upcasting and Downcasting in Java
- https://jenkov.com/tutorials/java-reflection/index.html
- https://www.baeldung.com/java-reflection
- Maven - Video Tutorial (Java Brains) : https://www.youtube.com/watch?v=al7bRZzz4oU&list=PL92E89440B7BFD0F6&index=1&ab_channel=JavaBrainsJavaBrainsVerified
- Gradle - Video Tutorial (Linkedin Learning) : https://www.linkedin.com/learning/gradle-for-java-developers
- What is Apache tomcat? : https://www.youtube.com/watch?v=kkQOm02kep0&ab_channel=KKJavaTutorialsKKJavaTutorials
- What is Servlet? : https://www.javatpoint.com/servlet-tutorial
- Lifecycle of a Servlet : https://www.javatpoint.com/life-cycle-of-a-servlet
- How Servlet Works? : https://www.javatpoint.com/how-servlet-works
- Servlet Context : https://www.javatpoint.com/servletcontext
- Servlet Filter : https://www.javatpoint.com/servlet-filter
- What is war file? : https://www.javatpoint.com/war-file
- Introduction to Servlet : Video Tutorial - https://www.youtube.com/watch?v=7TOmdDJc14s
- Intro to servlets - https://www.baeldung.com/intro-to-servlets
- Oracle Servlet Documentation : https://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html
- Servlet MVC : https://www.baeldung.com/mvc-servlet-jsp
- https://docs.spring.io/spring-framework/docs/5.0.0.RC2/spring-framework-reference/overview.html#:~:text=The%20Spring%20Framework%20consists%20of,shown%20in%20the%20following%20diagram.
- https://www.baeldung.com/spring-why-to-choose
- https://codejava.net/frameworks/spring/understanding-the-core-of-spring-framework
- https://www.baeldung.com/spring-bean
- https://www.baeldung.com/inversion-control-and-dependency-injection-in-spring
- https://medium.com/edureka/what-is-dependency-injection-5006b53af782
- https://www.baeldung.com/spring-autowire
- https://www.baeldung.com/spring-bean-annotations
- https://stackoverflow.com/a/34174782/10197771
- https://www.baeldung.com/spring-annotations-resource-inject-autowire
- https://stackoverflow.com/a/9106576/10197771
- https://www.baeldung.com/circular-dependencies-in-spring
- https://www.baeldung.com/spring-unsatisfied-dependency
- https://www.baeldung.com/spring-bean-scopes
- Spring MVC : https://www.baeldung.com/spring-mvc-tutorial
- Dispatcher Servlet : https://www.baeldung.com/spring-dispatcherservlet
- https://stackoverflow.com/a/2769523/10197771
- Spring vs Spring Boot : https://www.baeldung.com/spring-vs-spring-boot
- Spring Boot : https://spring.io/guides/gs/spring-boot/
- https://codejava.net/frameworks/spring-boot/spring-vs-spring-boot
- https://www.baeldung.com/spring-requestmapping
- https://www.baeldung.com/spring-request-param
- https://www.baeldung.com/spring-controller-vs-restcontroller
- https://www.baeldung.com/spring-mvc-view-resolver-tutorial
- https://spring.io/guides/gs/serving-web-content/
- https://www.baeldung.com/building-a-restful-web-service-with-spring-and-java-based-configuration
- Extra - Video Course from Java Brains : https://www.youtube.com/watch?v=YXlSkWq04jk&list=PLqq-6Pq4lTTbx8p2oCgcAQGQyqN8XeA1x&index=4&ab_channel=JavaBrainsJavaBrainsVerified
- https://www.javadevjournal.com/spring/spring-profiles/
- https://www.baeldung.com/spring-profiles
- https://www.baeldung.com/spring-value-annotation
- https://www.baeldung.com/spring-jdbc-jdbctemplate
- https://www.javatpoint.com/jpa-tutorial
- https://www.baeldung.com/the-persistence-layer-with-spring-and-jpa
- https://www.baeldung.com/the-persistence-layer-with-spring-data-jpa
If you have suggestions for new resources or spot a broken link, feel free to open an issue or submit a pull request!
This list is maintained for educational purposes. Last updated: November 7, 2025.
