오토박싱 및 언박싱 그리고 JVM내 캐시에 대하여

Autoboxing vs Unboxing 오토박싱(Autoboxing)은 Java 컴파일러가 원시 타입(Primitive types)과 해당 객체 래퍼 클래스 간에 수행하는 자동 변환을 말한다. 예를 들어 int를 Integer로, double을 Double로 변환하는 식이다. 변환이 다른 방향으로 진행되는 경우 이를 언박싱(unboxing)이라고 한다. 다음 간단한 오토박싱 예제를 살펴보자. ‘a’의 타입은 char인데 Character에 대입했다. 이렇게 해도 호환이 되며 이것이 오토박싱이다. 더보기…

안드로이드 스튜디오에서 Java 앱 모듈 만들기

자바 애플리케이션을 개발할 때 이클립스를 많이 사용하는데, 간단한 앱을 만들거나 모듈을 테스트 해보기 위해 안드로이드 스튜디오를 사용할 수도 있다. 다음의 순서를 따라 콘솔에 “Hello World”를 출력하는 실행 가능한 애플리케이션을 만들자 기존 프로젝트를 불러온거나 새로운 안드로이드 스튜디오 프로젝트를 생성한다. 프로젝트 패널 영역에서 우클릭을 한 뒤 New > Module을 선택한다. 모듈 생성 더보기…

D8, R8 그리고 enum 이야기

D8 과 R8 안드로이드에서는 대표적인 세가지 컴파일러가 있다 코틀린 or 자바 컴파일러 D8 R8 우선,  코틀린(또는 자바) 컴파일러는 코틀린(또는 자바) 코드를 자바 프로그래밍 바이트코드로 변환한다.  하지만, 우리는 이 바이트 코드를 안드로이드기기에서 실행할 수 없다. 안드로이드에서는 바이트코드 대신 DEX 코드라고 불리는 Dalvik에서 실행가능한 파일이 필요하다. Dalvik은 본래 안드로이드 런타임이였으나, 현재는 ART라는 더보기…

RxJava, RxAndroid 3.0 출시, 무엇이 변경되었지!?

RxJava 3.0 RxJava란 비동기적인 이벤트 기반의 프로그램을 만들 때 사용하는 라이브러리로써 모든 것을 스트림으로 처리한다. 이번 3.0.0 릴리즈에는 코드 전반적으로 많은 정리와 성능 개선이 이루어졌다고 한다. 어떤 점들이 개선되고 변화되었는지 알아보자. 메이저 버전넘버가 수정됨에 따라 아티팩트 아이디도 변경이 되었다. 그레이들에 RxJava3를 추가하기 위해서는 모듈레벨의 build.gradle에 다음과 같은 내용을 추가해야한다. dependencies 더보기…

JVM, DVM, ART 이해하기

안드로이드를 처음 막 배우기 시작한 꼬꼬마시절 왜 구글이 왜 자바를 선택했고, 자바의 바이트코드가 무엇이며, 왜 폰에서 Dalvik과 ART를 선택하라는 거지??? 궁금했지만 누구하나 시원하게 알려주지 않았던 기억이 있어, 오늘은 안드로이드가 실행되는 환경의 내부를 좀 알아보고자 한다. JVM(Java Virtual Machine) JVM은 자바 바이트 코드를 실행할 수 있는 주체이다. 자바 바이트 코드는 플랫폼에 더보기…

안드로이드에서 Custom Lint 활용하기

Lint란? Android 스튜디오에 있는 Lint라는 코드 스캔 도구를 사용하면 앱을 실행하거나 테스트 사례를 작성하지 않고도 코드의 구조적 문제를 식별하고 수정할 수 있습니다. 도구에서 탐지된 각 문제는 설명 메시지 및 심각도 수준과 함께 보고되므로 개선이 시급한 순서대로 신속히 우선순위를 결정할 수 있습니다. 또한 프로젝트와 관련이 없는 문제를 무시해서 문제의 심각도 수준을 더보기…

객체 지향 프로그래밍과 SOLID 원칙

SOLID란 2000년대 초반 로버트 마틴이 객체 지향 프로그래밍 및 설계에 대한 5가지 원칙을 소개 한 것인데, 유지보수와 확장이 쉬운 소프트웨어를 만들고자 할 때 이 원칙을 적용할 수 있다. 코드의 가독성을 높이고 확장이 쉬운 구조를 만들기 위한 지침이다. SOLID원칙은 5가지 원칙들에서 각 원칙의 두문자를 따와 만든 명칭이다. 각 원칙이 무엇인지 살펴보자. 더보기…

Dagger2를 알아보자 – Subcomponent

Dagger2를 알아보자 – 기본편 Dagger2를 알아보자 – Scope  Dagger2를 알아보자 – Injection의 종류  Dagger2를 알아보자 – Qualifier  Dagger2를 알아보자 – Binding  Dagger2를 알아보자 – Multibinding  Dagger2를 알아보자 – SubComponent (You’re here) Dagger2를 알아보자 – Android Dagger2를 알아보자 – Testing(준비중) Dagger2를 알아보자 – Dynamic Feature에 적용하기 Subcomponent 하위 컴포넌트(Subcomponent)는 상위 컴포넌트(Component)의 그래프를 더보기…

RecyclerView와 PagerSnapHelper로 ViewPager 만들기

ViewPager만들기 ViewPager2와 방식은 비슷하지만, 아직 정식 릴리즈가 나오지 않았습니다. 기존에 RecyclerView가 구현이 되어있다면 PagerSnapHelper만 추가하면 된다. MyAdapter adapter = … recyclerView.setAdapter(adapter); recyclerView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)); // PagerSnapHelper 추가 PagerSnapHelper snapHelper = new PagerSnapHelper(); snapHelper.attachToRecyclerView(recyclerView);   Indicator 추가하기 RecyclerView에는 ItemDecoration을 이용해서 Indicator를 그릴수 있습니다.  저는 LinePagerIndicatorDecoration 참고해서 그려보았습니다. recyclerView.addItemDecoration(new LinePagerIndicatorDecoration()); SnapPagerScrollListener 더보기…

글쓴이 Charlezz,

Dagger2를 알아보자 – Multibinding

Dagger2를 알아보자 – 기본편 Dagger2를 알아보자 – Scope  Dagger2를 알아보자 – Injection의 종류  Dagger2를 알아보자 – Qualifier  Dagger2를 알아보자 – Binding  Dagger2를 알아보자 – Multibinding (You’re here) Dagger2를 알아보자 – SubComponent Dagger2를 알아보자 – Android Dagger2를 알아보자 – Testing(준비중) Dagger2를 알아보자 – Dynamic Feature에 적용하기 Dagger를 사용하면 Multibinding(다중 바인딩)을 사용하여 여러 더보기…