Learn “Effective Java,” the ultimate Java learning course, more easily and completely. By taking this course, you can improve not only your Java programming knowledge and skills, but also your learning ability.
How to make classes and interfaces easy to write, robust, and flexible
How to take advantage of generics and minimize their disadvantages
Microsoft Senior Developer, Baek Gi-seon Effective Java with extraordinary depth 🚢
The end of Java study, Effective Java.
Effective Java ?
Every Java developer tries to study it at least once. "Effective Java," a book that no one can conquer This course will give you a complete guide.
High-level backend developer For the you who wants to be.
"Effective Java 3/E" is a book recommended to all Java developers, but paradoxically, it's not a book that everyone can easily learn. Even to properly understand the first item, you need background knowledge on "enumeration types," "flyweight patterns," "static methods in interfaces," "service provider frameworks," and "reflection." Without this background knowledge, it's difficult to fully grasp the book's content. While it's certainly challenging to learn, the rewards of mastering each chapter are truly remarkable.
Understanding the contents of "Effective Java" will significantly enhance your skills and knowledge, opening up new perspectives. Even if you study or use other programming languages, it's worth considering . (Just like I did, I diligently studied this book, but now work at Microsoft using C# and PowerShell.)
Challenging the series Effective Java Complete Guide
Effective Java Complete Guide - Part 2series in progress
"Effective Java" is divided into five parts. This lecture, Part 2, covers Chapter 4, "Classes and Interfaces," and Chapter 5, "Generics."
For developers or students who find "Effective Java" challenging, or those who want to learn more thoroughly, we'll summarize each item with code and provide background knowledge to help you learn each item. Your "Effective Java" study will be much more enjoyable, easier, and more beneficial.
For those who need in-depth learning of Java .
This course is not for beginners or complete beginners in programming. It's for developers working with Java, developers who have completed basic Java studies, or students who want to improve their skills through advanced, in-depth study. If you've taken the following course or completed a similar course, you're welcome to take this course. (For more information, please refer to Section 0 - Introduction to the Course.)
Required learning courses
Recommended Course of Study
Suggested in the lecture 4-Step Learning Sequence
This course covers 14 topics covered in Parts 2 and 3 of Effective Java, providing 30 pieces of background knowledge for a thorough approach. Effective Java also provides additional source code to help you understand parts of the book that weren't covered in text. The recommended learning method is as follows:
Step 1
I bought "Effective Java" as a textbook and read one item first.
Step 2
Take the "Key Summary" class for the item corresponding to "Effective Java Complete Guide Part 1."
Step 3
Take the "Perfect Strategy" class that follows and continue to study the areas you are lacking.
Step 4
If you organize what you have learned additionally on your personal blog and leave a link on the "Questions and Answers" bulletin board, we will review it.
Complete strategy for each of the 14 items, Learning Curriculum 📚
Item 15. Minimize access permissions for classes and members.
Information hiding
Principles for Using Access Modifiers
Java Platform Module System
Item 16. In public classes, use accessor methods, not public fields.
Performance issues with the Dimension class that exposes its internals
Item 17. Minimize the possibility of change.
Immutable class
Pros and Cons of Immutable Classes
final and the Java memory model
java.util.concurrent package
CountDownLatch
Item 18: Use composition over inheritance.
Disadvantages of inheritance
Advantages of composition
Decorator pattern
The callback framework and the self problem
Items 19-20. Design and document inheritance. Otherwise, prohibit inheritance.
@implSpec
Advantages of the interface
Interfaces and abstract skeletal classes
Template Method Pattern
Default methods and Object methods
Item 21. Design interfaces with the implementer in mind.
Things to keep in mind when adding default methods
ConcurrentModificationException
Item 22. Use interfaces only to define types.
Never use interfaces to define constants!
How to define a constant
Item 23. Use class hierarchies rather than tagged classes.
Disadvantages of tagged classes
Using Hierarchical Structure
Item 24. Make member classes static whenever possible.
static member class
Non-static member class
anonymous classes
Local class
Adapter pattern
Item 25. Keep only one top-level class per file.
Item 26. Do not use low type.
Glossary of generic terms
Why Use Parameterized Types?
GenericRepository
Item 27. Remove unchecked warnings.
Unchecked warning
@SuppressWarning
Annotation
Item 28. Use lists rather than arrays.
Covariant vs. Invariant
@SafeVarangs
Item 29. If possible, make it a generic type.
Converting code that uses arrays to generics
Bounded type parameters
Item 30. If possible, make it a generic method.
Generic singleton factory
Recursive type constraints
Item 31. Increase API flexibility by using bounded wildcards.
PECS (Producer-Extends, Consumer-Super)
wildcard
Type inference
Item 32. Be careful when using generics and variable arguments together.
A must-read for every Java developer , So that we can read together 💌
We provide a guide to help you study Effective Java more easily and thoroughly. It summarizes the core concepts introduced in Effective Java and provides detailed background knowledge necessary for a more complete understanding.
This lecture is the second in the five-part "Effective Java Complete Guide." Please take the first lecture before continuing.
I saw you during the YouTube developer consultation and wrote a question in the comments, and I was so touched by your sincere response that I am taking the developer guide and it is really helpful for me in writing my portfolio.!
Since the early bird event came up, I am taking the course right away with the thought of learning Java clearly and accurately! Thank you so much for explaining in detail the difficult parts or parts that need to be mentioned during the live coding process!
Sometimes, I was confused and didn't understand why I had to use final or why I had to use an access modifier, but I was able to understand it after listening to the lecture.!!
This Effective series is so informative. I love the process of checking things I didn't understand or just skipped over in the book while typing code. Thank you always.
Effective Java uses examples to explain, but there are many cases where you don't know the examples. It's a lecture that's like a filial son because it explains the difficult parts.