본 자료는 2017년 4월 6일 진행된 온라인 세미나 'RAD Studio 10.2 도쿄' 출시 세미나 자료입니다.
RAD Studio는 오브젝트 파스칼, C++ 중 원하는 언어를 선택해 단 하나의 코드베이스로 윈도우, 리눅스, 맥, 안드로이드, iOS 앱을 개발해 배포할 수 있는 개발툴입니다.
2017년 3월 출시된 새버전 '10.2 도쿄'에서는 최초의 LLVM 기반의 리눅스 컴파일러를 선보였습니다.
본 세미나 관련 자료는 다음 링크를 통해 확인할 수 있습니다.
http://tech.devgear.co.kr/delphi_news/431914
2. 발표순서
• RAD 스튜디오는?
• IDE 생산성
• 윈도우 10 애플리케이션 제작
• 델파이로 리눅스 개발
• FireDAC으로 데이터베이스 앱
만들기
• 새로운 라이브러리 기능
• 모바일과 사물인터넷을 위한 확장성
높은 REST API 제작
• 마무리, Q&A
• 김현수(험프리)
RAD 스튜디오 에반젤리스트
• hskim@embarcadero.kr
• 데브기어 테크사이트 :
tech.devgear.co.kr/
• 블로그 : blog.hjf.pe.kr/
4. RAD 스튜디오는?
• 가장 빠르게 크로스-플랫폼 네이티브 앱을 개발하는
방법
•유연한 클라우드 서비스와 다양한 IoT 연결 제공
PLATFORM
INDEPENDENT
CLOUD READY
CROSS
PLATFORM
NATIVE
5. RAD 스튜디오 플랫폼 지원
• 메이저 운영체제들의 최신버전을 하나의 코드베이스로!
• 공식 지원
• Windows 10 Anniversary Update
• macOS Sierra
• iOS 10
• Android N (Nougat)
• Linux 64-bit (우분투와 레드햇 엔터프라이즈)
6. 빠르고, 시각적인 개발
• RAD 스튜디오는 윈도우 10을 위한 강력한 VCL 컨트롤과
윈도우, 맥, iOS, 안드로이드를 개발할 수 있는 FMX를
제공합니다.
7. 클라우드 서비스
AWS, Azure 지원
• 스토리지, 테이블, 쿼리 엑세스
BaaS 프로바이더
• Parse, Kinvey 포함
REST 그리고 HTTP 클라이언트 라이브러리
• 플랫폼 라이브러리 기반으로 다이렉트 엑세스, 네이티브 HTTPS
지원
NoSQL 데이터베이스 컴포넌트
• MongoDB 완벽 지원
8. 광범위한 사물인터넷 연결
사물인터넷(IoT) 기능으로 데스크탑과 모바일 앱 확장
• 블루투스, 블루투스 LE, 그리고 WiFi
• 바로 사용할 수 있는 IoT 컴포넌트
• 근접 인식, 비콘펜스
• 센서 데이터 수집
• ThingPoints를 사용한 분산 장치 모니터링
9. C++빌더
C++11 문법 지원(윈도우와 모바일)
• CLANG-확장 컴파일러, RAD 모델 지원
C++11: “거의 새로운 언어 같은 느낌”
• Lambdas
• Move semantics
• Automatic type deduction
• Native concurrency
• Better Smart Pointers
• Range-for
10. 델파이
현대식 오브젝트 파스칼 프로그래밍 언어 기반
• 모든 플랫폼을 지원하는 고성능 네이티브 컴파일러
• 최고로 사용하기 쉽고, 완벽한, OOP, RAD 언어
델파이 개발자들의 대규모 커뮤니티 활용
• 모든 산업과 모든범위에서
대용량-메모리 지원, 델파이 스탠드-얼론 컴파일러
13. 10.2에서 개선된 IDE 내용
개선된 내용
• Code Insight 와 코드 자동완성
• 서로 다른 DPI에서 폼을 디자인하고 오픈하는 것에 대한
지원
• Show in Explorer – 프로젝트 매이저, File 탭
• IDE 로딩 속도 개선
• 대형 프로젝트 그룹 지원 개선
• 프로젝트의 매니페스트 파일 지원
디버깅
• iOS와 macOS(델파이 시뮬레이터와 디바이스)
14. 퀵 에디트(Quick Edit)
가장 빠르게 폼 양식을 설정하고,
컨트롤을 추가하고 공통 속성을
편집하는 방법
네가지 새로운 영역:
• 빠른 폼 설정 (툴바와 상태바가
포함된 폼, 탭 기반 다이얼로그 등)
• 많이 사용되는 컨트롤과 컴포넌트
추가
• 아이콘 및 이미지리스트 추가
• 캡션, 정렬, 색상 등과 같은 일반
속성 수정 등
VCL 지원; FMX 지원 계획 중
15. 개선된 설치 경험
• 최소 설치 + 플랫폼
• 초기 “최소 설치” 기준으로 시스템 구축
• 플랫폼 추가 설치
• 더 많은 플랫폼을 언제든지 추가 설치
가능
• 겟잇(Getit) 기술 기반
• 병렬(Parallel) 다운로드 in 10.2
• 전통적인 오프라인 설치
프로그램 계속 사용 가능(ISO
Image)
17. 윈도우 10 스토어 지원
• 이미 제작한 또는 신규 Win32/64 애플리케이션을
윈도우 10 스토어에 등록
• 마이크로소프트의 윈도우 10 Anniversary(1주년)
업데이트 일환으로 윈도우 10 스토어 도입
• 데스크탑 브릿지(일명 Centennial Bridge) 기술을
사용해 Win32/Win64 애플리케이션을 Universal
Windows Platform 애플리케이션으로 패키지화
• IDE기반 윈도우 스토어 배포 지원
• 윈도우 10 스토어 미리보기 모드로 즉시 열림
VCL & FMX베를린 업데이트 2 Anniversary 에디션에서 처음 지원
18. RAD 스튜디오: 데스크탑 브릿지를 지원하는 첫번째 IDE!
“윈도우 10의 데스크탑 브릿지를 통해 마이크로소프트 윈도우
데스크탑에 구축 된 소프트웨어가 최신 윈도우 애플리케이션 패키지
형식을 사용할 수 있게 해주는 도구를 제공합니다. 이를 통해 보다
깨끗한 설치, 제거 및 업데이트, 윈도우 스토어 및 윈도우 스토어 for
비지니스를 통한 새로운 배포 기회를 얻을 수 있으며 알림과 같은
Universal Windows Platform 기능으로 소프트웨어를 향상시킬 수
있습니다. 개발자는 이제 RAD 스튜디오를 사용해 데스크탑 브릿지를
사용하는 애플리케이션을 직접 구축 할 수 있게되어 매우 기쁩니다.
RAD 스튜디오는 데스크탑 브릿지를 지원하는 최초의 개발자 IDE이며,
큰 재작성 없이도 기존 응용 프로그램을 빠르게 마이그레이션 할 수
있습니다.”
Kevin Gallo, 마이크로소프트, 윈도우 개발자 플랫폼 부사장
20. 리눅스 지원
• 리눅스 64비트 서버에 집중
• 공식 지원
• Ubuntu 16.x LTS
• RedHat Enterprise 7
• 대부분의 배포판에서 작동할 것으로 예상 됨
• 서버 사이드 기술만
• RTL, DB RTL, IOUtils 그리고 파일 시스템 접근, FireDAC, HTTP, REST, Cloud,
WebBroker, Apache 통합, DataSnap, EMS/RAD Server,
JSON, XML, SOAP, Indy, IoT, 그리고 그 이상
• C++빌더 리눅스 지원은 10.2 업데이트1 예정
Linux server 지원은 엔터프라이즈와 아키텍처
에디션
21. 델파이 리눅스 컴파일러
• 64-비트 인텔 리눅스 대상
• LLVM 기술 기반
• ARC 사용
• 기본으로 ZBS 꺼짐
• SDK 가져오기 위해 리눅스 박스 필요(PAServer 통해)
• 컴파일을 위한 것은 아님
• 배포 및 디버깅을 위해 PAServer 사용
• 직접 배포할 수 있으며 파일 사용 권한을 조정해야 할 수 있음
22. 리눅스 개발환경 설정하기
RAD 스튜디오 리눅스 개발환경 설정하기 - http://tech.devgear.co.kr/430268
23. 리눅스 RTL 기능
•모든 코어 RTL을 사용 할수 있습니다.
• System, Exceptions, Kernel, POSIX Headers, File System,
IOUtils, RTTI, Unicode, Threading and Parallel Library…
• Native HTTP client library (libCurl)
• XML DOM and JSON processing
• DUnitX
24. 리눅스 데이터베이스 엑세스 기능
• 모든 리눅스 지원 DBMS 용 FireDAC 드라이버
• MySQL (and MariaDB), InterBase, FireBird, Oracle, MS SQL
Server
• Sybase ASA, DB2, MongoDB, PostgreSQL, SQLite, Teradata
• Informix만, 제외!
• 사용할 수 없는 드라이버: MS Access, DataSnap, DBX
25. 리눅스 인터넷 클라이언트와 서버 지원
• Indy 클라이어트와 서버
•WebBroker + DataSnap + RAD Server modules (EMS)
• Apache 2.4 통합
• 독립 실행형(Standalone) 서버
•클라이언트 라이브러리
• HTTP 그리고 REST 클라이언트 라이브러리
• Cloud 그리고 BaaS 클라이언트
• SOAP 클라이언트
26. 리눅스 기반 웹서비스 제작하기
델파이로 리눅스 기반 웹서비스 제작하기(WebBroker 이용) - http://tech.devgear.co.kr/431630
• 콘솔 기반 WebBroker 프로젝트
• 아파치 모듈 기반 WebBroker 프로젝트
28. FireDAC
• 높은-성능, 손쉬운-사용, 기업용
데이터베이스 연결
• 범용 데이터 엑세스, 그러나 많은
데이터베이스 전용 기능 사용 가능
• 드라이버 필요 없음, 전체 소스코드
제공
•리눅스 지원
29. FireDAC 변경
•New - MariaDB 지원(v5.5과 그 이상)
• MySQL v5.7 지원
•Firebird 다이렉트 I/O 지원
• TFDMemTable – 런타임 시 사용할 데이터를
디자인 타임 데이터셋 에디터에서 생성
• TFDDataMove 컴포넌트 제거. TFDBatchMove
대신 사용
30. DB RTL 변경
• 새로운 TField의 AsGUID 속성
• Blob 스트리밍으로 클라이언트 측 메모리 사용을 줄임
• VCL TDBImage에서 JPEG과 PNG 그래픽 포맷 직접 지원
• DBGrid에서 BlobField 표현하는 옵션사용 지원
32. FMX 아키텍처 / 안드로이드 변경
• “Purgatory” 삭제됨 (폼과 컨트롤들 지연된 파괴)
• TPurgatory 클래스 삭제
• TFmxObject.Replace에 대한 호출 (Purgatory 호출)이 예전의
TFmxObject.Free로 대체되었습니다.
• 멀티스래딩 그래픽스: TBitmap, Tcanvas, TContext3D 지원
• 모든 플랫폼 (특히 모바일에서 중요)
• 안드로이드에서 델파이와 자바 스래드 통일
• 안드로이드 zOrder와 네이티브 컨트롤 지원 준비 작업
• 모든 코드가 자바 UI 스래드에서 동작
• CallInUIThread 지원 중단, 더 이상 스레드 동기화가 필요하지 않음
34. RTL 라이브러리 변경
• Azure와 AWS의 업데이트 된 API 지원 개선
• HTTP 클라이언트 비동기 지원 향상
• 파일과 스트림에 대한 새로운 MD5와 SHA1 함수 지원
• 스트림과 파일에 대한 MD5와 SHA1 해시 계산을 위해 System.Hash
지원
(예> THashMD5.GetHashBytesFromFile)
• 앱테더링 로그 필터링과 메인스래드와 원할한 동기화를 위한
SynchronizeEvents 속성
• TTetheringManager와 TTetheringProfile과 메인 스래드의 컨트롤과 이벤트
동기화하기 위한 새로운 SynchronizeEvents 속성
36. RAD 서버
• 델파이와 C++빌더 애플리케이션을 위한 완벽한 백엔드
• 델파이 또는 C++빌더의 주요 RAD 서버 서비스
• REST API End-Point 퍼블리싱
• 서버 메타데이터 퍼블리싱(Swagger 이용)
• 모바일 푸쉬 알림
• 사용자/그룹 관리
• API 사용량 통계
• 사용자 위치/근접 서비스(비콘 펜스)
• IoT 가장자리 모듈(ThingPoints)
RSX
37. RAD 서버 아키텍처
EMS
DB
System Database EMS Server HTTP Clients
• Version
• API
• Users
• Groups
• Installations
• Push
• Edgemodules
• Resource A1
• Resource A2
플러그인 형태의
EMS
패키지(*.bpl)
• Resource B1
• …
38. RAD 서버 향상
멀티-태넌트 지원
• 하나의 RAD 서버 데이터베이스에 연결된 단일
RAD 서버 인스턴스는 이제 여러개의 독립적인
테넌트를 지원합니다.
• 각 테넌트는 사용자, 그룹, 설치, 에지모듈과 기타
데이터를 포함하는 고유한 RAD 서버 자원
세트를 갖습니다.
• 테넌트 관리: 새 테넌트를 만들고, 기존 정보를
수정하고, 테넌트를 추가, 수정 또는 삭제합니다.