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

2017.07.18 10:41

관리자 조회 수:2798

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

  • 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 12896
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 12160
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 14641
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 19976
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 21449
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 17157
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 37192
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 172622
763 안드로이드에서 Firebase SDK 용 Google 로그인 사용하기 험프리 2017.08.04 590
762 첨부파일을 포함한 이메일 전송하기(iOS, 안드로이드, 윈도우) file 험프리 2017.08.04 619
761 이 달의 기술자료 - 2017년 08월 험프리 2017.07.28 508
760 세일즈포스(Salesforce) 데이터, RAD스튜디오 데이터 익스플로러로 연동하기 file 관리자 2017.07.26 770
759 Tools API를 사용해 IDE를 확장할 수 있습니다. file 험프리 2017.07.20 464
» 파이어몽키(FireMonkey) vs. VCL file 관리자 2017.07.18 2798
757 엔터프라이즈 커넥터로 '트위터' 연동하기 file 관리자 2017.07.17 886
756 엔터프라이즈 커넥터 - 엠바카데로의 새로운 솔루션 [1] file 관리자 2017.07.12 1939
755 겟잇 패키지 매니저를 사용하면 협업을 위한 프로젝트 공유와 전환이 간편해집니다. 험프리 2017.07.07 447
754 이 달의 기술자료 - 2017년 07월 험프리 2017.07.03 480
753 [업데이트][핫픽스][10.2 도쿄] FireMonkey의 Android 호환성 패치 험프리 2017.07.03 647
752 [발표자료] 20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio [2] 관리자 2017.06.26 373
751 [고객 사례- 쇼핑, 모바일앱, 델파이] 매일 최저가 상품을 보여주는 'Daily Offer' 관리자 2017.06.21 647
750 RAD서버로 개발은 확장하면서도 비용을 절감하는 방법 (RAD서버 라이선스 유형별 정리) file 관리자 2017.06.20 1553
749 [REST API][실습] 데이터셋 기반 REST API 개발하기 험프리 2017.06.13 2101
748 이 달의 기술자료 - 2017년 06월 file 험프리 2017.05.30 518
747 [발표자료] REST API 웹서비스 연동 관리자 2017.05.29 1440
746 [REST API][실습] REST API 클라이언트 개발하기(REST Client 이용) [2] 험프리 2017.05.23 6817
745 [REST API][실습] REST API 서버 개발하기(엔드포인트 구현, RAD 서버 이용) [5] 험프리 2017.05.23 4062
744 [REST API] REST API 이해하기 험프리 2017.05.23 14980