Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

파이어몽키(FMX)와 VCL 비교하기


Recommended Posts

짐 메키트(Jim McKeeth )의 "FireMonkey vs. VCL"을 번역했습니다. (원문 작성: 2016년 10월, 번역 업데이트:  2023년 7월)

 

VCL이나 파이어몽키(FMX)를 이야기 하다보면 자주 나오는 질문 세 가지는 다음과 같다.

  • VCL은 이제 사라지는가?
  • 파이어몽키(FMX)와 VCL 중에 무엇이 더 좋은가?
  • 새 앱을 개발을 시작하려고 한다면, VCL과 파이어몽키(FMX) 중 뭘 사용해야 할까?
     

spacer.png


첫 번째 질문은 대답하기 매우 쉽다. 하지만 나머지 두 가지 질문은 답변하기가 조금 어렵다.

VCL (Visual Component Library, 비주얼 컴포넌트 라이브러리)는 사라지지 않는다. 윈도우와 윈도우 API가 있는 한 VCL은 계속해서 존재할 것입니다. 얼마전 윈도우10 온라인 세미나에서 마르코 칸투는 다음과 같이 말했다. "VCL은 윈도우 데스크탑용 소프트웨어를 개발할 수 있는 최고의 라이브러리이며, 윈도우10을 온전히 지원합니다."

VCL에는 새로운 컴포넌트들과 기능들이 지속적으로 추가되고, 버그 수정판(bug fix)도 빈번하게 제공된다. 하지만, 파이어몽키만큼 자주 업데이트 되지는 않는다. 왜냐하면, VCL이 이미 성숙한 프레임워크이기 때문이다. 이와 달리, 파이어몽키(FMX)는 지난 몇 버전을 거치면서 수 많은 성장을 해오고 있다 (최근에는 훨씬 더 안정화되었고, 보다 성숙한 상태에 도달하고 있다).

그렇다면, 어느 것이 더 좋고, 무엇을 사용해야 할까? 한 마디로 대답할 수는 없다. 하지만, 각각의 장점을 알려줄 수는 있다. 이 설명을 이해하게 된다면, 여러분의 다음 프로젝트에서 보다 현명한 선택을 할 수 있을 것이다.

 

비주얼 컴포넌트 라이브러리(VCL, Visual Component Library)

spacer.pngVCL은 델파이 첫 버전과 함께 출시되었다. VCL 대부분은 윈도우 API 컨트롤을 감싸는 가벼운 래퍼(thin wrapper)들이다. 하지만, 직접 그리는 컨트롤들도 많다. VCL이 사용하는 것은 GDI, 윈도우 핸들, 윈도우 메세지이다. 따라서 VCL은 시중에 나온 다른 윈도우 애플리케이션들과 동작이 90% 이상 동일하다. 원한다면, 여러분의 앱에 있는 VCL 버튼을 다른 윈도우 앱에 넣을 수 있고, 다른 앱에게 전송된 메세지를 탐지하여 여러분의 앱으로 보낼 수도 있다.

앞서 언급했듯이, VCL은 이미 성숙했다. 제3자(써드-파티) 컴포넌트 세상 역시 그렇다. 시중에는 수천 가지 고품질 VCL 컴포넌트, 컨트롤, 라이브러리들이 있다. 그 중에서 가장 유명한 것은 아마 그리드(grid)일 것이다. VCL 그리드들은 업계 최고로 잘 알려져 있다. 그럴 만도 한 것이, 우리의 기술 파트너들이 VCL용 그리드들을 만들어 제공하던 시절은, 다른 개발 플랫폼들이 써드-파티 컨트롤이라는 생각을 하기도 전이었다. 지구 상에서 가장 좋은 그리드를 사용하고 싶다면, 아마 VCL을 선택하게 될 것이다 (파이어몽키 그리드들이 빠르게 증가하고 있긴 하지만 말이다).

VCL은 대부분 윈도우 API을 포함하는 가벼운 래퍼(thin wrapper)이기 때문에, VCL 기반 애플리케이션은 파이어몽키 애플리케이션 보다 훨씬 더 작다. 요즘은 다운로드 속도가 빠르고 하드 드라이브 용량이 크기때문에, 이런 문제가 더이상 크게 중요하지 않다. 하지만, 정말 작고 가벼운 애플리케이션이 필요하다면, VCL은 좋은 선택이 될 것이다..

VCL은 오랫동안 사용되어 왔기때문에, VCL 코드를 이미 가지고 있고 그것들을 원하는 애플리케이션에 적용하고 싶을 수도 있을 것이다. 그럴 때 사용할 수 있는 유틸리티들로는, 파이어몽키로 변환하는 미다 컨버터(Mida Converter), 파이어몽키와 VCL을 혼합할 수도 있는 몽키 믹서(Monkey Mixer), TFireMonkeyContainer 등이 있다.

대체로, 그리드 위주로 구성되는 간단한 애플리케이션을 개발하고, 오직 윈도우에서만 실행할 예정이라면 나는 VCL을 사용한다. 또한, 특정 써드-파티 컨트롤을 활용해야 하거나, (요즘에는 점차 줄어가고 있긴 하지만) 윈도우 메세지가 필요한 윈도우 API 기능을 활용해야 하는 경우에도 VCL을 선택한다.

 

파이어몽키 크로스 플랫폼 프레임워크(FMX)

spacer.png더 새로운 프레임워크여서 그런지, 파이어몽키(FireMonkey)는 사용자가 늘어나는 경향이 있다. 또한, 많은 개발자들이 여전히 파이어몽키 사용법과 크로스 플랫폼 개발을 다루는 방법을 배우고 있다. 파이어몽키의 가장 큰 장점은 처음부터 크로스 플랫폼을 위해 설계된 프레임워크라는 점이다. 사용자 인터페이스(UI)를 오직 하나만 디자인하면 윈도우, iOS, 맥OS, 안드로이드에서 멋진 모습으로 실행된다. 하지만, 파이어몽키를 사용해야 하는 이유는 단지 이것만이 아니다. 

파이어몽키는 최신 GPU 프레임워크를 기반으로 하고 있다: 윈도우용 DirectX를, 그리고 그 외 플랫폼용으로는 OpenGL을 기반으로 한다. 또한, 하드웨어 가속화 기능을 갖춘 3D와 2D 렌더링 모델을 모두 지원한다. 강력한 그래픽 효과나 3D 효과를 원한다면, 파이어몽키는 최고의 선택이 될 것이다. VCL용으로도, 정말 강력한 3D 엔진 뿐만 아니라 훌륭한 그래픽 효과들이 있다. 하지만, 파이어몽키에서는 VCL과 달리 핵심(Core)요소 안에 이 개념들이 반영되어 있다.

파이어몽키는 훨씬 더 유연하다. 파이어몽키에서는, 어떤 컨트롤이든 다른 컨트롤 안에 넣을 수 있다. 이런 방식으로 복합 컨트롤을 만들 수 있기 때문에 파이어몽키의 컨트롤 세트는 규모가 더 적지만, 훨씬 더 강력한 컨트롤 세트 이다. 게다가, 애니메이션(animation)들과 효과(effect)들이 있기때문에, 멋지고 풍부한 사용자 인터페이스(UI)를 거의 수고하지 않고도 만들 수 있다. 

VCL의 컨테이너들과 정렬 세트들은 훌륭하다. 하지만, 파이어몽키에는 훨씬 더 많은 것들이 있고, (다시 말하지만) 훨씬 더 유연하다. 또 다른 큰 차이점은 파이어몽키는 컨트롤 배치를 지정할 때 정수 대신 부동 소수점 숫자를 사용한다는 점이다. 그래서 정밀도가 훨씬 더 높다. 하지만, 소숫점 단위 정밀도로 픽셀을 지정할 일은 많지 않을 것이다. 그 진정한 차이는 파이어몽키에서 확대/축소(scale)을 할 때이다. 여러 가지 픽셀 밀도를 파이어몽키에서 지원하기 때문이다.

파이어몽키를 사용하는 가장 명확한 이유는 멀티플랫폼으로 배포할 계획을 지금 하고 있거나, 또는 앞으로 지원할 가능성(그럴 확률이 매우 높다)이 매우 높은 경우이다. 또 다른 이유로는, 더 유연한 UI를 원하거나 파이어몽키가 제공하는 3D 또는 기타 효과(effect)들을 활용하고 싶은 경우이다. 

 

결론

요약하자면, VCL은 대단하다. 그리고 수정과 새 기능 추가가 계속되고 있다. 시중 어느 UI 프레임워크보다 더 좋다 (파이어몽키는 예외로 하고 말이다). 따라서, VCL을 사용하면 좋은 경우는, 앱을 윈도우용으로만 만들고, 3D, 효과, 유연성이라는 파이어몽키의 장점은 굳이 필요하지 않을 때이다. 파이어몽키(FMX)를 사용하면 좋은 경우는, 멀티-플랫폼으로 가려고 하거나, 파이어몽키의 유연성을 원할 때이다. 특히 그래픽 작업에서 그렇다.

두 프레임워크 모두 오랫동안 존재할 것이다. 이 두 프레임워크를 모두 사용하다 보면, 각 상황에 무엇을 사용할지를 더 잘 알 수 있을 것이다. 

이 댓글 링크
다른 사이트에 공유하기

  • 2주 후...

실제로 사용하는 관점에서 구체적인 학습이 필요하다면, 아래 도서의 2장을 권장합니다.

 

Delphi GUI Programming with FireMonkey

파이어몽키(FMX) 프레임워크로 GUI 애플리케이션을 만드는 내용을 매우 잘 설명하고 있는 도서(영문)이므로, 강력 추천!

  • by Andrea Magni, Marco Cantu
  • Released October 2020
  • Publisher(s): Packt Publishing
  • ISBN: 9781788624176

예스24에서 구입 가능: https://www.yes24.com/Product/Goods/95473249

2장 (Exploring Similarities and Differences with VCL)에서는

  • (이 책이 그렇듯이) 꼭 알아야 할 내용을 설명, 데모, 코드를 구체적으로 제시함
  • VCL과 FMX를 비교 설명하지만, 그뿐 아니라, 필요한 다른 주요 기술(들)도 설명함
    • RTL 이해하기, 컴포넌트 스트리밍, 스타일 디자이너, 컴포넌트 다루기(사용, 배치, 크기), 액션, 데이터 바인딩

 

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.