강의

멘토링

로드맵

BEST
Programming

/

Programming Language

Effective Java Complete Guide Part 2

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.

(4.9) 34 reviews

1,750 learners

  • whiteship
자바
이펙티브자바
백엔드개발자
자바입문
Java

Reviews from Early Learners

What you will learn!

  • 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 2 series 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.

  • Generic variable arguments
  • ThreadLocal
  • ThreadLocalRandom

Item 33. Consider type-safe heterogeneous containers.

  • Type-safe heterogeneous container
  • Type token
  • Super Type Token
  • Limited type token

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.

Baek Gi-seon's "Effective Java Complete Guide" Previous Lecture 📖

Recommended for
these people

Who is this course right for?

  • All developers who use Java in the field

  • Developers or students who want to master Java

  • Developers or students who want to learn Effective Java more thoroughly

Need to know before starting?

  • Java Basics (Must read one of the following books: Java God, Java Essentials, and Head First Java)

  • The Java: Java 8

  • More Java: Different ways to manipulate code

  • Design Patterns Learned Through Coding

  • Effective Java Complete Guide Part 1

Hello
This is

92,401

Learners

4,233

Reviews

2,010

Answers

4.8

Rating

20

Courses

네이버와 아마존을 거쳐 현재 Microsoft에서 시니어 소프트웨어 엔지니어로 일하고 있습니다.

아인슈타인은 "교육이란 사실을 가르치는 것이 아니라, 생각할 수 있는 힘을 기르는 것이다."라고 말했습니다. 그리고 저도 그 말에 깊이 공감하며 강의를 만들고 있습니다.

유튜브:
'백기선' 채널에서 개발자 고민 상담 및 개발자에게 유용한 지식 공유
번역: 스프링 및 하이버네이트 관련 서적 다수 번역
저술: 쉽게 따라하는 자바 웹 개발

Curriculum

All

54 lectures ∙ (8hr 54min)

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

34 reviews

4.9

34 reviews

  • ksyn16113827님의 프로필 이미지
    ksyn16113827

    Reviews 10

    Average Rating 5.0

    5

    37% enrolled

    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.!!

    • remember28890963님의 프로필 이미지
      remember28890963

      Reviews 81

      Average Rating 4.9

      5

      100% enrolled

      This was really helpful and I'm looking forward to the next one!

      • pia2carrot님의 프로필 이미지
        pia2carrot

        Reviews 2

        Average Rating 5.0

        5

        6% enrolled

        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.

        • tmxhsk990743님의 프로필 이미지
          tmxhsk990743

          Reviews 11

          Average Rating 5.0

          5

          46% enrolled

          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.

          • kkimbabb1146님의 프로필 이미지
            kkimbabb1146

            Reviews 16

            Average Rating 5.0

            5

            100% enrolled

            I will take a good look at it.

            $51.70

            whiteship's other courses

            Check out other courses by the instructor!

            Similar courses

            Explore other courses in the same field!