Jon Lennart Aasenden  블로그 글을 번역한 것입니다

 

·   본문 링크 : https://community.idera.com/developer-tools/b/blog/posts/writing-software-for-multiple-platforms-and-architectures-with-firemonkey

파이어몽키를 사용하여 멀티 플랫폼/아키텍처 용 소프트웨어 개발

개발자가 델파이 또는 C++ 빌더를 생각할 때 일반적으로 가장 먼저 떠오르는 것은 VCL (Visual Component Library)의 강력함입니다.델파이와 C++ 발더의 성공에 중요한 요소가 있다면 의심 할 여지없이 VCL입니다.

 

VCL은 마이크로소프트 윈도우즈 용 데스크톱 애플리케이션을 작성하는 가장 좋은 방법입니다. 언어 또는 회사 소속에 관계없이 윈도우소프트웨어 개발과 관련하여 VCL을 능가하는 것이 없다는 것은 의심의 여지가 없습니다.

 

그러나 오늘날 개발자들은 윈도우즈 플랫폼에만 국한되지 않습니다.

 

0247.imageLikeEmbed.png-640x480.png

 : 통계카운터 별 데이터-gs.statcounter.com-CC-BY-SA 3.0 포팅되지 않은 라이센스

 

파이어 몽키 입문

 

FMX (FireMonkey)는 VCL의 현대화일 뿐만 아니라 다중 플랫폼 애플리케이션을 구축하기 위한 완전히 분리된 고유한 프레임 워크입니다. VCL을 성공으로 이끈 몇 가지 아키텍처 아이디어를 공유하지만 완전히 다른 엔진입니다. 처음부터 플랫폼 독립적으로 작성되었습니다.

 

FMX는 시장에서 “한 번 작성해서 어디에나 배포 할 수 있는” 최고의 소프트웨어 개발 시스템 중 하나라는 사실은 절대 과장이 아닙니다.엠바카데로 기술로 만든 성공 사례 및 비즈니스 사례 리스트들은 굉장히  많습니다.

 

5383.FMX_01.png-640x480.png

 

:델파이는 라이브 바인딩 (위 그림 참조)과 같이 소프트웨어 개발을 단순화하고 가속화하는 강력한 기능을 많이 제공합니다.

파이어몽키는 데스크톱 및 모바일 애플리케이션 모두에서 이러한 기능들을 기본적으로 사용할 수 있도록 설계되었습니다.

 

GPU 기반 그래픽

 

FMX의 가장 독특한 기능 중 하나는 그래픽 처리 방법입니다.

 

FMX는 사용자 인터페이스를 처리하기 위해 호스트 운영 체제에만 의존하는 대신 GPU (그래픽 처리 장치, 최신 그래픽 카드및 아키텍처의 중요한 부분)를 활용하여 사용자 인터페이스를 자체적으로 렌더링하도록 설계되었습니다. 

그러나 FMX는 이 접근 방식에만 국한되지 않습니다.

 

또한 데스크톱 및 모바일의 기본 운영 체제를 활용할 수 있으므로 애플리케이션은 플랫폼 모양(Look)과 느낌(Feel)을 완벽하게 통합합니다. 플랫폼 서비스를 사용하여 동작을 현재 플랫폼에 맞게 조정합니다. 또한 텍스트 편집 상자(Edit Box)와 같은 특정 컨트롤은 파이몽키 스타일 엔진 대신 플랫폼 OS에서 렌더링 할 수 있습니다. 이를 통해 응용 프로그램이 고객의 기대와 일치하는 방식으로 작동합니다.

 

3D 작업

 

FMX의 고유 한 특징 중 하나는 디자인에 따라 3D 그래픽을 수용한다는 것입니다. 대부분의 프레임 워크는 2D 그래픽과 3D 그래픽이 뚜렷하게 구분되며, 후자는 전통적으로 별도의 프레임 워크 또는 컴패니언 패키지로 분리됩니다.

 

FMX의 핵심에는 3D 그래픽이 내장되어 있으므로 모든 시각적 컴포넌트를 3D 공간에 배치 할 수 있습니다. 사용자 인터페이스 자체에서 다양한 그래픽 작업 및 필터를 기울이기, 회전및 크기 조정등을 수행 할 수 있습니다.

 

8637.FMX_02.png-640x480.png

 

 : FMX는 핵심 설계 원칙 중 하나로 3D를 가지고 있으므로 델파이및 C++ 빌더에서 3D 가능 소프트웨어를 작성하는 것이

  다른 소프트웨어 개발 시스템보다 훨씬 쉽습니다.

 

3D가 비즈니스 응용 프로그램에 어떤 이점을 주는지 궁금 할 수 있지만 프레임 워크 수준에서 3D 작업에 대한 본질적인 지원은 데이터 프레젠테이션 및 보고에 엄청난 가치를 부여합니다. 또한 임베디드 및 IoT 애플리케이션에 활기차고 현대적인 사용자 인터페이스 환경을 제공하는 작업을 단순화합니다.

 

물론 멀티미디어 및 엔터테인먼트 소프트웨어와 관련해서도 장점을 제공합니다.

 

서비스 지향 아키텍처

 

델파이 및 C++ 빌더로 유명한 VCL 프레임워크는 마이크로소프트 윈도우와 직접 인터페이스하도록 설계되었습니다. VCL의 아키텍처 강점 중 하나는 델파이 컴포넌트와 기본 WinAPI 간의 추상화가 부족하다는 것입니다.

(추상화가 부족하다는) 이 공식의 명백한 약점은 VCL이 마이크로소프트 윈도우와 밀접한 관련이 있다는 것입니다.

 

반면에 FMX는 추상화에 의존합니다. FMX에서는 일련의 서비스 인터페이스를 통해 일반적인 운영 체제 기능에 접근합니다. 기본 복잡성 및 구현으로부터 시스템을 보호하는 인터페이스로, 시스템마다 다릅니다.

이러한 유형의 접근 방식을 통해 개발자는 의심 할 여지없이 다양한 기본 기술을 통합 할 수 있으므로 개발자는 어플리케이션을 다시 작성할 때 며칠, 몇 주 또는 몇 달을 낭비하지 않고 작업에 집중할 수 있습니다.

 

예를 들어, Mac OS, iOS 또는 Android에서 카메라에 액세스하면 당연히 다른 API 또는 라이브러리 호출이 필요합니다. 전반적인 접근 방식은 비슷하지만 iOS 용으로 작성된 코드는 안드로이드에서 작동하지 않습니다. 또한 윈도우용으로 작성된 코드가 리눅스에서 작동 할 것이라고 기대할 수 없습니다. FMX가 추상화하는 것은 분명한 차이점으로, 지원되는 모든 대상에 대해 동일한 기능을 제공하는 사용하기 쉬운 인터페이스를 제공합니다.

 

간단히 말해서, 개발자들이 이러한 서비스 인터페이스 (FMX 코드베이스의 필수 부분)와 상호 작용하는 코드를 작성하고 파이어몽키는 나머지를 처리합니다.

 

1157.fmxanatomy.png-640x480.png

 

: 파이어몽키는 기본 운영 체제의 작업 방식을 추상화하고 보편적인 경로를 제공합니다. 이는 대상에 관계없이 동일한 기능을 사용할 수 있음을 의    미합니다. 

 

플랫폼의 다양성

 

먼저  파이어몽키로 타겟팅 할 수 있는 플랫폼을 살펴 보겠습니다.

 

엠바카데로는 가장 널리 사용되는 모바일 및 데스크탑 플랫폼을 즉시 지원합니다. 그리고 겟잇(GetIt) 패키지에서 FMXLinux 패키지(델파이 라이센스가 있으면 무료)를 추가하면 리눅스 데스크톱 기능으로 FMX가 확장됩니다 (델파이 엔터프라이즈 및 아키텍트 에디션은 FMXLinux를 추가하지 않아도 서버 어플리케이션을 위한 리눅스 플랫폼이 지원됩니다).

 

Platform

 

Architecture

Microsoft Windows

 

Intel / AMD x86

Apple macOS

 

Intel / AMD x86

Linux

 

Intel / AMD x86

Apple iOS

 

ARM

Google Android

 

ARM

 

 

여기서서 기억해야 할 중요한 부분은 델파이 및 C++ 빌더를 사용하면 단일 코드베이스를 가지고 이러한 모든 플랫폼에 대해 컴파일 할 수 있다는 것입니다. 다시 말해, 프로그램과 비즈니스 로직을 한 번 작성하면 모든 타겟에 따른 프로그램 실행 파일이 생성됩니다.

 

안드로이드 IoT 및 임베디드 개발

 

안드로이드에 대한 지원은 특별한 관심사입니다. Android P 이전에는 안드로이드용으로 작성된 임베디드 및 IoT 소프트웨어가 특수 버전의 운영 체제 (Android Things)에 배포되었습니다. 요컨대 Android Things는 손목 시계부터 라즈베리 PI에 이르기까지 소형 장치에서 실행할 수 있는 안드로이드의 트리밍 된 버전이었습니다. 그러나 하위 수준 API (예 : 커널 수준 함수)에 액세스해야 하는 경우가 아니라면 키오스크 모드만 (전체 화면에서 하나의 안드로이드 애플리케이션을 실행할 수 있는 기능 자세한 내용은 아래를 참조하십시오.) 있으면 시스템의 장점을 얻을 수 있습니다. 

 

안드로이드 P가 나올 무렵에는,  Android Things는 신뢰를 잃고 있었습니다. 소형 ARM 기기를 타겟팅하는 데 필요한 기기는

Google WearOS로 피봇되었습니다. Android P 키오스크 모드도 지원하므로 IoT 개발자는 풀버전 배포를 사용하는 것이 좋습니다.

 

Android Things가 출시된 시점부터 Android P가 시장에 출시될 때까지 쉽게 구할 수 있고, 경제적인, IoT 컴퓨터는 4 배 이상 늘어났습니다.

 

라즈베리 PI 3b가 강력하다고 여겨졌을 때 Android Things가 인기를 얻었습니다.현재 80 달러 미만으로 보드를 6배 빠르게 선택 할 수 있습니다. (Hardkernel ODroid N2는 제가 가장 좋아하는 보드입니다. 빠른 8 코어 CPU, 4Gb 램, 블루투스, eMMc 인터페이스 및 라즈베리 PI 시리즈보다 2 배 많은 GPIO 포트가 함께 제공됩니다). 이 미니 컴퓨터의 평균 속도는 이제 x86 범위에 속합니다.

 

이는 대부분의 ARM 기반 IoT 장치에서 실행되는 표준 안드로이드 배포판과 델파이를 사용하여 시각 및 서비스 앱등 놀라운

IoT 시스템을 작성할 수 있음을 의미합니다. 

 

키오스크 모드

 

이전에 내장된 안드로이드 버전을 통해서만 사용할 수 있었던 기능 중 하나는 키오스크 모드입니다.

 

키오스크 모드로 디바이스를 구성하면 파이어몽키 애플리케이션만 실행하도록 안드로이드에 지시 할 수 있습니다.

 

다시 말해, 안드로이드는 정상적으로 부팅되고 필수 서비스를 시작합니다. 부팅 프로세스가 완료되면 애플리케이션이 실행됩니다.

 

4111.android-kiosk1-Shutterstock-1024x683.jpg-640x480.jpg

 

 : 파이어몽키는 강력한 프레임 워크이며 델파이와 오브젝트 파스칼의 모든 기능을 제공합니다. 안드로이드용 FMX에서 키오스크 애플리케이션을      만드는 것은 쉽고 간단합니다. 이 작업 라인에 델파이를 사용하면 큰 도움이됩니다. 특히 개발 시간을 단축시키는 라이브러리 및 타사 컴포넌트를    사용할 수 있기 때문입니다.

 

 

키오스크 모드에서는 애플리케이션이 전체 화면으로 실행되며 시각적 디스플레이를 완벽하게 제어 할 수 있습니다. 안드로이드의 표준인 종료(Exit) 및 홈(Home) 버튼이 비활성화 되거나 작동이 제한됩니다. (이 동작을 구성 할 수 있습니다. 어떤 상황에서는 두 프로그램을 동시에 실행하여 사용자가 두  프로그램에서만 스위치 할 수 있도록 요구할 수도 있습니다).

 

이것은 정보 부스에서 매표소, POS 시스템, 재고 자동화, 멀티미디어 및 광고 시스템에 이르기까지 매우 강력하고 수익성이 좋은 기회들을 제공합니다.

 

특히 델파이는 데이터 처리, 보안 및 저널링이 매우 중요한 의료 산업에서 매우 인기가 있습니다. 맞춤형 하드웨어로 이러한 시스템을 확장하거나 스탠다드형 예약 키오스크와 같은 보조 제품을 제공하는 것은  (프로젝트 개발)포트폴리오를 자연스럽게 성장(확장)시키는 것입니다.

 

델파이를 사용하여 모두 다 할 수 있습니다!

 

IoT 개발을 위한 리눅스

 

FMX 플랫폼에서 더욱 흥미로운 개발 중 하나는 이제 리눅스를 타겟으로 할 수 있다는 것입니다 ! 표준 x86 프로세서로 구동되는 다양한 x86 전원 IoT 보드 (단일 보드 컴퓨터)가 있습니다. 델파이와 C++ 빌더는 모두 인텔 및 AMD 기반 아키텍처 모두에 매우 효율적인 코드를 생성하므로 성능, 메모리 및 경제성에 따라  보드를 선택할 수 있습니다.

 

현재 델파이는 레드 햇(Red Hat) 및 우분투(Ubuntu) 기반 리눅스 서비스 어플리케이션 및 코맨드-라인 도구를 작성할 수 있습니다. 이 두 배포판이 가장 많이 사용되며 공식적으로 지원되는 유일한 배포판이지만 실제로는 대부분의 리눅스 배포판을 지원합니다. 리눅스는 가장 인기 있는 서버 및 서비스 호스팅  운영체제 중 하나이며, 기업은 기존 서비스를 리눅스로 이전하여 비용을 절감할 수 있습니다.

 

3441.AtomicPiHeader.jpg-640x480.jpg

: 대부분의 IoT 보드는 리눅스및 안드로이드를 지원합니다. 그러나 Atomic PI와 같은 x86 IoT 보드에서는 FMX를 사용하여 마이크로소프트 윈도우와 동일한 방식으로 서비스를 작성할 수 있습니다. UI 패키지를 추가하면 많은 작업없이 전체 백엔드 및 프런트 엔드를 저렴한 IoT 기술로 옮길 수 있습니다.

 

이 글의 앞부분에서 간략하게 언급했듯이 델파이 및 FMXLinux (델파이 라이센스가 있는 경우 무료)를 사용하면 시각적 데스크톱 애플리케이션도 작성할 수 있습니다. IDE 및 FMX 프레임 워크와 완벽하게 통합되므로 마이크로소프트 윈도우 또는 애플 macOS에 사용하는 것과 동일한 컴포넌트를 사용할 수 있습니다. 말 그대로 프로그램을 리눅스에서 사용하기위해 컴파일만 다시 할 뿐입니다!

 

리눅스를 기반으로 사용하면 라이센스를 크게 절약 할 수 있기 때문에 IoT 및 임베디드 디바이스에 특히 흥미롭습니다. 또한 GPIO(기타 하드웨어와 통신 및 제어하기 위해 보드에서 사용하는 범용 IO 핀)를 포함하여 제품에 대해 리눅스를 탑-다운으로 구성할 수 있으므로 배포를 완벽하게 제어할 수 있습니다.

 

FMX를 사용해보십시오 !

 

현재 프로젝트를 위해 델파이 또는 C ++ 빌더를 살펴 보고 있다면, FMX를 사용해 보십시오 ! 지금 체험판을 다운로드하거나 커뮤니티 에디션에 등록하십시오!

 

델파이는 25 년 전부터 서비스 작업, 데스크탑 작업, 그리고 최근에 IoT 및 리눅스 작업에 이르기까지 많은  실적들을 보유하고 있습니다!

 

델파이가 제공하는 기능이 많다는 것을 알게 될 것입니다. 생각하는 것을 구현 가능하게 하는 컴포넌트가 있어서 비용을 절감하고 소중한 개발 시간을 절약 할 수 있습니다! 이를 인터베이스 강력함과 결합하면 프로토 타입에서 구현 ,배포, 테스트에 이르기까지 원활한 개발 경험을 얻을 수 있습니다. 

 

또한 우수한 FMXExpress와 같은 컴포넌트, 팁 및 기능을 제공하는 전용 FMX 웹 사이트를 방문하십시오.

 

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 22591
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 21024
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 23082
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 28881
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 30050
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 25397
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 46348
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 182316
1203 인터베이스(InterBase) 2020 버전을 사용해야 하는 5 가지 이유 file 김원경 2020.04.09 6074
1202 [프로그래밍 애피타이저] 10장 트랜잭션의 정의 file 김원경 2020.04.09 487
1201 [프로그래밍 애피타이저] 9장 저장프로시저와 트리거 file 김원경 2020.04.09 668
1200 [프로그래밍 애피타이저] 8장 SQL 정의와문법 file 김원경 2020.04.09 1807
1199 [프로그래밍 애피타이저] 7장 데이터베이스 개념과 용어정의 file 김원경 2020.04.09 800
1198 [고객 사례- POS, 주문, 델파이, 모바일] 마리스코스 - 레스토랑 주문 관리&전송 앱 관리자 2020.04.08 682
1197 IBLite 라이브러리 및 라이선스 배포하기 관리자 2020.04.08 359
1196 C++로 UI를 손쉽게 개발해봅시다! 관리자 2020.04.07 1521
1195 [프로그래밍 애피타이저] 6장 프로시저와 함수 file 김원경 2020.04.07 1979
1194 [프로그래밍 애피타이저] 5장 메모리의 구조 file 김원경 2020.04.07 827
1193 [프로그래밍 애피타이저] 4장 데이터타입 file 김원경 2020.04.07 398
1192 [프로그래밍 애피타이저] 3장 변수와 상수 file 김원경 2020.04.07 504
1191 [프로그래밍 애피타이저] 2장 컴파일,링크 및 운영체제(Operating System) file 김원경 2020.04.06 581
1190 [프로그래밍 애피타이저] 1장. 컴퓨터프로그램이란 ? file 김원경 2020.04.06 641
1189 2020 년 3 월 GM 업데이트 file 김원경 2020.03.30 694
1188 프로그래밍 언어 인기도 측정의 문제점 file 김원경 2020.03.27 551
1187 이 달의 기술자료 - 2020년 04월 험프리 2020.03.27 324
» 파이어몽키를 사용하여 멀티 플랫폼/아키텍처 용 소프트웨어 개발 file 김원경 2020.03.25 664
1185 [고객 사례- 의료, 델파이] COVID-19 - 검사 결과 실시간 확인 앱 관리자 2020.03.25 880
1184 [고객사례-솔루션, 델파이] 비디오 오피스(VideoOffice) - 화상회의 솔루션 관리자 2020.03.25 660