안드로이드 스튜디오는 사용하는 언어가 2가지 있다.
Kotlin과 JAVA인데, 둘의 차이점을 알아보도록 하자!
우선 둘 다 객체지향언어이다.
객체지향
객체지향 프로그래밍은 프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 이것을 하나씩 조립 및 연결하여 전체 프로그램을 완성하는 것을 말한다.
객체를 만들기 위해 클래스를 작성하고, 객체와 객체를 연결해서 목적에 맞는 프로그램을 만들어 낸다.
객체지향 언어의 특징인 캡슐화, 상속성, 다형성을 완벽하게 지원한다.
객체지향 4가지 특징
- 추상화 : 객체의 공통적인 속성과 가능을 추출하여 정의하는 것
- 역할과 구현의 분리
- 상속성 : 기존의 클래스를 재활용해서 새로운 클래스를 작성하는 자바의 문법요소
- 상위 클래스로부터 확장된 여러 개의 하위 클래스들이 모두 상위 클래스의 속성과 가능을 간편하게 사용할 수 있도록 하는 것
- 재사용, 반복적인 코드 최소화하고 공유하는 속성과 가능에 간편하게 접근
- 다형성 : 어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질
- 역할과 구현을 구분하여 객체들 간의 직접적인 결합을 피하고, 느슨한 관계 설정을 통해 보다 유연하고 변경이 용이한 프로그램 설계를 가능하도록 한다.
- 메서드 오버라이딩, 메서드 오버로딩
- 오버라이딩 ?
- 같은 이름의 메서드가 상황에 따라 다른 역할을 수행하는 것
- 부모 클래스의 메소드의 동작 방법을 변경(재정의)해서 우선적으로 사용하는 것
- 이름, 매개변수 개수, 순서, 데이터 타입, return 타입이 일치해야 한다.
- 오버로딩 ?
- 이름은 같지만 같은 클래스 내부에서 메소드를 확장하기 위한 것
- 이름 일치, 매개변수 개수 or 타입, return 타입이 달라야 한다.
- 오버라이딩 ?
- 캡슐화 : 서로 연관있는 속성과 기능을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는 것
- 외부로부터 클래스에 정의된 속성과 기능들을 보호하고, 필요한 부분만 외부로 노출될 수 있도록 해서 객체 고유의 독립성과 책임 영역을 안전하게 지키고자 하는 목적
- 데이터 보호 : 외부로부터 클래스에 정의된 속성과 기능들을 보호
- 데이터 은닉 : 내부의 동작을 감추고 외부에는 필요한 부분만 노출
- 외부로부터 클래스에 정의된 속성과 기능들을 보호하고, 필요한 부분만 외부로 노출될 수 있도록 해서 객체 고유의 독립성과 책임 영역을 안전하게 지키고자 하는 목적
1. Java?
객체 지향 및 네트워크 중심 언어이다.
1) 높은 이식성
서로 다른 실행환경을 가진 시스템간에 프로그램을 옮겨 실행할 수 있다.
2) 인터프린터 언어
인터프리터 언어인 동시에 컴파일 언어이다.
인터프린터 언어?
- 소스코드를 한 줄 읽어가며 명령을 바로 처리하는 프로그램
- 번역과 실행이 동시에 이루어진다
컴파일 언어?
- 소스코드를 한꺼번에 다른 목적 코드로 번역한 후, 한 번에 실행하는 프로그램
텍스트 소스 컴파일 -> 클래스 파일 -> 자바 런타임이 인터프리트 -
시스템에 무관한 2진 파일을 만듦으로써 자바는 컴파일 언어에 가까운 속도와 시스템 독립성을 얻을 수 있다.
3) 동적 로딩 지원
실행 시에 모든 클래스가 로딩되는 것이 아니라, 필요한 시점에 클래스를 로딩하여 사용할 수 있다.
4) 멀티 스레드 구현이 쉬움
스레드 생성 및 제어와 관련된 라이브러리 API를 제공하므로 운영체제에 상관없이 멀티 스레드를 쉽게 구현할 수 있다.
5) 단점
- 실행을 위해 가상머신을 거쳐야 하므로, 다른 언어에 비해 실행 속도가 느리다.
- 코드의 길이가 긴 편이다.
- 예외 처리가 잘 되어 있지만, 일일이 처리를 지정해 줘야 한다.
2. 왜 Kotlin?
자바와 코틀린은 100% 호환된다.
기존의 코드를 수정하지 않고도 유연하고 간결하게 변경이 가능하다.
1) 간결성, 생산성
코틀린은 자바보다 더 간결하고 직관적이라, 시간이 덜 걸린다.
자바는 반복적인 작업을 요구하는 보일러플레이크 코드의 발생이 많다. (Ex. Getter, Setter/Null Check/예외처리)
-> 코틀린은 data class를 사용해서 개선된다.
2) null 체크
자바에서는 null체크코드가 추가되어야 하지만, 코틀린은 ?를 이용해서 간결하게 null안정성을 부여할 수 있다.
3) 익명 클래스의 번거로움 개선
익명클래스는 클래스선언과 인스턴스 생성이 동시에 이루어지는데, 코드가 복잡하고 가독성이 떨어질 수 있다.
재사용이 어려워서 동일한 동작이 발생할 경우 재사용하기 어렵다.
외부에서는 접근할 수 없어 범위가 제한적이고, 이름이 없어서 디버깅하기 어렵다는 특징이 있다.
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 클릭시 발생할 이벤트 코드 작성
}
});
코틀린은 람다식/고차함수를 지원해서 익명함수를 간단하게 작성할 수 있다.
- 람다식
- 함수형 프로그래밍에서 사용되는 개념
- 익명함수를 간단하게 표현하기 위한 방법
- 함수처럼 동작하고, 코드블록을 하나의 식으로 표현 가능
- 고차함수
- 함수를 매개변수로 전달하거나, 함수를 반환하는 함수
- 고차함수를 사용했을 때 함수를 값으로 다루고, 동적으로 조작 활용이 가
출처 :
https://helloworld-88.tistory.com/3
https://jie0025.tistory.com/528
'Application > Android Studio' 카테고리의 다른 글
[안드로이드 활동 수명 주기] #2. Fragment (0) | 2023.11.22 |
---|---|
[안드로이드 활동 수명 주기] #1. Activiy (1) | 2023.11.22 |
[Xml] 오른쪽 정렬하기 (0) | 2023.07.18 |
댓글