▩ 목 차 ▩
1. 코틀린의 주요 특성
1-1. 대상 플랫폼
1-2. 정적 타입 지정 언어
1-3. 함수형 프로그래밍과 객체지향 프로그래밍
1-4. 무료 오픈소스
2. 코틀린 응용
2-1. 코틀린 서버 프로그래밍
2-2. 코틀린 안드로이드 프로그래밍
3. 코틀린 철학
3-1. 실용성
3-2. 간결성
3-3. 안전성
3-4. 상호운용성
4. 코틀린 도구 사용
4-1. 코틀린 코드 컴파일
4-2. 인텔리 J 아이디어와 안드로이드 스튜디오의 코틀린 플러그인
4-3. 대화형 셸
4-4. 이클립스 플러그인
4-5. 온라인 놀이터
4-6. 자바-코틀린 변환기
5. 정리
■ 1. 코틀린의 주요 특성 ■
■ 1-1. 대상 플랫폼 : 서버, 안드로이드 등 자바가 실행되는 모든 곳
코틀린의 주목적은 현재 자바가 사용되고 있는 모든 용도에 적합하며서도 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것이다.
[ 자바는 아주 유명하고 다양한 환경에서 사용되고 있다. 이런 환경에 코틀린을 도입하면 더 적은 코드로 더 편하게 프로그래머의 목표를 달성할 수 있을 것이다. ]
코틀린을 활용할 수 있는 가장 일반적인 영역은 다음과 같다.
- 서버상의 코드(특히 웹 애필리케이션의 백엔드)
- 안드로이드 디바이스에서 실행되는 모바일 애플리케이션
하지만 코틀린은 다른 환경에서도 잘 작동한다. 예를 들어, 인텔의 멀티 OS엔진을 사용하면 코틀린을 IOS 디바이스에서 실행 할 수 있으며 데스크탑 애플리케이션을 작성하고 싶다면 코틀린과 토네이도FX 자바FX등을 함께 사용할 수 있다.
또한 자바뿐 아니라 자바스크립트로도 코틀린을 컴파일 할 수 있다. 따라서 코틀린 브라우저나 노드에서 실행 할 수 있다.
코틀린이 정한 목표 영역은 상당히 광범위하다. 코틀린은 어느 한 문제 영역만을 해결하나거나 오늘날 소프트웨어 개발이 처한 어려움 중 일부만을 다루기 위한 언어가 아닌 모든 과업에 있어 폭넓게 생산성을 향상시켜준다.
[ 코틀린은 구체적인 영역의 문제를 해결하거나 특정 프로그래밍 패러다임을 지원하는 여러 라이브러리와 아주 잘 융화된다. ]
■ 1-2. 정적 타입 지정 언어
자바와 마찬가지로 코틀린도 정적 타입 지정 언어다.
[ 정적 타입 지정 언어 : C, C++, Java, C# 동적 타입 지정 언어 : Python, JavaScript, Ruby ]
컴파일 과정
소스코드를 작성하고 빌드를 하게되면 일반적으로 다음과 같은 과정을 통해 실행파일이 만들어진다.
소스코드(Input) -> 전처리기 -> 컴파일러 -> 어셈블러 -> 링커 -> 실행파일(Output)
전처리기는 소스코드 자체에 대한 수정을 담당한다.
컴파일러는 소스코드를 어셈블리 코드로 번역한다.
어셈블러는 어셈블리 코드를 목적코드로 번역한다.
링커는 생성된 목적코드들을 링킹하여 실행파일을 만든다.
컴파일타임 & 런타임
전체 컴파일 과정과 그 이후 과정 중,
실행파일이 만들어지는 순간까지를 컴파일타임이라 부르고,
실행파일이 실행된 후의 시간대를 런타임이라 부른다.
소스코드(Input) -> 전처리기 -> 컴파일러 -> 어셈블러 -> 링커 -> 실행파일(Output) -> 실행
컴파일타임 런타임
정적타입 지정 언어는 컴파일 시에 변수의 타입이 결정되는 언어를 말한다.
==> 자료형이 컴파일 타임에 결정되기 위해서, 소스코드 작성시 명시적으로 자료형을 지정해주어야 한다.
- 장점 : 타입 에러로 인한 문제를 컴파일 타임에 해결할 수 있기 때문에 안정성이 높다. (규모가 큰 프로젝트 제작에서 선호됨)
컴파일 시에 미리 타입을 결정하기 때문에 실행속도가 빠르다.
코드에서 다르는 객체가 어떤 타입에 속하는지 알 수 있기 때문에 처음 보는 코드를 다룰 때도 더 쉽다. - 단점 : 컴파일 타임에 타입에 대한 제한으로 코드 작성 시 유연함이 떨어진다.
동적타입 지정 언어는 런타임 시 자료형이 결정되는 언어를 의미한다.
==> 자료형이 런타임에 결정되기 때문에, 소스코드 작성 시 자료형을 명시적으로 지정해줄 필요가 없다.
- 장점 : 소스코드 작성 시 타입에 대한 제한이 없기 때문에 유연성이 높다. ==> 코드 작성이 효율적이다
- 단점 : 타입에 대한 리스크를 런타임(실행 후)에 감당해야하한다. 스펠링에러로 인한 실수도 런타임에 감당해야한다.
코틀린은 동적타입 언어가 아니라 정적타입 언어다. 하지만 코틀린에서는 모든 변수의 타입을 프로그래머가 직접 명시할 필요가 없다.
==> 코틀린 컴파일러가 문맥으로부터 변수 타입을 자동으로 유추할 수 있기 때문에 프로그래머는 타입 선언을 생략해도 된다.
var x = 1
위의 코드를 보면 변수를 정의하면서 정수 값으로 초기화한다. 코틀린은 이 변수의 타입이 Int임을 자동으로 알아낸다.
==> 컴파일러가 문맥을 고려해 변수 타입을 결정하는 이런 기능을 타입 추론이라고 부른다.
즉, 코틀린은 타입 추론을 지원하므로 정적 타입 지정 언어에서 프로그래머가 직접 타입을 선언해야 함에 따라 생기는 불편함이 대부분 사라지고 정적 타입 지정 언어에서 얻는 장점인 성능, 신뢰성을 가질 수 있다.
또한 코틀린의 가장 중요한 특성은 코틀린이 널이 될 수 있는 타입(nullable type)을 지원한다는 점이다.
==> 널이 될 수 있는 타입을 지원함에 따라 컴파일 시점에 널 포인터 예외가 발생할 수 있는지 여부를 검사할 수 있어서 좀 더 프로그램의 신뢰성을 높일 수 있다.
■ 1-3. 함수형 프로그래밍과 객체지향 프로그래밍
함수형 프로그래밍의 개념은 다음과 같다.
- 일급 시민인 함수(first-class) 함수 : 함수(프로그램의 행동을 나타내는 조각)을 일반 값처럼 다룰 수 있다. 함수를 변수에 저장할 수 있고, 함수를 인자로 다른 함수에 전달 할 수 있으며, 함수에 새로운 함수를 만들어서 반환할 수 있다.
- 불변성(immutablilty) : 함수형 프로그래밍에서 일단 만들어지고 나면 내부 상태가 절대로 바뀌지 않는 불변 객체를 사용해 프로그램을 작성한다.
- 부수 효과 없음 : 함수형 프로그래밍에서는 입력이 같으면 항상 같은 출력을 내놓고 다른 객체의 상태를 변겨하지 않으며, 함수 외부나 다른 바깥 환경과 상호작용하지 않는 순수 함수(pure function)을 사용한다.
==> 위에 있는 함수형 스타일로 작성하면 다음과 같은 장점이 있다.
- 간결성 : 함수형 코드는 그에 상응하는 명령형 코드에 비해 더 간결하며 우아하다. 순수 함수를 값처럼 활용할 수 있으면 더 강력한 추상화를 할 수 있고 강력한 추상화를 사용해 코드 중복을 막을 수 있다.
[ 예를들어, 컬렉션에서 어떤 조건을 만족하는 원소를 찾는 작업이 있다고 생각하고, 만족시켜야 하는 조건이 조금 다르다. 이 로직에서 공통부분을 따로 함수로 뽑아내고 서로 다른 세부 사항을 인자로 전달할 수 있다. 이런 인자는 그 자체가 함수다. 하지만 람다식 이라 불리는 무명 함수 구문을 사용하면 간결하게 그런 함수를 표현할 수 있다.
EX) fun findAlice() = findPerson { it.name == "Alice"} fun findBob() = findPerson { it.name == "Bob"} - 다중 스레드에서의 안정성 : 다중 스레드 프로그램에서는 적절한 동기화 없이 같은 데이터를 여러 스레드가 변경하는 경우 가장 많은 문제가 생긴다. 불변 데이터 구조를 사용하여 순수 함수를 그 데이터 구조에 적용한다면 다중 스레드 환경에서 같은 데이터를 여러 스레드가 변경할 수 없다. 따라서 복잡한 동기화를 적용하지 않아도 된다.
- 테스트의 용이성 : 부수 효과가 있는 함수는 그 함수를 실행할 때 필요한 전체 환경을 구성하는 준비코드가 따로 필요하지만, 순수 함수는 그런 준비 코드 없이 독립적으로 테스트 할 수 있다.
함수형 프로그래밍을 위해선 충분한 라이브러리와 문법 지원을 제공해야한다. 코틀린은 처음부터 함수형 프로그래밍을 풍부하게 지원해왔다. 지원의 내용은 다음과 같다.
- 함수 타입을 지원함에 따라 어떤 함수가 다른 함수를 파라미터로 받거나 함수가 새로운 함수를 반환할 수 있다.
- 람다 식을 지원함에 따라 번거로운 준비 코드를 작성하지 않아도 코드 블럭을 쉽게 정의하고 여기저기 전달 할 수 있다.
- 데이터 클래스는 불변적인 값 객체를 간편하게 만들 수 있는 구문을 제공한다.
- 코틀린 표준 라이브러리는 객체와 컬렉션을 함수형 스타일로 다룰 수 있는 API를 제공한다.
■ 1-4. 무료 오픈소스
코틀린 언어와 컴파일러, 라이브러리 및 코틀린과 관련된 모든 도구는 모두 오픈소스이며, 어떤 적에든 무료로 사용할 수 있다.
코틀린은 아파치2 라이선스하에 제공되며, 개발은 깃허브를 통해 이뤄지고 있다.
코틀린 애플리케이션을 개발하고 싶은 경우 인텔리J 아이디어 커뮤니티 에디션, 안드로이드 스튜디오, 이클립스 같은 오픈소스 IDE를 활용할 수 있다.
[ 나는 Inteli J IDEA Community Edion(무료)로 진행할 것이다. ]
■ 2. 코틀린 응용 ■
코틀린은 주로 서버와 안드로이드 개발에서 널리 쓰이고 있다. 이 두 분야를 살펴보고 코틀린이 각 분야에 적합한 언어인 이유를 살펴보자.
■ 2-1. 코틀린 서버 프로그래밍
서버 프로그래밍은 다음을 포함한다. [ 서버 프로그래밍은 상당히 광범위한 개념임 ]
- 브라우저에 HTML 페이지를 돌려주는 웹 애플리케이션
- 모바일 애플리케이션에게 HTTP를 통해 JSON API를 제공하는 백엔드 애플리케이션
- RPC(원격 프로시저 호출)프로토콜을 통해 서로 통신하는 작은 서비스들로 이루어진 마이크로서비스
위에서 말한 애플리케이션 및 서비스를 자바로 개발해 많은 기술과 프레임워크를 엄청나게 만들어 왔는데 이러한 자바와 매끄럽게 상호운용할 수 있다는 점이 코틀린의 큰 장점이다.
==> 코틀린은 새로운 컴포넌트를 작성하거나 기존 서비스 코드를 코틀린으로 이식해야하는 경우 모두 잘 들어 맞는다.
구체적으로, 자바 클래스를 코틀린으로 확장해도 아무 문제가 없으며, 코틀린 클래스 안의 메서드나 필드에 특정 어노테이션을 붙여야 하는 경우에도 문제가 없다. 그러면서도 시스템 코드는 더 간결해지고 더 신뢰성이 높아지며, 더 유지 보수하기 쉬워질 것이다. 동시에, 코틀린을 사용하면 몇 가지 새로운 기술을 활요해 서버 시스템을 개발 할 수 있다.
[ 예를들어, 코틀린의 빌더 패턴을 활용하여 간결한 구문을 사용해 객체로 이뤄진 그래프를 쉽게 구축하면서도 코틀린이 제공하는 완전한 추상화와 코드 재활용 가능, HTML 생성 라이브러리를 이용해 다른 HTML 외부 라이브러리를 대신해 더 간결하면서 타입 검사를 완전히 지원함(즉, HTML 태그로 변환될 함수와 일반 코틀린 언어 기능을 쉽게 조합할 수 있으며, 별도의 템플릿 언어를 사용할 필요가 없으므로 HTML의 새로운 문법을 익힐 필요가 없는 장점때문에 HTML 페이즈를 생성하면서 코틀린 루프 등의 일반적인 코틀린 기능을 활용하여 HTML의 프로그래밍을 할 수 있는 것이다. 또한 SQL 데이터베이스의 구조를 기술할 수 있는 읽기 쉬운 DSL을 제공을 하여 코틀린 코드만을 사용해 완전한 타입 검사를 지원하면서 DB를 사용 가능) ]
■ 2-2. 코틀린 안드로이드 프로그래밍
전형적인 모바일 애플리케이션은 엔터프라이즈 애플리케이션(비즈니스 또는 정부와 같은 회사 환경에서 작동하도록 설계된 대규모 소프트웨어 시스템 플랫폼)보다 더 작고 기존 코드 기반과 새 코드를 통합할 필요도 적다. 또한 모바일 애플리케이션은 보통 더 다양한 디바이스에 대해 서비스의 신뢰성을 보장하면서 더 빠르게 배포할 필요가 있다.
==> 코틀린 언어의 특성과 안드로이드 프레임워크의 특별한 컴파일러 플러그인 지원을 조합하면 안드로이드 애플리케이션 개발의 생산성을 더 높이고 개발의 즐거움을 더 할 수 있다.
[ 예를들어, 컨트롤에 리스너를 추가하거나 레이아웃 요소를 필드와 바인딩하는 등의 흔한 안드로이드 개발 작업을 훨씬 더 적은 코드로 작성할 수 있고, 때로는 전혀 코드를 작성하지 않고 완성할 수 있다. ]
코틀린을 사용하면 얻을 수 있는 이익으로는 애플리케이션의 신뢰성이 더 높아진다는 점이다.
==> 자바에서 NullPointerException 예외가 많이 발생하는데, 코틀린 타입 시스템은 null 값을 정확히 추적하며 널 포인터로 인해 생기는 문제를 줄여준다. [ 코틀린에서는 NullPointerException 예외가 뜨기 전에 컴파일 조차 되지 않는다. ]
또한 호환성과 관련하여 문제를 일으키지 않는다.
==> 코틀린을 이용하여 프로그램을 작성하면 사용자의 어떤 디바이스든지 실행 가능하다.
코틀린을 사용하더라도 성능 측면에서 아무 손해가 없다.
==> 코틀린 컴파일러가 생성한 바이트드는 일반적인 자바 코드와 똑같이 효율적으로 실행된다. 또한 대부분의 코틀린 표준 라이브러리 하수는 인자로 받은 람다 함수를 인라이닝(함수의 내용을 호출을 통해서 실행시키는 것이 아니라, 호출하는 코드 자체가 함수 내용의 코드가 되는 효과가 된다.)한다. 따라서 람다를 사용해도 새로운 객체가 만들어지지 않으므로 객체 증가로 인한 GC가 늘어나서 프로그램이 자주 멈추는 일도 없다.
■ 3. 코틀린 철학 ■
코틀린이 자바와의 상호운용성에 초첨을 맞춘 실용적이고 간결하며 안전한 언어라고 하는데 이러한 실용성, 간결성, 안정성, 상호운용성에 대해 알아보자.
■ 3-1. 실용성
코틀린은 실제 문제를 해결하기 위해 만들어진 실용적인 언어다.
==> 코틀린 설계는 대규모 시스템을 개발해본 다년간의 IT업계 경험을 바탕으로 이루어짐
코틀린은 다른 프로그래밍 언어가 채택한 이미 성공적으로 검증된 해법과 기능에 의존한다.
==> 이로인해, 언어의 복잡도가 줄어들고 이미 알고 있는 기존 개념을 통해 코틀린을 더 쉽게 배울 수 있다.
코틀린은 도구를 강조한다.
==> 좋은 언어만큼이나 편리한 개발 환경도 생선성 향상에 필수적이다. 그렇기에 인텔리 J 아이디어의 개발과 컴파일러의 개발이 거의 동시에 개발에 시작했다.
■ 3-2. 간결성
개발자가 코드를 새로 작성하는 시간보다 기존 코드를 읽는 시간이 더 길다는 사실은 널리 알려져 있다.
만약 큰 프로젝트를 수행하는 팀에 속해 있고, 여기서 버그를 수정해야 한다고 하면, 수정해야만 하는 부분이 알기 위해서 엄청난 양의 코드를 읽어야 할 것이다.
==> 코드는 더 간단하고 간결할수록 내용을 파악하기 쉽다. [ 여기서 간결하다는 말은 그 언어로 작성된 코드를 읽을 때 의도를 쉽게 파악할 수 있는 구문 구조를 제공하고, 그 의도를 달성하는 방법을 이해할 때 방해가 될 수 있는 부가적인 코드가 적다는 뜻이다. ]
코틀린을 만들면서 프로그래머가 작성하는 코드에서 의미가 없는 부분을 줄이고, 언어가 요구하는 구조를 만족시키기 위해 프로그램에 꼭 넣어야 하는 부수적인 요소를 줄이기 우해 많은 노력을 기울였다. [ 다양한 표준 라이브러리 제공 및 람다를 지원하기 때문에 작은 코드 블록을 라이브러리 함수에 쉽게 전달 가능 ]
즉, 코드가 더 간결하면 쓰는 데 시간이 덜 걸린다. 더 중요한 것은 읽는 데도 시간이 덜 걸린다는 점이다. 간결성은 생성성을 향상 시켜주고 개발을 더 빠르게 해준다.
■ 3-3. 안전성
프로그래밍 언어에서 안전성은 프로그램에서 발생할 수 있는 오류 중에서 일부 유형의 오류를 프로그램 설계가 원천적으로 방지해준다는 뜻이다.
오류를 방지하는 데는 대가가 따르기 마련이다.
==> 컴파일러에게 프로그램이 어떻게 작동해야 하는지에 대한 정보를 더 자세히 제공해야만 컴파일러가 프로그램 코드와 프로그램의 의 작동 의도에 대한 정보가 일치하는지를 검증 할 수 있다. 그렇게 되면 더 많은 정보를 붙여야 하므로 생산성이 하락하는 것을 감수 해야한다.
코틀린을 만들면서 자바보다 더 높은 수준의 안전성을 달성하되 전체 비용은 더 적게 지불하고 싶었다.
==> 자바에서는 타입 정보를 직접 지정해줘야 하지만 코틀린에서는 코틀린 컴파일러가 타입을 자동으로 추론해주기 때문에 자바보다 더 적은 비용으로 타입 안전성을 사용할 수 있는 것이다.
[ 코틀린은 정적 타입 지정 언어로 JVM을 사용하여 메모리 안전성을 보장하고, 버퍼 오버플로우를 방지하며, 동적으로 할당한 메모리를 잘못 사용함으로 인해 발생할 수 있는 다양한 문제를 예방할 수 있다. ]
또한 코틀린은 컴파일 시점 검사를 통해 더 오류를 더 많이 방지해준다.
여기서 중요한 내용은 NullPointerException을 없애기 위해 노력한다는 것이다. 즉, 어떤 타입이 널이 될 수 있는 지 여부를 표시하기 위해 ? 한글자로 널값 여부를 정할 수 있는 것이다. 이러한 기능은 애플리케이션이 NullPointerException으로 인해 갑자기 중단되는 경우를 많이 줄여준다. [ 이 널 값 여부를 표시하는데에 추가로 들어가는 비용은 미미하다. ]
또한 ClassCastException을 방지해준다. 이 예외는 어떤 객체를 다른 타입으로 캐스트 하기 전에 타입을 미리 검사하지 않을 때 발생하는 예외이다. 코틀린에서는 타입 검사와 캐스트가 한 연산자에 의해 이뤄지기 때문에 ClassCastException을 방지해주는 것이다.
■ 3-4. 상호운용성
상호운용성과 관련해 가장 떠오르는 말은 "자바 라이브러리를 그대로 사용할 수 있느냐" 일 것이다.
==> 당연히 그렇다. 라이브러리가 어떤 API를 제공하더 간에, 자바 메소드를 호출하거나 자바 클래스를 상속하거나 인터페이스를 구현하거나 자바 에노테이션을 적용하던 간에 모두 가능하다.
자바 코드에서 코틀린 코드를 호출 할 때 아무런 노력 없이 사용 가능하다
==> 자바와 코틀린 코드를 프로젝트에서 원하는 대로 섞어 쓸 수 있는 궁극적인 유연성을 제공한다.
코틀린은 기존 자바 라이브러리를 가능하면 최대한 활용한다.
==> 코틀린은 자체 컬렉션 라이브러리를 제공하지 않고, 자바 컬렉션 라이브러리에 의존한다. 다만 코틀린에서는 컬렉션을 더 쉽게 활용 할 수 있게 몇 가지 기능을 더할 뿐이다.
상호운용성 덕분에 생기는 동작들은 다음과 같다.
- 자바와 코틀린 소스 파일을 자유롭게 내비게이션 할 수 있다.
- 여러 언어로 이뤄진 프로젝트를 디버깅하고 서로 다른 언어로 작성된 코드를 언어와 관계없이 한 단계씩 실행 할 수 있다.
- 자바 메서드를 리팩토링해도 그 메서드와 관련 있는 코틀린 코드까지 제대로 변경된다. 역으로 코틀린 메서드를 리팩토링해도 자바 코드까지 모두 자동으로 변경된다.
■ 4. 코틀린 도구 사용 ■
자바와 마찬가지로 코틀린도 컴파일 언어다. 따라서 코틀린 코드를 실행하기 전에 먼저 코드를 컴파일 해야만 한다.
컴파일 과정이 어떻게 이뤄지며 그 과정에서 어떤 도구가 쓰이는 지 자세히 살펴보자.
■ 4-1. 코틀린 코드 컴파일
코틀린 소스코드를 저장할 때는 보통 .kt라는 확장자를 파일에 붙인다.
코틀린 컴파일러는 자바 컴파일러가 자바 소스코드를 컴파일 할때와 마찬가지로 코틀린 소스코드를 분석해서 .class 파일을 만들어낸다.
만들어진 .class 파일은 개발중인 애플리케이션의 유형에 맞는 패키징 과정을 거쳐 실행될 수 있다.
코틀린 컴파일러로 컴파일한 코드는 코틀린 런타임 라이브러리에 의존한다.
코틀린 런타임 라이브러리에는 코틀린 자체 표준 라이브러리 클래스와 코틀린에서 자바 API의 기능을 확장한 내용이 들어있다.
코틀린으로 컴파일한 애플리케이션을 배포할때는 런타임 라이브러리도 함께 배포해야 한다.
실제로 개발을 진행한다면 프로젝트를 컴파일 하기 위해 Maven, Gradle, Ant등의 빌드 시스템을 사용할 것이다. 이런 빌드 시스템은 모두 코틀린과 자바가 코드베이스에 함께 들어이는 혼합 언어 프로젝트를 지원할 수 있다. [ 메이븐과 그레이들은 애플리케이션을 패키지 할 때 알아서 코틀린 런타임을 포함시켜준다. ]
■ 4-2. 인텔리 J 아이디어와 안드로이드 스튜디오의 코틀린 플러그인
인텔리J 아이디어의 코틀린 플러그인은 코틀린 언어와 함께 개발돼 왔으며, 코틀린을 사용할 수 있는 개발 환경 중에서 가장 다양한 기능을 제공한다.
안드로이드 스튜디오를 사용하려면 플러그인 관리자를 통해 코틀린 플러그인을 설치해야한다.
■ 4-3. 대화형 셸
대화형 셸을 REPL(입력을 받아 값을 계산한 다음 겨로가 값을 출력하는 루프라는 뜻의 read-eval-print-loop의 약자)라고도 부른다.
REPL에서 코틀린 코드를 한 줄 입력하면 즉시 그 코드를 실행한 결과를 볼 수 있다.
REPL을 시작하려면 kotlinc 명령을 아무 인자 없이 실행하거나 인텔리J 아이디어 플러그인의 메뉴(툴>코틀린>코틀린REPL)를 사용하면 된다.
■ 4-4. 이클립스 플러그인
이클립스 IDE에서 코틀린을 사용할 수 있다.
이클립스 플러그인은 코드 완성이나 소스코드 내비게이션 등의 필수 기능을 제공한다.
이클립스 마켓 플레이스에서 코틀린 플러그인을 찾을 수 있다.
■ 4-5. 온라인 놀이터
프로그램을 설치하거나 설정할 필요없이 코틀린을 써볼 수 있는 아주 쉬운 방법이다.
http://try.kotl.in/ 에는 웹상에서 코틀린 코드를 작성하고 컴파일한 다음 실행 할 수 있다.
■ 4-6. 자바-코틀린 변환기
자바에 대해 알고 있는 지식을 바탕으로 코틸른을 더 빠르게 배워서 써먹을 수 있게 지름길을 마련해뒀다.
이 도구는 자동으로 자브를 코틀린으로 변환한다.
코틀린을 처음 배웠는데 쩡황학 코틀린 문법이 기억나지 않는 경우 이 변환기를 유용하게 써먹을 수 있다.
사용 방법은 작성하고 싶은 코드를 자바로 작성해 복사한 후 코틀린 파일에 복사한 코드를 붙여 넣으면 변환기가 자동으로 같은 뜻의 코틀린 코드를 제안 한다.
기존 자바 클래스를 상당 부분 코틀린으로 변경해야 한다면 변환기를 사용하면 도움이 된다.
인텔리J 아이디어의 경우에는 코드(Code) >> 자바 파일을 코틀린 파일로 변환(Convert Java File to Kotlin File)을 선택하면 된다.
■ 5. 정리 ■
- 코틀린은 타입 추론을 지원하는 정적 타입 지정 언어다. 따라서 소스코드의 정확성과 성능을 보장하면서도 소스코드를 간결하게 유지할 수 있다.
- 코틀린은 객체지향과 함수형 프로그래밍 스타일을 모두 지원한다. 코틀린에서는 일급 시민 함수를 사용해 수준 높은 추상화가 가능하고, 불변 값 지원을 통해 다중 스레드 어플리케이션 개발과 테스트를 더 쉽게 할 수 있다.
- 코틀린을 서버 애플리케이션 개발에 잘 활용할 수 있다. 코틀린은 기존 자바 프레임워크를 완벽하게 지원하는 한편, HTML 생성기나 영속화(persistence)등의 일반적인 작업을 위한 새로운 도구를 제공한다.
- 코틀린을 안드로이드에도 활용할 수 있다. 코틀린의 런타임 라이브러리는 크기가 작고, 코틀린 컴파일러는 안드로이드 API를 특별히 지원하다. 그리고 코틀린의 다양한 라이브러리는 안드로이드에서 흔히 하는 작업에 사용할 수 있으면서 코틀린과 잘 통합될 수 있는 함수를 제공한다.
- 코틀린은 무료며 오픈소스다. 또한 주요 IDE(인텔리J 아이디어)와 빌드 시스템을 완전히 지원한다.
- 코틀린은 실용적이며 안전하고, 간결함 상호운용성이 좋다. 이는 코틀린을 설계하면서 일반적인 작업에 대해 이미 잘 알려진 해법을 채택하고, NullPointerException과 같이 흔히 발생하는 오류를 방지하며, 읽기 쉽고 간결한 코드를 지원하면서 자바와 아무런 제약 없이 통합될 수 있는 언어를 만드는데 초점을 맞췄다는 뜻이다.
'Kotlin > Kotlin in action' 카테고리의 다른 글
6장 코틀린 타입 시스템 (0) | 2022.10.04 |
---|---|
5장 람다로 프로그래밍 (1) | 2022.09.29 |
4장 클래스, 객체, 인터페이스 (1) | 2022.09.24 |
3장 함수 정의와 호출 (1) | 2022.09.23 |
2장 코틀린 기초 (1) | 2022.09.22 |