RAD스튜디오 버전별 주요 업데이트

IDE 업데이트

10.3 리오는 장기적인 사용성과 가시성이 좋은 깔끔하고 우아한 UI 제공을 목표로 업데이트했습니다. 이 결과, 여러 업데이트 항목들이 추가되어 레이아웃이 대폭 개선되었습니다. 보기에 더 깔끔하고 더 현대적인 화면을 제공합니다.

 

□ 북마크(Bookmarks) 기능

소스코드가 많고 규모가 큰 프로젝트더라도 IDE에서 바로 원하는 코드 위치를 찾아 작업할 수 있어, 불필요한 작업 시간이 크게 줄어듭니다. 이 기능은 10.3.1을 받은 고객이라면 겟잇패키지매니저(GetIt Package Manager)를 통해 다운로드 받아 사용할 수 있습니다. 코드 편집기에서 이전에 작업했던 위치를 보여주는 기능입니다. ‘바로가기’를 설정하면 그 위치로 바로 이동할 수 있는 새로운 북마크가 만들어집니다. 생성한 모든 북마크들은 북마크 화면에서 모두 확인할 수 있습니다. 그리고 구문 강조 표시와 작업 전부 정보에 대해서도 확인할 수 있습니다. 또한 ‘이동하기(Escape)’ 버튼을 이용해 이동할 위치들을 모아놓은 캐럿 북마크(Caret Bookmarks) 기능을 제공합니다.

 

□ 네비게이터 기능

델파이에서 지능형 검색을 활용해 유닛의 어떤 위치로든 바로 이동할 수 있는 기능입니다. Ctrl + G를 누르고 타이핑하면, 유즈절(uses clause), 메소드, 속성(property), 속성 백업 필드 또는 속성 메소드, 다른 코드 요소르 이동할 수 있습니다. 그리고 델파이와 C++ 모두에서 ‘미니맵’ 기능을 사용할 수 있습니다. 이 기능은 코드 미니어쳐 버전을 보여주는 사이드 패널입니다.

 

□ 선택된 화면 모습의 변화

제목 표시줄이 더 커져 메뉴명을 한 눈에 파악할 수 있고 클릭이나 이동이 더 쉬워졌습니다. ‘프로젝트’ 화면의 툴 바를 한 줄로 정리했습니다. 화면에 보이지 않는 메뉴들은 드롭다운 형식으로 표시해 이전과 동일한 기능을 사용할 수 있습니다. 전체적인 화면 너비와 높이가 넓어져 메뉴 파악이 더욱 쉬워졌습니다.

 

□ 데스크탑 레이아웃, 테마, IDE 인사이트 컨트롤

다른 도구들과 마찬가지로 도구 모음에 위치해있던 컨트롤들이 10.3 버전부터는 제목 표시줄로 위치가 이동했습니다. 

 

□ 코드 에디터 탭

탭 메뉴명을 더 구분하기 쉽도록 바뀌었습니다. 탭 사이즈를 좀 더 크게 만들어 클릭하기 쉬워졌습니다. 각 탭은 X 버튼을 클릭해 닫을 수 있습니다. 

 

□ 선택된 메뉴를 명확하게 표시

클릭한 항목이 포함된 메인 메뉴를 진한 파란색으로 나타내 클릭된 영역을 확실하게 알아볼 수 있습니다. 

 

□ VCL 디자이너

클사용되지 않는 상당(top), 좌측(left)의 크기 조절을 위한 드래그 버튼이 사라졌습니다. 이전에는 7×7 px 사이즈의 사각형을 클릭해 크기를 조정해야 했지만, 이 크기도 더 커졌습니다. 드래그 바는 다른 VCL 컨트롤과 마찬가지로 마우스오버에 반응합니다.

 

□ 새로운 밝은 테마와 어두운 테마

밝은 테마(Light Theme)

10.3의 밝은 테마가 바뀌었습니다. 다양한 파란색 음영을 사용했으며, 회색을 주로 사용했던 이전 버전들과 달리 쾌적한 시각 효과를 제공합니다.

 

 

 

 

 

 

 

어두운 테마(Dark Theme)

10.2.2 버전에서 처음 선보였던 어두운 테마에도 변화가 있습니다. 기존과 비슷한 색상을 사용하지만 새로운 밝은 테마에서 아이디어를 얻어 색상에 변화가 있었고 이를 통해 눈의 피로도를 줄여주고 장시간 사용하기 좋습니다. 

VCL 업데이트

10.3 리오는 High DPI를 지원하는 이미지 리스트가 추가되어, 컨트롤 내의 이미지들을 다양한 해상도로 더욱 선명하게 표현할 수 있게 되었습니다.

 

□ VCL용 새로운 스타일 10종 지원

새로운 스타일들을 활용해 애플리케이션 룩앤필을 빠르게 업데이트 할 수 있습니다. 제공되는 스타일들을 원하는대로 바꾸어 사용할 수도 있습니다. 10.3.1에서는 새로운 스타일이 총 15 종류가 제공되는데, 그 중 5가지는 FMX(파이어몽키)용이고 10가지는 VCL용입니다. FMX 스타일은 윈도우, 맥OS, 안드로이드, iOS 모두에서 활용할 수 있는 멀티-디바이스 스타일이고, VCL 스타일은 윈도우에서 활용 가능합니다. 그리고 비트맵 스타일 디자이너 템플릿도 포함되어 있습니다.

새로운 스타일들은 IDE의 겟잇 패키지 매니저(GetIt Package Manager)를 이용해 다운로드 받아 사용할 수 있습니다.

새롭게 추가된 10 종류의 VCL 스타일들:

  • VCL Style – Calypso
  • VCL Style – Flat UI Light
  • VCL Style – Material Oxford Blue
  • VCL Style – Puerto Rico
  • VCL Style – Stellar
  • VCL Style – Wedgewood Light
  • VCL Style – Windows 10 – Black Pearl
  • VCL Style – Windows 10 – Blue Whale
  • VCL Style – Windows 10 – Clear Day
  • VCL Style – Windows 10 – Malibu

 

□ High DPI 이미지 리스트 지원

High DPI(일명 HiDPI)는 디스플레이에 몇 배 더 많아진 픽셀 수 만큼 몇 배로 더 선명하게 보여주는 표시방식입니다. 고해상도 모니터 출시에 따라 윈도우와 실행되는 애플리케이션의 해상도 배율 설정이 이슈가 될 수 있습니다. RAD스튜디오는 이미 10 시애틀(2015년 출시) 버전 부터 발빠르게 이를 지원하고 있습니다.

10.3 리오에서는 버튼, 툴바, 팝업메뉴 등에 포함되는 이미지를 담는 이미지 리스트에 High DPI가 적용되어 UI컨트롤, 글자 등에 더블어 이미지도 높은 해상도록 선명하게 표현하는 기술이 추가되었습니다.

 

□ TImageCollection

TImageCollection 컨포넌트는 이미지 목록별로 다양한 해상도의 이미지를 등록할 수 있는 컴포넌트입니다. TImageCollection Editor를 통해 다양한 해상도의 이미지를 등록/편집/삭제할 수 있습니다. 

 

□ TVirtualImageList

탭이미지 컬렉션(TImageCollection)에 등록된 다중해상도 이미지를 이미지 리스트로 제공하기 위해 TVirtualImageList 컴포넌트를 사용합니다. TVirtualImageList는 TCustomImageList를 상속받아 구현되었으며, 응용 프로그램이 구동되는 윈도우의 디스플레이 배율에 맞게 이미지 컬렉션의 이미지를 제공하는 역할을 합니다. 

 

□ High DPI가 적용된 이미지 리스트

위 그림은 각각 TImageList와 TVirtualImageList (+TImageCollection)을 적용한 툴바(TToolbar) 화면입니다. 100%, 150%, 225% 배율 적용 시 배율에 따라 적절한 해상도의 이미지로 선명하게 표현된 것을 확인할 수 있습니다. 

RTL 업데이트

10.3 리오는 RTL 측면에서 JSON 및 HTTP에 대한 표준 호환성 향상 등 상당한 성능 향상이 있습니다.

 

□ 데이터 컬렉션(Data Structure) 증가 정책 변경

여러가지 데이터 컬렉션(TStringList, TList, TList<T>, TQueue<T>, TSTack<T>)는 데이터가 가득차 확장이 필요하면 이전보다 2배의 크기로 크기를 증가했습니다. 이제 좀 더 유연하게 성장하도록 증가 정책이 변경되었습니다.

새로운 증가 정책은 공유 전역 함수(System.pas, GrowCollection)에 구현되며, SetGrowCollectionFunc 함수를 통해 사용자 정의 할 수 있습니다.

 

□ TStringBuilder 변경

성능 향상을 위해 일부 변경되었습니다. 메모리 증가 정책과 유사한 변경 및 중복 코드 제거 등의 전반적인 정리등을 진행했습니다.

TStringBuilder 열거형이 최적화 되었습니다. 

 

□ JSON 개선

정확성과 성능을 위해 JSON  처리 및 분석 향상이 크게 진행됐습니다

 

□ 기타 RTL 변경

10.3 이전에는 디버그 정보를 활성화 하면 컴파일러 최적화가 비활성화 되었습니다. 업데이트된 Win32 컴파일러에서 이제 최적화된 빌드를 디버깅할 수 있습니다. 

 

□ 앱 테더링 긴 문자열 전송

앱테더링에 사용되는 TTetheringAppProfile 클래스의 SendString / AsString 작업의 현재 1,400문자 길이에 제한되어 있었습니다. 10.3 에서는 다음 변경 사항 및 추가 기능을 통해 호환성을 유지하며 긴 문자열 처리가 가능하게 되었습니다.

  • 새로 추가된 TTetheringAppProfile의 SendLongString 메소드는 문자열과 스트림을 사용합니다.
  • TResourceValue.AsString은 받은 스트림에서 문자열을 반환합니다. 만약 없다면 반은 문자열 값을 반환합니다. 이는 일반 문자열과 긴 문자열에 대한 대응입니다.

문자열 길이가 1.3 KB보다 작은 경우 TTetheringAppProfile.SendString을 사용하고, 더 길다면 TTetheringAppProfile.SendLongString을 사용하기 바랍니다. 

 

□ TMemIniFile 최적화

RAD 스튜디오 10.3 리오는 TMemIniFile 구현이 최적화 되었습니다. TMemIniFile 읽기와 생성(constructing)이 10~25배 빨라지고 메모리 사용량도 절반으로 감소했습니다. TMemIniFile 작업도 향상되어 이전 구현에 비해 50~100 고속화 되었습니다.

또한 10.3에서는 다음 두가지 오버로드 생성자가 추가되고 스트림에서 TMemIniFile을 가져올 수 있습니다.

  • TMemIniFile.Create(Stream)
  • TMemIniFile.Create(Stream, UseLocale)

언어와 컴파일러 업데이트

10.3 리오는 특히 델파이와 C++빌더 모두 언어에서 큰 변화가 있습니다. 델파이는 전통적인 방식을 뛰어넘는 인라인 변수 선언 지원과 더불어 타입 추론을 지원하고 C++빌더는 19년 현재 최신 표준인 C++17을 공식 지원합니다.

 

□ 인라인 변수 선언

델파이 언어가 10.3 버전부터 로컬 변수 선언에 있어 훨씬 더 융통적으로 변합니다. 매우 핵심적인 기능 변화라고 볼 수 있습니다. 이번 업데이트는 본래 파스칼(Pascal) 언어의 핵심 개념을 깨는 변화이기는 합니다. 하지만 이 변화는 많은 장점을 제공하며, 이를 통해 불필요한 코드를 줄일 수 있습니다..

 

□ 타입 추론

인라인으로 선언 된 변수는 타입 추론의 장점이 있습니다. 직접 할당하는 인라인 변수는 형식을 지정할 필요가 없습니다. 이것은 거기에 대입 된 값에서 형식을 유추 할 수 있기 때문입니다.

 

□ Clang 업그레이드: C++17 지원

C++빌더 및 RAD 스튜디오 10.3은 윈도우 32비트용 C++17을 지원하는 업데이트된 Clang 확장 컴파일러가 도입되었습니다. 점진적인 컴파일러 업그레이드의 일환으로, 최신 C++ 언어 기능을 사용해 더욱 강력하고 간결한 코드를 작성하고, 써드파티 C++ 라이브러리를 사용해 더 강력한 애플리케이션을 구축할 수 있습니다.

 

□ Win64에서 연산 성능 향상

많은 C ++ 수학 함수가 새롭게 구현되었습니다. 이러한 방법은 이전 버전에 비해 평균적으로 약 2 배 빨라졌습니다. 

 

□ C++ 코드 보완 개선

C++ Win32 코드 보완 업데이트로 확장된 Clang 기반의 C++ 컴파일러를 사용합니다. 이로써 이전보다 훨씬 빠른 C++ 코드 보완이 가능합니다.

 

□ C++ 오류 인사이트

오류 인사이트(오류 항목 아래에 빨간색 밑줄을 그어 편집기에서 코드의 문제를 미리 확인할 수 있는 기능)가 C++빌더에서도 가능해졌습니다. 새로운 Win32용 Clang 확장 컴파일러를 사용하는 경우 이 기능이 제공됩니다.

FMX(파이어몽키) 업데이트

□ iOS12, iPhone X 시리즈 디바이스 지원

10.3.1 버전부터 최신 iOS와 아이폰 디바이스들을 지원합니다. 이는 2019년 3월부터 시행될 애플(Apple)사의 앱스토어 요구 사항에 대응하기 위해서 꼭 필요한 지원 기능입니다. 새로운 애플사의 요구사항은 ‘앱은 iOS 12.1 SDK로 구축될 것’, ‘아이폰XS Max, 아이패드 Pro를 완벽 지원할 것’ 두 가지 입니다.

이번에 업데이트된 내용은 다음과 같습니다.

  • 새 이미지 크기를 보여주는 Info.plist 업데이트
  • IDE에서 앱 아이콘, 스플래시 화면 크기 추가 지원 (아이폰/아이패드)
  • 아이패드 Pro에 대한 네이티브 해상도 지원

 

 

□ FMX용 새로운 스타일 5종 지원

새로운 스타일들을 활용해 애플리케이션 룩앤필을 빠르게 업데이트 할 수 있습니다. 제공되는 스타일들을 원하는대로 바꾸어 사용할 수도 있습니다. 10.3.1에서는 새로운 스타일이 총 15 종류가 제공되는데, 그 중 5가지는 FMX(파이어몽키)용이고 10가지는 VCL용입니다. FMX 스타일은 윈도우, 맥OS, 안드로이드, iOS 모두에서 활용할 수 있는 멀티-디바이스 스타일이고, VCL 스타일은 윈도우에서 활용 가능합니다. 그리고 비트맵 스타일 디자이너 템플릿도 포함되어 있습니다.

새로운 스타일들은 IDE의 겟잇 패키지 매니저(GetIt Package Manager)를 이용해 다운로드 받아 사용할 수 있습니다.

새롭게 추가된 5 종류의 FMX 스타일들:

  • FMX Style – Calypso
  • FMX Style – Material Oxford Blue
  • FMX Style – Puerto Rico
  • FMX Style – Stellar
  • FMX Style – Wedgewood Light

 

□ 안드로이드 API 레벨 26이상 지원

RAD 스튜디오 10.3 리오는 안드로이드 API 레벨 26을 공식 지원합니다.

구글은 보안과 성능에 최적화된 최신 API 기반으로 앱을 만들고, 사용자가 혜택을 누릴 수 있도록, 플레이 스토어에 등록 시 안드로이드 레벨 26 이상을 요구하도록 정책을 변경했습니다.(신규앱 등록 2018년 8월 부터, 기존앱 업데이트 2018년 11월 부터).

RAD 스튜디오 10.3 리오는 최신 SDK와 NDK를 지원하고, 매니페스트에 적절한 API레벨을 설정할 수 있도록 업데이트 되었습니다.

또한 최신 API에서 변경된 권한 모델등을 제공하도록 업데이트 되었습니다.

 

□ 새로운 안드로이드 런타임 권한 모델 지원

     

          [기존 권한 요청 방식]                  [새로운 권한 요청 방식]

안드로이드 API의 최신버전은 런타임 시 권한을 요청하는 매커니즘으로 변경되었습니다.

기존의 권한 모델은 설치 시 전체 권한을 승인하는 방식이었습니다. 새로운 권한 모델은 기능 사용 시 개별 권한을 묻는 방식으로, 사용자는 기능 별 허용 및 거부가 가능해졌습니다.

위 변경에 따라 10.3 리오에서는 사용 권한을 요청하는 메소드가 추가되었고, 그 결과를 콜백 메소드로 받아 기능을 수행할 수 있도록 업데이트 되었습니다. 

 

□ 안드로이드 Z-Order

XE7 버전에서 iOS용 ControlType 속성이 처음 적용되었습니다. 그리고 10 시애틀 버전에서는 이 속성이 윈도우용까지 확장되었습니다. 플랫폼 설정을 변환하면 파이어몽키 컨트롤이 런타임 시 플랫폼 네이티브 컨트롤로 전환됩니다.

10.3 RIO에서는 ControlType 속성이 안드로이드 용으로까지 확장됩니다. 그리고 이로써 얻게될 두 가지 중요한 이점을 소개하고자 합니다: 더욱 네이티브한 컨트롤과 수정된 Z-Order가 그것입니다. 

 

□ 다양한 안드로이드 네이티브 컨트롤

        [TSwitch 컴포넌트]

플랫폼에서 항상 네이티브하게 작동되는 컨트롤들은 TWebBrowserTMediaPlayerTBannerAdTMapView가 있습니다 (이 컨트롤들은 파이어몽키(FMX)가 아닌 기존 안드로이드 OS에서 렌더링 됩니다). 10.3 RIO 버전부터 필요에 따라 플랫폼에서 네이티브로 작동하는 새로운 4가지 컨트롤들을 선보입니다. 

RAD서버 업데이트

10.3 리오는 RAD 서버의 성능향상과 엔드 포인트 연동을 더 쉽고 유연하게 작성할 수 있는 특성등이 추가되었습니다.

 

□ 재설계한 RAD서버 콘솔 UI

RAD서버 콘솔 UI가 변경되었습니다. 이제 RAD서버 API 분석을 한 눈에 확인할 수 있고, Ext JS 프레임워크로 마이그레이션 할 수도 있습니다. 또한 RAD서버 푸시 알림이 더 많은 디바이스에 지원됩니다. 추가 분석 데이터에 대한 지원도 제공됩니다. 이 기능은 IDE의 겟잇 패키지 매니저(GetIt Package Manager)를 통해 다운로드 받아 사용할 수 있습니다.

 

□ 엔드포인트 메소드와 Content-Type, Accept 연동 특성 추가

커스텀 리소스에 요청 시 URL과 HTTP 메소드에만 의존하지 않고, HTTP 해더의 Accept 및 Cotnet-Type에 따라 엔드 포인트 메소드를 연결하는 특성이 추가되었습니다. 이제 동일한 URL 및 HTTP 메소드라도 Accept 및 Content-Type에 따라 다른 동작을 구현할 수 있습니다.

  • EndpointProduce : GET 메소드의 엔드 포인트에 추가할 수 있습니다. HTTP 해더의 Accept 항목 값과 일치하는 MIME 타입/파일 확장자를 파라메터로 지정합니다.
  • EndpointConsume : PUT / POST / PATCH 메소드의 엔드 포인트에 추가할 수 있습니다. HTTP 해더의 Content-Type 항목 값과 일치하는 MIME 타입/파일 확장자를 파라메터로 지정합니다.

 

□ 커스텀 메소드와 HTTP 메소드 연결 특성 추가

RAD 서버의 이전 버전에서는 HTTP 메소드(GET, POST 등)의 엔드 포인트 메소드 이름과 매핑되었습니다.

이제 위 방식 외에도 다른이름의 메소드를 엔드 포인트 메소드로 매핑할 수 있는 EndpointMethod 특성이 추가되었습니다. 

 

□ 요청 처리를 클래스 또는 컴포넌트로 위임

RAD 서버의 사용자 리소스에 발생한 요청을 필드로 지정한 다른 자원 모듈(클래스 / 컴포넌트)로 위임하는 기능이 추가되었습니다.

위임받는 클래스는 IEMSEndpointPublisher 인터페이스를 구현해야 합니다. 

 

□ JSON 처리를 위한 헬퍼 컴포넌트 추가

컴포넌트에 요청 처리를 위임하는 새로운 기능을 이용해 RAD 스튜디오 10.3 리오에서 JSON 처리를 단순화 하는 새로운 컴포넌트가 추가되었습니다.

  • TEMSFileResource: 경로 및 파일이름 속성에 지정된 파일로 요청 처리
  • TEMDDataSetResource: DataSet 속성에 설정된 데이터셋의 데이터를 JSON으로 처리, 페이징 파라메터 지원