2012년 4월 6일 금요일

[팁] Dart란 무엇인가요?

이 포스트는 다음 문서를 참고하여 작성 되었습니다.


Dart: An Introduction
Florian Loitsch, Riviera DEV,  

Dart는 Javascript와 비교 되지만, 새로운 만들어진 언어입니다
새로운 개발 도구를 가지고 있으며,  OpenSource 언어 입니다.


현재의 Javascript는 유연하며, 점진적 개발이 가능합니다.  그리고, 플랫폼에 국한되지 않고, 사용자의 PC에 설치 하지 않고도 쉽게 배포를 할 수 있습니다.
웹 환경의 급속한 발전과 혁신이 일어나며, 좀 더 많은 기능을 요구하는 시대가 다가오고 있습니다. 하지만, Javascript의 성능상 그 모든 것을 만족 하기 부족하다고 생각을 하였습니다.


그래서, Dart 팀은 다음과 같은 목표를 가지고 새로운 언어를 제작하게 됩니다.

  • 유연한 구조를 가지고 있는 구조화 언어여야 한다.
  • 개발자들에게 친근하고 자연스러운 언어여야 한다.
  • 웹으로 접근하는 장비들을 모두 지원할 수 있어야 한다.
  • 많이 사용 되는 모던 브라우저들을 지원할 수 있는 도구가 필요하다.

그럼 Dart는 어떤 특성을 가지고 있을까요?
당연하게도 OOP언어 이며, Interface를 가진 단일 상속 되는 Class를 지닙니다.
정적 범위 지정이 가능 하고, Static 타입(Optional)을 가집니다. 또한, 씽글쓰레드 방식입니다.

중요한 특징 중에 Isolates라는 것이 있습니다. 이는 동시에 여러 프로세스를 동작 시킬 수 있게 하는 Dart의 방법입니다.
위의 그림에서 보는 바와 같이 독립된 isolates들은 서로 메세지를 주고 받으므로서, 독립적면서도 동시에 실행을 할 수 있어 대용량 처리가 가능하게 됩니다. 이 isolates 기능을 통해, Dart는 single-thread 언어임에도 불구하고 multi-thread의 특징을 가질 수도 있습니다.

그러면, Dart는 어떤 방식으로 실행이 될까요?
많은 분들이 가장 궁금해 하면서도 물어보시는 사항입니다.
다음 그림을 보시면 이해가 쉬울 것이라 생각 되네요.
Source 가 Dart VM이 있는 브라우저(현재는 Chrome / Chromium)에서는 Dart Source 가 바로 실행이 됩니다. 하지만 지원하지 않는 브라우저를 위해서는 DartC를 통해 Javascript파일을 생성하여 실행이 가능 합니다.
이 다음에 나오는 질문들은 바로 이것입니다.
"얼마나 빠른데? 그렇게 되면 느린거 아냐?"


DartC의 결과물을 보게 되면, 몇 상황을 빼고 꽤 좋은 성능을 보이고 있다는 것을 알 수 있습니다. (현재 DartC는 Frog 로 대체되어 가는 것으로 보입니다.//틀렸으면 말해주세요.)

또한, Dart Source자체는 Snapshot기능을 이용하면, Source가 Cache가 되어 1회 실행 된 어플리케이션의 경우, 실행 시점이 극적으로 빨라지게 됩니다. 즉, 큰 어플리케이션을 작성을 하여도 1회를 제외한 나머지 경우에는 상당한 퍼포먼스를 보일 수 있다는 뜻입니다.

위의 PPT에서 중요하다고 생각되는 포인트만 정리를 해보았습니다.
잠깐 읽어보시면 아시겠지만, 상당히 속도에 맞춰서 큰 어플리케이션을 제작하는데 좋은 언어임을 알 수 있습니다. 
물론 아직은 발전 하고 있는 단계기 때문에, 바로 실무에서 적용하지 못할 수 있습니다. 하지만, 점차 동적인 화면이 많아져가는 웹에서 더 좋은 퍼포먼스를내기 위해  점진적으로 Dart를 사용 해보시는 것이 어떨까요?

Dart를 재밌게 즐겨보기 바랍니다!!

댓글 2개: