Android

    코틀린으로 레이아웃 연결하기 (뷰 바인딩)

    코틀린으로 레이아웃 연결하기 (뷰 바인딩)

    코틀린의 레이아웃 요소에 접근하기 위해서는 findViewById 함수를 통해 접근하거나 익스텐션으로 접근할 수 있다. 하지만 코틀린 익스텐션은 최신 버전의 안드로이드 스튜디오에서는 사용을 권장하지 않는데 그 이유는 아래와 같다. 코틀린에서만 제공하므로 자바에서 사용하지 못한다. 일부 상황에서 뷰를 찾을 수 없는 오류가 발생할 수 있다. 어디서나 뷰를 호출할 수 있기 때문에 참조로 인해 앱이 강제로 종료될 수 있다. 모듈화를 추천하고 있는데 코틀린 익스텐션을 사용할 경우 다른 모듈에서 뷰에 대한 접근이 불가능하다. findViewById는 뷰의 요소에 접근 하기 위해서는 아래와 같이 각각의 요소에 대한 객체를 만들어 주어야 했다. public class MainActivity extends AppComp..

    안드로이드 컴파일 (JVM, DVM)

    안드로이드 컴파일 (JVM, DVM)

    안드로이드는 초창기에 사용된 Dalvik 컴파일 방식과 그 이후에 도입된 ART 컴파일 방식 2가지로 나누어 진다. 안드로이드는 개발 언어가 Java로 채택되면서 JVM이 필요 했었는데, 라이센스 문제와 메모리 효율성등의 문제로 안드로이드는 Dalvik VM(=DVM)을 사용하게 됩니다. 그럼 그 라이센스 문제가 뭔데? Java ME를 사용하기 위해서 Sun 회사에게 라이센스 비용을 지불해야하는 문제가 발생했다. (DVM에서 컴파일 과정 중 .class를 .dex로 변환하는 dx 툴은 Java SE를 사용했기 때문에 Java 언어 사용은 문제되지 않았다.) 그럼 라이센스는 알겠는데.. 메모리 효율성은 뭐죠? JVM은 스택 기반 모델로 많은 메모리를 요구하지만 DVM은 레지스터 기반 모델로 적은 메모리에 ..