나의 플랫폼/안드로이드

[Android] Java로 새로운 프로젝트를 만드는 것 이제 그만.... (번역)

GsBOB 2018. 2. 12. 18:08




왜 새 Android 프로젝트를 Java로 만들면 안되는가...

원문 : https://medium.com/snapp-mobile/why-starting-a-new-android-project-with-java-is-a-bad-idea-359bffe0bbd6


나는 프로그래밍 언어에 회의적인 사람이다. 나는 새로운 언어로 뛰어 넘지 않았고, 매년 5개 새로운 언어를 배우고자 노력 한다. 새로운 것을 찾으면 꾸준히 해왔다. 20년 동안 내 프로그래밍 경력은 Java만 사용 했다. 나는 지난해 멋진 사람들이 Kotlin으로 넘어 갈 때 나는 하지 않았다. 난 그이유를 설명 했다. 

In Snapp Mobile, 우리는 새로운 프로젝트 전체를 Kotlin으로 바꿨고, 뒤도 돌아보지 않았다. 나는 옳은 결정을 했다고 생각 한다.  Android에서 Kotlin은 미래이고, Java는 과거 이다. 이유를 설명 하겠다.

Android developer는 Kotlin으로 생각을 공유

네가 Android 개발자 커뮤니티를 따른다면 어쨌든 새로운 언어에 흥분을 느꼈을 것이다.  새로운 것을 원하는 것은 얼간이가 아니다. 아니! 매일 우리가 개선할 수 있는 가능성과 방법에 대해 수백만의 사람들이 말하고, 쓰고, 댓글을 달고 있다. 

자바로 일하는 Android 개발자는 급속도로 떨어지고 있다.적어도 2년 그 이상은 걸릴 한 프로젝트를 오늘 시작 했다. 나는 1~2년 안에 Java로 일하는 개발자들을 찾거나 적어도 배우고자 하는 사람을 찾기가 거의 불가능 해질 것이라고 예견 한다. Java 진행하는 것은 그날 부터 Legacy 시스템이 될 것 이다. 유지보수와 Codebase를 향상 하는 것은 시간이 지났을 때 더욱 더 어려워 질 것이다. 머지 않아 Codebase를 Kotlin으로 바꾸게 될 것이다. 그럼 Kotlin으로 시작 해보는 건 어떨까. 

우리는 몇 년전 iOS에서 매우 이와 같은 진행을 보았다. 지금 Swift는 보편화 되었고, 그것은 ObjC Codebase 유지보수로 하고자 하는 누군가를 찾기는 불가능에 가까워 졌다. Projects는 마이그레이션 되어야 하며, 비용도 들 수 있다.

Android 에서 사용하는 Kotlin에 관해서 GDEs(Google Developer Experts) 생각이 무엇인 보라. 대다수의 GDEs는 이미 전체적으로 그들에 일상에서 Kotlin으로 이동 되었다. 대부분의 그들은 Kotlin이 생산 준비 상태이라고 생각 한다. Mark Allison's ones 의 우려가 매우 빠른 속도로 해결되고 있다.

Kotlin 은  FAD(일시적인 유행)가 아니다

구글은 그것이 사라지고 어떤 것을 소개할 때 부끄러워 하지 않는다. Android에서 Kotlin은 그러한 projects 중에 하나가 아니다. 구글로 부터의 Kotlin은 큰 비중이 있다. 구글은 최초 KotlinConf에서 매우 눈에 띄었습니다. 공개 FAQ 세션의 대부분의 질문은 Android에서 Kotlin의 미래에 관한 내용이었다. 우리는 또한 이벤트 에서 구글 Android 도구 팀 프레젠테이션을 보았다.


우리는 구글 고용 정책의 이동을 보고 있다. 많은 새로운 Googlers은 Kotlin을 잘 다루는 사람이거나 옹호자들이다.


구글의 헌신에 또 다른 좋은 예는 최근 release한 KTX for Android 이다. KTX for Android는 Android 개발을 더욱 쉽게 하기 위해 특별하게 Kotlin을 확장한 set 이다.
(정말 쉽게 바뀜... Unbelivable!)

코드 질 향상

우리가 Kotlin 개발의 몇 가지 부분들에서 여전히 최고의 연습과 패턴들을 설립 하는 동안에 그 언어는 개발자들게 매우 좋은 습관들로 강해지고 있다. Null-safety alone 은 대부분 의 projects의 안정성을 향상 시킨다.


또한, 적은 코드, 적은 버그들

적은 코드

적은 코드는 혼자만의 언어를 보완해주는 것이 아니다. 해독성은 항상 길이보다 그 코드의 부족한 부분 보다 더 중요하다. 항상! 하지만,  Kotlin은 둘다 가졌다.  Kotlin은 consice(몇개의 단어로 명백하게 정보를 주는)한 언어로써 참조 되어 지고 있다. 그들은 틀리지 않았다.

물론, 모든 언어 속에서 나쁜 코드를 쓰는 것은 가능하다. Android Kotlin 써클에서의 많은 연습들이 발전하기 위해서는 시간이 걸린다. 하지만 그들은 할 것이다. 우리는 이미구글에 의해 시작하기 좋은  Kotlin Android Style guide를 만들었다. 

적은 코드, 옳은 일을 했을 때, 적은 버그들로 이끈다.  네가 상용구 같이 평범하게 쓰는 코딩을 framework에 시켜서, 무슨 문제든지 코드에 집중해서 만들 수 있다. 적은 코드는 또한 더 빨리 코드를 읽게 만든다. 모든 접근 방법을 활용한 JavaBeans 클래스보다 기본 Kotlin 데이터 클래스를 사용하는 것이 훨씬 더 쉽다.

위험 감소, Java interop(상호 운영)

Kotlin은 영구적으로 Kotlin으로만 Project를 막아 두지 않는다. 차후 진행 환경에서 Kotlin 프로그래밍 언어의 완벽한 Java Interop으로 Java base로 만든 새로운 features 들과 호환이 가능 하다.

Kotlin은 새로운 것이 안다. 준비됨!

Switf가 애플에서 처음 소개 했을 때, 개발자들이 넘어가는데 시간이 걸렸다. 완벽히 새로운 언어를 얻기에는 위험이 따른다.  API들의 변경, 도구 features 부족등. 하지만, 오늘날, ObjC로 시작될 새로운 iOS 프로젝트는 없다.


Kotlin은 새로운 언어가 아니다. 사실상, Kotlin은 애플이 Swift를 발표하기 전에 소개 되었었다. 더 성숙됐고, 테스트 했으며 현 시점에 Swift보다 안정적이다. 지난해 공식 서포터로 소개되기 전에도 여러 해 동안 Android에서  Kotlin으로 만든 앱들이 가능했다.

Kotlin과 Swift는 공통점이 많다.

좋은 생각들은 반복 되고, 복사 되고, 모방되는 경향이 있다. Kotlin과 Swifth 디자이너들은 같이 이슈들로부터 같은 해결책을 도달 하였기에 놀랄 일은 아니다.

Swifth와 Kotlin의 매우 유사함에 따른 이점은 iOS 팀은 Android 코드를 다른 방향으로 읽기 쉬워 진 것이다. 프로그램 로직의 전달은 하찮아 졌다. 매 시간 팀 간 서로 상세한 설명 없이 코드를 교환 할 수 있다.

이미 도구는 있다.

JetBrains는 수년 동안 Kotlin을 빌드해왔다. Google의 Android Studio는 JetBrain's IntelliJ Idear 기반 이다. IO announcement Google과 JetBrains이 Android Studio의 Kotlin 도구 작업을 함께 작업 하고 있다. 이 도구 작업은 과거 몇년 전부터 JetBrains에서 진행 해왔던 업무를 기본으로 한다. Swift가 처음 iOS에서 소개 했던 것과 달리, Kotlin은 그라운드 에서 이미 돌아 다니고 있었다. 우리는 정교한 리팩토링 도구들, 정적 분석 도구들, 포맷팅등을 이미 가지고 있다. (Android Studio에서 이미 Kotlin 환경 설정을 위한 자동 도구들이 있다는 의미 인듯) 우리는 프로젝트를 위해 Stackoverflow 가져온 Java Code의 조각을 복사붙여넣기를 할 수 있고, 그 Code는 Android Studio에서 자동으로 Kotlin 형태로 변경 시킨다. 매우 높은 성공률로, 나 같은 경우...

Kotlin은 급속도로 발전 하고 있다.

JetBrains는 이미 언어 전체적으로 새로운 features을 추가 하는데 활동 적이다. Coroutines 과 같은 새로운 features은 끊임 없이 너의 codebase를 향상하는 새로운 방법들을 제공 하고 있다.

“하지만 나/ 우리 개발자들은 Kotlin을 알지 못한다.”

Java와 함께 갈 논의가  의사 결정 과정에서 가장 주목해야할 부분이라고 생각 한다. 많은 수의 Java 경력자 vs Kotlin 경력자 사이에서 우열은 없다. 무엇보다 Java는 지구상에서 가장 인기 있는 언어이다. 


하지만, Java 개발자는 Kotlin을 매우 쉽게 배운다. 어떤 Android 개발자도 2주 안에 언어를 선택 하고 생산적인 프로젝트 업무할 준비를 할 수 있다. 너는 단지 당신 팀에서 Kotlin 경력자가 한명 필요할 것이고, 나머지는 쉽게 자리에서 물러 날 것이다. 더 숙련된 개발자를 해라. 초기 단계에서 모든 요청들을 끌러 올리려고 검토 할려면. 너의 코드를 보고 개선점을 제안 하는 것 보다 더 배우는 것이 좋은 방법 이다.


모바일 개발자들에게 새로운 것을 배우는 것은 자연스럽다. 우리는 항상 어찌 됐든 끊임 없이 변화 하는 환경에서 산다. Kotlin에 너의 시간을 투자하는 것은 미리에 투자하는 것이다.  그리고 좋은 재료 들이 많이 있다. !

하지만 내 말을 그대로 받아들이지는 마라!

나는 이 글에 대한 것만 쓴 사람은 아니니!



이제 모바일 개발자로 일한지 7년을 넘기고 있네요.

그 동안 Java 개발을 쭉 해왔었죠.


아마, 2년 전 부터 Kotlin을 보게 됐고 작년 부터 Swift를 공부하여 iOS 프로젝트를 진행 했습니다.


Kotlin을 공부하니 Swift가 눈에 잘 들어 오고, Swift까지 보고 python을 보니

또 코드가 눈에 익숙 해지더군요.


새로운 언어에 두려워 말고 부딪혀 보세요.

새로운 세상이 보일 수도 있잖아요.