JIT 컴파일(Just In Time Compilation)
JIT 컴파일을 하면 호출 시 컴파일되므로 잠시 성능에 영향을 줄 수는 있지만 한 번 컴파일된 이후로는 AOT와 동일한 속도를 내고, 디스크의 용량을 적게 차지한다.
안드로이드는 상황에 맞춰서 컴파일을 두 번 한다.
바이트코드
작성한 코드를 가상 머신인 안드로이드 런타임에서 이해할 수 있도록 변환한 코드
APK(Adroid Package)
안드로이드 설치 파일의 확장자명으로 사용된다. 특정 앱의 APK 파일이 있으면 스마트폰에 수동으로 해당 앱을 설치할 수도 있다.
AAB(Android App Bundle)
안드로이드가 새롭게 제안하는 APK 파일을 대체하는 빌드 파일 형태이다. 플레이 스토어에 AAB 파일 형태로 앱을 등록하면 사용자가 앱을 다운로드할 때 사용자의 디바이스에 필요한 모듈만 골라서 APK 파일로 다시 생성해준다. 구글은 21년 8월부터 구글에 새로 올라오는 모든 안드로이드 앱은 AAB 형식이어야만 한다고 정책을 바꾸었다.
빌드(Build)
소스 코드를 변환해서 안드로이드에서의 실행 파일인 APK 파일로 만드는 것이다. 빌드는 소스 코드를 기계어로 변환한 후 라이브러리와 연결해서 실제 실행 파일로 만드는 과정을 일컫는 용어
컴파일(Compile)
사람이 읽을 수 있는 형태의 소스 코드를 컴퓨터가 읽을 수 있는 형태의 기계어로 변환해주는 과정이다. 컴퓨터는 기계어만 이해하고 동작하는데, 이 기계어의 구조를 사람이 이해하는 것이 어려워 코틀린, JAVA와 같은 컴퓨터 언어가 생겨난 것이다.
프레임워크
원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 골격, 뼈대를 의미한다. 애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 연동과 같은 기능들을 위해 어느 정도 뼈대(구조)를 제공하며 이러한 뼈대 위에서 사용자는 코드를 작성하여 애플리케이션을 개발한다. 앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임워크가 관리하며, 사용자는 프레임워크가 정해준 방식대로 클래서, 메서드들을 구현하면 된다.
ex) Java 서버 개발에 사용되는 Spring, Python 서버 개발에 사용되는 Django와 Flask
라이브러리
소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임이다. 즉 특정 기능을 모와둔 코드, 함수들의 집합이며 코드 작성 시 활용 가능한 도구들을 의미한다.
프레임워크는 프로그램이 필요한것을 개발자에게 알려줌으로써 제어권을 역전하고, 라이브러리는 개발자가 필요할 때 마다 설치, 혹은 호출함으로써 개발자가 능동적으로 사용하게 된다.
젯팩(Jet Pack)
개발자가 관심 있는 코드에 집중할 수 있도록 권장사항 준수, 상용구 코드 축소, 모든 Android 버전 및 기기에서 일관되게 작동하는 코드 작성을 돕는 라이브러리 모음
스레드(Thread)
어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위
(프로세스보다도 작은 실행 흐름의 최소 단위)