Java and Spring Learning Materials
Chapter 1 : Fundamentals of Java
1.1 Primitives
1.1.1 https://www.baeldung.com/java-primitives
1.1.2 https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
1.2 Conditionals
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
1.3 Loops
1.4 OOP
1.4.1. Class, Interfaces, Abstract Class, Access Modifiers
- 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
1.4.2 Encapsulation
1.4.3 Abstraction
1.4.4 Inheritance
- 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
1.4.5 Polymorphism
1.4.6 Overloading & Overriding
- 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
1.4.7 Miscellaneous
- https://www.baeldung.com/java-this
- https://www.baeldung.com/java-type-casting
- https://www.baeldung.com/java-static
- https://java2blog.com/final-keyword-java-example/
- https://java2blog.com/static-block-java/
- https://java2blog.com/java-static-import-example/
- https://www.baeldung.com/java-static-default-methods
- Java Variables Passing Examples - Pass-by-value or Pass-by-reference?
- https://www.baeldung.com/java-wrapper-classes
- https://www.javatpoint.com/java-bean
- https://stackoverflow.com/a/3295517/10197771
- https://www.baeldung.com/java-pojo-class
- https://www.baeldung.com/a-guide-to-java-enums
- https://www.baeldung.com/java-tostring
- https://www.baeldung.com/java-equals-hashcode-contracts
- https://www.baeldung.com/java-bigdecimal-biginteger
- https://www.baeldung.com/java-serialization
- https://dzone.com/articles/what-is-serialization-everything-about-java-serial
- https://stackoverflow.com/a/37632/10197771
1.5 String
- 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
1.6 Exception 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
Chapter 2: Intermediate Java
2.1 Collections
- 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
2.2 Generics
- 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
2.3 Streams and Lambdas
- 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
2.4 Optional
2.5 Annotations
- 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
- https://www.baeldung.com/java-default-annotations
- @Deprecated annotation examples
- @Override annotation examples
- @SuppressWarnings annotation examples
- Annotations under the hood
2.6 Date API
2.7 Command Line Tools for Java
Chapter 3: Advanced Java
3.1 Concurrency
- 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
3.2 Features of Java 8 and later
- 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/
Miscellaneous
- 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
Chapter 4: Java Build Tools
- 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
Chapter 5: Java EE
5.1 Servlet
- 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
Chapter 6: Clean Code and Design Patterns
5.1 SOLID Principles
Chapter 7: Java Spring Framework and Spring Boot
7.1 Overview of Spring Framework
- 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
7.2 Beans, Inversion of Control, Dependency Injection
- 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://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
7.3 Spring MVC, Spring Boot
- 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://medium.com/edureka/what-is-dependency-injection-5006b53af782
- 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
7.4 Properties, Profiles, Value Annotations
- https://www.javadevjournal.com/spring/spring-profiles/
- https://www.baeldung.com/spring-profiles
- https://www.baeldung.com/spring-value-annotation
7.5 Spring JDBC, Persistence, JPA
- 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
7.6 Spring Security
7.7 Miscellaneous