O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Próximos SlideShares
Kotlin
Kotlin
Carregando em…3
×

Confira estes a seguir

1 de 24 Anúncio

Mais Conteúdo rRelacionado

Semelhante a Kotlin (20)

Mais de Wonjun Hwang (20)

Anúncio

Mais recentes (20)

Kotlin

  1. 1. Kotin Programming Language Hello Kotlin!
  2. 2. Kotlin? Kotlin? 당시 개발 팀은 대부분 러시아 상트페테르부르크에 살고 있었고 그 근처에 있는 섬 이름 Kotlin 에서 유래했습니다. Kotlin은 IntelliJ IDEA의 개발사 JetBrains에서 2011년에 공개한 오픈 소스 프로그래밍 언어입니다. (2022년 12월 기준 1.7.21버전까지 발표)
  3. 3. Kotlin? Kotlin? 2017년 5월 구글이 안드로이드의 공식 언어로 Kotlin을 추가하였습니다. 안드로이드, 스프링 프레임워크, Tomcat, JavaScript, Java EE, HTML5, iOS, 라즈베리 파이 2019년 1월 부터는 구글 내부의 안드로이드 프로젝트에서도 Java 대신 Kotlin을 사용한다. JVM 기반의 언어이며, Java와 유사하지만 더 간결한 문법과 다양한 기능을 추가하였습니다. JVM(Java Virtual Machine), JS(JavaScript), Native 상에서 실행될 수 있습니다.
  4. 4. Kotlin? 사용 가능한 플랫폼 • Kotlin/JVM : JVM (Java Virtual Machine) 상에서 동작하는 앱을 만들 수 있습니다. • Kotlin/JS : 자바스크립트에 의해 브라우저에서 동작하는 앱을 만들 수 있습니다. • Kotlin/Native : LLVM (Low Level Virtual Machine) 기반의 네이티브 컴파일을 지원해서 여러 타깃의 앱을 만들 수 있습니다. 즉, ARM, x86 프로세서 등등 하드웨어 종류에 상관 없이 멀티 플랫폼 상에서 동작하는 앱을 만들 수 있습니다.
  5. 5. Kotlin? Enjoy your stylish business and campus life with BIZCAM Kotlin/Native에서의 타깃 • IOS (arm32, arm64, emulator x86_64) • MacOS (x86_64) • Android (arm32, arm64) • Windows (mingw x86_64) • Linux (x86_64, arm32, MIPS, MIPS little endian) • WebAssembly (wasm32)
  6. 6. Kotlin? Kotlin의 빌드 과정 • *.kt 확장자의 코틀린 코드 파일 작성 • Kotlin 컴파일러인 Kotlinc에서 *.kt 파일을 바이트 코드로 변환 • JVM에서 Kotlinc가 변환 한 바이트 코드를 기계어로 변환
  7. 7. Kotlin? Kotlin 통합 개발 환경
  8. 8. Kotlin? Functional Programming 함수형 프로그래밍을 지원 Concise 간결한 문법 Null Safety NPE를 방지할 수 있는 안전성 Kotlin Kotlin의 특징
  9. 9. Kotlin? 기본적으로 정적 타입 언어 Statically Typed • 컴파일 시 변수의 자료형(Type) 이 결정되어 안전 # Python 코드(동적 타입)의 예 m = 13 // int m = "hello" // str m = 13.0 // float // Kotlin 코드(정적 타입)의 예 var m: Int = 13 m = 15 // OK m = "hello" // Error m = 15.0 // Error • 단, Kotlin/JS 를 쓸 때는 동적 타입 지원을 위해 dynamic 키워드 제공 • 자료형(Type) 을 명시하지 않아도 자료형 추론이 가능 // Kotlin 자료형 추론의 예. 둘 모두 OK var m = 15 var m: Int = 13 var m: dynamic = 13
  10. 10. Kotlin? 코드의 간결성 Concise • 자바처럼 장황하지 않은 깔끔함, 보일러플레이트 코드의 최소화.
  11. 11. Kotlin? Data class Concise • 자바 클래스의 private 멤버 변수에 접근하기 위한 getter, setter 를 Kotlin 에서는 데이터 클래스 사용으로 간결화 할 수 있습니다. • equals() : 내용의 동일성을 판단하며 인스턴스가 아닌 값이 일치하는지 비교한다. return 타입은 boolean입니다. • hashCode() : 주어진 객체를 해싱 알고리즘에 의해 계산한 int 값을 return 한다. 동일한 객체는 동일한 해시코드를 반환합니다. • toString() : 인스턴스의 프로퍼티를 문자열(string)로 출력할 수 있다. 포함된 프로퍼티를 나열해서 보기쉽게 자동구현해줍니다.
  12. 12. Kotlin? NPE를 방지할 수 있는 안전성 Null Safety • 널이 가능한 자료형(Nullable Type)과 불가능한(Non-Null Type) 자료형을 구분한다 var m: String? = null var b: String = “Hello“ b = null // Error // 컴파일 안됨 var name: String? = null var len = name.length // Error: null 가능성이 있는 경우 length에 접근 불가 // 컴파일 가능, 세이프콜(Safe Call) 사용 var name: String? = null var len = name?.length // name이 null이 아닐 경우에만 length에 접근
  13. 13. Kotlin? 함수 구조 Functional Programming • 중괄호 안에 바디부가 한 줄이라면 중괄호와 리턴문을 생략할 수 있습니다. • 더한 값이 Int인 것은 컴파일러가 추론할 수 있기 때문에 반환타입도 생략이 가능합니다.
  14. 14. Kotlin? 함수의 유기적 연결을 통한 프로그래밍 방식 Functional Programming • 함수가 일급 객체 (First-class citizens)로 사용할 수 있습니다. • 다른 함수의 매개변수가 될 수 있다. • 다른 함수의 return값이 될 수 있다. • 변수에 값을 대입할 수 있다. • 고유한 구별이 가능하다.
  15. 15. Kotlin? 람다(Lambda)식을 통해 선언되지 않고도 익명의 함수 기능을 식에 전달할 수 있습니다. Functional Programming
  16. 16. Kotlin? Java와 100% 상호 호환 • 코틀린 컴파일러는 자바 중간코드(ByteCode) 생성 • 이미 존재하는 자바 라이브러리를 그대로 이용 • Java와 Kotlin을 섞어서 써도 됨 [Kotlin] [Java class] [결과]
  17. 17. Kotlin? 비동기 처리와 효과적인 동시성 작업을 위해 코루틴이라는 아주 강력한 기능을 제공합니다. Coroutine • 스레드와 기능적으로 같지만, 스레드에 비교하면 좀더 가볍고 유연하며 한단계 더 진화된 병렬 프로그래밍을 위한 기술입니다. • 하나의 스레드 내에서 여러개의 코루틴이 실행되는 개념 입니다.
  18. 18. Kotlin? Sub Routine은 루틴에 진입하는 지점과 루틴을 빠져나오는 지점이 명확 Coroutine
  19. 19. Kotlin? 그러나 코루틴(Coroutine)은 조금 다르다. Coroutine
  20. 20. Kotlin? Coroutine
  21. 21. Kotlin? Coroutine 1. 협력형 멀티태스킹 2. 동시성 프로그래밍 지원(마치 경량 스레드 같다.) 3. 쉬운 비동기 처리
  22. 22. Kotlin? 전망 • 19년 5월 기준 배포되는 앱의 50%가 코틀린으로 개발되었다. • 카카오 채팅서버가 코틀린으로 마이그레이션되었다. • JS로 컴파일이 가능해서 ReactJS나 NodeJS에서 함께 사용할 수 있다. • 데이터 사이언스에 사용하는 사례도 존재한다. • 다양한 목적으로 사용할 수 있다면 언어 생태계가 성장해서 다양한 라이브러리가 만들질 것이다.
  23. 23. Kotlin? 끝
  24. 24. Kotlin? 자료 출처 • https://namu.wiki/w/Kotlin • https://kotlinlang.org/ • https://jiwondev.tistory.com/258?category=921564#activities • https://juyeop.tistory.com/5 • https://jsonobject.tistory.com/606 • https://wonyong-jang.github.io/kotlin/2021/10/28/Kotlin-coroutine-start.html • https://eocoding.tistory.com/88

×