Skip to Content
Java에서 Kotlin으로
book

Java에서 Kotlin으로

by Duncan McGregor, Nat Pryce
May 2025
Beginner to intermediate
424 pages
7h 7m
Korean
O'Reilly Media, Inc.
Book available
Content preview from Java에서 Kotlin으로

1장. 소개

이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com

프로그래밍 언어의 결

나무처럼 프로그래밍 언어에도 결이 있습니다. 목공과 프로그래밍 모두 결을 따라 작업하면 일이 순조롭게 진행되지만 결을 거슬러 작업하면 일이 더 어려워집니다. 프로그래밍 언어의 결을 거슬러 작업하면 필요 이상의 코드를 작성해야 하고 성능이 저하되며 결함이 발생할 가능성이 높고 편리한 기본값을 무시해야 하며 매 단계마다 도구와 싸워야 합니다.

순리를 거스르는 것은 불확실한 보상과 함께 끊임없는 노력을 수반합니다.

예를 들어 함수형 스타일로 Java 코드를 작성하는 것은 항상 가능했지만, Java 8 이전에는 그렇게 하는 프로그래머가 거의 없었는데, 그만한 이유가 있습니다.

다음은 덧셈 연산자로 목록을 접어 숫자 목록의 합을 계산하는 Kotlin 코드입니다:

val sum = numbers.fold(0, Int::plus)

Java 1.0에서 동일한 작업을 수행하기 위해 요구되었던 것과 비교해 보겠습니다.

시간의 안개 당신을 1995년으로 데려가는 동안 당신을 지나갈 것입니다...

Java 1.0에는 일급 함수가 없으므로 함수를 객체로 구현하고 다양한 유형의 함수에 대한 자체 인터페이스를 정의해야 합니다. 예를 들어 덧셈 함수는 인수가 두 개이므로 인수가 두 개인 함수의 유형을 정의해야 합니다:

public interface Function2 {
    Object apply(Object arg1, Object arg2);
}

그런 다음 Vector 클래스에 필요한 반복과 변형을 숨긴 fold 고차 함수를 작성해야 합니다. (1995년 Java 표준 라이브러리에는 아직 컬렉션 프레임워크가 포함되어 있지 않습니다.)

public class Vectors {
    public static Object fold(Vector l, Object initial, Function2 f) {
        Object result = initial;
        for (int i = 0; i < l.size(); i++) {
            result = f.apply(result, l.get(i));
        }
        return result;
    }

    ... and other operations on vectors
}

fold 함수에 전달하려는 모든 함수에 대해 별도의 클래스를 정의해야 합니다. 덧셈 연산자는 값으로 전달할 수 없으며, 현재 이 언어에는 메서드 참조, Lambda 또는 클로저가 없으며 내부 클래스도 없습니다. Java 1.0에는 제네릭이나 오토박싱도 없으므로 인수를 예상 유형으로 캐스팅하고 참조 유형과 프리미티브 사이에 박싱을 작성해야 합니다:

public class AddIntegers implements Function2 {
    public Object apply(Object arg1, Object arg2) {
        int i1 = ((Integer) arg1).intValue();
        int i2 = ((Integer) arg2).intValue ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

코드 밖 커뮤니케이션

코드 밖 커뮤니케이션

재퀴 리드
실리콘밸리 리더십

실리콘밸리 리더십

김정혜, 마이클 롭

Publisher Resources

ISBN: 9798341656055Supplemental Content