SlideShare a Scribd company logo
1 of 23
Download to read offline
Kotlin 맛보기
우명인
Kotlin
About
JetBrains
● July 2011
● Better Java
● Migration Java
JVM (자바 호환)
Android, Tomcat, JS, Html5...
OOP & FP
Kotlin
FP in Kotlin
Immutable
Lambda, Higher-Order function
Collection Apis
Lazy Evaluation
FP in Kotlin
Immutable
FP in Kotlin
Immutable
Immutable값을 사용해 sideEffect를 최소화 할 수
있습니다.
value (readOnly)
variable
FP in Kotlin
Lambda, Higher-Order function
FP in Kotlin
CollectionApis
FP in Kotlin
CollectionApis
FP in Kotlin
Lazy evaluation
FP in Kotlin
Lazy evaluation
Lazy and Cache
연산은 최초 한번만
수행
일반 메소드는 연산을 매번
수행
Kotlin
Advantages
Null safe
Data class
Singleton
Extentions
Advantages
NullSafe
Advantages
Data class
?
Advantages
- toString()
- equals() / hashCode()
- copy()
- component()N
data class가 내부적으로 생성해주기 때문에
별도의 구현 없이 사용 할 수 있습니다.
Advantages
Singleton
init {..} 은 instance가 생성 될때 최초에
호출되는 function 입니다.
일반적으로 object는 우리가 알고 있는
singleton을 의미합니다.
instance를 2번 콜 하지만 실제로
instance는 한번만 생성 되었기 때문에
init은 최초에 한번만 생성이 됩니다.
singleton이기 때문에 firstSingleton에서
값을 set한 str을 secondSingleton에서도
사용이 가능합니다.
Advantages
Extenstions
plusString은 String에서 지원하지 않는
메소드 입니다. 하지만 KotlinExtenstions을
이용해 마치 String에 있는 메소드 처럼 사용
할 수 있습니다.
add10 또한 Int가 지원하지 않지만, 마치
Int가 제공하는 메소드 처럼 사용 할 수
있습니다.
이렇게 유틸성 메소드들을 만들어 사용하면
굉장히 편리하지만, Object에 관련이 있는
메소드들만 extenstion 하길 권장합니다.
무분별한 사용은 코드 관리가 어려워 지고,
Object가 애매하거나 모호해 질수 있습니다.
Kotlin
Weakness
Patter Matches
Either
Etc..
Weakness
Pattern Matches
Scala
Kotlin
Weakness
Either
kotlin is not support
scala code
Summary
scala, haskell 등 다른 언어들과 비교하면 아직
지원하지 않거나, 불편한 점도 가지고 있습니다.
하지만 update 시기가 상당히 빠르며, 다른 언어들의
장점 들을 많이 흡수 하고 있습니다. Slack이나
커뮤니티를 통해 사용자들과 많은 커뮤니케이션을
하고 있어, 요구사항이나 버그에 항상 귀를 기울이고
있고, 피드백에 적극적으로 대응하고 있습니다.
Android 같은 경우에는 당장 Java를 대체 할 수도
있습니다. 해외에서는 백엔드나 프론트에서도 관심이
많다고 합니다.
Kotlin은 Java 보다 생산성 측면에 있어 월등히 좋다고
말할 수 있습니다. OOP or FP 를 고민하는건 좀 더 심
각한 문제고, Java 코드를 Kotlin 코드로 적용 하는 것
만으로도 충분히 가치가 있다고 생각됩니다.
(immutable, nullSafe, lambda 등등)
FP에 관심이 있다면 FunFunStudy로!!

More Related Content

What's hot

Concurrent programming 2
Concurrent programming 2Concurrent programming 2
Concurrent programming 2Byeongsu Kang
 
Java9 특징 훑어보기
Java9 특징 훑어보기Java9 특징 훑어보기
Java9 특징 훑어보기duriepark 유현석
 
Lambda 란 무엇인가
Lambda 란 무엇인가Lambda 란 무엇인가
Lambda 란 무엇인가Vong Sik Kong
 
자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법Sungchul Park
 
[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로
[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로
[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로Oracle Korea
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)Dong Chan Shin
 
1. introduction to java8
1. introduction to java81. introduction to java8
1. introduction to java8흥래 김
 

What's hot (7)

Concurrent programming 2
Concurrent programming 2Concurrent programming 2
Concurrent programming 2
 
Java9 특징 훑어보기
Java9 특징 훑어보기Java9 특징 훑어보기
Java9 특징 훑어보기
 
Lambda 란 무엇인가
Lambda 란 무엇인가Lambda 란 무엇인가
Lambda 란 무엇인가
 
자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법자바에서 null을 안전하게 다루는 방법
자바에서 null을 안전하게 다루는 방법
 
[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로
[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로
[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로
 
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
C# / .NET Framework로 미래 밥그릇을 챙겨보자 (Basic)
 
1. introduction to java8
1. introduction to java81. introduction to java8
1. introduction to java8
 

Viewers also liked

레진코믹스가 코틀린으로 간 까닭은?
레진코믹스가 코틀린으로 간 까닭은?레진코믹스가 코틀린으로 간 까닭은?
레진코믹스가 코틀린으로 간 까닭은?Taeho Kim
 
토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.Pptx토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.PptxMyeongin Woo
 
일단 시작하는 코틀린
일단 시작하는 코틀린일단 시작하는 코틀린
일단 시작하는 코틀린Park JoongSoo
 
[JWPA-1]의존성 주입(Dependency injection)
[JWPA-1]의존성 주입(Dependency injection)[JWPA-1]의존성 주입(Dependency injection)
[JWPA-1]의존성 주입(Dependency injection)Young-Ho Cho
 
주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)
주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)
주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)Darion Kim
 
주니어 개발자도 이해 할 수 있는 아름다운 JVM 세상
주니어 개발자도 이해 할 수 있는 아름다운 JVM 세상주니어 개발자도 이해 할 수 있는 아름다운 JVM 세상
주니어 개발자도 이해 할 수 있는 아름다운 JVM 세상Darion Kim
 
Dagger 2.0 을 활용한 의존성 주입
Dagger 2.0 을 활용한 의존성 주입Dagger 2.0 을 활용한 의존성 주입
Dagger 2.0 을 활용한 의존성 주입승용 윤
 

Viewers also liked (8)

레진코믹스가 코틀린으로 간 까닭은?
레진코믹스가 코틀린으로 간 까닭은?레진코믹스가 코틀린으로 간 까닭은?
레진코믹스가 코틀린으로 간 까닭은?
 
토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.Pptx토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.Pptx
 
일단 시작하는 코틀린
일단 시작하는 코틀린일단 시작하는 코틀린
일단 시작하는 코틀린
 
[JWPA-1]의존성 주입(Dependency injection)
[JWPA-1]의존성 주입(Dependency injection)[JWPA-1]의존성 주입(Dependency injection)
[JWPA-1]의존성 주입(Dependency injection)
 
주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)
주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)
주니어 개발자도 이해 할 수 있는 의존성 주입(Dependency Injection)
 
주니어 개발자도 이해 할 수 있는 아름다운 JVM 세상
주니어 개발자도 이해 할 수 있는 아름다운 JVM 세상주니어 개발자도 이해 할 수 있는 아름다운 JVM 세상
주니어 개발자도 이해 할 수 있는 아름다운 JVM 세상
 
MVP 패턴 소개
MVP 패턴 소개MVP 패턴 소개
MVP 패턴 소개
 
Dagger 2.0 을 활용한 의존성 주입
Dagger 2.0 을 활용한 의존성 주입Dagger 2.0 을 활용한 의존성 주입
Dagger 2.0 을 활용한 의존성 주입
 

More from Myeongin Woo

DroidKnight 2018 State machine by Selaed class
DroidKnight 2018 State machine by Selaed classDroidKnight 2018 State machine by Selaed class
DroidKnight 2018 State machine by Selaed classMyeongin Woo
 
Lezhin kotlin jetbrain
Lezhin kotlin jetbrainLezhin kotlin jetbrain
Lezhin kotlin jetbrainMyeongin Woo
 
Kotlin collections
Kotlin collectionsKotlin collections
Kotlin collectionsMyeongin Woo
 

More from Myeongin Woo (8)

Goodbye null
Goodbye nullGoodbye null
Goodbye null
 
Fp basic-kotlin
Fp basic-kotlinFp basic-kotlin
Fp basic-kotlin
 
DroidKnight 2018 State machine by Selaed class
DroidKnight 2018 State machine by Selaed classDroidKnight 2018 State machine by Selaed class
DroidKnight 2018 State machine by Selaed class
 
Lezhin kotlin jetbrain
Lezhin kotlin jetbrainLezhin kotlin jetbrain
Lezhin kotlin jetbrain
 
Kotlin collections
Kotlin collectionsKotlin collections
Kotlin collections
 
Kotlin standard
Kotlin standardKotlin standard
Kotlin standard
 
Kotlin class
Kotlin classKotlin class
Kotlin class
 
Kotlin expression
Kotlin expressionKotlin expression
Kotlin expression
 

Kotlin.md