이랜서, AI '씨름' 동작 분석 알고리즘 과기정통부 NIA 우수과제 선정

Dart 언어, 앱 개발 시 Dart 언어를 사용하는 이유부터 특징까지 모두 알려드립니다!

IT 비즈니스의 모든 것

비즈니스 팁, 01 Feb 2024

dart-언어


안드로이드와 iOS 등 멀티 플랫폼 상에서 동작되는 앱을 위해 디자인되었으며 떠오르는 크로스 플랫폼 앱 개발 프레임워크 Flutter에서 사용되는 프로그래밍 언어는 무엇일까요? 네, 바로 ‘Dart(다트)’입니다.


현재 구글 클래스룸, 알리바바, 구글 페이, 네이버 지식인 앱, 데마에칸(일본의 배민, 라인에서 운영) 등의 유수한 앱에서 Flutter에서 Dart를 활용해 앱을 제작하며, 혁신적인 IT 기업들의 사용빈도가 높아지고 있습니다. 이를 대변하듯이 티오베(TIOBE)에서 뽑은 2024년 주목할 언어 중 하나로 뽑혔는데요.


크로스 플랫폼 Flutter를 활용해 안드로이드와 iOS에서 앱 개발을 모두 가능케하는 프로그램 언어 ‘Dart’에는 어떤 특징과 주의사항이 있는지 대한민국 No.1 IT 인재 매칭 플랫폼 이랜서와 함께 알아보겠습니다!




Dart란?


dart-문법


Dart는 2011년 GOTO 컨퍼런스에서 구글이 발표한 자바스크립트를 대체 가능한 크로스 플랫폼 프로그래밍 언어로, 발표 당시에는 주목을 못 받았지만 2017년 Dart를 사용하는 Flutter의 등장으로 수요가 높아지며 사용도가 급성장한 언어입니다. 


기본적으로 C 언어의 문법과 비슷하며 Java, C#, JavaScript와 같은 기능적 스트럭처를 추가한 언어로, 간결하고 강력한 기능을 지원하기에 현대적이라는 평가를 받고 있습니다.




Dart를 사용하는 이유


flutter-dart


Dart 언어의 수요가 높아진 이유는 Flutter에 사용되는 언어가 Dart이기 때문입니다. Flutter가 나오기 이전의 앱 개발에서는 iOS와 Android는 코드가 공유될 수 없었습니다. 때문에 안드로이드와 iOS를 모두 지원하는 앱을 만들기 위해서는 iOS와 Android앱 개발을 각각 진행해야했고 iOS 개발팀과 Android개발팀이 따로 존재해야만 했습니다. 


하나의 앱을 만드는 데에 두개의 개발팀이 존재하다보니 문제가 생기기 시작했습니다. 각 OS 별로 유저들에게 동일한 UI와 UX를 제공하면서 개발한다는 것은 쉬운일도 아닐뿐더러 각각 전문 개발자들이 필요하게 되니 개발 자원이 2배이상 필요하게 되었죠. 


설령 개발을 완료 했다 하더라도 안드로이드, iOS 따로 유지보수(추가 기능, 오류, 앱스토어 관리 등등) 관리를 해야하기 때문에 앱의 유지보수가 쉽지 않다는 단점이 있습니다.


이와 같은 문제점을 해결하기 위해 한 번의 개발로 안드로이드와 iOS 플랫폼의 앱을 만들 수 있는 크로스 플랫폼 앱 프레임워크에 대한 요구가 생기기 시작했고, 이에 부응하듯 구글은 2017년 크로스 플랫폼 앱 개발 프레임워크 Flutter를 출시합니다.


안드로이드와 iOS 두 플랫폼에서 앱 개발이 가능한 프레임워크 Flutter란?

▶️ Flutter, 모바일 앱 / 웹 앱 개발 시 Flutter를 선택하는 이유를 알려드립니다!




Flutter가 Dart를 선택한 이유


json-to-dart


그렇다면 Flutter는 그 많고 많은 언어 중 Dart를 선택했을까요? 그 이유는 Dart의 서로 다른 두 가지 컴파일 방법이 개발 효율을 높여 주기 때문입니다.


JIT와 AOT 컴파일러, 

개발과 실행 속도를 동시에 높여 사용자 만족도를 높이다.


JIT(Just-In-Time) 컴파일러는 프로그램 실행 중에 즉시 컴파일이 가능합니다. 빠른 개발 주기로 개발이 가능하지만 프로그램 실행이 시작될 때 코드를 실행하기 전에 분석 및 컴파일을 수행해야 하기 때문에 실행 속도가 느려진다는 단점이 존재합니다.


반면 AOT(Ahead-of-time) 컴파일러는 프로그램 작성 중(런타임 이전에) 컴파일을 실행합니다. 때문에 개발 생산성이 낮아진다는 단점이 있지만 실행 속도가 더 빠르다는 이점이 존재합니다. 이 두 컴파일러의 특성을 적절히 조합하면 생산성 높은 개발을 진행할 수 있습니다.


개발을 진행할 때에는 JIT 컴파일러를 이용하는 Hot Reloading 기능을 이용하여 생산성과 속도를 높입니다. Hot Reloading은 변경 사항을 즉각적으로 확인할 수 있으며 코드의 변경 및 확인 사이클이 매우 짧아지게 되어 빠른 시도, 빠른 피드백을 가능하게 하는 Dart의 혁신적인 기능인데, 이를 활용하면 개발할 때 빌드 시간을 줄이고 거의 즉시에 가까운 속도로 개발하는 것이 가능합니다. 


JIT 컴파일러를 이용하여 빠르게 개발을 진행하였다면 앱을 빌드 할 때에는 AOT 컴파일러를 사용합니다. AOT 컴파일러로 빌드 한 앱은 더 빠르고 가벼워서 사용자의 앱 사용성을 높여줍니다. 결국 Dart를 활용할 경우 개발과 실행 속도를 높임과 동시에 사용자 만족도까지 함께 높일 수 있습니다.




Dart의 특징


dart-list


강력한 타입 체크

Dart는 정적 타입 언어로 한번 고정된 타입을 끝까지 유지한다는 특징이 있습니다. 이러한 정적 타입 시스템은 코드의 타입이 애매하지 않도록 강제하므로, 런타임에 발견하기 어려울 수 있는 타입 관련 버그를 컴파일 타임에 찾아줍니다. 


소규모 프로젝트나 프로젝트의 초창기 단계에서는 이러한 타입 시스템이 걸리적 거리는 방해물로 생각될 수 있지만 프로젝트의 규모가 커질수록 코드의 유지보수성을 좋게 만들어줍니다.



Null Safety

null safety는 null 에게서 안전한 프로그램 코드를 작성하는 것을 의미합니다. 여기서 주의 해야 할 점은 null safety 라는 용어가 null 을 없애자는 것이 아니라는 것입니다. 프로그램을 개발하다 보면 런타임, 즉 애플리케이션 실행 중 null 참조 에러가 많이 발생합니다. null safety는 이 문제를 코드가 실행되기 전 컴파일러가 해당 버그를 잡아줌으로써 예상치 못한 상황을 대비할 수 있게 해줍니다. 


vscode나 Android Studio등의 ide에서는 dart의 null check 기능을 개발자가 인터페이스로 확인할 수 있도록 연결해놓아서 코드 작성을 하면 즉각적으로 null 규칙을 어기지 않았는지 알려줍니다. 이러한 타입 체크는 즉각적으로 에러 여부를 알 수 있어 빠르게 에러에 대응할 수 있도록 합니다.



싱글 스레드(Single thread)로 개발자의 부담이 적음

Dart 언어는 단일 스레드를 사용하여 다중 스레드 환경에서 개발자가 신경써야하는 복잡한 사항들(thread safe)로부터 해방시켜줍니다. 일반적으로 Java, Kotlin, Objective-C, Swift 등 여러 개의 동시 실행 스레드를 지원하는 대부분의 프로그래밍 언어는 선점 기법을 사용하여 스레드 간에 전환합니다. 


선점 기법이란 우선순위가 높은 스레드가 현재 스레드를 중지시키고 실행 흐름의 주도권을 가져가는 방법입니다. 각 스레드에는 실행시간이 ‘슬라이스’로 할당되고 할당된 시간을 초과하면 다른 스레드로 넘어갑니다.  


그러나 메모리와 같은 스레드 간에 공유되는 리소스를 업데이트할 때 선점이 발생하면 경쟁조건이 발생합니다. 경쟁 조건은 앱 충돌 및 데이터 손실을 포함한 심각한 버그를 유발할 수 있습니다. 


경쟁조건을 해결하는 일반적은 방법은 다른 스레드가 실행되지 않도록 Lock을 걸어 공유 리소스를 보호하는 것입니다. 그러나 Lock은 더 심각한 교착상태를 유발할 수도 있습니다. 


Dart 언어는 이 문제에서 다른 접근방식으로 접근합니다. isolates라고 하는 다트의 스레드는 메모리를 공유하지 않으므로 Lock이 필요하지 않습니다. isolate는 채널을 통해 메시지를 전달하여 통신합니다. 


Dart는 단일 스레드에서 작동하므로 선점을 허용하지 않고 하나의 스레드 안에서 명시적으로 산출합니다. (async / await, Futures or Stream 사용) 이를 통하여 개발자는 실행을 보다 효과적으로 제어할 수 있으며 직관적이고 빠른 개발이 가능해져 생산성과 유지보수성을 높일 수 있게됩니다.




Dart 사용 시 주의해야 할 점


dart-future


웨어러블 디바이스 지원이 미흡하다

Dart가 다양한 플랫폼을 위해 만들어졌다고는 하지만 Google은 아직 Dart의 웨어러블 디바이스 지원에 대해선 소홀한 것이 사실입니다. 그렇지만 Dart로 웨어러블 OS 앱을 만드는 것이 아예 불가능한 이야기는 아닌데요, Flutter 커뮤니티의 개발자들이 만든 wear 패키지를 이용하면 구글의 Wear OS에서 실행되는 앱을 만들 수 있습니다. 


또 구글이 버전 업을 거치면서 리눅스, 윈도우, 맥 OS등 지원되는 플랫폼의 갯수를 점진적으로 늘려 온 만큼 웨어러블 OS에 관해서는 추후 지원 여부에 대해 기대해 볼 수 있을 것 같습니다. 



네이티브 앱 개발 지식이 어느정도 필요하다

비교적 단순한 애플리케이션은 네이티브앱 개발 지식 없이 개발 가능하지만 조금 더 복잡한 기능(딥 링크, 위치정보 사용 등)을 구현하기 위해서는 안드로이드 또는 iOS 앱 빌드 관련 파일을 어느정도 다룰 줄 알아야 합니다. 


예를들어 소셜 로그인의 경우 각 서비스 별로 제공하는 로그인 관련 SDK 파일을 네이티브앱에서 개발하는 것처럼 적절한 경로에 위치시켜야 하며 각종 설정 파일을 별도로 수정해주어야 합니다. 


특히 iOS 앱의 경우 xcode 내의 수많은 설정들에 대한 이해가 필요하며 빌드에 실패한 경우 디버깅도 가능해야합니다. 하지만 이는 Flutter 생태계가 점점 커지고 네이티브 기능에 관한 라이브러리 등이 만들어진다면 차차 보완 가능한 영역으로 보입니다.



Flutter만 쓰임

요즘은 백엔드를 만들거나 웹 프론트엔드를 만들 때에도 JavaScript계열을 많이 사용하는 추세입니다. 하지만 Flutter는 dart를 사용하며 dart언어는 아직까지는 Flutter 이외에 활용될 곳이 마땅치 않은 언어입니다. 


Dart의 이러한 폐쇄성은 진입 시의 학습 비용을 초래합니다. JavaScript 개발자가 Flutter를 사용하려면 새로운 언어인 Dart를 배워야하기 때문이죠. 하지만 Dart는 C 언어, Java, JavaScript의 형태를 본떠 만든 언어입니다. 때문에 기존 언어에 익숙한 개발자라면 Dart를 학습하는 데에 큰 어려움은 없을 것입니다.


지금까지 Dart 언어의 기원과 특성, 주의해야할 점에 대해서 알아보았는데요, 이제 Dart로 실제 해볼 수 있는 프로젝트들을 알아볼까요?




Dart를 사용해서 진행하기 좋은 프로젝트


dart-설치


Flutter로 앱 만들기

Dart 언어에 대한 특징과 장, 단점들을 확인했다면 Flutter로 앱을 만들어보는 것은 어떨까요? Flutter를 활용하여 직접 앱을 개발하다 보면 Dart 언어의 높은 생산성과 깔끔함의 매력을 몸소 체감할 수 있을 것이에요.



Flame으로 게임 만들기

Dart로 게임을 만들 수 있다는 사실 알고 계셨나요? Flutter 팀은 3.0 버전을 릴리즈하면서 Flutter Casual Game Toolkit을 소개했습니다. Flutter Casual Game Toolkit의 핵심인 Flame 엔진은 2d 물리 엔진을 내장하고 있어 Flutter로도 간단한 게임을 만들 수 있게 해주었습니다. 


앱 내에서 간단한 미니게임 기능을 넣고자 할 때 더 이상 유니티를 임베딩 할 필요가 없어졌죠. Dart 언어에 대한 탐구적인 호기심이 출중한 분이시라면 Flame으로 게임을 만들어보는 것은 어떨까요?



안드로이드와 iOS 환경에서 모두 앱 개발이 가능한 

Flutter의 메인 프로그램 언어 ‘Dart’ 잘 보셨나요? 


Flutter 프레임워크에서 Dart를 사용하면, OS에 상관없이 원하는 앱을 마음대로 구사할 수 있습니다. Flutter를 활용한 프로젝트 개발을 고민 중이라면, 대한민국 No.1 IT 인재 매칭 플랫폼에서 Dart 전문가를 매칭 받고 성공적인 프로젝트 개발을 경험해 보세요!




대한민국 No.1 IT 인재 매칭 플랫폼 이랜서란?


dart-switch


이랜서는 현장에 즉시 투입될 수 있는 전문가를 매칭하기 위해 데이터를 활용하여 ‘전문성’ ‘인성(협업 능력)’ 모두 검증된 IT 프리랜서를 매칭하는 ‘IT 인재 매칭 플랫폼’입니다. 


우리나라 프로그램 개발 언어 1위를 차지한 자바(Java) 개발자부터 React, React Native, Node js, NestJS, 웹/앱 관련 개발자와 웹/앱 디자인을 담당하는 UX/UI 디자이너서비스 기획자IT 프리랜서 40만 명이 등록되어 있습니다. 




데이터로 검증된 IT 인재 매칭에 기업들의 프로젝트 재의뢰율 98%

‘전문성’과 ‘인성(협업 능력)’ 모두 검증하여 최적합 IT 프리랜서를 매칭합니다.


dart-assert


이랜서에서 매칭하는 IT 프리랜서는 ‘현장에 바로 투입할 수 있는 IT 전문가’입니다. 이랜서는 기업과 프로젝트의 성향에 맞는 IT 전문가를 매칭하기 위해 약 1.5억 개의 사용자 데이터와 350만 개의 프리랜서 평가 데이터를 활용하여 검증된 IT 프리랜서를 매칭합니다.


기업들은 이랜서의 데이터를 활용한 체계적이고 신뢰있는 매칭 서비스를 통해  IT 전문가 채용시 드는 시간부터 비용까지 모두 절약하여 인재 채용시 겪는 어려움을 해결하고 있습니다.




프로젝트의 성공을 위한 1:1 맞춤 서비스

1:1 매니저 매칭을 통한 맞춤형 서비스로 필요한 인력을 원하는 시기에 매칭합니다.


dart-import


이랜서는 기업들의 요구사항에 가장 적합한 IT 프리랜서를 매칭하기 위해 1:1 매니저 매칭 서비스를 제공합니다. 1:1로 원하는 조건을 모두 확인하여 프로젝트에 가장 적합한 IT 프리랜서를 매칭하기 때문에 IT 전문가 채용시 겪는 어려움을 해결할 수 있습니다.


이러한 서비스 덕분에  대기업부터 중견/중소기업들이 이랜서의 매칭서비스를 활용해 경비와 리소스 낭비를 해결하고 있습니다. SI 업체아웃소싱에 특화된 프리미엄 매칭 서비스. 이랜서를 통해 경험해 보세요.




Flutter를 활용해 안드로이드와 iOS에서 모바일 앱을 개발할

Dart 전문가를 찾으시나요?



대한민국 No.1 IT 인재 매칭 플랫폼 이랜서

-> 회원 가입만 하세요.

-> 24시간 안에 전담 매니저가 연락을 드립니다.

-> 끝입니다. 이게 다냐구요? 네, 이게 다입니다.

-> 급하시다고요? 전화 주세요. 02-545-0042


24년의 노하우 데이터를 바탕으로 검증된 IT 프리랜서를 매칭해 드립니다.




최신 블로그