일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Linux
- MySQL
- Elasticsearch
- kotlin querydsl
- aws
- 티스토리챌린지
- Java
- 정보처리기사실기 기출문제
- APM
- kotlin coroutine
- CKA
- minikube
- CloudWatch
- 코틀린 코루틴의 정석
- 기록으로 실력을 쌓자
- 오블완
- 정보처리기사 실기
- 공부
- 정보처리기사 실기 기출문제
- CKA 기출문제
- kotlin spring
- PETERICA
- Kubernetes
- mysql 튜닝
- Pinpoint
- Spring
- AWS EKS
- kotlin
- AI
- IntelliJ
- Today
- Total
피터의 개발이야기
[kotlin] 코틀린 개요 본문
ㅁ 들어가며
코틀린을 공부하는 중이다. devkuma의 코틀린 내용을 보고 공부한 내용을 정리하였다.
ㅁ 코틀린이란?
코틀린(Kotlin)은 JetBrains에서 개발하는 크로스 플랫폼 범용 프로그래밍 언어로, 자바와 완벽하게 호환되게 설계되었으며 일반적으로 JVM에서 사용되나 자바스크립트, LLVM 그리고 데이터 사이언스 영역에서도 사용 가능하다. 2011년 여름에 발표되어 현재 Apache 2.0 라이센스로 OSS(Open Source Software)로서 개발 환경과 그 소스 코드가 공개되어 무료로 사용할 수 있다.
파일 확장자는 일반적으로 .kt를 사용하며 코틀린 스크립트는 .kts를 사용한다.
코틀린은 2019년 5월 7일 이후로 구글의 안드로이드 앱 개발에서 선호하는 언어가 되었다.
ㅁ 코틀린의 설계 목표
- Java 호환
- 적어도 Java와 동등한 컴파일 속도
- Java보다 높은 안전성 : null 포인터 역참조(dereference)와 같은 흔한 실수에 대한 정적 확인 등
- Java보다 높은 간결성 : 형 변수의 추론, 고차원 함수(클로저), 확장 함수, 믹스 인(mixin)이나 1급 델리게이션 등을 지원
- Scala보다 간단한 방법으로 표현력을 실용적인 수준으로 유지
Null Safe 같은 기능이 제공되어 NullPointerException을 예방할 수 있다. 그 밖에도 여러 실수로 인한 에러 상황을 미연에 막아주는 기능에 제공된다.
ㅁ Kotlin 특징
ㅇ 간결성
package sample
fun main(args: Array<String>) {
val message = "Hello, world!"
println(message)
}
ㄴ간결성을 위해 마지막 세미콜론은 생략한다.
ㄴ함수 정의를 위한 키워드 fun
ㄴ변수 이름 뒤에 변수 타입이 온다.
ㅇ 안전성
ㄴ 코틀린은 null 취급이 엄격하여 null을 할당 할 수 잇는 변수와 없는 변수를 구별한다.
val a: String = "Kotlin" // OK
val b: String = null // NG!!
# ?를 사용하면 null 대입이 가능
val c: String? = null // OK
ㄴ 일반적 형태의 변수에 null를 대입할 수 없다.
ㅇ 호환성
ㄴ 코틀린은 Java 라아브러리를 참조할 수도 있고, 자바 스크립트로 컴파일 가능하다.
import java.nio.file.Files
import java.nio.file.Paths
fun main(args: Array<String>) {
val path = Paths.get("/memo.txt")
val lines = Files.readAllLines(path)
for (line in lines) {
println(line)
}
}
ㄴ Kotlin에서 Java 표준 라이브러리 사용
ㅇ 객체지향성
ㄴ Kotlin은 클래스 기반의 객체지향 언어이다.
// User 클래스 정의
class User {
// 프로퍼티
var id: Long = 0
var name: String = ""
// 메서드 오버라이드
override fun toString(): String {
return "name=" + name
}
}
fun main(args: Array<String>) {
// User 인스턴스 생성
// new 키워드 기입 불필요
val user = User()
user.id = 12345
user.name = "peterica"
println(user.toString()) // => name=peterica
ㄴ User 클래스를 객체화하여 객체를 생성한다.
ㄴ 객체지향적으로 함수형 프로그래밍을 위해서는 클로저가 필요하다.코틀린에서는 람다나 익명 클래스가 외부 범위의 mutable 한 변수를 캡처하고 수정할 수 있습니다.
ㅇ 클로저(Closure)
클로저(Closure)는 outer scope(상위 함수의 영역)의 변수를 접근할 수 있는 함수이다. Closure라는 말은 close over에서 왔다.
// 조작 목록 생성
val list = listOf(3, 5, 2, 7, 4)
println(list) // => [3, 5, 2, 7, 4]
// 각 요소를 2를 곱한 목록를 생성
val twice = list.map { e -> e * 2 }
println(twice) // => [6, 10, 4, 14, 8]
// 짝수의 요소로만 필터링된 목록 생성
val even = list.filter { e -> e % 2 == 0 }
println(even) // => [2, 4]
ㄴ 코틀린에서는 람다나 익명 클래스가 외부 범위의 변하기 쉬운 변수를 캡처하고 수정할 수 있다.
ㅁ 함께 보면 좋은 사이트
ㅇ devkuma - JVM 기반 프로그래밍 언어/ Kotlin / 개요
'Programming > Kotlin' 카테고리의 다른 글
[Kotlin] 변수 선언 (0) | 2024.05.14 |
---|---|
[Kotlin] 기본 자료형과 참조 자료형 (0) | 2024.05.13 |
[Kotlin] 데이터 타입 (0) | 2024.05.12 |
[Kotlin] 기본 문법 (0) | 2024.05.11 |
[Kotlin] 개발 환경 세팅 (0) | 2024.05.09 |