안드로이드 - JAVA, Kotlin

728x90

꾸준히 안드로이드 애플리케이션 개발에 사용되었던 JAVA가 지난 2017년 5월 안드로이드 측에서 공식 개발 언어로 채택한 Kotlin으로 대체되고 있는 추세이다.

 

Java는 무엇이고 Kotlin은 무엇일까? 이 게시글에서는 두 언어의 개요와 차이(장단점) 등을 정리한다.

 


 

JAVA

1995년 sun Microsystems가 출시한 객체지향 프로그래밍 언어이자 컴퓨팅 플랫폼이다. 노트북, 데이터 센터, 게임 콘솔, 과학용 슈퍼 컴퓨터, 휴대 전화, 인터넷 등 광범위한 분야에 활용되고 있다.

 

특징

  • C/C++ 스타일 언어와 가상 머신을 구현하는 것을 목표로 개발되어 왔다.
  • 부품에 해당하는 객체를 만들어 하나씩 조립 및 연결해 프로그램을 완성하는 객체지향 프로그래밍 언어다.
  • JRE(자바 실행 환경)이 설치되어 있는 모든 운영체제에서 실행 가능해 이식성이 높다.
  • 자바 런타임이 클래스 파일을 인터프린트 하면서 실행되는 인터프리터 언어이다.
  • 메모리를 자동으로 관리한다.
  • 멀티 스레드 구현이 쉽다.
  • 동적 로딩을 지원한다.
  • TCP/IP라이브러리와 http, htp 프로토콜 등 분산환경을 지원한다.
  • 오픈 소스 라이브러리가 풍부하다. 따라서 유지보수가 쉽고 빠르다.

 


 

KOTLIN

2011년 intellj, pycharm 등 IDE 툴을 만든 Jetbrains에서 출시되었으며, 2017년 안드로이드 공식언어로 채택되었다.

 

자바를 대체할 수 있는 언어로 만들어졌으며, 다음과 같은 프로그래밍이 가능한 멀티 플랫폼이다.

  • Kotlin/JVM - 자바 가상 머신 상에서 동작하는 앱(안드로이드 어플리케이션 등) 개발.
  • Kotlin/JS - 자바스크립트에 의해 데이터베이스부터 서버-클라이언트까지 다루는 풀스택 개발.
  • Kotlin/Native - 안드로이드와 IOS뿐만 아니라 임베디드, IoT 등에 사용되는 앱 개발.

특징

  • 자바가 실행되는 모든 곳에서 사용이 가능하다.
  • 모든 프로그램의 구성요소를 컴파일 시점에 알 수 있고, 컴파일러가 타입을 검증해주는 정적 타입 지정 언어이다.
  • 때문에 자바와 다르게 개발자가 타입을 선언하지 않아도 되며, 프로그램이 오류로 중단될 가능성이 적어진다.
  • 널 값 허용 여부를 컴파일 단계에서 검사하여 널 포인터로 인한 프로그램 중단을 예방한다. (Null 안정성)
  • 다중 스레드 사용에 용의한 함수형 프로그래밍을 지원한다.

 


 

JAVA & KOTLIN

코틀린의 가장 큰 장점은 실용적이면서도 간결한 언어라는 것이다. 두 언어의 가장 큰 차이점은 언어 타입(객체지향 vs 함수형)인데, 코드 예시를 들어보자면 다음과 같다.

 

class jzziw {
	publict static void main(String args[]) {
    	System.out.print("seKUrity");
    }
}
System.out.print("SeKUrity");

위쪽이 자바 코드이고 아래쪽이 코틀린 코드이다. 이런 차이를 보인다면 코틀린을 사용하지 않고서는 손해를 보겠다는 생각이 들지도 모르지만 안드로이드 앱을 개발할 때는 코틀린도 자바와 마찬가지로 클래스 내에서 로직을 작성해야한다고 한다.

 

오랜 시간 안드로이드 애플리케이션 개발에 자바가 사용되었던 만큼, 코틀린이 공식 언어로 채택되었음에도 코틀린으로도 자바의 형식에 맞춰 개발해야한다고 한다. 불편함은 있지만 그럼에도 코틀린으로 작성한 코드의 양이 훨씬 적어 대부분의 회사들이 개발 언어를 자바에서 코틀린으로 바꾸고 있다.

 

 


 

참고 자료

728x90