Agenda 10:00 11:45 Wprowadzenie do RAD Studio XE2 64-bity Nowości VCL-a i RTL-a DataSnap i Cloud Aplikacje mobilne w RAD Studio XE2 12:15 14:00 FireMonkey (Windows & OS X) Live Bindings Podsumowanie
Tylko dla Delphi
Architektura 64-bitowa 64-bitowa przestrzeo adresowa Instrukcje bazowe assemblera takie same Nowy prefiks REX (instrukcje 64 bitowe) Względne adresowanie RIP Skoki względne +/- 2GB 16 bajtowe wyrównanie stosu
Co to wszystko znaczy dla mnie?
Bez paniki!
64-bitowe Delphi Ten sam RTL SysUtils, Classes, Generics.Collections, itd. Ten sam VCL Forms, Graphics, Controls, Menus, itd. Mapowanie Windows API 64-bitowy Windows.pas
Typy całkowite Typ 32-bity 64-bity ShortInt, Byte 1 bajt SmallInt, Word 2 Integer, Cardinal 4 LongInt, LongWord 4 Int64, UInt64 8 NativeInt, NativeUInt 4 8
Typy wskaźnikowe String, AnsiString, WideString, UnicodeString Class instance, Class reference Interface Procedure pointer Dynamic array PAnsiChar, PWideChar, PChar
Uwaga na! Rzutowanie! SizeOf(Pointer) <> SizeOf(Integer) Uchwyty Rozmiar wskaźnika (8 bajtów) (HWND, HDC, etc..)
Uwaga na! Cały kod procesu Biblioteki BPL, DLL, ActiveX Biblioteki Delphi Dwie wersje 32 i 64- bitowa IDE 32 bitowe Projektant korzysta z bibliotek 32-bitowych
Uwaga na! Tylko całe procedury Nie można wplatad bloków asm w kod Delphi owej procedury Nowy zunifikowany sposób wywołania procedur Stos Wyrównanie do 16 bajtów przy każdym wywołaniu
Uwaga na! Odpowiednie funkcje GetWindowLong GetWindowLongPtr Windows.pas (robi to za nas) wynik musi byd rzutowany na LONG_PTR (nie na Integer) Obsługa komunikatów W SendMessage konieczne jest rzutowanie parametrów za pomocą WPARAM, LPARAM i LRESULT
Delphi 64-bitowe inne uwagi (1) Jedna i tylko jedna konwencja wywołania procedur register, pascal, cdecl, stdcall are ignored. safecall jest wciąż specjalny Uwaga na starą arytmetykę wskaźnikową MyPtr := PByte(P) + 10; To działa w 32 i 64 bitach:
Delphi 64-bitowe inne uwagi (2) Zmiany wewnętrzne VCL-a Np. w typie TList atrybut FList jest teraz typu TPointerList (a nie PPointerList) Uwaga na konwersję z 32-bit do 64-bit. Własnośd Tag Jest teraz NativeInt Exception unwinding W kodzie Delphi wszystko OK W assemblerze źle obsłużony może powodowad błędy
Delphi 64-bitowe inne uwagi (3) SHL / SHR Wartości 32 bitowe przewijają się w przestrzeni 32 bitowej, 64-bitowe w 64-bitowej Nie ma typu Extended Dla kompatybilności użyj TExtendedRec80 Odczytywanie danych z plików binarnych
Predefiniowane zmienne kompilatora Kategoria Identifier dcc32 dcc64 Kompilator DCC defined defined VER230 defined defined Platforma MSWINDOWS defined defined WIN32 defined not defined WIN64 not defined defined CPU CPU386 defined not defined CPUX86 defined not defined CPUX64 not defined defined Dostępnośd ASSEMBLER defined defined UNICODE defined defined
Co mogę zrobid dzisiaj? (1) Sprawdź rzutowania wskaźników Integer<->Pointer Integer<->instance Skontroluj czy będą działad poprawnie przy 8-bajtach Sprawdź zewnętrzne biblioteki Biblioteki obrazów/ikonek Biblioteki do komunikacji z urządzeniami zewnętrznymi Kontrolki ActiveX Biblioteki komponentów
Co mogę zrobid dzisiaj? (2) Migracja z Assemblera do Pascala Rozpatrz zyski i straty Zamieo wplatany assembler na procedury maszynowe Kod Delphi międzyplatformowy Pomyśl o innych procesorach (np. ARM) Optymalizacja algorytmów a przenośnośd Przewijanie bitowe Sprawdź wszystkie wywołania SHL/SHR Upewnij się, że są wykonywane w odpowiedniej przestrzeni
RAD Studio bezpieczna inwestycja Aplikacja VCL i RTL Windows 32 API Windows 64 API
Demo Grids.Vcl.pas RAD Studio: źródła VCL i biblioteki skompilowane LIB
64-bitowy kompilator C++
Co nowego w C++? FireMonkey Live Bindings DataSnap Rozszerzone RTTI Audyty i metryki
Style VCL
Od takich formatek
Do takich!
Nowe style TStyleEngine Przetwarza komunikaty kontrolek TStyleManager Ładowanie i rejestracja stylu (z pliku lub z zasobów) Wybór stylu oraz silnika obsługi stylów Modyfikacja i dostosowanie
Project Options Appearance
Typowe użycie Moduły Uses Vcl.Styles, Vcl.Themes; Zmiana stylu TStyleManager.SetStyle( Ruby Red Graphite );
VCL Style Designer
Demo IBMastApp projekt demo z pakietu RAD Studio Marine Adventures Order Entry
RTL
Co nowego w RTL-u? TOSVersion Informacje o systemie operacyjnym Architektura (32/64), Platforma (Win/Mac) Wersja i Service Pack TFormatSettings Zebranie systemowych ustawieo formatowania TZipFile Międzyplatformowa obsługa kompresji ZIP
Co nowego w RTL-u? Obsługa SymLinks class function TFile.CreateSymLink(const Link, Target: string): Boolean; TLoginCredentialService Rozbudowany, niezależny od platformy system poświadczeo autentykacji z obsługą callback-ów Zmienione: TPoint, TRect, TSize Nowe: TPointF, TRectF, TSizeF
RAD Cloud
Czym jest Cloud API? Pozwala wykorzystad usługi oferowane przez Amazon i Microsoft
Wspierane cloud API Magazyn Azure Blobs Service Amazon S3 Tabele Azure Table Service SimpleDB Kolejki Azure Queue Service Amazon SQS
Wdrażaj w Chmurze Amazon EC2 Microsoft Azure wymagany: Platform Assistant
Amazon przykład użycia Dane SimpleDB - tabele S3 - wiadomości Przetwarzanie EC2 Windows Server Host
DataSnap XE2
Rozszerzenia DataSnap XE2 Informacje o serwerach proxy Informacje o kanale Adres IP, protokół, nazwa aplikacja HTTPS dla serwerów stand-alone Zarządzanie sesją w połączeniach TCP/IP Ulepszone Callbacks Menedżer, wygodniejsza obsługa po stronie klienta Modyfikowanie komunikatu JSON i inne
Monitorowanie i kontrola połączeo DataSnap
Co możesz zrobid? Przejąd kontrolę nad połączeniem klienta Monitorowad i zamykad połączenia Ograniczad liczbę żądao w ramach połączenia Zwiększyd bezpieczeostwo oraz wiele innych
Wykrywanie przypadkowych rozłączeo Event.Channel.EnableKeepAlive(10000); Wysyłanie pakietu keep-alive Sprawdzenie klienta
Jak używad EnableKeepAlive? Event.Channel.EnableKeepAlive(10000, 100); Ile razy ma byd powtarzane keep-alive systemowo: Win 7 robi to 10 razy
Zamykanie połączeo klienta Zamknięcie połączenia // Get the associated Channel for the given connection // and close it if FConnections.TryGetValue(Connection, Channel) then Channel.Close;
Demo DataSnapMonitor przykładowa aplikacja z pakietu RAD Studio
DataSnap Mobile Connectors
Konektory mobilne dla DataSnap ios Objective C Android Java BlackBerry Java Windows Phone 7 C#, Prism
Dodaj konektory mobilne
Proxy Dispatcher Proxy Dispatcher Współpracuje z ProxyGenerator MetaDataProvider Generuje proxy Obsługuje HTTP (download)
Pobieranie konektorów http://host:port/proxy/[device].zip Java Android konektor: http://host:port/proxy/java_android.zip Win32ProxyDownloader.exe
Demo TweetApp DataSnap Mobile Connectors
Company Tweet App
Dwie możliwości RadPHP XE2 Android, ios, JQuery Mobile PhoneGap Delphi XE2 ios Aplikacje FireMonkey
Aplikacje mobilne w RadPHP
Komponenty mobilne w RADPHP XE2 New Items Mobile Application
JQuery Mobile Technologia HTML / CSS / JavaScript Wygląd i kontrolki zoptymalizowane do urządzeo dotykowych Platformy ios Android BlackBerry Windows Phone Symbian, Bada, palm WebOS,
PhoneGap
Kreator PhoneGap Tools Wizard for PhoneGap
Mobilne RadPHP XE2 JQuery Mobile PhoneGap Demo DataSnap Mobile Connectors ios Objective C Android Java BlackBerry Java Windows Phone 7 C#, Delphi Prism Demo FireMonkey ios FireMonkey Project XCode + FPC Demo
Demo RadPHP kontrolki Mobile Wdrożenie aplikacji na PhoneGap
FireMonkey ios
Kroki Windows 1. Projekt FireMonkey ios (HD lub 3D) 2. Programowanie i testowanie w Delphi XE2 3. Eksport projektu na Mac-a Mac 4. Budowa projektu w Xcode (FreePascal) 5. Uruchomienie projektu na emulatorze lub na urządzeniu ios
Proces tworzenia RAD Studio Xcode Projekt FireMonkey Delphi ios HD / ios 3D dpr2xcode Projekt Xcode Pascal + Bilioteka FireMonkey
Wymagania Apple Mac System: Snow Leopard / Lion Xcode Xcode - download from App Store (or ios Developer Pages) (3.2.5, 3.2.6, and 4.1.1 verified working) ios SDK requires subscription to Apple Developer Program (4.2, 4.3 verified working) FreePascal Installed official FreePascal 2.4.4 binary - http://www.freepascal.org/download.var - Required to build FPC 2.5.1
FireMonkey ios Instalacja: FireMonkey-iOS for RAD Studio XE2
FireMonkey ios - Demo