Jack Compiler vs. Retrolambda (Android Studio 2.3) 그리고 Kotlin

mindwing
3 min readMar 5, 2017

--

Android 2.3 의 Build Cache 성능이 좋아진 사실을 은근히 맘에 들어하던중, 아직 기억 저편에서 수면위로 상승하지 못하고 있는 Jack Compiler 가 생각나서 간단한 테스트를 해보기로 했습니다.

기본 예제앱을 만들어서 Jack Compiler 와 Retrolambda 상에서 빌드 및 구동 시간을 테스트해보았는데요.

테스트환경은 Android Studio 2.3 에서 모든 업데이트를 마치고 Basic Activity 를 하나씩 가지는 앱을 만들고, FAB 에 lambda 로 Snackbar 를 띄우도록 수정한 것이고요.

Jack Compiler 와 Retrolambda 각각 빌드와 구동시간을 재어보았습니다.

(구식 i5 노트북에 램 8GB, SSD 장착된 상태에서 테스트했습니다.)

FAB 에 lambda 식만 쓴 것이기 때문에 minSdkVersion 는 17 로 고정해두었습니다.

테스트결과 Jack Compiler 는 빌드에만 9~10초가 걸렸고요.
Retrolambda 는 빌드에만 4~5초가 걸렸습니다.

Retrolambda 에서 Instant Run 으로 구동한 경우에는 예제앱의 크기가 작아서인지 뚜렷하게 인지할 정도로 시간이 줄어들지는 않았네요.

Jack Compiler 가 아직 성능상으로 문제가 있는 것인지 시간차이가 꽤 남을 알 수 있습니다. 앱의 크기가 더 커지면 예상이긴 하지만 차이가 더 뚜렷하게 날 것 같네요.
게다가 아직 Instant Run 을 지원하지 못하는 상황이기도 하고요.

시험삼아 개발중인 Retrolambda 를 쓰는 앱의 테스트용 모듈을 Jack Compiler 로 돌려보니 3분 34초가 걸렸네요.
Retrolambda 로는1분 9초가 걸립니다.

참고로, Jack Compiler 에서도 Build Cache 가 잘 동작하는 것으로 파악했는데, 파일 일부를 수정해서 재빌드, 기동시키면 훨씬 짧은 시간만 소요되는 것은 확인했습니다.

Android Studio 의 다음 버전이 2.4 가 될지 2.5 가 될지 아니면 3.0 으로 뛸 지는 잘 모르겠지만, Jack & Jill Toolchain 의 성능이 좀 더 개선되고 Instant Run 과도 잘 융합하는 것이 현재로써는 제가 가장 바라마지않는 기능개선점이 될 것입니다.

게다가 아직 Android Nougat 의 확산이 더디고(아직 Google Play Store 에 접속하는 단말기준으로 2% 정도밖에 안됩니다.) 그에 비해 Kotlin 1.1 이 무서운 기세로 Android 개발환경을 잠식해들어가고 있다는 점을 생각해본다면, Jack Compiler 의 기능개선은 Google 에게 굉장히 시급한 과제라고도 볼 수 있습니다.

사실 저는 제가 만드는 앱의 거의 모든 코드를 이미 Kotlin 으로 재작성해버렸기 때문에 앞으로 Jack Compiler 를 쓸 일이 거의 없지 않을까 싶지만, Agera 가 Kotlin 과 아직 호환되지 않는다는 점 때문에 조금은 고민을 하고 있는 상황입니다.

그래서, Google 은 얼른 정신차리고 쑥쑥 크고 있는 JetBrains 를 인수해서 Kotlin 을 Android 의 1급 개발언어로 삼길 바라네요.

(기승전코틀린 :)

이 글을 작성한 이후 Android Studio 2.4 에서 Jack 이 아닌 기본 툴체인에서 Java 8 이 지원되기 시작했습니다. 다음 포스팅을 참고하시기 바랍니다.

--

--

mindwing

http://www.fastcampus.co.kr/dev_camp_adp/ >>> Fast campus 에서 Android 프로젝트 CAMP 를 진행하는 강사입니다. Java 는 알지만 Android 는 아직 모르시는 분들을 위해 상용 수준의 앱을 같이 만들어보는 과정입니다.