공통 파이어몽키(FireMonkey) vs. VCL
2017.07.18 10:41
많은 분들이 해주시는 질문들입니다:
- VCL은 이제 사라지게 되는건가요?
- 파이어몽키(FMX)와 VCL 중에 어떤 게 더 좋은가요?
- 오늘부터 새로운 앱 개발을 해보려고 하는데요, VCL과 파이어몽키(FMX) 중 뭘 사용해야 할까요?
첫번째 질문은 대답하기 매우 쉽습니다. 하지만 아래 두 가지 질문은 답변하기 조금 힘드네요.
VCL (비주얼 컴포넌트 라이브러리)는 사라지지 않습니다. 윈도우와 윈도우 API가 있는 한 VCL은 계속해서 존재할 것입니다.
얼마전 윈도우10 관련 온라인 세미나에서 마르코 칸투는 다음과 같이 전하기도 했습니다.
"VCL은 윈도우 데스크탑용 소프트웨어를 개발할 수 있는 최고의 라이브러리이며, 윈도우10을 완벽 지원합니다."
VCL에는 새로운 컴포넌트들, 기능들이 추가되고 지속적으로 버그 수정이 진행되고 있습니다. 파이어몽키만큼 자주는 아니지만요. 그 이유는 VCL이 이미 성숙한 프레임워크이기 때문입니다. 반면 파이어몽키는 과거 몇 가지 버전에서부터 많은 성장을 거듭해오고 있습니다 (그리고 최근에는 많이 안정화되면서 성숙한 상태에 도달하고 있습니다).
그럼 어떤 게 더 좋고, 어떤 것을 사용해야 할까요? 바로 대답할 수 있는 문제는 아닙니다. 여러분이 필요한 것에 따라 다를 테니까요. 이 글을 통해 VCL과 파이어몽키 각각의 이점을 알려드리고자 합니다. 그리고 여러분의 다음 프로젝트에서는 무엇을 사용할지 선택해보세요.
비주얼 컴포넌트 라이브러리(VCL)
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)는 더 새로운 프레임워크여서 그런지 더 많이 사용하는 경향이 있습니다. 많은 분들이 여전히 파이어몽키 사용법과 크로스 플랫폼 개발 다루는 방법을 배우고자 하고 있습니다. 파이어몽키의 가장 큰 장점은 크로스 플랫폼 프레임워크로 설계되어 있다는 점입니다. 이는 단 하나의 사용자 인터페이스(UI)만으로도 윈도우, iOS, 맥OS, 안드로이드에서 실행될 수 있는 앱을 만들 수 있다는 의미입니다. 하지만 파이어몽키를 사용해야 하는 이유는 단지 이것 때문만은 아닙니다.
파이어몽키는 최신 GPU 프레임워크에 기반하고 있습니다: 윈도우용 DirectX와 OpenGL을 기반으로 합니다. 또한 하드웨어 가속화 기능을 갖춘 3D 및 2D 렌더링 모델을 모두 지원합니다. 강력한 그래픽 효과나 3D 효과를 원하신다면? 파이어몽키는 최고의 선택이 될 것입니다. 정말 강력한 3D 엔진 뿐만 아니라 VCL의 훌륭한 그래픽 효과들도 함께 제공됩니다. 파이어몽키의 핵심에는 이미 이와 같은 아이디어들이 반영되어 있습니다.
파이어몽키는 훨씬 더 유연합니다. 파이어몽키로 다른 컨트롤을 또 다른 컨트롤 안에 임베디드 시킬 수 있습니다. 이 기능을 사용하면 복합 컨트롤을 만들 수 있습니다. 즉, 작은 컨트롤 셋을 보다 강력한 컨트롤 셋으로 바꿀 수 있게 되는 것입니다.
또한 정말 적은 노력만으로도 환상적이고 풍부한 사용자 인터페이스(UI)를 만들 수 있는 다양한 애니메이션과 효과들이 있습니다.
VCL이 훌륭한 컨테이너와 얼라인먼트 셋이 있다면, 파이어몽키는 훨씬 더 많은 것을 가지고 있으며 또 훨씬 더 유연합니다.
또 다른 큰 차이점은 파이어몽키는 컨트롤 레이아웃 설정에 정수 대신 부동 소수점 수를 사용한다는 점입니다. 물론 정확도는 더 높아지지만, 일반적인 상황에서는 셀보다 더 작은 단위의 정밀함이 그렇게 많이 필요하지는 않을 것입니다. 하지만 파이어몽키가 다양한 픽셀 밀도를 지원하기 때문에 확장하게 된다면 분명 차이가 있습니다.
파이어몽키를 사용하는 가장 큰 이유는 멀티플랫폼을 지원해야 하거나 또는 향후 지원해야 할 가능성이 매우 높은 경우일 것입니다. 또 다른 이유로는 더 유연한 UI를 원하거나 파이어몽키가 제공하는 3D 또는 기타 효과들을 활용하고 싶어서일 것입니다.
결론
요약하자면, VCL은 놀랍습니다. 그리고 수정사항과 새로운 기능들을 계속해서 제공하고 있습니다. 어떻게보면 다른 그 어떤 것보다 훨씬 좋은 사용자 인터페이스(UI) 프레임워크입니다. 파이어몽키는 예외로 하고 말이죠. 때문에 윈도우만 지원하고 파이어몽키의 3D, 다른 효과들이나 유연성이 굳이 필요한 경우가 아니라면 VCL을 사용하세요. 멀티플랫폼을 지원하거나 새로운 파이어몽키의 유연성이 필요할 때, 특히 그래픽 작업을 할 때 파이어몽키를 사용하시면 되겠습니다.
두 프레임워크 모두 오랫동안 존재할 것입니다. 여러분이 이 프레임워크들을 사용해보면서 각각 어떤 상황에서 사용할 때 더 유용한지 알게될 것입니다. 여러분은 어떤 프레임워크를 선택하셨나요? 여러분의 의견도 들어보고 싶습니다.
참고자료
- 윈도우와 맥 개발의 시작을 위한 파이어몽키 코스북(무료 다운로드 제공): http://tech.devgear.co.kr/13556