BEST
개발 · 프로그래밍

/

프로그래밍 언어

더 자바, Java 8

자바 8에 추가된 기능들은 자바가 제공하는 API는 물론이고 스프링 같은 제 3의 라이브러리 및 프레임워크에서도 널리 사용되고 있습니다. 이 시대의 자바 개발자라면 반드시 알아야 합니다. 이 강의를 통해 쉽고 빠르게 자신의 기술로 만드세요.

(4.9) 수강평 324개

수강생 4,342명

Thumbnail

초급자를 위해 준비한
[백엔드, 프로그래밍 언어] 강의입니다.

이런 걸
배워요!

  • 함수형 인터페이스와 람다 그리고 메소드 레퍼런스에 대해 학습합니다.

  • 인터페이스의 기본 메소드와 스태틱 메소드에 대해 학습합니다.

  • Stream과 Optional에 대해 학습합니다.

JAVA 8을 제대로 활용하는 
가장 똑똑한 방법을 알려드립니다.

🙆🏻‍♀ 이 강의에서는 자바 8에 추가된 주요 기능을 학습해 봅니다.
자바 8의 코드를 확실하게 이해하고, 스스로 작성해 보세요! 🙆🏻‍♂

강의 소개 👨‍💻

2014년 3월에 처음 출시했고 6년이 넘게 지난 지금도 자바 개발자가 가장 많이 사용하고 있는 버전인 자바 8에 대해 학습합니다.

자바 기초 공부는 마쳤지만 그래도 뭔가 아직 자바에 대해 잘 모르겠고 다른 사람이 작성한 코드를 볼 때 생소한 문법이 보인다면 아마도 자바 8에 추가된 기능을 제대로 이해하지 못하고 있기 때문일 수도 있습니다.

자바 8로 무엇을 할 수 있을까요? 🐔🍴

자 보시죠! 여기 Chicken이라는 인터페이스를 구현한 기선닭이 있습니다.

public class KeesunChicken implements Chicken {

}

보시다시피 인터페이스만 구현했을 뿐, 아무런 메소드도 오버라이딩하지 않았죠.
하지만 이런 게 가능합니다.

public class App {

    public static void main(String[] args) {

        Chicken keesun = new KeesunChicken();

        Egg egg = keesun.create();

    }

}

도대체 Egg를 리턴하는 create() 메소드는 어떻게 쓸 수 있게 된 걸까요?

자, 다음 코드를 보시죠. 여기 닭 한 마리가 있습니다. 커서 반반 치킨이 되고 싶은 달걀을 보살피고 있네요.

Chicken.takesCare(new Egg() {

    @Override

    public String wannaBe() {

        return "양념반 후라이드반";

    }

});

이 코드는 줄여서 이렇게 쓸 수도 있습니다.

Chicken.takesCare(() -> "양념반 후라이드반");

어떻게 이렇게 Egg라는 타입을 쓰지도 않고 깔끔하게 줄일 수 있는지 궁금하신가요?

이번에는 달걀을 분류해 봅시다.

List<EggWithColorAndSize> eggs = new ArrayList<>();

eggs.add(EggWithColorAndSize.of().size(3).color("yellow"));

eggs.add(EggWithColorAndSize.of().size(4).color("white"));

eggs.add(EggWithColorAndSize.of().size(3).color("white"));

eggs.add(EggWithColorAndSize.of().size(5).color("yellow"));

eggs.add(EggWithColorAndSize.of().size(3).color("brown"));

eggs.add(EggWithColorAndSize.of().size(4).color("yellow"));

여기 보이는 달걀들 중에 색이 yellow인 달걀만 골라서 사이즈 별로 정렬한 다음, 달걀의 wannaBe를 출력해 봅시다.
이 강의를 들으신다면 다음과 같이 코드를 작성할 수 있고 이해할 수 있습니다.

eggs.stream().filter(e -> e.getColor().equals("yellow"))

        .sorted(Comparator.comparingInt(EggWithColorAndSize::getSize))

        .map(EggWithColorAndSize::wannaBe)

        .forEach(System.out::println);

별도의 쓰레드로 알을 낳는 작업을 실행하고 알을 낳으면 (콜백으로) 맛있게 먹는 다음과 같은 코드도 이해하고 작성할 수 있습니다.

CompletableFuture<Void> future = CompletableFuture.supplyAsync(() -> {

    System.out.println("꼬기오~ 꼬꼬꼬꼬~ " + Thread.currentThread().getName());

    return EggWithColorAndSize.of().size(5).color("white");

}).thenAccept((egg) -> {

    System.out.println("냠냠냠: " + egg.wannaBe());

});


future.get();

이밖에도 자바 8이 제공하는 Date와 Time API, 애노테이션에 생긴 변화, 메모리 영역의 변화 등 재미있는 내용이 많으니 많은 수강 부탁드립니다.

감사합니다.

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 자바 프로그래밍 기초 학습을 마친 개발자 또는 학생

  • 자바 8의 주요 기능을 학습하고 싶은 개발자 또는 학생

선수 지식,
필요할까요?

  • 자바 프로그래밍 기초

안녕하세요
백기선입니다.

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

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

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

커리큘럼

전체

23개 ∙ (4시간 56분)

수업 자료

가 제공되는 강의입니다.

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

수강평

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