기타 Swift 와 Kotlin

황제낙엽 2017.07.29 05:42 조회 수 : 77

sitelink1  
sitelink2  
sitelink3  

Swift

스위프트는 iOS와 OS X 운영체제에 최적화된 프로그래밍 언어다. 과거 iOS나 OS X 앱을 개발하기 위해선 ‘오브젝티브 C’라는 언어를 이용해야 했다. 
기존 C언어에 ‘오브젝티브(Objective, 객체지향)’의 성격을 섞은 언어였다. 
오브젝티브 C(Objective-C)는 1980년대에 공개된 언어로, 스텝스톤(Stepstone)이라는 소프트웨어 기업 소속 연구원들이 개발했다. 
오브젝티브 C는 스티브 잡스가 애플을 나와 설립했던 또 다른 기업인 넥스트(NeXT)에서 적극적으로 이용하면서 인기가 높아졌다. 
넥스트 소속 개발자들은 오브젝티브 C와 관련된 런타임, 컴파일러, 빌더 등 개발도구를 직접 개발하면서 그 효용성을 높였다. 
그 뒤 넥스트는 애플과 합병됐고, 애플은 맥용 OS를 만들면서 넥스트가 만들었던 오브젝티브 C 기반 개발 환경도 함께 가져갔다. 
시간이 지나면서 애플의 주요 개발도구인 ‘엑스코드(Xcode)’, ‘코코아API’ 등이 오브젝티브 C 기반으로 만들어졌고, 오브젝티브 C는 iOS와 OS X 개발자의 주류 언어로 자리잡았다.

스위프트는 오브젝티브 C에서 C언어의 특성을 줄이고 객체지향 언어의 성격을 강화한 언어다. 
애플은 보도자료를 통해 “오브젝티브 C 언어를 이용할 때 흔히 발생하는 에러를 줄일 수 있도록 설계됐으며 좀 더 안정성을 높일 수 있을 것”이라며 “직관적이고 배우기 쉬운 언어”라고 스위프트를 소개했다.

스위프트는 최근에 나온 언어답게 오브젝티브 C와 C언어의 아쉬운 점을 보완했다. 
예컨대 스위프트는 개발자가 의도한 규범이나 가정을 좀 더 명료하게 표현할 수 있다. 
이를 위해 스위프트에선 자료형을 엄격히 제한하고 있으며, ‘옵셔널(Optionals)’이라는 개념을 통해 ‘nil’을 할당할 수 있는 자료형과 그렇지 못한 자료형을 구분하고 있다.

스위프트는 또한 코드 안에서 다루는 타입의 값이 명확히 드러나는 ‘타입 세이프 언어’를 추구한다. 
그래서 컴파일할 때 타입을 미리 검사해 관련 오류를 최소화했다. 오브젝티브 C에선 쉽게 구현할 수 없었던 튜플(Tuple), 문자열 삽입, 제네릭(Generic), 연산자 함수도 스위프트에선 지원된다. 
애플은 스위프트의 성능이 높다는 점도 꾸준히 강조하고 있으며, 기존 오브젝티브 C 기반 앱보다 스위프트 앱의 성능이 최대 2.6배 높아진다는 결과도 발표했다.

 

출처 :: http://terms.naver.com/entry.nhn?docId=3580556&cid=59088&categoryId=59096

 

 

 

 

Kotlin

JVM에서 동작 가능한 언어
Kotlin은 kotlin-native에서 LLVM toolchain을 통해 네이티브의 환경에서도 돌아갈 수 있지만, 가장 큰 핵심은 JVM에서 동작이 가능하다는 것이다. 
JVM이 동작 가능하다면 어디서든 Kotlin은 돌아갈 수 있다. 왜냐면 JVM이 타겟이라면 Kotlin은 Java와 마찬가지로 Bytecode로 컴파일 하는 것이 가능하기 때문이다. 
이 때문에 Java와 100%의 호환성을 갖고 있으며, 안드로이드같은 모바일 플랫폼 뿐만 아니라 Spring같은 서버사이드에서도 동작 및 활용이 가능하다.

 

Android의 공식 기본 언어
Kotlin은 2017년 5월 17일부터 개최된 Google I/O 2017에서 Android의 공식적인 기본 언어로 합류했다. 
Google은 Oracle과의 소송전에서도 볼 수 있듯이 Android에서의 Java 때문에 골머리를 앓고 있었으며, 최대한 Java를 피하려는 방법을 물색해왔다. 
Go를 도입하려고 준비도 해봤지만, 기존에 Java로 작성된 수많은 API를 다른 언어로 옮기는 것은 새로운 OS를 만드는 것과 같았기 때문에 현실적으로 쉽지 않았다. 
하지만 Kotlin은 JVM에서 동작하기 때문에 기존 Java 코드들과 100% 호환성을 갖고 있으며, Swift처럼 간결한 문법을 갖고 있기 때문에 Java보다 더 나은 진입장벽 덕분에 더 많은 개발자들이 Android 개발에 합류할 수 있다고 판단했다. 
물론 신생 언어이기 때문에 아직 부족한 점은 많지만, Google이 인정할 정도로 Kotlin은 충분히 성숙해졌다고 볼 수 있으며, 앞으로 미래가 밝다고 말할 수 있다.

 

사기업에서 개발하는 오픈된 언어
개인 개발자가 흥미 위주에서 개발하는 언어와는 달리, Kotlin은 JetBrains라는 꽤나 잘 알려진 캐시카우가 빵빵한 중견기업에서 개발하는 언어다. 
때문에 Kotlin이 엄청난 문제를 일으키는 것이 아닌 이상 중간에 사라질 가능성은 꽤나 적다. 
게다가 Kotlin은 Github를 통해 공개되어 있기 때문에 누구나 언어의 발전에 도움(contribute)을 줄 수 있다.

 

Java보다 안전한 타입의 언어

Kotlin 문법의 가장 큰 특징이다. 
Kotlin은 null의 위험성을 코드에서 최대한 줄일 수 있도록 설계됐다. 
Kotlin은 throw NullPointerException()으로 의도적으로 호출하거나 !!연산자를 사용하는 것이 아닌 이상 NullPointerException이 발생하지 않는다. 
물론 100% 안전하다는 것은 아니며, 그렇다고 문법이 Rust처럼 완전히 꽉 막혀있는 것도 아니다. 
충분한 주의를 가지면 Java보단 훨씬 안전하게 코드를 작성하는 것이 가능한 것이다. 
Objective-C++과 Swift의 관계와 거의 비슷하다고 생각하면 된다.

 

출처 :: http://kotlinlang.org

 

번호 제목 글쓴이 날짜 조회 수
38 모바일 디바이스에서 알림을 띄우는 방식 황제낙엽 2023.11.04 1
37 여러대의 맥에서 하나의 앱 개발하기 file 황제낙엽 2022.09.17 0
36 Galaxy Z Fold3 5G Specifications 황제낙엽 2022.03.07 101
35 cell phone rotate (vertical, horizon, portrait, landscape) 황제낙엽 2021.04.14 11
34 피들러(Fiddler)를 이용하여 모바일 네트웍 감시 file 황제낙엽 2020.02.24 732
33 UIWebView, WKWebView 황제낙엽 2019.11.01 84
32 모바일웹 SMS 황제낙엽 2019.09.28 239
31 안드로이드 모바일 브라우저 캐시 지우기 황제낙엽 2019.07.23 87
30 AsyncTask 황제낙엽 2019.03.25 55
29 [모바일 브라우저] Android 기기 원격 디버깅 시작하기 (PC크롬에서 모바일크롬 디버깅) file 황제낙엽 2019.01.14 125
28 TTS 이용하기 (구글, 네이버, KT) file 황제낙엽 2018.11.01 1001
27 음성합성(이하 TTS)관련 사양조사 및 시장조사 file 황제낙엽 2018.11.01 419
26 Canvas & Paint file 황제낙엽 2018.07.24 29
25 Bluetooth Connection을 사용하는 멀티플랫폼 앱 개발기 황제낙엽 2018.06.25 53
24 원격 데스크톱 환경을 위한 터치에 대한 제스쳐 목록 정의 황제낙엽 2018.06.12 239
23 팬(Pan), 스와이프(Swipe), 스크롤(Scroll), 플릭(Flick) file 황제낙엽 2017.09.11 629
» Swift 와 Kotlin 황제낙엽 2017.07.29 77
21 위치정보(GeoLocation)에서 위도와 경도로 두 지점간 거리(distance) 구하는 오라클 Function 황제낙엽 2017.01.25 249
20 [Mysql] 위도 경도를 이용해 특정 거리안에 위치(거리) 구하기 황제낙엽 2017.01.25 357
19 [Android] / 안드로이드 / googlemap distance / 구글맵 두 위치 사이의 거리 구하기 황제낙엽 2017.01.23 97