공통 파이어몽키(FireMonkey) vs. VCL

2017.07.18 10:41

관리자 조회 수:2796

많은 분들이 해주시는 질문들입니다:

  • VCL은 이제 사라지게 되는건가요?
  • 파이어몽키(FMX)와 VCL 중에 어떤 게 더 좋은가요?
  • 오늘부터 새로운 앱 개발을 해보려고 하는데요, VCL과 파이어몽키(FMX) 중 뭘 사용해야 할까요?

 

FireMonkeyVsVCL.png

 

첫번째 질문은 대답하기 매우 쉽습니다. 하지만 아래 두 가지 질문은 답변하기 조금 힘드네요.

VCL (비주얼 컴포넌트 라이브러리)는 사라지지 않습니다. 윈도우와 윈도우 API가 있는 한 VCL은 계속해서 존재할 것입니다.

 

얼마전 윈도우10 관련 온라인 세미나에서 마르코 칸투는 다음과 같이 전하기도 했습니다.

"VCL은 윈도우 데스크탑용 소프트웨어를 개발할 수 있는 최고의 라이브러리이며, 윈도우10을 완벽 지원합니다."

 

VCL에는 새로운 컴포넌트들, 기능들이 추가되고 지속적으로 버그 수정이 진행되고 있습니다. 파이어몽키만큼 자주는 아니지만요. 그 이유는 VCL이 이미 성숙한 프레임워크이기 때문입니다. 반면 파이어몽키는 과거 몇 가지 버전에서부터 많은 성장을 거듭해오고 있습니다 (그리고 최근에는 많이 안정화되면서 성숙한 상태에 도달하고 있습니다).

 

그럼 어떤 게 더 좋고, 어떤 것을 사용해야 할까요? 바로 대답할 수 있는 문제는 아닙니다. 여러분이 필요한 것에 따라 다를 테니까요. 이 글을 통해 VCL과 파이어몽키 각각의 이점을 알려드리고자 합니다. 그리고 여러분의 다음 프로젝트에서는 무엇을 사용할지 선택해보세요.

 

 

 

비주얼 컴포넌트 라이브러리(VCL)

 

VCL_v1.png

VCL은 델파이 첫 버전에서 처음 선보였습니다. 보통 윈도우 API 컨트롤을 감싸는 가벼운 래퍼(thin wrapper)이며, 그리기 컨트롤들도 자체적으로 다수 제공합니다. 그리고 GID, 윈도우 핸들, 윈도우 메세지를 사용합니다. 이러한 기능들은 VCL이 다른 윈도우 애플리케이션들과 90% 이상 동일하게 동작하도록 해줍니다. 원한다면 여러분의 앱에 있는

VCL 버튼을 다른 윈도우 앱에 적용할수도 있고, 다른 앱에 전송한 메세지를 찾아내

여러분의 앱으로 리디렉션 할 수도 있습니다.

 

앞서 언급했듯 VCL은 완성도가 높고 다른 기업들에서 제공하는 써드파티 컴포넌트들 또한 매우 많습니다. 높은 품질의 VCL 컴포넌트, 컨트롤, 라이브러리들이 수천개에 달합니다.

그 중에서도 가장 유명한 것은 그리드(grid) 일 것입니다. VCL 그리드는 업계 최고의 제품으로 잘 알려져 있습니다. 엠바카데로의 기술 파트너들은 이미 다른 플랫폼들이 써드파티 컨트롤에 대한 생각을 하기 전부터 VCL용 그리드들을 만들고 있었습니다. 지구상에서 가장 좋은 그리드를 사용하고 싶다면,

VCL을 선택하시게 될 겁니다 (비록 파이어몽키 그리드들이 빠르게 증가하고 있음에도 말이죠).

 

왜냐하면 VCL은 대부분이 윈도우 API을 포함하는 가벼운 래퍼(thin wrapper)이기 때문에, VCL 기반의 애플리케이션들은 파이어몽키 애플리케이션 보다 훨씬 더 용량이 작아집니다. 요즘은 빠른 다운로드 속도와 대용량 하드 드라이브 용량이 있어 큰 문제가 되지 않기는 하지만 정말 작은 경량의 애플리케이션이 필요하다면, VCL은 좋은 선택이 될 것입니다.

 

VCL은 오랜 기간 사용되어 왔을 뿐만 아니라, 기존 VCL 코드 중 일부를 원하는 애플리케이션에 적용할 수도 있습니다. 

미다 컨버터(Mida Converter)와 같은 유틸리티를 이용해 파이어몽키용으로 변환할 수도 있고, 머니 믹서(Money Mixer)나

TFireMonkeyContainer와 같은 유틸리티들을 사용해 VCL과 파이어몽키를 혼합할 수도 있습니다.

 

보통 저의 경우에는 윈도우에서만 실행되는 그리드 중심으로 되어있는 간단한 애플리케이션을 개발한다면, VCL을 사용합니다. 또는 특정 써드파티 컨트롤이나 윈도우 메세지가 필요한 윈도우 API 기능을 활용해야 하는 경우에도요. 

 

 

 

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

 

FireMonkey_v2.png파이어몽키(FireMonkey)는 더 새로운 프레임워크여서 그런지 더 많이 사용하는 경향이 있습니다. 많은 분들이 여전히 파이어몽키 사용법과 크로스 플랫폼 개발 다루는 방법을 배우고자 하고 있습니다. 파이어몽키의 가장 큰 장점은 크로스 플랫폼 프레임워크로 설계되어 있다는 점입니다. 이는 단 하나의 사용자 인터페이스(UI)만으로도 윈도우, iOS, 맥OS, 안드로이드에서 실행될 수 있는 앱을 만들 수 있다는 의미입니다. 하지만 파이어몽키를 사용해야 하는 이유는 단지 이것 때문만은 아닙니다. 

 

파이어몽키는 최신 GPU 프레임워크에 기반하고 있습니다: 윈도우용 DirectX와 OpenGL을 기반으로 합니다. 또한 하드웨어 가속화 기능을 갖춘 3D 및 2D 렌더링 모델을 모두 지원합니다. 강력한 그래픽 효과나 3D 효과를 원하신다면? 파이어몽키는 최고의 선택이 될 것입니다. 정말 강력한 3D 엔진 뿐만 아니라 VCL의 훌륭한 그래픽 효과들도 함께 제공됩니다. 파이어몽키의 핵심에는 이미 이와 같은 아이디어들이 반영되어 있습니다.

 

파이어몽키는 훨씬 더 유연합니다. 파이어몽키로 다른 컨트롤을 또 다른 컨트롤 안에 임베디드 시킬 수 있습니다. 이 기능을 사용하면 복합 컨트롤을 만들 수 있습니다. 즉, 작은 컨트롤 셋을 보다 강력한 컨트롤 셋으로 바꿀 수 있게 되는 것입니다. 

또한 정말 적은 노력만으로도 환상적이고 풍부한 사용자 인터페이스(UI)를 만들 수 있는 다양한 애니메이션과 효과들이 있습니다. 

 

VCL이 훌륭한 컨테이너와 얼라인먼트 셋이 있다면, 파이어몽키는 훨씬 더 많은 것을 가지고 있으며 또 훨씬 더 유연합니다.

또 다른 큰 차이점은 파이어몽키는 컨트롤 레이아웃 설정에 정수 대신 부동 소수점 수를 사용한다는 점입니다. 물론 정확도는 더 높아지지만, 일반적인 상황에서는 셀보다 더 작은 단위의 정밀함이 그렇게 많이 필요하지는 않을 것입니다. 하지만 파이어몽키가 다양한 픽셀 밀도를 지원하기 때문에 확장하게 된다면 분명 차이가 있습니다.

 

파이어몽키를 사용하는 가장 큰 이유는 멀티플랫폼을 지원해야 하거나 또는 향후 지원해야 할 가능성이 매우 높은 경우일 것입니다. 또 다른 이유로는 더 유연한 UI를 원하거나 파이어몽키가 제공하는 3D 또는 기타 효과들을 활용하고 싶어서일 것입니다.

 

 

 

 

결론

 

요약하자면, VCL은 놀랍습니다. 그리고 수정사항과 새로운 기능들을 계속해서 제공하고 있습니다. 어떻게보면 다른 그 어떤 것보다 훨씬 좋은 사용자 인터페이스(UI) 프레임워크입니다. 파이어몽키는 예외로 하고 말이죠. 때문에 윈도우만 지원하고 파이어몽키의 3D, 다른 효과들이나 유연성이 굳이 필요한 경우가 아니라면 VCL을 사용하세요. 멀티플랫폼을 지원하거나 새로운 파이어몽키의 유연성이 필요할 때, 특히 그래픽 작업을 할 때 파이어몽키를 사용하시면 되겠습니다.

 

두 프레임워크 모두 오랫동안 존재할 것입니다. 여러분이 이 프레임워크들을 사용해보면서 각각 어떤 상황에서 사용할 때 더 유용한지 알게될 것입니다. 여러분은 어떤 프레임워크를 선택하셨나요? 여러분의 의견도 들어보고 싶습니다.

 

 

 


 

참고자료

 

 

 

 

 

 

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 12892
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 12160
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 14634
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 19969
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 21449
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 17157
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 37188
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 172619
14 RAD Studio(델파이/C++빌더) 모바일 앱 배포하기 관리자 2017.01.16 721
13 [개발자 Tip] 모바일 앱 개발 시 시간 낭비를 줄이는 Tip #1: 테스트하기 위해 기다리는 시간을 줄인다. 관리자 2016.12.26 813
12 [동영상] 애플 터치 아이디 연동하기 file 험프리 2016.11.01 396
11 [발표자료] 20160929 나만의 앱 완성하기 with 델파이 험프리 2016.09.21 855
10 안드로이드 SDK 설정 방법 file 험프리 2016.09.20 2800
9 [안드로이드/iOS] 이미 배포(Deployment)된 파일 업데이트 하기 험프리 2016.03.31 1460
8 안드로이드 개발환경 추가 조치방법 - RAD Studio에서 SDK 설정 Humphery 2015.10.01 5463
7 [추가자료] 안드로이드 개발환경 추가 조치방법 - 수동 SDK Tools 업데이트 file Humphery 2015.10.01 3004
6 iOS9의 새로운 기능인 "App transport Security" 예외 허용을 위한 Info.plist xml 수정방법 [1] Humphery 2015.10.01 828
5 [XE8] 모바일 튜토리얼 무료 다운로드(영문), 총 364페이지 관리자 2015.07.09 1506
4 모바일 앱 실행 시 (비정상종료)검은화면이 표시되는 경우 조치방법 험프리 2015.07.03 4054
3 [하이브리드 앱 개발] 웹페이지에서 델파이 함수 호출하기 Humphery 2015.06.26 3950
2 안드로이드 웹브라우저에서 "tel:, sms:" 링크가 동작하지 않는 이슈 해결하기 Humphery 2015.06.26 4676
1 앱의 상태바(StatusBar) 제어하기(색상변경, 감추기, 투명하게) Humphery 2015.06.04 2229