BEST
개발 · 프로그래밍

/

프로그래밍 언어

이펙티브 자바 완벽 공략 2부

자바 학습의 끝판왕 “이펙티브 자바”를 보다 쉽고 완벽하게 학습하세요. 이 강의를 수강하시면 여러분의 자바 프로그래밍 지식과 실력뿐 아니라 학습 능력 또한 향상시킬 수 있습니다.

(4.9) 수강평 28개

수강생 1,642명

Thumbnail

중급자를 위해 준비한
[프로그래밍 언어] 강의입니다.

이런 걸
배워요!

  • 클래스와 인터페이스를 쓰기 편하고, 견고하며, 유연하게 만드는 방법

  • 제네릭의 장점을 살리고 단점을 최소화하는 방법

마이크로소프트 시니어 개발자, 백기선의 
깊이가 남다른 이펙티브 자바 🚢 

자바 공부의 끝, 이펙티브 자바.

 Effective Java?

모든 자바 개발자가 한번쯤 공부를 시도하지만  
결코 아무나 정복할 수 없는 책, "이펙티브 자바" 
이 강의가 완벽하게 공략해 드립니다.


수준 높은 백엔드 개발자가 
되고 싶은 당신을 위해.

『이펙티브 자바(Efftective Java 3/E)』는 모든 자바 개발자에게 권하는 책이지만 역설적이게도 모든 자바 개발자가 쉽게 학습할 수 있는 책은 아닙니다. 제일 첫 번째 아이템부터 제대로 소화하려면 "열거 타입", "플라이웨이트 패턴", "인터페이스의 정적 메서드", "서비스 제공자 프레임워크", "리플렉션" 이라는 배경 지식이 필요합니다. 이런 배경 지식 없이 책의 내용을 100% 이해하기는 어렵습니다. 그만큼 학습하기 어려운 책이지만, 하나씩 학습을 했을때 뒤따르는 보상도 남다릅니다. 

『이펙티브 자바』의 내용을 이해하면 여러분의 실력과 지식은 이전에 비해 많이 향상될 것이며, 새로운 시야를 밝혀줄 것입니다. 심지어 다른 프로그래밍 언어를 공부하거나 사용한다 하더라도 말이죠. (마치 이 책을 열심히 공부했었지만 지금은 마이크로소프트에서 C#과 Powershell을 사용하며 일하고 있는 지금의 저처럼 말이죠.)


시리즈로 도전하는
이펙티브 자바 완벽 공략

이펙티브 자바 완벽 공략 - Part 2시리즈 연재 중

『이펙티브 자바』를 총 5부로 나눠서 학습합니다. 2부에 해당하는 이 강의는 『이펙티브 자바』 4장 "클래스와 인터페이스"와, 5장 "제네릭"을 다룹니다.

『이펙티브 자바』 학습을 어려워하는 개발자 또는 학생 또는 보다 완벽하게 학습하고 싶은 분들을 위해 각 아이템을 코드와 함께 요약하고, 각 아이템 별로 학습하는 데 도움이 되는 배경 지식을 전달해 드립니다. 여러분의 『이펙티브 자바』 학습이 훨씬 재미있고, 쉽고 또 유익할 것입니다.

자바 심화 학습이 필요한 분들께.

이 강의는 프로그래밍 초급자 또는 입문자를 위한 강의가 아닙니다. 자바를 사용해 일을 하고 있는 개발자 또는 기본적인 자바 공부를 마치고 보다 수준높은 심화 학습을 통해 실력을 올리고 싶은 개발자 또는 학생을 위한 강의입니다. 다음 강의를 수강했거나 그에 준하는 학습을 했다면 이번 강의를 들어도 좋습니다. (자세한 내용은 섹션 0 - 강의 소개 수업을 참고해 주세요.)

필수 학습 과정

권장 학습 과정


강의에서 제안하는
4-Step 학습 순서 

이 강의는 이펙티브 자바 2부과 3부에서 다루는 총 14개의 아이템을 다루며, 완벽한 공략을 위해 총 30개에 달하는 배경 지식을 전달합니다. 또한 이펙티브 자바가 책에서 글로만 설명한 부분도 여러분이 보다 쉽게 이해할 수 있도록 추가적인 소스 코드를 제공하고 있습니다. 권장하는 학습 방법은 다음과 같습니다.

Step 1

"이펙티브 자바"를 교재 삼아 구매하고, 아이템을 하나 먼저 읽습니다.

Step 2

"이펙티브 자바 완벽 공략 1부"에 해당하는 아이템의 "핵심 정리" 수업을 수강합니다.

Step 3

이어지는 "완벽 공략" 수업을 수강하고 부족한 부분은 보충 학습을 이어갑니다.

Step 4

추가로 학습한 부분을 개인 블로그에 정리하시고 "질문 답변" 게시판에 링크를 남겨두시면 리뷰를 해드립니다.


14개 아이템별 완벽 공략,
학습 커리큘럼 📚

아이템 15. 클래스와 멤버의 접근 권한을 최소화하라.

  • 정보 은닉
  • 접근 제한자 사용 원칙
  • 자바 플랫폼 모듈 시스템

아이템 16. public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라.

  • 내부를 공개한 Dimension 클래스의 성능 이슈

아이템 17. 변경 가능성을 최소화하라.

  • 불변 클래스
  • 불변 클래스의 장점과 단점
  • final과 자바 메모리 모델  
  • java.util.concurrent 패키지
  • CountDownLatch

아이템 18. 상속보다는 컴포지션을 사용하라.

  • 상속의 단점
  • 컴포지션의 장점
  • 데코레이터 패턴
  • 콜백 프레임워크와 셀프 문제

아이템 19-20. 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라.

  • @implSpec
  • 인터페이스의 장점
  • 인터페이스와 추상 골격(skeletal) 클래스
  • 템플릿 메서드 패턴
  • 디폴트 메서드와 Object 메서드

아이템 21. 인터페이스는 구현하는 쪽을 생각해 설계하라.

  • 디폴트 메서드 추가시 주의할 점
  • ConcurrentModificationException

아이템 22. 인터페이스는 타입을 정의하는 용도로만 사용하라.

  • 상수를 정의하는 용도로 인터페이스를 사용하지 말 것!
  • 상수를 정의하는 방법

아이템 23. 태그 달린 클래스보다는 클래스 계층 구조를 활용하라.

  • 태그 달린 클래스의 단점
  • 계층 구조 활용하기

아이템 24. 멤버 클래스는 되도록 static으로 만들라.

  • 정적 멤버 클래스
  • 비정적 멤버 클래스
  • 익명 클래스
  • 지역 클래스
  • 어댑터 패턴

아이템 25. 톱 레벨 클래스는 한 파일에 하나만 담으라.

아이템 26. 로 타입은 사용하지 말라.

  • 제네릭 용어 정리
  • 매개변수화 타입을 사용해야 하는 이유
  • GenericRepository

아이템 27. 비검사 경고를 제거하라.

  • 비검사(unchecked) 경고
  • @SuppressWarning
  • 애너테이션

아이템 28. 배열보다는 리스트를 활용하라.

  • 공변 vs 불공변
  • @SafeVarangs

아이템 29. 이왕이면 제네릭 타입으로 만들라.

  • 배열을 사용하는 코드를 제네릭으로 변경하기
  • 한정적 타입 매개변수

아이템 30. 이왕이면 제네릭 메서드로 만들라.

  • 제너릭 싱글턴 팩터리
  • 재귀적 타입 한정

아이템 31. 한정적 와일드카드를 사용해 API 유연성을 높이라.

  • PECS(Producer-Extends, Consumer-Super)
  • 와일드카드
  • 타입 추론

아이템 32. 제네릭과 가변인수를 함께 쓸 때는 신중하라.

  • 제네릭 가변인수
  • ThreadLocal
  • ThreadLocalRandom

아이템 33. 타입 안전 이종 컨테이너를 고려하라.

  • 타입 안전 이종 컨테이너
  • 타입 토큰
  • 수퍼 타입 토큰
  • 한정적 타입 토큰

모든 자바 개발자의 필독서
함께 읽어나갈 수 있도록 💌

이펙티브 자바를 보다 쉽고 완벽하게 공부할 수 있는 가이드를 제공합니다. 이펙티브 자바에서 소개하는 핵심적인 내용을 정리하고 보다 완벽하게 이해하는 데 필요한 배경 지식을 자세히 전달하고 있습니다.

총 5부에 걸쳐서 진행하는 “이펙티브 자바 완벽 공략” 시리즈의 이번 강의는 시리즈 중 두 번째 강의입니다. 첫 번째 강의를 먼저 수강한 다음 이어서 학습해 주세요.

백기선의 “이펙티브 자바 완벽 공략” 지난 강의 📖

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 현업에서 자바를 사용하고 있는 모든 개발자

  • 자바를 마스터 하고 싶은 개발자 또는 학생

  • 이펙티브 자바를 보다 완벽하게 학습하고 싶은 개발자 또는 학생

선수 지식,
필요할까요?

  • 자바 기초 (자바의 신, 자바의 정석, 헤드 퍼스트 자바 중 1권 필독)

  • 더 자바: 자바 8

  • 더 자바: 코드를 조작하는 다양한 방법

  • 코딩으로 학습하는 디자인 패턴

  • 이펙티브 자바 완벽 공략 1부

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

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

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

커리큘럼

전체

54개 ∙ (8시간 54분)

수업 자료

가 제공되는 강의입니다.

강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!