개발을 하는데 있어서 언어는 언제나 중요한 주제가 된다.
프로그래밍을 해본 사람이라면 누구나 한 번쯤은 언어 선택에 있어서 고민을 한다.
하지만 Kotlin에 대해서 진지하게 왜 사용하는지에 대해 물어보면
이정도에 그쳤다. 딱 그정도였다. "남들이 쓰니까" 이런 식으로 진행하게 되면 시야가 좁아지고 자신만의 개발 정체성이 사라진다.
이 시간을 통해 JAVA 에 대한 이해와 Kotlin으로 사람들이 사용할려는 이유에 대해 알아보자.
다양한 분야에서 활발히 사용되고 있다.
Spring Boot, Android , Hadoop , 게임 , 소형기기 등
특히 , 현재 한국은 JAVA공화국이라고 부를만큼 많은 기업에서 JAVA를 사용중이다.
유지보수 때문이다. 정부 기관에서 전자정부프레임워크를 사용하여 획일화된 언어를 추구하여 예산 절감 및 유지보수 때문에 정부에서 요구 사항위주로 만들어야 하기 때문이다.
[Jdk 1.0]
Java는 1996년 Sun MicroSystems 라는 회사에서 객체지향 프로그래밍으로 만들어 졌는데 원래는 소형기기에 만 사용될 목적으로 개발 되었다.
그리고 원래 JAVA 이름 짓기 전에 초기 이름이 "Oak" 이다
그 당시에 Oak는 주로 미국 , 프랑스 ,독일 ,루마미나 등에서 힘의 상징으로 많이 사용되었기 때문이다.
그당시에 팀원들은 새로운 이름을 짓기위에 자리를 모였는데 그 당시에 최초의 커피 가 "JAVA"라는 인도네시아의섬에서 시작 되었다.
때문에 마켓팅용으로 적합하여 채택했다는 말이 많았다.
즉 , 걸그룹 f(x) 처럼 사람들이 평소에 사용하는 단어로 마켓팅을 위한 일종의 전략 같은거였다.
Java는 사용하기 쉽도록 설계했고 다른 프로그래밍 언어보다 작성, 컴파일, 디버그 및 학습이 쉽습니다. 그리고 모듈식 프로그램과 재사용 가능한 코드를 만들 수 있다.
예전에는 프로그래머가 직접 관리해주는 작업이 필요했기에 메모리가 부족해서 자주 죽는일이 있었다. 이때 Java 는 가비지 컬렉터(GC) 가 직접 메모리를 와서 정리해준다.
모든 운영체제에서 사용이 가능합니다. Java는 JVM에 위에서 작동하기에 한 번 작성하면 어디서든 실행 및 수정이 가능합니다.
JetBrains 회사에서 JVM, Android, JavaScript 및 Native를 대상으로 하는 오픈 소스 정적 유형 프로그래밍 언어 기준으로 탄생했다.
kotlin에는 모든 객체지향구조와 모두 있습니다. 함수형 프로그래밍 방식으로 고차함수 및 함수 유형 람다와 같은 기능에 대한 최고 수준을 지원합니다
코틀린은 멀티 플랫폼을 지향합니다.
밑에 보이는 그림은 AOS , IOS , Desktop, web 등 다양하게 활용할 수 있는 사진이다.
현재도 개발 중이며 팀 100명 이상 및 외부 기여자 250명이 함께 진행중이다.
[ Roman Elizarov Jetbrains 수석 언어 디자이너 ]
기존 Java는 null 참조의 멤버에 접근하면 Null Exception이 발생하여 앱이 죽는 경우가 많습니다.
코틀린의 타입(type) 시스템은 코드에서 NullPointerExeption을 제거하기 위해 Null값이 참조가 안됩니다.
기존 Thread 에서 사용하는 Callback 방식을 CPS 동작을 활용하여 순차적으로 비동기 처리가 가능합니다. 이에 따라 생기는 직관성과 BoilerBplate의 코드의 양산을 줄일 수 있습니다.
호환성이 100% 로 된다는 이야기는 기존에 쓰고 있던 코드를 재활용이 가능한다는 이야기이다. 동시에 재활용을 통해 코틀린으로 마이그레이션이 가능하다는 이야기이며 이러한 kotlin 언어는 안정성이 높아진다는 이야기이다.
유틸성 메소드를 지원한다. 이러한것을 지원하게 되면 코드가 어떠한 구동을 하며 행동을 하는지 본인코드 및 다른 사람이 코드를 볼때 쉽게 읽히게 됩니다.
각각의 Source Code 와Compiler가 ByteCode를 통해 만나고 이를 JVM 를통해 각 운영체제에 맞게 운영된다.
"기존에 Java로 짜면 한 열 줄 정도 나오는 코드들이 Kotlin으로 바꾸면 두세 줄로 압축되는 요소들이 많았다"
"Google 에서 메인 개발 언어를 Kotlin으로 정하고 그쪽으로 전폭적으로 밀려는 상황이 나오니 앞으로 당연히 계속 이 언어를 사용해야겠다"
안드로이드는 최신 자바언어를 사용 못한다. 안드로이드에 JAVA를 만들 때 실제 JAVA가 아니라 Dalvik (JAVA 비슷한) 가 안드로이드에 있고 JAVA API를 그대로 복제한 안드로이드 플랫폼 API 가 있습니다. 근데.. 아주 옛날 JAVA API 만 사용하기 있기 때문에 JAVA의 일부분만 사용이 가능하기 때문에 Syntax Sugar를 사용하지 못한다. 그러므로 생기는 Boilerplate 코드가 많이 생긴다.
대용량 코드를 처리 할 경우 컴파일 속도가 느리다. 컴파일러 부분에 있는
Anotation Processor(전처리기) 부분이 20%가량 느리게 된다.
Unit Text 가 애매하다 . Kotlin을 가지고 작업하면 Java 바이트 코트(Class) 나오는데 수정 못하는 final 형식으로 나오게 된다. Unit Text에서 Mocking 기법을 활용하여 변조해서 사용하합니다
Java 바이트 코드를 변경할 때 final modiifeir가 들어있으면 (변조 불가능) 인데 ByteBuddy(흑마법)라하는 런타임에서 Java 바이트코르를 임의로 변조할 수 있는 기술 못 하는걸 할려할 때 시간이 더들어간다.
실제 돌아가는 코드 대신 임의결과물을 반환
<참고자료>