본문 바로가기
[개발] 이야기/[Flutter] 이야기

flutter Dart언어 1.0부터의 변화과정 : 어떻게 변화했는데 알면 어떻게 변할지 알게 됩니다.

by 헤이나우
반응형

다트언어의 목적은 개발 생산성을 향상시킨다는 목적이 뚜렸한 언어 입니다. 이러한 목적 때문에 다트 언어는 자바와 유사성을 보입니다. 

이글 을 통해서 다트의 발전 방향서과 장단점, 그리고 특징에 관해서 이해할 수 있습니다.

 

 

1. Dart 1.0 

다트 1.0은 2013년에 소개되었다 GOTO회의에서 처음 소개되고 2년 만이다. 1.0에서 추가된 주요사항은 "dart2js"이다 이는 다트 언어로 프로그래밍된 코드를 Javascript로 변경해 주는 도구이다. 다트 1.0이 출시되는 시점에 대다수의 브라우저들은 다트언어를 지원하지 않았기 때문에 다트로된 프로그램을 변환하여 브라우저에서 구현하기 위한 도구이다.

 

하지만 해당 시점의 다트는 자바스크립트의 대항마로 평가받지 못했다. 해당 시점에는 이미 자바스크립트가 웹 브라우저 서비스 개발에 광범위하게 사용되었고, 라이브러리, 성능 최적화 등의 풍부한 생태계를 확보하고 있었다. 반면 다트는 개발자들과 IT기업들에게 많은 인기를 얻지 못했다.

 

2. Dart 1.1~1.3

구글은 1.0이후 2개월만에 1.1을 소개했다. 다트 1.1은 자바스크립트에 대항하기 위해 성능을 향상하는 것이 주요 목표였다. 그들의 주장에 따르면 Dart1.1은 1.0대비 25%빠른 성능을 보였다고 한다. 이로써 다트 1.1은 자바스크립트와 거의 동등한 성능을 내도록 변경되었다.

1.3은 Dart VM에서 실행되는 비동기 코드의 성능과 dart:io를 개선했다고 소개했다.HTTP benchmark가 Dart1.2대비 2배이상 증가하였다고 알렸다. 

 

3. Dart 1.4

2014년 5월 릴리즈된 Dart1.4에서는 가시성 도구들이 추가되었다. 일례로 1.4에는 Observatory라는 도구가dart:io에 추가되었다. 이는 실행중인 DVM 내부를 분석할 수 있도록 실시간으로 데이터를 제공해 준다.

4. Dart 1.9 ~ 1.11

2015년 3월에 릴리즈된 다트 1.9.1에서는 비동기 프로그래밍을 공식적으로 지원하였다.

이에따라 async, await, sync, yield, Future등이 추가 되엇다 더불어 열거형 타입도 공식적으로 지원하게 되었다.

이와함께 dart:isolate Library를 이용할수 있게 된다 isolate는 multi threading와 같은 병렬작업을 수행한다.

1.11에는 html와 I/O관련 기능이 다소 수정되었다. 

 

5. dart 1.12

2015년 8월에 Release된 1.12에서는  null인식 연산자가 추가 되었다. 관련 문법으로는 "??, ??=, "등이 있다. 

 

6. Dart 1.21 ~ 1.22

2016년과 2017년에 릴리즈된 버전에서는 다양한 문법이 수정되었다. 예를 들면 선택적매개변수의 기본값 초기화시 =를 허용하게 되었다.

 

7. Dart 1.24

2017년에 릴리즈된 Dart1.24에는 언어와, 라이브러리, 인프라에 대한 광범위한 변경이 있었다. 먼저 눈 여겨볼 사항은 화살표 함수인 "=>"문법을 사용할 수 있게 변경되었다. 또한 다트 Develop Compiler가 추가되어 Pub Build명령어 도구에서 활용할 수 있게 되었다.

 

8. Dart 2.0~2.4

2018년 릴리즈된 2.0ㅇ에서도 많은 변화가 있었다. 우선  int 유형의 size가 무제한 할당이 아닌 64비트 정수로 변경되었다.

그리고 주요문법이 변경되었다. async이후 첫번째 await가 나오기 전까지 동기적으로 실행된다거나, 상수 이름 규칙이 lower Camel-case를 따르도록 변경되었다는 점

그리고 2.0~2.4에서는 많은 라이브러리들이 변경되었다. cli, collection, convert, core, io등 많은 기능이 추가되었다.

 

9. Dart 2.12

2021년 3월에 릴리즈된 Dart2.12는 중대한 변화사항을 포함 한다. 바로 Null-safety이다, Dart는 Null-safety규칙을 통해서 Null Error를 제거한다. 만약 변수에 null이 포함되어 있음을 나타내려면 변수 유형 선언 시 ?를 표시하면 된다.

 

10. Dart 2.15

2021년 12월 릴리즈된 2.15에서는 생성자 분리를 지원하게 되었다. Dart는 다양한 생성자 선언 방식을 제공하고 있다. 다양한 생성자 선언 방식은 객체 지향프로그래밍을 용이하게 도와준다. 다를 객체지향언어를 들과 마찬가지로 Dart의 Class에서는 생성자가 존재하며, 인스턴화를 통해 객체가 생성될때 생성자가 호출된다.

 

11 Dart 2.17

2022년 5월 릴리즈된 Dart2.17에서도 눈여겨볼 문법적 변화가 있다. 열거형 선언에서도 객체처럼 필드와 생성자, 메서드 getter등의 선언이 가능해 졌다. 

더불어 Super initializers를 사용할 수 있게 되었다. 

 

12. Dart 3.0

튜플의 추가, 패턴 매칭, switch의 표현식 (이제 build함수내 widget분기도 할수 있도록 수정되었다.)

봉인 클래스(sealed class)추가 등 문법에서 아주 많은 기능과 라이브러리들이 정리되고 추가되었다 여러 레거시 코드들을 정리를 한거 같다

 

3.0 이후에는 이전처럼 아주큰 단위의 업데이트는 많이 없어 보인다. 꾸준히 업데이트는 하고있으니 안심이 든다. 

 

반응형

댓글