본문 바로가기

프로그래밍 놀이터/Kotlin50

[Kotlin] Kotlin 은 Compile time 이 느리다는데.. 사실일까? [Kotlin] Kotlin 은 Compile time 이 느리다는데.. 사실일까? https://medium.com/keepsafe-engineering/kotlin-vs-java-compilation-speed-e6c174b39b5d -위 글을 쓴 필자는 Java base 로 되어 있는 출시된 앱을 전부 Kotlin 으로 전환하여 자신만의 Compile time 을 측정해보았다. -테스트 환경 및 조건 #1 빌드는 총 10번 연속으로 돌려서 평균값 산출Hardware 는 i7-6000 3.4GHz, 32G DDR4, Samsung 850 Pro SSD, Gradle 2.14.1 빌드시마다 매번 clean build or notGradle daemon 사용 or not코드 변경 유무 -Clean bui.. 2017. 9. 26.
[Kotlin Tutorial] The Kotlin ecosystem [Kotlin Tutorial] The Kotlin ecosystem 참조 : Kotlin in action -비록 Kotlin 의 역사는 오래되지 않았지만, 이미 lib, framework, tool 들로 구성된 ecosystem 이 잘 마련되었다.그리고 그들은 대부분 외부 개발 커뮤니티에서 개발된 것이다. https://kotlin.link/ 여기 가면 많은 정보를 얻을 수 있다. -Kotlin 은 Java 와 함께 사용가능하기 떄문에,lib 검색할 떄 Kotlin lib 으로 한정지을 필요가 없다. 당연히 Java lib 을 가져다 써도 된다. 1. Testing -JUnit, TestNG 도 좋지만, 아래 DSL 들은 더 표현력이 풍부하다. KotlinTest https://github.com/k.. 2017. 9. 22.
[Kotlin Tutorial] Documenting Kotlin code [Kotlin Tutorial] Documenting Kotlin code 출처 : Kotlin in action 1. Writing Kotlin documentation comments -Java 의 Javadoc 만들 때와 비슷하다.Kotlin 의 것은 KDoc 이라 부른다. -KDoc 은 /** 로 시작하고 tag 는 마찬가지로 @ 로 시작한다.Javadoc 과의 가장 큰 차이가 있다면 HTML 대신 Markdown 을 사용한다는 것이다./** * Calculates the sum of two numbers, [a] and [b] */fun sum(a: Int, b: Int) = a+b 정의를 참조하려면 [ ] 안에 이름을 넣어주면 된다. cf) Markdown 은 text-to-HTML conve.. 2017. 9. 20.
[Kotlin Tutorial] Building Kotlin projects [Kotlin Tutorial] Building Kotlin projects 참조 : Kotlin in action 1. Building Kotlin code with gradle -Kotlin 을 사용하는데 추천되는 build system 은 gradle 이다.gradle 은 incremental build 를 사용해서 빌드 속도도 빠르게 할 수 있고,gadle daemon 이 있어 build process 도 오래 살아있고, 기타 고급 기술들이 들어가 있다. cf) incremental build 는 빌드된 구성 요소 중 최신 상태인 구성 요소는 다시 빌드하지 않는 것을 이야기한다.즉 빌드된 적 없는 대상이나 만료된 대상만 다시 빌드하는 빌드방식을 incremental build 라 부른다. -Gra.. 2017. 9. 18.
[Kotlin Tutorial] DSL construction - Chap 11. [Kotlin Tutorial] DSL construction - Chap 11. 참조 : Kotlin in action 11.1. From APIs to DSLs -DSL 을 작성하기 전에 생각해봐야 할 것이 있다. 우리의 (Kotlin?) 궁극적 목표는 가독성과 유지보수성을 최대로 늘리는 것.그것은 곧 좋은 API 를 설계하는 것으로 이어진다. 그렇다면 API 가 clean 하다는 것은 무슨 의미일까?1. 사용자가 읽기 좋은 것. 그것은 name 과 concept 을 잘 잡는 것이다.2. 의미없는 syntax 는 빼고, 최소한의 코드로 code 가 읽기 좋은 것. -Kotlin 에서는 clean API 를 위해서 extension function, infix calls, lambda syntax sh.. 2017. 9. 14.
[Kotlin] Linkage Error 버그? [Kotlin] Linkage Error 버그? 현재 Kotlin version 1.1.4-2 를 사용하고 있는데 아래와 같은 버그가 있네요. class MyClass : Activity(){private var mIsResumed = false ...protected fun isResumed = mIsResumed} java.lang.LinkageError: Method boolean MyActivity.isResumed() overrides final method in class Landroid/app/Activity; .... 원인은 Activity class 에서 isResumed 라는 @hide 처리된 isResumed 라는 함수가 있다는 것..Compiler 가 웬만한 에러를 다 잡아준다는 똘.. 2017. 9. 13.
[Kotlin Tutorial] Annotation 과 Reflection #2 [Kotlin Tutorial] Annotation 과 Reflection #2 참조 : Kotlin in action 10.2. Reflection: introspecting Kotlin objects at runtime -Kotlin 에서의 reflection 은 java.lang.reflect package 의 API 들과 kotlin.reflect package 의 API 들을 사용한다.Kotlin 의 reflection 은 Java 에 없는 nullable type 이나 properties 들의 접근을 가능하게 한다. -runtime lib 의 size 를 줄이기 위해, kotlin 의 reflection API 는 kotlin-reflect.jar 라는 별개의 jar 로 pakcage 되어 있.. 2017. 9. 12.
[Kotlin Tutorial] Annotation 과 Reflection #1 - Chap 10. Annotations and reflection [Kotlin Tutorial] Annotation 과 Reflection #1 - Chap 10. Annotations and reflection 참조 : Kotlin in action 10.1. Declaring and applying annotations. 10.1.1. Applying annotations -Annotation 사용법은 Java 와 동일하다. @ 를 prefix 로 하고 annotation name 을 써주면 된다. -@Deprecated 의 경우 Kotlin 은 Java 의 것에서 향상되었다.replaceWith parameter 가 추가되어, 새로운 version 의 API 에 연결될 수 있다.@Deprecated(“Use removeAt(index) instead.”, Rep.. 2017. 9. 7.
[Kotlin Tutorial] Generics - Chap9. Generics [Kotlin Tutorial] Generics - Chap9. Generics 참조 : Kotlin in action 9.1. Generic type parameters -Java 와 기본적으로 generic 사용법은 동일하다. -Type Inference 는 가능하지만 명시적으로 써야 하는 케이스도 있다.val authors = listOf(“Dmitry”, “Svetlana”) // type inference 가능 val readers : MutableList = mutableListOf() // type inference 불가능, 명시적 선언val readers = mutableListOf() -Kotlin 에서는 raw type generic 을 사용할 수 없다. ( Java 로 치자면 그냥 L.. 2017. 9. 5.