안드로이드에서 사용하는 자바와 코틀린

자바
: 안드로이드에서 사용하는 기본 언어이다.
- 운영체제와 통신하고 하드웨어를 직접 사용하는 응용 프로그램이 주로 자바를 사용한다.
<자바의 장점>
1. 객체 지향적이다.
: 코드 재사용에 유리하고, 신뢰성 있는 소프트웨어를 손쉽게 작성할 수 있다.
2. 운영체제에 독립적이다.
: 운영체제나 하드웨어가 아닌 JVM하고만 통신하기 때문에 운영체제와 하드웨어에 관계없이 실행이 가능하다. -> 어디에서나 실행이 가능하다.
<자바의 단점>
1. C+ 또는 파이썬과 같은 다른 언어와 비교할 때 약간 복잡하거나 번거롭다.
2. 사용 중인 장치 또는 장비와 호환되지 않을 수 있으며, 특정 콘텐츠에 액세스하는 것이 불가능하다.
3. 모바일 개발에서 새로운 자바 개선 사항에 액세스하는 것이 쉽지 않다.
4. 다른 프로그래밍 언어에 비해 약간 느리고 많은 시스템 메모리를 차지한다.

코틀린
: 기존에 안드로이드 어플리케이션 개발에 활동되는 자바를 보완하고 대체하기 위해 탄생했다.
-> 기존에 자바 언어로 동작하던 환경에서 코틀린 언어도 전부 호환이 가능하다.
<코틀린의 장점>
1. 문법이 간결하며 사용성이 좋다.
: 기존 언어가 지닌 단점이나 한계를 보완하여 탄생했기 때문에 훨씬 사용성이 좋고, 문법이 간결하여 복잡한 구문 없이 비교적 직관적으로 코드를 작성할 수 있다. 또한, 표현력이 좋아 자바보다 훨씬 빠르게 배울 수 있다.
2. NULL Safe 언어이다.
: 자바로 개발하면서 가장 자주 발생하는 문제인 NPE(NullPointException)인데, 코틀린은 Nullable과 Non-nullable 이라는 개념을 가지고 있어 null이 발생하지 않도록 만들어준다. -> 코틀린으로 개발할 때 NPE와 같은 예외 문제가 발생하지 않는다.
3. 기존 라이브러리와의 상호운용성이 좋다.
: 코틀린은 자바와 100% 호환이 가능하다. -> 한 프로젝트 안에 자바와 코틀린 파일이 함께 들어있더라도 작동에 전혀 문제가 없다.
4. 함수형 프로그래밍을 표방하고 있다.
: 객체지향 프로그래밍은 클래스 내부에 있는 함수에서만 로직을 작성하지만, 함수형 프로그래밍은 이러한 제한 없이 어디에서나 작성 가능하다.
<코틀린의 단점>
1. 속도가 느리다.
: 컴파일 시, 자바로 변환하고 나서 바이트 코드로 변환하기 때문에 컴파일 속도가 상대적으로 느리다.
2. 자바에 비해 학습 상태계가 작은 편이다.
: 자바에 비해 역사가 매우 짧기 때문에 커뮤니티나 오픈 소스를 통해 개발자 개인이 지원 받을 수 있는 기회가 적다.
자바 선택 | 코틀린 선택 |
자바와 코틀린 모두 컴파일하면 자바 바이트코드를 생산한다. | |
구글의 공식 안드로이드 개발 언어는 자바와 코틀린 모두 있다. | |
기존 개발된 솔루션의 유지 보수가 필요할 경우 | 개발 경력이 많지 않거나 새롭게 시작하는 경우 |
광범위한 자바 개발 영역을 다루는 경우 | 안드로이드 개발에 한정하여 개발하는 경우 |
프로젝트 성격상 두 언어를 병행하기 어려운 경우 |