├── images
└── java-collection-hierarchy.png
└── README.md
/images/java-collection-hierarchy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simantaturja/Learn-Java-Spring/HEAD/images/java-collection-hierarchy.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Java and Spring Learning Materials
2 |
3 | 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.
4 |
5 | ---
6 |
7 | ## Table of Contents
8 |
9 | - [Chapter 1: Fundamentals of Java](#chapter-1-fundamentals-of-java)
10 | - [Chapter 2: Intermediate Java](#chapter-2-intermediate-java)
11 | - [Chapter 3: Advanced Java](#chapter-3-advanced-java)
12 | - [Chapter 4: Java Build Tools](#chapter-4-java-build-tools)
13 | - [Chapter 5: Java EE](#chapter-5-java-ee)
14 | - [Chapter 6: Clean Code and Design Patterns](#chapter-6-clean-code-and-design-patterns)
15 | - [Chapter 7: Java Spring Framework and Spring Boot](#chapter-7-java-spring-framework-and-spring-boot)
16 |
17 | ---
18 |
19 | ## Chapter 1: Fundamentals of Java
20 |
21 | ### 1.1 Primitives
22 |
23 | 1.1.1 [https://www.baeldung.com/java-primitives](https://www.baeldung.com/java-primitives)
24 |
25 | 1.1.2 [https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html)
26 |
27 | ### 1.2 Conditionals
28 |
29 | **1.2.1. Basics**
30 |
31 | [https://www.baeldung.com/java-control-structures](https://www.baeldung.com/java-control-structures)
32 |
33 | **1.2.2 Some conventions to follow**
34 |
35 | [https://www.baeldung.com/java-using-not-in-if-conditions](https://www.baeldung.com/java-using-not-in-if-conditions)
36 |
37 | **1.2.3 Switch Case**
38 |
39 | [https://www.baeldung.com/java-switch](https://www.baeldung.com/java-switch)
40 |
41 | ### 1.3 Loops
42 |
43 | - [https://www.baeldung.com/java-loops](https://www.baeldung.com/java-loops)
44 |
45 | ### 1.4 OOP (Object-Oriented Programming)
46 |
47 | #### 1.4.1 Class, Interfaces, Abstract Class, Access Modifiers
48 |
49 | - [https://www.baeldung.com/java-oop](https://www.baeldung.com/java-oop)
50 | - [https://www.baeldung.com/java-concrete-class](https://www.baeldung.com/java-concrete-class)
51 | - [https://www.codejava.net/java-core/the-java-language/9-rules-about-constructors-in-java](https://www.codejava.net/java-core/the-java-language/9-rules-about-constructors-in-java)
52 | - [https://www.codejava.net/java-core/the-java-language/everything-you-need-to-know-about-interfaces-in-java](https://www.codejava.net/java-core/the-java-language/everything-you-need-to-know-about-interfaces-in-java)
53 | - [https://java2blog.com/difference-between-abstract-class-and-interface-in-java](https://java2blog.com/difference-between-abstract-class-and-interface-in-java)
54 | - [https://www.baeldung.com/java-access-modifiers](https://www.baeldung.com/java-access-modifiers)
55 | - [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/java-access-modifiers-examples-public-protected-private-and-default)
56 |
57 | #### 1.4.2 Encapsulation
58 |
59 | - [https://www.codejava.net/java-core/the-java-language/what-is-encapsulation-in-java-the-what-why-and-how](https://www.codejava.net/java-core/the-java-language/what-is-encapsulation-in-java-the-what-why-and-how)
60 |
61 | #### 1.4.3 Abstraction
62 |
63 | - [https://www.codejava.net/java-core/the-java-language/what-is-abstraction-in-java-the-why-and-the-truth](https://www.codejava.net/java-core/the-java-language/what-is-abstraction-in-java-the-why-and-the-truth)
64 |
65 | - [https://www.javatpoint.com/abstract-class-in-java#:~:text=in%20Java%20first.-,Abstraction%20in%20Java,text%20and%20send%20the%20message.](https://www.javatpoint.com/abstract-class-in-java#:~:text=in%20Java%20first.-,Abstraction%20in%20Java,text%20and%20send%20the%20message.)
66 |
67 | #### 1.4.4 Inheritance
68 |
69 | - [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/what-is-inheritance-in-java-the-what-why-and-how)
70 | - [https://www.codejava.net/java-core/the-java-language/12-rules-and-examples-about-inheritance-in-java](https://www.codejava.net/java-core/the-java-language/12-rules-and-examples-about-inheritance-in-java)
71 | - [https://www.baeldung.com/java-inheritance-composition](https://www.baeldung.com/java-inheritance-composition)
72 |
73 | #### 1.4.5 Polymorphism
74 |
75 | - [https://www.codejava.net/java-core/the-java-language/what-is-polymorphism-in-java-the-what-how-and-why](https://www.codejava.net/java-core/the-java-language/what-is-polymorphism-in-java-the-what-how-and-why)
76 |
77 | #### 1.4.6 Overloading & Overriding
78 |
79 | - [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/what-is-overloading-in-java-and-examples)
80 | - [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/12-rules-of-overriding-in-java-you-should-know)
81 | - [https://www.codejava.net/java-core/the-java-language/differences-between-overriding-and-overloading](https://www.codejava.net/java-core/the-java-language/differences-between-overriding-and-overloading)
82 | - [https://www.javatpoint.com/covariant-return-type](https://www.javatpoint.com/covariant-return-type)
83 | - [Hidden Method](https://www.javatpoint.com/method-hiding-in-java#:~:text=What%20is%20method%20hiding%3F&text=Method%20hiding%20can%20be%20defined,is%20known%20as%20method%20hiding.)
84 |
85 | #### 1.4.7 Miscellaneous
86 |
87 | - [https://dzone.com/articles/default-and-private-methods-in-interfaces](https://dzone.com/articles/default-and-private-methods-in-interfaces)
88 |
89 | - [https://www.baeldung.com/java-this](https://www.baeldung.com/java-this)
90 | - [https://www.baeldung.com/java-type-casting](https://www.baeldung.com/java-type-casting)
91 | - [https://www.baeldung.com/java-static](https://www.baeldung.com/java-static)
92 | - [https://java2blog.com/final-keyword-java-example/](https://java2blog.com/final-keyword-java-example/)
93 | - [https://java2blog.com/static-block-java/](https://java2blog.com/static-block-java/)
94 | - [https://java2blog.com/java-static-import-example/](https://java2blog.com/java-static-import-example/)
95 | - [https://www.baeldung.com/java-static-default-methods](https://www.baeldung.com/java-static-default-methods)
96 | - [Java Variables Passing Examples - Pass-by-value or Pass-by-reference?](https://codejava.net/java-core/the-java-language/java-variables-passing-examples-pass-by-value-or-pass-by-reference)
97 | - [https://www.baeldung.com/java-wrapper-classes](https://www.baeldung.com/java-wrapper-classes)
98 | - [https://www.javatpoint.com/java-bean](https://www.javatpoint.com/java-bean)
99 | - [https://stackoverflow.com/a/3295517/10197771](https://stackoverflow.com/a/3295517/10197771)
100 | - [https://www.baeldung.com/java-pojo-class](https://www.baeldung.com/java-pojo-class)
101 | - [https://www.baeldung.com/a-guide-to-java-enums](https://www.baeldung.com/a-guide-to-java-enums)
102 | - [https://www.baeldung.com/java-tostring](https://www.baeldung.com/java-tostring)
103 | - [https://www.baeldung.com/java-equals-hashcode-contracts](https://www.baeldung.com/java-equals-hashcode-contracts)
104 | - [https://www.baeldung.com/java-bigdecimal-biginteger](https://www.baeldung.com/java-bigdecimal-biginteger)
105 | - [https://www.baeldung.com/java-serialization](https://www.baeldung.com/java-serialization)
106 | - [https://dzone.com/articles/what-is-serialization-everything-about-java-serial](https://dzone.com/articles/what-is-serialization-everything-about-java-serial)
107 | - [https://stackoverflow.com/a/37632/10197771](https://stackoverflow.com/a/37632/10197771)
108 |
109 | ### 1.5 String
110 |
111 | - [https://www.techiedelight.com/difference-between-string-stringbuilder-java/#:~:text=A%20String%20is%20immutable%20in,created%20in%20the%20string%20pool](https://www.techiedelight.com/difference-between-string-stringbuilder-java/#:~:text=A%20String%20is%20immutable%20in,created%20in%20the%20string%20pool).
112 | - Check String API Section from here: [https://www.baeldung.com/java-string](https://www.baeldung.com/java-string)
113 | - [https://java2blog.com/core-java-tutorial-for-beginners-experienced/#Chapter_11_String_Handling](https://java2blog.com/core-java-tutorial-for-beginners-experienced/#Chapter_11_String_Handling)
114 |
115 | ### 1.6 Exception Handling
116 |
117 | - [https://www.baeldung.com/java-exceptions](https://www.baeldung.com/java-exceptions)
118 | - [https://www.baeldung.com/java-checked-unchecked-exceptions](https://www.baeldung.com/java-checked-unchecked-exceptions)
119 | - [https://java2blog.com/difference-between-throw-and-throws-in-java/](https://java2blog.com/difference-between-throw-and-throws-in-java/)
120 | - [https://www.baeldung.com/java-new-custom-exception](https://www.baeldung.com/java-new-custom-exception)
121 |
122 | ---
123 |
124 | ## Chapter 2: Intermediate Java
125 |
126 | ### 2.1 Collections
127 |
128 | - What is Collections Framework: [https://www.codejava.net/java-core/collections/what-is-java-collections-framework](https://www.codejava.net/java-core/collections/what-is-java-collections-framework)
129 |
130 | 
131 |
132 | _Fig: Collections Framework Hierarchy, Source: [https://www.javatpoint.com/collections-in-java](https://www.javatpoint.com/collections-in-java)_
133 |
134 | - List:
135 | - [https://www.codejava.net/java-core/collections/java-list-collection-tutorial-and-examples](https://www.codejava.net/java-core/collections/java-list-collection-tutorial-and-examples)
136 | - [https://www.codejava.net/java-core/collections/sorting-list-collections-examples](https://www.codejava.net/java-core/collections/sorting-list-collections-examples)
137 | - [https://www.codejava.net/java-core/collections/sorting-a-list-by-multiple-attributes-example](https://www.codejava.net/java-core/collections/sorting-a-list-by-multiple-attributes-example)
138 | - [Converting Iterator to List ](https://www.baeldung.com/java-convert-iterator-to-list)
139 | - [Java – Get Random Item/Element From a List ](https://www.baeldung.com/java-random-list-element)
140 | - [Partition a List in Java ](https://www.baeldung.com/java-list-split)
141 | - [Removing all nulls from a List in Java ](https://www.baeldung.com/java-remove-nulls-from-list)
142 | - [Removing all duplicates from a List in Java ](https://www.baeldung.com/java-remove-duplicates-from-list)
143 | - [Check If Two Lists are Equal in Java ](https://www.baeldung.com/java-test-a-list-for-ordinality-and-equality)
144 | - [How to Find an Element in a List with Java ](https://www.baeldung.com/find-list-element-java)(popular)
145 | - [Java List UnsupportedOperationException ](https://www.baeldung.com/java-list-unsupported-operation-exception)
146 | - [Copy a List to Another List in Java ](https://www.baeldung.com/java-copy-list-to-another)
147 | - [Remove All Occurrences of a Specific Value from a List ](https://www.baeldung.com/java-remove-value-from-list)
148 | - [Add Multiple Items to an Java ArrayList ](https://www.baeldung.com/java-add-items-array-list)
149 | - [Remove the First Element from a List ](https://www.baeldung.com/java-remove-first-element-from-list)
150 | - [Ways to Iterate Over a List in Java ](https://www.baeldung.com/java-iterate-list)
151 | - [Intersection of Two Lists in Java ](https://www.baeldung.com/java-lists-intersection)
152 | - [How to Count Duplicate Elements in Arraylist ](https://www.baeldung.com/java-count-duplicate-elements-arraylist)
153 | - [Finding the Differences Between Two Lists in Java ](https://www.baeldung.com/java-lists-difference)
154 | - [Reversing a Linked List in Java ](https://www.baeldung.com/java-reverse-linked-list)
155 | - [Assert Two Lists for Equality Ignoring Order in Java](https://www.baeldung.com/java-assert-lists-equality-ignore-order%20)
156 | - Set:
157 | - [https://www.codejava.net/java-core/collections/java-set-collection-tutorial-and-examples](https://www.codejava.net/java-core/collections/java-set-collection-tutorial-and-examples)
158 | - [https://www.baeldung.com/java-tree-set](https://www.baeldung.com/java-tree-set)
159 | - [https://www.baeldung.com/java-hashset](https://www.baeldung.com/java-hashset)
160 | - Map:
161 | - [https://www.baeldung.com/java-hashmap](https://www.baeldung.com/java-hashmap)
162 | - [https://www.baeldung.com/java-hashmap-advanced](https://www.baeldung.com/java-hashmap-advanced)
163 | - [https://www.baeldung.com/java-treemap](https://www.baeldung.com/java-treemap)
164 | - [https://www.baeldung.com/java-treemap-vs-hashmap](https://www.baeldung.com/java-treemap-vs-hashmap)
165 | - [How to Store Duplicate Keys in a Map in Java? ](https://www.baeldung.com/java-map-duplicate-keys)
166 | - [Initialize a HashMap in Java ](https://www.baeldung.com/java-initialize-hashmap)\*\*
167 | - [Merging Two Maps with Java 8 ](https://www.baeldung.com/java-merge-maps)
168 | - [Sort a HashMap in Java ](https://www.baeldung.com/java-hashmap-sort)
169 | - [Comparing Two HashMaps in Java ](https://www.baeldung.com/java-compare-hashmaps)
170 | - [Using the Map.Entry Java Class ](https://www.baeldung.com/java-map-entry)
171 | - [Working With Maps Using Streams](https://www.baeldung.com/java-maps-streams) \*\*
172 | - [Using the Map.Entry Java Class](https://www.baeldung.com/java-map-entry)
173 | - [Iterate over a Map in Java](https://www.baeldung.com/java-iterate-map) \*\*
174 | - Miscellaneous:
175 | - [Converting between an Array and a List in Java ](https://www.baeldung.com/convert-array-to-list-and-list-to-array)
176 | - [Converting Between an Array and a Set in Java ](https://www.baeldung.com/convert-array-to-set-and-set-to-array)
177 | - [Converting between a List and a Set in Java ](https://www.baeldung.com/convert-list-to-set-and-set-to-list)
178 | - [Convert a Map to an Array, List or Set in Java ](https://www.baeldung.com/convert-map-values-to-array-list-set)
179 | - [How to Convert List to Map in Java ](https://www.baeldung.com/java-list-to-map)(popular)
180 | - [Map to String Conversion in Java ](https://www.baeldung.com/java-map-to-string-conversion)
181 | - [Arrays.asList vs new ArrayList(Arrays.asList()) ](https://www.baeldung.com/java-arrays-aslist-vs-new-arraylist)
182 | - [Collecting Stream Elements into a List in Java](https://www.baeldung.com/java-stream-to-list-collecting)
183 | - [The Difference Between Collection.stream().forEach() and Collection.forEach()](https://www.baeldung.com/java-collection-stream-foreach)
184 | - [A Guide to Iterator in Java](https://www.baeldung.com/java-iterator)
185 | - [https://www.baeldung.com/java-collections-complexity](https://www.baeldung.com/java-collections-complexity)
186 |
187 | ### 2.2 Generics
188 |
189 | - [https://www.baeldung.com/java-generics](https://www.baeldung.com/java-generics)
190 | - [http://tutorials.jenkov.com/java-generics/wildcards.html](http://tutorials.jenkov.com/java-generics/wildcards.html) (Optional)
191 | - [https://www.baeldung.com/java-generics-type-parameter-vs-wildcard](https://www.baeldung.com/java-generics-type-parameter-vs-wildcard)
192 |
193 | ### 2.3 Streams and Lambdas
194 |
195 | - [https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/Lambda-QuickStart/index.html](https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/Lambda-QuickStart/index.html)
196 | - [https://www.jrebel.com/blog/java-streams-in-java-8#:~:text=Java%20streams%20enable%20functional%2Dstyle,where%20you%20can%20store%20elements](https://www.jrebel.com/blog/java-streams-in-java-8#:~:text=Java%20streams%20enable%20functional%2Dstyle,where%20you%20can%20store%20elements).
197 | - [https://reflectoring.io/comprehensive-guide-to-java-streams/](https://reflectoring.io/comprehensive-guide-to-java-streams/)
198 | - [https://www.capitalone.com/tech/software-engineering/java-streams-explained-simple-example/](https://www.capitalone.com/tech/software-engineering/java-streams-explained-simple-example/)
199 | - Video Tutorials from java brains - [https://www.youtube.com/watch?v=gpIUfj3KaOc&list=PLqq-6Pq4lTTa9YGfyhyW2CqdtW9RtY-I3&ab_channel=JavaBrains](https://www.youtube.com/watch?v=gpIUfj3KaOc&list=PLqq-6Pq4lTTa9YGfyhyW2CqdtW9RtY-I3&ab_channel=JavaBrains)
200 | - [https://github.com/winterbe/java8-tutorial](https://github.com/winterbe/java8-tutorial)
201 |
202 | ### 2.4 Optional
203 |
204 | - [https://github.com/winterbe/java8-tutorial#optionals](https://github.com/winterbe/java8-tutorial#optionals)
205 | - [https://www.baeldung.com/java-optional](https://www.baeldung.com/java-optional)
206 |
207 | ### 2.5 Annotations
208 |
209 | - [https://jenkov.com/tutorials/java-reflection/index.html](https://jenkov.com/tutorials/java-reflection/index.html)
210 | - [https://www.baeldung.com/java-reflection](https://www.baeldung.com/java-reflection)
211 | - [https://docs.oracle.com/javase/tutorial/java/annotations/index.html](https://docs.oracle.com/javase/tutorial/java/annotations/index.html)
212 | - [https://www.baeldung.com/java-default-annotations](https://www.baeldung.com/java-default-annotations)
213 | - [Custom Annotation: https://www.youtube.com/watch?v=DkZr7_c9ry8](https://www.youtube.com/watch?v=DkZr7_c9ry8)
214 | - [https://reflectoring.io/java-annotation-processing/](https://reflectoring.io/java-annotation-processing/)
215 | - [https://github.com/winterbe/java8-tutorial#annotations](https://github.com/winterbe/java8-tutorial#annotations)
216 | - [@Deprecated annotation examples](https://codejava.net/java-core/the-java-language/deprecated-annotation-examples)
217 | - [@Override annotation examples](https://codejava.net/java-core/the-java-language/override-annotation-examples)
218 | - [@SuppressWarnings annotation examples](https://codejava.net/java-core/the-java-language/suppresswarnings-annotation-examples)
219 | - [Annotations under the hood](https://hannesdorfmann.com/annotation-processing/annotationprocessing101/)
220 |
221 | ### 2.6 Date API
222 |
223 | - [https://github.com/winterbe/java8-tutorial#date-api](https://github.com/winterbe/java8-tutorial#date-api)
224 |
225 | ### 2.7 Command Line Tools for Java
226 |
227 | - [https://codejava.net/java-core/tools](https://codejava.net/java-core/tools)
228 |
229 | ---
230 |
231 | ## Chapter 3: Advanced Java
232 |
233 | ### 3.1 Concurrency
234 |
235 | - All 14 Parts - [https://foojay.io/today/java-thread-programming-part-1/](https://foojay.io/today/java-thread-programming-part-1/)
236 | - Synchronized - [https://www.baeldung.com/java-synchronized](https://www.baeldung.com/java-synchronized)
237 | - Volatile - [https://jenkov.com/tutorials/java-concurrency/volatile.html](https://jenkov.com/tutorials/java-concurrency/volatile.html)
238 | - Completable Future - [https://www.baeldung.com/java-completablefuture](https://www.baeldung.com/java-completablefuture)
239 | - Oracle Docs - [https://docs.oracle.com/javase/tutorial/essential/concurrency/index.html](https://docs.oracle.com/javase/tutorial/essential/concurrency/index.html)
240 | - Synchronization and Locks - [https://web.mit.edu/6.005/www/fa15/classes/23-locks/](https://web.mit.edu/6.005/www/fa15/classes/23-locks/)
241 | - Reentrant Lock - [https://www.geeksforgeeks.org/reentrantreadwritelock-class-in-java/](https://www.geeksforgeeks.org/reentrantreadwritelock-class-in-java/)
242 | - Executor Service - [https://jenkov.com/tutorials/java-util-concurrent/executorservice.html](https://jenkov.com/tutorials/java-util-concurrent/executorservice.html)
243 | - Thread Pool - [https://www.geeksforgeeks.org/thread-pools-java/](https://www.geeksforgeeks.org/thread-pools-java/)
244 | - Thread Pool Executor - [https://www.digitalocean.com/community/tutorials/threadpoolexecutor-java-thread-pool-example-executorservice](https://www.digitalocean.com/community/tutorials/threadpoolexecutor-java-thread-pool-example-executorservice)
245 | - Fork Join Framework - [https://www.educative.io/answers/what-is-the-use-of-fork-join-framework-in-java](https://www.educative.io/answers/what-is-the-use-of-fork-join-framework-in-java)
246 |
247 | ### 3.2 Features of Java 8 and later
248 |
249 | - Java 8 Features: [https://www.javacodegeeks.com/java-8-features-tutorial.html](https://www.javacodegeeks.com/java-8-features-tutorial.html)
250 | - Java 9 Features: [https://www.baeldung.com/new-java-9](https://www.baeldung.com/new-java-9)
251 | - Java 10 Features: [https://www.baeldung.com/java-10-overview](https://www.baeldung.com/java-10-overview)
252 | - Java 11 Features: [https://www.baeldung.com/java-11-new-features](https://www.baeldung.com/java-11-new-features)
253 | - Java 12 Features: [https://www.baeldung.com/java-12-new-features](https://www.baeldung.com/java-12-new-features)
254 | - Java 13 Features: [https://www.baeldung.com/java-13-new-features](https://www.baeldung.com/java-13-new-features)
255 | - Java 14 Features: [https://www.baeldung.com/java-14-new-features](https://www.baeldung.com/java-14-new-features)
256 | - Java 15 Features: [https://www.baeldung.com/java-15-new](https://www.baeldung.com/java-15-new)
257 | - Java 16 Features: [https://blogs.oracle.com/java-platform-group/the-arrival-of-java-16](https://blogs.oracle.com/java-platform-group/the-arrival-of-java-16)
258 | - Java 17 Features: [https://www.techgeeknext.com/java/java17-features](https://www.techgeeknext.com/java/java17-features)
259 | - Java 18 Features: [https://www.happycoders.eu/java/java-18-features/](https://www.happycoders.eu/java/java-18-features/)
260 |
261 | ### 3.3 Miscellaneous
262 |
263 | - [Understanding Object Ordering in Java with Comparable and Comparator](https://codejava.net/java-core/collections/understanding-object-ordering-in-java-with-comparable-and-comparator)
264 | - [Understanding Collections and Thread Safety in Java](https://codejava.net/java-core/collections/understanding-collections-and-thread-safety-in-java)
265 | - [18 Java Collections and Generics Best Practices](https://codejava.net/java-core/collections/18-java-collections-and-generics-best-practices)
266 | - [Generics with extends and super Wildcards and the Get and Put Principle](https://codejava.net/java-core/collections/generics-with-extends-and-super-wildcards-and-the-get-and-put-principle)
267 | - [Generics with Subtyping and the Substitution Principle](https://codejava.net/java-core/collections/generics-with-subtyping-and-the-substitution-principle)
268 | - [Differences between static and non-static stuffs in Java](https://codejava.net/java-core/the-java-language/differences-between-static-and-non-static-stuffs-in-java)
269 | - [What is Upcasting and Downcasting in Java](https://codejava.net/java-core/the-java-language/what-is-upcasting-and-downcasting-in-java)
270 | - [https://jenkov.com/tutorials/java-reflection/index.html](https://jenkov.com/tutorials/java-reflection/index.html)
271 | - [https://www.baeldung.com/java-reflection](https://www.baeldung.com/java-reflection)
272 |
273 | ---
274 |
275 | ## Chapter 4: Java Build Tools
276 |
277 | - Maven - Video Tutorial (Java Brains) : [https://www.youtube.com/watch?v=al7bRZzz4oU&list=PL92E89440B7BFD0F6&index=1&ab_channel=JavaBrainsJavaBrainsVerified](https://www.youtube.com/watch?v=al7bRZzz4oU&list=PL92E89440B7BFD0F6&index=1&ab_channel=JavaBrainsJavaBrainsVerified)
278 | - Gradle - Video Tutorial (Linkedin Learning) : [https://www.linkedin.com/learning/gradle-for-java-developers](https://www.linkedin.com/learning/gradle-for-java-developers)
279 |
280 | ---
281 |
282 | ## Chapter 5: Java EE
283 |
284 | ### 5.1 Servlet
285 |
286 | - What is Apache tomcat? : [https://www.youtube.com/watch?v=kkQOm02kep0&ab_channel=KKJavaTutorialsKKJavaTutorials](https://www.youtube.com/watch?v=kkQOm02kep0&ab_channel=KKJavaTutorialsKKJavaTutorials)
287 | - What is Servlet? : [https://www.javatpoint.com/servlet-tutorial](https://www.javatpoint.com/servlet-tutorial)
288 | - Lifecycle of a Servlet : [https://www.javatpoint.com/life-cycle-of-a-servlet](https://www.javatpoint.com/life-cycle-of-a-servlet)
289 | - How Servlet Works? : [https://www.javatpoint.com/how-servlet-works](https://www.javatpoint.com/how-servlet-works)
290 | - Servlet Context : [https://www.javatpoint.com/servletcontext](https://www.javatpoint.com/servletcontext)
291 | - Servlet Filter : [https://www.javatpoint.com/servlet-filter](https://www.javatpoint.com/servlet-filter)
292 | - What is war file? : [https://www.javatpoint.com/war-file](https://www.javatpoint.com/war-file)
293 | - Introduction to Servlet : Video Tutorial - [https://www.youtube.com/watch?v=7TOmdDJc14s](https://www.youtube.com/watch?v=7TOmdDJc14s)
294 | - Intro to servlets - [https://www.baeldung.com/intro-to-servlets](https://www.baeldung.com/intro-to-servlets)
295 | - Oracle Servlet Documentation : [https://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html](https://docs.oracle.com/javaee/6/tutorial/doc/bnafd.html)
296 | - Servlet MVC : [https://www.baeldung.com/mvc-servlet-jsp](https://www.baeldung.com/mvc-servlet-jsp)
297 |
298 | ---
299 |
300 | ## Chapter 6: Clean Code and Design Patterns
301 |
302 | ### 6.1 SOLID Principles
303 |
304 | - https://medium.com/backticks-tildes/the-s-o-l-i-d-principles-in-pictures-b34ce2f1e898
305 |
306 | ---
307 |
308 | ## Chapter 7: Java Spring Framework and Spring Boot
309 |
310 | ### 7.1 Overview of Spring Framework
311 |
312 | - [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://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).
313 | - [https://www.baeldung.com/spring-why-to-choose](https://www.baeldung.com/spring-why-to-choose)
314 |
315 | ### 7.2 Beans, Inversion of Control, Dependency Injection
316 |
317 | - [https://codejava.net/frameworks/spring/understanding-the-core-of-spring-framework](https://codejava.net/frameworks/spring/understanding-the-core-of-spring-framework)
318 | - [https://www.baeldung.com/spring-bean](https://www.baeldung.com/spring-bean)
319 | - [https://www.baeldung.com/inversion-control-and-dependency-injection-in-spring](https://www.baeldung.com/inversion-control-and-dependency-injection-in-spring)
320 | - [https://medium.com/edureka/what-is-dependency-injection-5006b53af782](https://medium.com/edureka/what-is-dependency-injection-5006b53af782)
321 | - [https://www.baeldung.com/spring-autowire](https://www.baeldung.com/spring-autowire)
322 | - [https://www.baeldung.com/spring-bean-annotations](https://www.baeldung.com/spring-bean-annotations)
323 | - [https://stackoverflow.com/a/34174782/10197771](https://stackoverflow.com/a/34174782/10197771)
324 | - [https://www.baeldung.com/spring-annotations-resource-inject-autowire](https://www.baeldung.com/spring-annotations-resource-inject-autowire)
325 | - [https://stackoverflow.com/a/9106576/10197771](https://stackoverflow.com/a/9106576/10197771)
326 | - [https://www.baeldung.com/circular-dependencies-in-spring](https://www.baeldung.com/circular-dependencies-in-spring)
327 | - [https://www.baeldung.com/spring-unsatisfied-dependency](https://www.baeldung.com/spring-unsatisfied-dependency)
328 | - [https://www.baeldung.com/spring-bean-scopes](https://www.baeldung.com/spring-bean-scopes)
329 |
330 | ### 7.3 Spring MVC, Spring Boot
331 |
332 | - Spring MVC : [https://www.baeldung.com/spring-mvc-tutorial](https://www.baeldung.com/spring-mvc-tutorial)
333 | - Dispatcher Servlet : [https://www.baeldung.com/spring-dispatcherservlet](https://www.baeldung.com/spring-dispatcherservlet)
334 | - [https://stackoverflow.com/a/2769523/10197771](https://stackoverflow.com/a/2769523/10197771)
335 | - Spring vs Spring Boot : [https://www.baeldung.com/spring-vs-spring-boot](https://www.baeldung.com/spring-vs-spring-boot)
336 | - Spring Boot : [https://spring.io/guides/gs/spring-boot/](https://spring.io/guides/gs/spring-boot/)
337 | - [https://codejava.net/frameworks/spring-boot/spring-vs-spring-boot](https://codejava.net/frameworks/spring-boot/spring-vs-spring-boot)
338 | - [https://www.baeldung.com/spring-requestmapping](https://www.baeldung.com/spring-requestmapping)
339 | - [https://www.baeldung.com/spring-request-param](https://www.baeldung.com/spring-request-param)
340 | - [https://www.baeldung.com/spring-controller-vs-restcontroller](https://www.baeldung.com/spring-controller-vs-restcontroller)
341 | - [https://www.baeldung.com/spring-mvc-view-resolver-tutorial](https://www.baeldung.com/spring-mvc-view-resolver-tutorial)
342 | - [https://spring.io/guides/gs/serving-web-content/](https://spring.io/guides/gs/serving-web-content/)
343 | - [https://www.baeldung.com/building-a-restful-web-service-with-spring-and-java-based-configuration](https://www.baeldung.com/building-a-restful-web-service-with-spring-and-java-based-configuration)
344 | - Extra - Video Course from Java Brains : [https://www.youtube.com/watch?v=YXlSkWq04jk&list=PLqq-6Pq4lTTbx8p2oCgcAQGQyqN8XeA1x&index=4&ab_channel=JavaBrainsJavaBrainsVerified](https://www.youtube.com/watch?v=YXlSkWq04jk&list=PLqq-6Pq4lTTbx8p2oCgcAQGQyqN8XeA1x&index=4&ab_channel=JavaBrainsJavaBrainsVerified)
345 |
346 | ### 7.4 Properties, Profiles, Value Annotations
347 |
348 | - [https://www.javadevjournal.com/spring/spring-profiles/](https://www.javadevjournal.com/spring/spring-profiles/)
349 | - [https://www.baeldung.com/spring-profiles](https://www.baeldung.com/spring-profiles)
350 | - [https://www.baeldung.com/spring-value-annotation](https://www.baeldung.com/spring-value-annotation)
351 |
352 | ### 7.5 Spring JDBC, Persistence, JPA
353 |
354 | - [https://www.baeldung.com/spring-jdbc-jdbctemplate](https://www.baeldung.com/spring-jdbc-jdbctemplate)
355 | - [https://www.javatpoint.com/jpa-tutorial](https://www.javatpoint.com/jpa-tutorial)
356 | - [https://www.baeldung.com/the-persistence-layer-with-spring-and-jpa](https://www.baeldung.com/the-persistence-layer-with-spring-and-jpa)
357 | - [https://www.baeldung.com/the-persistence-layer-with-spring-data-jpa](https://www.baeldung.com/the-persistence-layer-with-spring-data-jpa)
358 |
359 | ### 7.6 Spring Security
360 |
361 | - [https://www.youtube.com/watch?v=sm-8qfMWEV8&list=PLqq-6Pq4lTTYTEooakHchTGglSvkZAjnE&ab_channel=LinuxTexLinuxTex](https://www.youtube.com/watch?v=sm-8qfMWEV8&list=PLqq-6Pq4lTTYTEooakHchTGglSvkZAjnE&ab_channel=LinuxTexLinuxTex)
362 |
363 | ### 7.7 Miscellaneous
364 |
365 | ---
366 |
367 | ## Contributing
368 |
369 | If you have suggestions for new resources or spot a broken link, feel free to open an issue or submit a pull request!
370 |
371 | ---
372 |
373 | _This list is maintained for educational purposes. Last updated: November 7, 2025._
374 |
375 | - [https://www.baeldung.com/spring-template-engines](https://www.baeldung.com/spring-template-engines)
376 | - [https://www.baeldung.com/jackson-object-mapper-tutorial](https://www.baeldung.com/jackson-object-mapper-tutorial)
377 |
--------------------------------------------------------------------------------