메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

[Java와 Kotlin 비교] 안드로이드 앱 개발, 자바와 코틀린의 차이를 정리했습니다.

한빛미디어

|

2020-05-20

|

by 고돈호

67,998

안녕하세요! 

 

오늘은 IOS와 함께 스마트폰 OS의 대명사가 된 안드로이드(Android)와 2017년 5월에 공식 개발 언어로 채택한 코틀린(Kotlin)에 대하여 간단하게 알아보겠습니다. 

먼저 안드로이드가 동작하는 플랫폼과 리눅스 커널, 현재 사용되고 있는 안드로이드의 API 레벨 그리고 함수형 프로그래밍에 대하여 간단하게 훑어보겠습니다. 

 

 

 

한 줄 정리 

• 안드로이드가 무엇이고 어떻게 발전해왔는지 알아봅니다.

• 코틀린을 자바와 비교하면서 코틀린을 사용하는 이유에 대해 알아봅니다.

 

2020년 4월 statcounter 통계에 따르면 전 세계 스마트폰 사용자 중 71%가 안드로이드를 사용하고 있습니다. 안드로이드란 용어는 많이 들어봤는데 정확히 안드로이드가 뭘까요?

 

우리가 말하는 안드로이드는 안드로이드 플랫폼입니다. 2005년 구글이 안드로이드 사의 운영체제, 안드로이드를 인수해 오픈소스로 공개하여 현재에 이르고 있지요. 

 

2008년 9월, 버전 1.0을 처음 공개하였고, 버전1.5 컵케이크부터 코드네임에 디저트 이름을 붙였습니다. 

이런 식의 코드네임은 2018년 9.0 버전인 파이(Pie)가 마지막이었으며, 2019년 버전 10부터는 디저트 이름을 붙이지 않고 있습니다.

 

• 통계 출처: statcounter https://gs.statcounter.com/os-market-share/mobile/worldwide

 

 

 

> 안드로이드 운영체제와 플랫폼

안드로이드 플랫폼은 리눅스 운영체제 안에서 리눅스와 상호작용하면서 동작합니다. 아래 그림은 안드로이드 플랫폼으로 한 번에 이해하기에는 조금 어렵지만, 전체 아키텍처 위쪽에 안드로이드가 실행되는 런타임 영역(녹색으로 표시)이 존재한다는 점을 알아두시면 되겠습니다. 

 

자세한 내용은 안드로이드 공식 문서에서 확인할 수 있습니다

 

스크린샷 2020-05-20 오전 9.43.41.png

 

안드로이드 플랫폼. 출처: https://developer.android.com/guide/platform

 

 

 

플랫폼 버전과 API 레벨

안드로이드는 사용하는 플랫폼 버전과 별개로 API(Application program interface) 레벨이라는 것이 있습니다. 

 

API는 개발자에게 안드로이드 플랫폼의 기능을 사용할 수 있게 제공하는 도구로 API 레벨에 따라서 새로운 기능이 추가되거나 코드 전체를 변경해야 하는 경우도 있습니다.

 

그러므로 API 레벨의 변경 사항이 있을 때는 기존의 코드를 다시 한번 확인할 필요가 있습니다. 

 

스크린샷 2020-05-20 오전 9.48.45.png

 

 

플랫폼의 최신 버전은 안드로이드 12이지만, 실제 사용자가 사용하는 버전은 훨씬 다양합니다. 

현재 시점의 플랫폼 점유율은 안드로이드 개발자 사이트에서 확인할 수 있습니다. 나중에 개발용 툴인 안드로이드 스튜디오를 설치하면 바로 확인할 수 있습니다. 

안드로이드 개발자 사이트 배포 대시보드 https ://developer.android.com/about/dashboards/index.html?hl=ko


 

안드로이드 개발자 사이트는 최신 버전에 대한 정보뿐만 아니라 사용 현황 등도 확인할 수 있습니다.

2021년 12월 기준으로 API 레벨 21, 롤리팝 버전 이상을 사용하는 디바이스가 전체의 98%입니다.

 

특별한 경우가 아니라면 그 이전 버전은 고려하지 않아도 됩니다. 이 글을 읽는 시점에 따라 점유율이 달라질 수 있습니다.

 

현재 시점의 점유율은 안드로이드 스튜디오에서 새로운 프로젝트를 생성할 때 나타나는 Help me choose 링크를 통해 확인할 수 있습니다.

 

 

안드로이드 점유율.png

 

 

▲ 2021년 12월 기준 데이터이며, 배포율이 0.1% 이하인 버전은 표시되지 않습니다.

》》》 여기서 잠깐

★ 짧은 업데이트 주기에 대처하기

 

안드로이드는 일 년에 한 번 정도, 메이저 버전이 업데이트되고 있습니다(메이저 버전이 바뀐다는 것은 새로운 버전의 안드로이드가 출시된다는 의미입니다). 하지만 새로운 버전으로 사용자가 옮겨 가는 데는 적어도 몇 년의 시간이 소요되기 때문에 항상 최신 버전에 맞춰서 개발할 필요는 없습니다.

 

 

 

코틀린

다시 안드로이드 플랫폼의 구조를 떠올리면 리눅스 커널과 자바 API 프레임워크가 결합된 형태입니다. 

과거에 안드로이드 플랫폼에 대한 설명에는 JVM(정확하게는 Dalvik VM입니다만 독자의 이해를 돕고자 JVM으로 표기합니다)이 항상 따라붙었는데, 자바 가상 머신 위에서 앱이 동작했기 때문입니다. 

 

현재는 이를 대신해 안드로이드 런타임(Android RunTime, ART)을 사용합니다.

따라서 JVM이 없지만 여전히 가상 머신 위에서 동작한다는 점에서 자바의 동작 구조를 차용하고 있습니다.

 

스크린샷 2020-05-20 오전 9.43.41.png

 

기존에는 주로 자바를 앱 개발 언어로 사용했지만 2017년 5월 Google I/O에서 코틀린(Kotlin)을 공식 언어로 채택한 후 코틀린으로 앱을 개발하는 기업이 차츰 늘어나고 있습니다. 

 

구글은 2019년 Google I/O에서 코틀린 퍼스트를 선언하며 모든 문서에서 코틀린 코드를 먼저 노출하는 등 좀 더 강력하게 코틀린을 메인 언어로 지원하고 있습니다.

 

 코틀린으로 안드로이드 앱 개발하기: https://developer.android.com/kotlin

 

코틀린은 젯브레인 사가 만든 프로그래밍 언어입니다. 

여담으로 젯브레인(JetBrains)에서 만든 가장 유명한 프로그램은 인텔리제이라는 개발 툴이고, 이를 기반으로 2장에서 배울 안드로이드 스튜디오가 만들어졌습니다.

 

간략하게 코틀린의 역사를 도표로 살펴보겠습니다.

2021년 12월 시점에서 코틀린 최신 버전은 1.4.20입니다.

 

코틀린 최신 버전.png

 

 

 

 

함수형 프로그래밍 언어 코틀린

코틀린은 함수형 프로그래밍을 표방하고 있습니다. 객체지향 프로그래밍과 비교하자면 객체지향 프로그래밍은 클래스 내부에 있는 함수에서만 로직을 작성하지만, 함수형 프로그래밍은 이런 제한 없이 어디에서나 작성할 수 있습니다.

 

‘Hello World’를 출력하는 짧은 코드로 비교하면 다음과 같습니다.

 

》 자바 코드 - 객체지향 프로그래밍

class Hello {

    public static void main(String args[]) {

       System.out.print("Hello World");

    }

 

}

 

》 코틀린 코드 - 함수형 프로그래밍

System.out.print("Hello World");

 

 

 

안드로이드 개발에 있어서 자바와 코틀린의 차이

앞서 다섯 줄짜리 자바로 이뤄진 코드가 한 줄짜리 코틀린 코드로 바뀐 것을 보고 여러분은 환호했을 겁니다. 하지만 안타깝게도, 안드로이드 앱을 개발할 때는 코틀린도 객체지향 언어처럼 클래스 내에서 로직을 작성해야 합니다. 

 

코틀린이 자바와 100% 호환된다는 이야기를 들어봤을 겁니다. 

이는 분명 장점이지만, 여전히 안드로이드는 자바와 코틀린을 동시에 지원하므로 자바의 형식에 맞춰서 코틀린으로도 개발해야 합니다.

 

조금 불편하지만 그래도 코틀린으로 작성하면 자바로 작성했을 때보다는 코드의 양이 훨씬 적어집니다.

간단하게 버튼을 클릭하면 메시지를 보여주는 코드를 살펴보겠습니다.

 

다음 코드는 각각 자바와 코틀린으로 작성한 예제입니다. 

자바로 작성하기 위해서는 기본 코드 외에 약 네 줄 이상의 코드가 필요하지만 코틀린으로 작성하면 한 줄의 코드로 표현할 수 있습니다.

 

》 자바 코드 - ButtonActivity.java

class ButtonActivity extends Activity {

    protected void onCreate(Bundle savedInstance) {

        Button button = findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {

                System.out.print("Hello World");

            }

        }

    }

}

 

》 코틀린 코드 - ButtonActivity.kt

class ButtonActivity : Activity( ) {

    override fun onCreate(savedInstance: Bundle?) {

        button.setOnClicklistener {

            print("Hello World")

        }

    }

}

 

 

 




<관련도서>

 

Android 입문의 3가지 장벽, 언어+실전+환경 완벽 대응! 

드로이드 스튜디오를 활용한 Kotlin 문법부터 오픈 API를 활용한 도서관 지도 앱 개발까지!

 

최신 버전으로 실습 환경을 제공하는 『이것이 안드로이드다 with 코틀린(3판)』으로 누구보다 빨리 새로운 코틀린 안드로이드를 경험해보세요!

 

이것이 안드로이드다 with 코틀린(3판) 입체표지.png

 

댓글 입력
자료실

최근 본 상품0