Konfiguracja sprzętu i oprogramowania

Opis komponentu Firemonkey. Co to jest ognista małpa? LiveBinding umożliwia łączenie dowolnego typu danych lub informacji z dowolnym interfejsem użytkownika lub obiektami graficznymi

Zapewne wiesz, że Embarcadero aktywnie promuje swoją nową wizję stworzenia wieloplatformowej mazi - FireMonkey ( nazywają to frameworkiem, ale jak na obecny stan brzmi to zbyt fajnie). W Runecie ogłaszany jest jeden konkurs po drugim, odbywają się webinaria i choć jakość tych ostatnich pozostawia wiele do życzenia, aktywność cieszy. Teraz właściwie do tematu. W ramach ostatniego konkursu zaproponowano opracowanie aplikacji do nauki. A wczoraj pojawiła się kolejna praca autorstwa Jewgienija Chmela ( Nie wiem, czy ta nazwa jest odmieniona, czy nie.). W przeciwieństwie do wcześniej widzianych, bezpretensjonalnych „jednoczęściówek”, tutaj podjęto próbę pociągnięcia małpy za wszystkie kończyny: stylizacja, 3D, efekty cieniowania ( Ewangeliści Embarcadero uwielbiają rozmawiać o grafice akcelerowanej przez GPU :))). Zobaczmy, co z tego wyszło. Dla tych, którzy nie oglądali webinarów, zrobię małą dygresję. Na jednym z webinariów ewangelista Embarcadero Wsiewołod Leonow opowiedział sentymentalną historię o tym, jak musiał „zrestartować komputer, a konkretnie ciężko” (jest to cytat), ze względu na fakt, że Silverlight SDK i emulator Windows Phone 7 „ nie działa” (to jest cytat) na swoim komputerze. nie podobała im się karta wideo lub ustawienia GPU. Jednak aplikacje opracowane przy użyciu FireMokey, kontynuuje Wsiewołod, są całkowicie niewymagające sprzęt komputerowy. Zobaczmy, jak nas okłamywał. Bezstronnym świadkiem będzie Process Explorer v15.05 autorstwa Marka Rusinovicha. Pobierz aplikację Eugene'a i uruchom ( Nie udostępniam zrzutów ekranu aplikacji Jewgienija, są one pod linkiem do jego pracy. Zwróć uwagę na rozmyte czcionki).

Uruchomiono aplikację. Spójrzmy na konsumpcję:

Nieskromny, ale można mu wybaczyć ” Zaawansowana technologia”. Przejdź do sekcji „Lekcje” i wybierz „Lekcja 5”. Rozpoczyna się przygotowanie do etapu. Ten proces jest długotrwały zajęło mi to trochę ponad minutę, na czterordzeniowym procesorze Phenom II 3,3 GHz), proszę być cierpliwym. Scena została zbudowana. Spójrzmy na konsumpcję:

Małpa była dobrze odżywiona. Bardzo dobrze. Teraz spróbuj najechać myszą na przyciski wyboru odpowiedzi. Uczucie, że GUI reaguje, jest bardzo powolne, prawda? Spójrz na wykres wykorzystania procesora ( Mam na myśli to, że musisz sam spróbować na swoim komputerze) – w tych momentach jego obciążenie zbliża się do 100% ( Miałem ~21,5% dla procesora czterordzeniowego, co odpowiada 86% dla procesora jednordzeniowego). Ale ktoś powiedział nam o grafice akcelerowanej przez GPU. Dobra, przejdźmy dalej. Odpowiadamy na wszystkie pytania lekcji. Spójrzmy na konsumpcję:

Oczy nie są zaokrąglone? Spójrzmy teraz dla porównania, ile strzelanka FarCry 3D zużywa przy aktywnej rozgrywce ( poziom nazywa się Fabryka, jeśli ktoś nagle się zainteresuje) działa w trybie pełnoekranowym 1440x900:

Wyciągnij własne wnioski.

Wydany we wrześniu ubiegłego roku Delphi XE2 zawiera rekordową liczbę innowacji.
Krótkie przeglądy Funkcje Delphi XE2 został już opublikowany na Habré. Ale oczywiście platforma FireMonkey stała się najbardziej uderzającą innowacją i tutaj chciałbym poświęcić jej trochę uwagi.
Zrobiłem mały wybór linków do materiałów, które, mam nadzieję, pomogą Ci uzyskać mniej lub bardziej adekwatne wyobrażenie o tej platformie. Ale najpierw dla tych, którzy nie wiedzą, pokrótce opiszę, czym jest FireMonkey.
Embarcadero Technologies pozycjonuje FireMonkey jako platformę do tworzenia w pełni funkcjonalnych aplikacji biznesowych dla systemów Windows, Mac i iOS. Jednocześnie platforma ta jest natywna dla każdego z systemów operacyjnych, tj. podczas uruchamiania aplikacji utworzonej za pomocą FireMonkey nie są używane żadne dodatkowe dodatki.
FireMonkey łączy się bezpośrednio z natywną (pod kątem systemu operacyjnego) biblioteką graficzną, taką jak OpenGL lub DirectX. Tym samym proponuje się najlepsze rozwiązanie z punktu widzenia GPU.
Rdzeniem architektury FireMonkey jest potężna biblioteka zajęcia (w tym komponenty wizualne).
Platforma docelowa jest wybierana podczas kompilacji.
Pierwsza wersja FireMonkey obsługuje tylko Win32, Win64, MacOSX i iOS, Embarcadero planuje przenieść ją na kilka innych platform w przyszłości.

Co należy wziąć pod uwagę?

Pomimo tego, że platforma FireMonkey zapewnia rozbudowane narzędzia do tworzenia aplikacji 3D, nie można jej uznać za silnik gier. FireMonkey jest pozycjonowany właśnie jako platforma do tworzenia aplikacji biznesowych.
Teraz produkt jest w początkowej fazie swojej ewolucji. I wiele funkcjonalność FireMonkey przechodzi zmiany, zarówno jakościowe, jak i ilościowe.

Mam nadzieję, że poniższe linki pomogą Ci zrozumieć główne cechy nowej platformy.
Oficjalna strona produktu na stronie Embarcadero (rosyjski)

Wśród materiałów anglojęzycznych chciałbym wyróżnić serię (angielski)

Co oglądać?

Jeśli chodzi o najnowszą wersję Delphi, jest więcej niż kiedykolwiek materiału wideo poświęconego funkcjom produktu i metodom pracy z nim. Zarówno oficjalne, od Embarcadero, jak i od niezależnych deweloperów. Na YouTube jest wiele filmów o FireMonkey, możesz po prostu skorzystać z wyszukiwania. Wśród tej obfitości materiału wyróżnię serię trzech filmów autorstwa Marco Cantu - landing page RAD in Action., nadając moim badaniom wektor użyteczności.

Minęły ponad trzy lata odkąd dział CodeGear odpowiedzialny za tworzenie tak znanych na całym świecie narzędzi jak Delphi, C++Builder i JBuilder oraz Interbase DBMS stał się częścią Embarcadero Technologies, firmy znanej z projektowania i administrowania bazami danych tools., a dwa lata temu dyskutowaliśmy na łamach naszego magazynu, czego można się spodziewać w rozwoju narzędzi, które są tak popularne wśród rosyjskich programistów. Zapytaliśmy Davida Intersimone, wiceprezesa ds. relacji z programistami i głównego ewangelistę Embarcadero Technologies oraz Kirilla Ranneva, szefa przedstawicielstwa Embarcadero Technologies w Rosji. Dla naszych najmłodszych czytelników informujemy, że to daleko od pierwszego wywiadu, jakiego David i Kirill udzielają ComputerPressowi - nasza współpraca trwa już drugą dekadę. I od mniej więcej tyle samo lat cyklicznie publikujemy recenzje narzędzi do zarządzania bazami danych, w których wiele uwagi poświęcamy produktom Embarcadero.

Prasa komputerowa: David, twój oddział jest częścią Embarcadero już od trzech lat. Dwa lata temu byłeś pełen entuzjazmu, że stał się częścią bliskiej Ci firmy celowo i duchowo. Czy w tym czasie coś się zmieniło? Czy Ty i Twoi koledzy odczuwacie ten sam entuzjazm?

Tak, nadal jestem entuzjastycznie nastawiony. Główną zmianą, która nastąpiła od czasu, gdy staliśmy się częścią firmy Embarcadero, jest to, że w rozwój Delphi zainwestowano wiele. Wzrosła liczba pracowników pracujących nad narzędziami programistycznymi, wzrosła liczba technologii, które możemy rozwijać lub w razie potrzeby pozyskać.

Premiera RAD Studio XE 2, którą planujemy zademonstrować w Moskwie, jest największym wydaniem tego produktu o ogromnych możliwościach i duża ilość obsługiwane platformy od pierwszej wersji Delphi, stworzonej dla 16-bitowej wersji Windows i poprzedniego innowacyjnego produktu, który łączył podejście komponentowe i kompilację do kodu natywnego. Teraz wspieramy rozwój nie tylko dla Windows, ale także dla Macintosh, nie wspominając o tworzeniu stron internetowych i tworzeniu aplikacji na urządzenia mobilne, a te aplikacje na różne platformy mogą mieć jeden kod.

Nowa platforma programistyczna, FireMonkey, powstała w wyniku współpracy Embarcadero z niedawno przejętą rosyjską firmą KSDev z siedzibą w Ulan-Ude, producentem komponentów grafiki wektorowej, DirectX i OpenGL, technologii efektów graficznych i komponentów Delphi wykorzystujących GPU z PixelShaderem 2.0. Rok temu nabyliśmy firmę KSDev (patrz ksdev.ru) i rozpoczęliśmy wspólną pracę nad stworzeniem wieloplatformowego narzędzia programistycznego, które obejmuje platformę do tworzenia aplikacji FireMonkey z komponentami dla Delphi i C++ Buider do tworzenia interfejsów użytkownika aplikacji, integracji z bazami danych, przetwarzanie grafiki z wykorzystaniem procesora graficznego oraz integracja z systemem operacyjnym.

Za pomocą FireMonkey możesz stworzyć aplikację, która uruchamia razem CPU i GPU, a następnie używając różnych kompilatorów i bibliotek uruchomieniowych (Run-time Libraries, RTL) możesz skompilować ją dla Windows, Mac OS lub iOS. Zamiast uczyć się programowania z różnymi bibliotekami graficznymi, uczyć się interfejsów API z różnych platform, które mają różne układy współrzędnych i różne możliwości, programiści korzystający z Delphi i C++Builder mogą używać tego samego podejścia do komponentów, wizualnie edytować formularze i łączyć się z bazami danych, przenosząc komponent za pomocą Mysz. To jest zasadniczo nowy sposób tworzenie aplikacji działających na różnych platformach i od tego zależy przyszłość. Jeśli chcesz dodać do swojej aplikacji obsługę innych systemów operacyjnych i platform, nie musisz jej przeprojektowywać i rozwijać - wystarczy ją przekompilować.

Tworzymy nowe kompilatory generujące kod natywny. Dziś dostępne są kompilatory Delphi dla 32-bitowych i 64-bitowych wersji systemu Windows, 32-bitowe wersje systemu Mac OS 10. Pracujemy też nad następną generacją kompilatorów Delphi i C++Builder, które pozwolą tworzyć wysokowydajne natywny kod zarówno dla tych, jak i innych platform, takich jak Android czy Linux i zachować ten sam projekt, te same komponenty, ten sam kod przy użyciu różnych kompilatorów i bibliotek uruchomieniowych.

Jak widać, powodów do entuzjazmu mam wystarczająco dużo. A programiści, których spotykam na całym świecie, wiedzą, że Embarcadero dużo inwestuje w Delphi i C++Builder oraz narzędzia programistyczne PHP.

KP: Jakie postępy poczyniłeś w integracji narzędzi obu firm w ciągu ostatnich dwóch lat? Jakie są plany Embarcadero na przyszłość w tym obszarze?

DI.: W czasie, gdy dział CodeGear stał się częścią Embarcadero, firma ta miała zespoły programistów w Toronto, Monterrey i Rumunii, my byliśmy i nadal jesteśmy w Dolinie Scotts oraz w Rosji, w St. Petersburgu. Embarcadero miał narzędzia programistyczne i administratorów baz danych, CodeGear miał narzędzia do tworzenia aplikacji, ale ci ostatni również używają baz danych. Połączenie spółek to połączenie wiedzy fachowej, wiedzy z zakresu baz danych, optymalizacji kodu, w tym kodu serwerowego. Połączenie zaowocowało również stworzeniem nowego produktu, AppWave, specjalnej technologii umożliwiającej przekształcenie zwykłej aplikacji Windows w coś bardzo łatwego w użyciu (jak aplikacje na iPhone'a lub inne urządzenia). AppWave pozwala nie instalować aplikacji, ale po prostu wybrać ją i uruchomić z przygotowanego serwera przechowywania aplikacji (aplikacji), podczas gdy będzie ona wykonywana na komputerze użytkownika bez wprowadzania zmian w jej rejestrze i obszar systemu system plików. Nawiasem mówiąc, przeglądarka aplikacji AppWave jest napisana w Delphi. Embarcadero wykorzystuje Dephi do własnego rozwoju i naszej wiedzy specjalistycznej w zakresie tworzenia aplikacji.

Aplikacja na iPhone'a (iOS) stworzona przez
korzystanie z platformy FireMonkey

Możesz również skorzystać z integracji naszych narzędzi programistycznych i DB Optimizer, aby zoptymalizować zapytania SQL podczas tworzenia aplikacji. Przekazując kod SQL bezpośrednio do DB Optimizer, możesz go profilować, testować i zwracać zoptymalizowaną wersję z powrotem do środowiska programistycznego. Doświadczenie firmy Embarcadero w zakresie baz danych poprawiło również technologię DataSnap. Dzięki programistom z Toronto zdobyliśmy dużą wiedzę na temat architektury systemów wielowarstwowych i baz danych. Obecnie w obu firmach mamy wspólne doświadczenie w kodzie serwerów i procedurach składowanych. Posiadamy narzędzia takie jak RapidSQL i DB Change Manager oraz środowiska programistyczne, które ułatwiają tworzenie kodu po stronie serwera, takie jak technologie Code Insight i Code Completion, które umożliwiły tworzenie wglądu SQL i technologii uzupełniania SQL. Nasze wspólne podejście do tworzenia kodu klienta i serwera, nasza wspólna filozofia, pozwala nam dzielić wspólne cechy między narzędziami do zarządzania bazami danych a narzędziami do tworzenia aplikacji.

Kirył Ranniew: Chcę dodać coś ważnego. Z komercyjnego punktu widzenia bardzo ważne jest, jak dostarczamy nasze narzędzia. Na przykład nowa wersja RAD Studio XE 2 Ultimate zawiera pełny zestaw narzędzi DB Power Studio. Jest to bardzo potężny zestaw narzędzi, w tym środowisko tworzenia zapytań RapidSQL, narzędzie do zarządzania zmianami DB Change Manager i narzędzie do optymalizacji zapytań DB Optimizer, które pozwalają na wykonanie ważnej części procesu rozwoju i wdrażania, zarządzanie zmianami w model danych, baza danych, kod itp. To bardzo dobre i poprawne połączenie technologii.

DI.: Ale w razie potrzeby programiści mogą używać Subversion do kontroli wersji. kod źródłowy oraz DB Change Manager do wersjonowania metadanych. Możesz użyć profilowania kodu i DB Optimizer do optymalizacji kodu serwera, RapidSQL do tworzenia i debugowania kodu serwera, a nasze środowiska programistyczne do tworzenia i debugowania aplikacji. To połączenie technologii w RAD Studio XE Ultimate Edition pokazuje podobieństwa między modelami tworzenia baz danych i aplikacji. Większość programistów budujących aplikacje biznesowe za pomocą Delphi i C++Builder pracuje z bazami danych i potrzebuje tych narzędzi, a RAD Studio XE Ultimate Edition to świetne połączenie dla tych programistów.

KP: Współczesny użytkownik nie jest już użytkownikiem jednego Platformy Windows. Aplikujemy urządzenia mobilne, iPhone, iPad, urządzenia z systemem Android. Oznacza to, że programiści muszą zacząć celować w różne platformy bez znaczącego wzrostu inwestycji w szkolenia – czyli potrzebne są uniwersalne narzędzia. Oczywiście nierealne jest oczekiwanie pojawienia się uniwersalnych narzędzi od producentów platform, a w tej kwestii możemy polegać tylko na niezależnych producentach narzędzi. Gdzie możemy polegać na Embarcadero?

DI.: W obszarze obsługi platform mamy jeszcze dużo do zrobienia. Dzisiaj wprowadzamy wsparcie dla platformy iOS dla iPhone'a i iPada, a następnie wsparcie dla smartfonów z systemem Android, Windows 7 i Blackberry. W RAD Studio XE 2 zaczęliśmy od zbudowania platformy FireMonkey dla iOS, a później przeniesiemy FireMonkey na inne platformy.

Jednocześnie istnieje wiele systemów operacyjnych, które obsługują ekrany dotykowe(ekran dotykowy) dla telefonów, tabletów i urządzeń stacjonarnych, a my będziemy nadal dodawać dla nich obsługę. Ponadto istnieją systemy sterowania głosem, systemy sterowania ruchem, systemy biometryczne, akcelerometry, więc musimy nadal rozwijać FireMonkey, aby wszyscy programiści mogli korzystać z nowych platform. Na przykład urządzenie Microsoft Kinect zostało zaprojektowane dla konsoli Xbox 360, a teraz istnieje odpowiedni zestaw SDK (Software Development Kit) dla systemu Windows. Mamy już przykłady, w których używamy ruchu do sterowania aplikacją w taki sam sposób, w jaki normalnie używalibyśmy myszy lub klawiatury.

Tworząc aplikacje z dużą ilością złożonej grafiki, generujesz cały świat nowych interfejsów użytkownika. Jeśli mamy do czynienia z systemem operacyjnym Windows, hermetyzujemy jego oprogramowanie aplikacyjne Interfejs Windows API w bibliotece VCL (Visual Component Library - biblioteka komponentów wizualnych będąca integralną częścią narzędzi programistycznych Delphi i C++ Builder. - Notatka. wyd.), które, nawiasem mówiąc, można zastosować dalej. A w FireMonkey hermetyzujemy API systemu operacyjnego. Ale dzisiaj manipulujemy formami i grafiką o wiele szerzej. Możesz także dodać fizyczne właściwości przestrzeni dla animacji i efektów specjalnych. Ponadto istnieje ogromna liczba innych dodatkowych funkcji tworzenia interfejsów użytkownika, które zamierzamy wdrożyć w ciągu najbliższych kilku lat dla różnych platform, urządzeń mobilnych i tabletów.

Microsoft opublikował niedawno szczegóły dotyczące systemu Windows 8, który ma się ukazać za rok. Będziemy wspierać te innowacje w bibliotece VCL oraz na platformie FireMonkey. Ale Delphi to narzędzie programistyczne przeznaczone nie tylko dla systemu Windows, ale także dla komputerów Macintosh, iPhone'a i iPada. Rozwijamy również nasze produkty PHP, obsługujemy jQuery Mobile, wykorzystujemy API iOS do tworzenia mobilnych aplikacji klienckich oraz tworzymy aplikacje PHP po stronie serwera za pomocą kreatorów i narzędzi do generowania po stronie klienta JavaScript, HTML i kaskadowych arkuszy stylów. Możemy pakować aplikacje PHP i natywne aplikacje klienckie iPhone iOS, z klientem komunikującym się z serwerem PHP. A to z kolei będzie komunikowało się z serwerem bazy danych i usługami internetowymi – ze wszystkim, co jest potrzebne dla biznesu.

Środowisko programistyczne RadPHP XE2. Utwórz mobilną aplikację internetową
za pomocą komponentów jQuery Mobile dla iPhone 3G

Innymi słowy, planujemy rozszerzyć możliwości FireMonkey i VCL, w tym obsługę platform mobilnych.

KP: Czy mógłbyś bardziej szczegółowo opisać platformę FireMonkey?

DI.: Jak już zauważyłem, biblioteka VCL stworzona dla Windows będzie się dalej rozwijać i ulepszać. Ale dzisiaj, jeśli chcesz faktycznie tworzyć aplikacje biznesowe, musisz tworzyć je dla różnych platform. Do tego właśnie została zaprojektowana platforma FireMonkey. Obsługuje tworzenie interfejsów użytkownika o wysokiej rozdzielczości, wysokowydajną grafikę 3D, dużą liczbę klatek na sekundę i, co ważne, wykorzystuje do tego GPU.

Możesz korzystać z tych funkcji podczas tworzenia aplikacji naukowych, inżynierskich i biznesowych. Podobne aplikacje potrafi łączyć się z bazami danych za pomocą technologii dbExpress, nadal korzystając z niewizualnych komponentów znanych programistom, takich jak ClientDataSet czy DataSource, korzystać z technologii DataSnap, łączyć się z dowolnymi bazami danych, serwerami SOAP i REST. Możesz tworzyć atrakcyjne kontrolki, przyciski w ramkach, fantazyjne tabele i inne elementy interfejsu w 2D i 3D. Gotowy model 3D możesz wczytać do aplikacji i połączyć z kształtem 2D, w którym można go obracać i oglądać pod różnymi kątami. Możesz utworzyć kostkę danych lub wykres biznesowy 3D i obracać go za pomocą myszy, klawiatury lub nawet urządzenia Kinect. Możesz też wejść do środka i przyjrzeć się jego różnym powierzchniom od wewnątrz. A wszystko to można zrobić za pomocą szybkiego procesora graficznego. Tę samą aplikację można następnie skompilować na inną platformę, taką jak Mac OS.

Aplikacja zawierająca obrotową kostkę z danymi,
umieszczony na jego krawędziach

Możesz też stworzyć od podstaw kształt 3D i użyć kamer i świateł do oświetlania i obracania części interfejsu użytkownika. Projektant formularzy ma już wbudowane środowisko do obsługi interfejsu użytkownika 3D bezpośrednio w czasie projektowania.

W systemie Windows można korzystać z bibliotek Direct2D do pracy z grafiką 2D w wysokiej rozdzielczości, a do grafika 3D- Direct3D. Mac OS używa bibliotek Quartz i OpenGL w tym samym celu. W przypadku iOS używane są biblioteki Quartz i OpenGL ES. Ale to wszystko jest ukryte przed deweloperem - korzysta z platformy FireMonkey, jej układu współrzędnych i interfejsu programowania aplikacji, nie myśląc o tych bibliotekach i może skompilować tę samą aplikację na różne platformy.

Pamiętajmy, czym jest VCL. VCL jest „opakowaniem” komponentów wokół API Windows. Mamy do czynienia z zasobami, menu, oknami dialogowymi, kolorami, stylami, komunikatami Windows. Będąc opakowaniem wieloplatformowym, w przeciwieństwie do VCL, FireMonkey zachowuje te same modele zdarzeń i komponentów, umożliwiając myślenie w kategoriach zdarzeń (na przykład zdarzenia OnClick, OnHasFocus, onMouseDown i onKeyDown), ale obsługuje zdarzenia na komputerach Macintosh lub iPhone.

Platforma FireMonkey jest również dostarczana kompletny system animacja elementów interfejsu użytkownika. Z pewnością nie jest to kompleksowy system animacji typu Pixar, ale umożliwia stosowanie efektów, takich jak animowanie bitmap, wyróżnianie elementu interfejsu użytkownika i praca z Grafika wektorowa. Deweloper ma dostęp do ponad 50 efekty wizualne: rozmycie, czarno-białe, rozmycie, przejścia, odbicia, cieniowanie – wszystkie rodzaje efektów dostępne w nowoczesnych procesorach graficznych, które są obecnie w prawie każdym komputerze. Aplikacja zbudowana na platformie FireMonkey wysyła polecenia do procesora graficznego, który wykonuje całą pracę związaną z wyświetlaniem grafiki i budowaniem interfejsu użytkownika. Jednocześnie procesor centralny jest wolny do obliczeń i dostępu do systemu operacyjnego. Deweloper musi tylko poprawnie umieścić komponenty.

Najbardziej podstawową cechą platformy FireMonkey jest sposób, w jaki buduje ona interfejs użytkownika. Istnieją możliwości umieszczania grafiki bitmapowej na elementach interfejsu, takich jak menu, przyciski i paski przewijania. W FireMonkey używamy w tym celu grafiki wektorowej GPU. Z punktu widzenia programowania są to te same elementy sterujące, ale procesor graficzny wykonuje całą pracę związaną z ich wyświetlaniem. Możemy zastosować style do kontrolek, sprawić, by aplikacja wyglądała jak aplikacja na Mac OS lub Windows, stworzyć własny styl, zastosować nasze style do elementów interfejsu (na przykład zrobić prostokątny lub okrągły przycisk zmieniając jego styl w edytorze formularzy) - do tego środowisko programistyczne posiada edytor stylów. Możesz stworzyć swój własny styl lub zmienić styl już gotowej aplikacji.

Platforma FireMonkey — narzędzia programistyczne
i obsługiwane platformy

Jeśli pamiętasz, w bibliotece VCL była ograniczona liczba kontrolek - kontenerów (czyli pozwalających na umieszczanie w nich innych elementów), a w FireMonkey każda kontrolka jest kontenerem. Oznacza to, że każda kontrolka może zawierać dowolną inną kontrolkę. Na przykład elementy listy rozwijanej mogą zawierać obrazy, przyciski, pola edycji i inne kontrolki. Możesz także umieszczać komponenty na warstwach.

System renderowania FireMonkey jest dość elastyczny - może korzystać z bibliotek Direct2D, Direct3D i OpenGL, wysyłając polecenia do GPU. Aby osiągnąć to samo w VCL, konieczne było wygenerowanie osobnego bufora pozaekranowego, stworzenie w nim obrazu poprzez wywołanie odpowiednich funkcji biblioteki graficznej, a następnie wyświetlenie go na formularzu.

Przykłady efektów graficznych obsługiwanych przez FireMonkey

Jeśli nie masz procesora graficznego, nadal możesz stosować kształty 2D lub 3D i używać kontrolek FireMonkey. W takim przypadku platforma FireMonkey użyje bibliotek GDI+ lub innych podobnych bibliotek i wykona te same efekty i animację lub manipulację obiektami 3D.

Inną cechą FireMonkey jest nowy system wiązanie elementów interfejsu z danymi, otwarte i elastyczne. W VCL istnieją dwa typy elementów interfejsu: związane z danymi i niezwiązane z danymi (na przykład TDBEdit i TEdit). W FireMonkey każda kontrolka może być powiązana z danymi dowolnego typu. Może to być tylko wyrażenie, pole z zestawu danych, dane z obiektów utworzonych przez programistów lub wyniki wywołań metod.

Dodatkowo tworząc aplikację można wczytać do niej gotowy model 3D i wykorzystać go – takie możliwości są często wymagane zarówno w aplikacjach biznesowych, jak i inżynierskich. Mamy klienta, który tworzy aplikacje dla logistyki. Oni mieli System informacyjny, zbudowany w Delphi, a w nim – aplikacja, która rysowała plan i wyświetlała informacje ze źródeł danych. Niedawno zrobili coś ciekawego - narysowali w pełni zautomatyzowany magazyn 3D w programie AutoCAD, a ich aplikacja pozwala zobaczyć, jak automatyczna ładowarka porusza się po magazynie i umieszcza towary na półkach. I układają dane ze źródeł na odpowiednim obrazie.

Przykłady zmiany stylów aplikacji

KP: Jakie formaty modeli 3D są obecnie obsługiwane?

DI.: W tej wersji obsługujemy ładowanie modeli z AutoCAD, Collada (narzędzie do modelowania 3D typu open source). Notatka. Ed.), Maya, format OBJ obsługiwany przez wielu dostawców grafiki 3D.

KP: Jakie inne formaty planuje się dodać?

DI.: Planujemy dodać 3DS (3D Studio MAX), SVG (zwykle ten format jest używany do grafiki wektorowej 2D, ale czasami do 3D), Google SketchUp. Możemy również obsługiwać inne formaty.

KP: Czy wykorzystanie modeli 3D w aplikacjach zbudowanych za pomocą FireMonkey wymaga licencji na odpowiednie narzędzie do modelowania 3D?

DI.: Nie, nie ma. Wszystko, co robimy, to odczytywanie pliku modelu. Importujemy model, ale go nie eksportujemy (choć oczywiście możesz napisać aplikację, która zapisze model we własnym formacie). Nie twierdzimy, że jesteśmy producentem narzędzi do modelowania 3D - w tym celu możesz użyć programu AutoCAD, 3D Studio Max, Maya lub innego narzędzia do modelowania 3D i zaimportować stworzone modele do naszych aplikacji.

KP: Jak wydajne są aplikacje zbudowane za pomocą FireMonkey na nowoczesnych platformach sprzętowych?

DI.: Wydajność jest dość wysoka. Na przykład kształt 3D z trzema kulami i trzema światłami można renderować z szybkością 100 klatek na sekundę na MacBooku Pro. A może dochodzić do 600 – to zależy od tego, co dokładnie robimy. Ponownie wszystko zależy od mocy GPU.

KP: Czy to oznacza, że ​​z pomocą FireMonkey możesz tworzyć gry spełniające współczesne wymagania?

DI.: Nie pozycjonujemy naszych narzędzi programistycznych jako narzędzia do gier. Niemniej jednak, korzystając z wysokiej wydajności nowoczesnych procesorów graficznych, można również tworzyć gry za pomocą FireMonkey – w końcu są one tworzone przy użyciu Direct3D lub OpenGL.

KP: Jaką pracę wykonujesz teraz w dziedzinie wsparcia rozpoznawania gestów i innych nowych rzeczy? Czy takie wsparcie jest dostępne?

DI.: W tej wersji nie mamy jeszcze obsługi gestów. Kontrola gestów zostanie dodana w przyszłej wersji FireMonkey, ale na razie możesz korzystać z obsługi gestów wbudowanej w system operacyjny.

Michaił Filippenko, dyrektor Fast Reports, Inc.

KR: Powiedzieliśmy już, że technologia FireMonkey ma rosyjskie korzenie – jej fundamenty powstały w naszym kraju, a następnie sama technologia i jej twórcy połączyli się w Embarcadero. Ogólnie rzecz biorąc, z satysfakcją obserwujemy rozwój rosyjskiego komponentu w RAD Studio i Delphi. Jest to działalność naszego centrum rozwoju w St. Petersburgu i wkład niezależnych rosyjskich deweloperów. Na przykład Rad Studio XE2 zawiera generator raportów FastReport, który jest znany na całym świecie i bardzo popularny w naszym kraju. Pochodzi z Rostowa nad Donem.

KP: Chciałbym porozmawiać o kompilatorach. Jaki kompilator służy do tworzenia aplikacji na iOS?

DI.: Nie posiadamy własnego kompilatora Delphi dla iPhone'a lub iPada - nie opracowaliśmy jeszcze kompilatorów dla procesorów ARM stosowanych w tych urządzeniach. W przypadku iOS tymczasowo korzystamy z kompilatora i biblioteki wykonawczej Free Pascal. Ale pracujemy nad następną generacją kompilatorów, w tym dla procesorów ARM. Istnieją jednak kompilatory dla systemów Windows i Mac OS, ponieważ obie platformy sprzętowe są oparte na procesorach Intela.

KP: A co zrobiono w dziedzinie rozwoju kompilatorów w ciągu ostatnich dwóch lat?

DI.: Mamy 32 i 64-bitowe kompilatory Delphi dla systemów Windows i Mac OS. Pracujemy nad nową generacją kompilatorów Delphi i C++. Prace nad nimi wciąż trwają, ale kiedy zostaną zakończone, będziemy mieli kompilatory Delphi dla procesorów ARM, platform Android, Linux i cokolwiek innego. I będziemy mieli 64-bitowe kompilatory C++ dla Windows i innych platform kompatybilne z najnowszym standardem języka C++, właśnie przyjętym przez ISO.

KP: Co się dzieje z obsługą chmury obliczeniowej w narzędziach programistycznych Embarcadero?

DI.: Dzięki RAD Studio XE 2 wspieramy migrację aplikacji do chmury Microsoft Azure lub Amazon EC2 za pomocą Platform Assistant. Mamy też komponenty serwerowe dla Cloud Storage dla Azure i Amazon S3 do przechowywania tabel, danych binarnych, kolejek wiadomości. W Poprzednia wersja W RAD Studio XE wspieraliśmy również wdrażanie aplikacji w Amazon EC2, ale brakowało obsługi pamięci masowej.

Obsługa przetwarzania w chmurze w RAD Studio XE 2

KP: Dwa lata temu mówiłeś o nowym rozwiązaniu All-Access. Ile było na to zapotrzebowanie? Jakie są korzyści dla integratorów systemów i programistów?

DI.: Rozwiązanie All-Access i narzędzie chmurowe AppWave są szeroko stosowane na całym świecie. Zostały zaprojektowane tak, aby ułatwić korzystanie zarówno z aplikacji naszej firmy, jak i aplikacji firm trzecich. W rzeczywistości jest to rozwiązanie do zarządzania licencjami i aplikacjami, wygodne dla dużych firm. Mniejsze firmy, które nie mają dedykowanego zespołu zarządzającego aplikacjami, mogą umieścić aplikację w repozytorium, pobrać nazwy użytkowników z bazy danych i upewnić się, że te aplikacje są używane bez konieczności pamiętania, gdzie klucz licencyjny i ile licencji jest dostępnych. All-Access i przeglądarka AppWave zostały zaprojektowane do zarządzania zarówno wersjonowaniem, jak i kontrolą dostępu.

KR: Rynek jest tak różnorodny, a użytkownicy tak różni, że nie da się zaspokoić wszystkich potrzeb jednym rozwiązaniem. Dlatego dążymy do różnorodnych rozwiązań „opakowań”. Wykonaliśmy dużo pracy, aby ujednolicić licencjonowanie, zarządzanie licencjami i instalację produktów. Ta linia rozwiązań obejmuje narzędzia do zarządzania licencjami i dostępem nie tylko do produktów Embarcadero, ale także do wszelkich innych produktów, w tym wewnętrznych opracowań firm.

Prace nad łączeniem narzędzi programistycznych w skuteczne zestawy dla użytkowników wciąż trwają. Mamy All-Access - superzestaw, który łączy w sobie wszystkie produkty Embarcadero. Jeśli klient zakupi wersję All-Access Platinum, otrzyma wszystkie narzędzia, które znajdują się w Embarcadero. Ale czasami ten zestaw okazuje się zbędny, na przykład zrobiliśmy dwa inne zestawy dla specjalistów od baz danych - DB Power Studio Developer Edition i DB Power Studio DBA Edition. Różnica między nimi polega na tym, że dla programisty oferujemy RapidSQL - narzędzie do tworzenia kodu serwera, a dla administratora wbudowane DBArtizan - narzędzie do administrowania bazą danych, produkt szerszy niż RapidSQL. Dla profesjonalistów mamy następujące pakiety All-Access: pakiet wszystkich produktów, DB Power Studio dla programistów, DB Power Studio dla administratorów, ER Studio Enterprise Edition dla architektów i wszystkich osób zajmujących się modelowaniem. Istnieją kombinacje do tworzenia aplikacji i dla administratorów. Delphi jest narzędziem programistycznym i bardzo sensowne jest dodanie do niego narzędzi programistycznych SQL i narzędzi optymalizacyjnych. Wreszcie, DB Change Manager jest bardzo logicznym narzędziem do zarządzania złożonością zmian zachodzących w bazach danych podczas ich cyklu życia.

Tym samym All-Access stoi na czele dużej rodziny różnych zestawów produktów.

KP: Jeśli to nie tajemnica, kto w Rosji korzysta z All-Access?

KR: Mamy klientów, którzy kupili All-Access w oparciu o Delphi. Wielu z nich tworzy złożone systemy klient-serwer z Serwer SQL i Oracle i od razu spodobał im się nasz wieloplatformowy zestaw narzędzi do baz danych. Mamy firmę kliencką, która współpracuje z Delphi od pierwszej wersji, a rok temu przeniosła się z za pomocą Delphi do zestawu All-Access. Dwoma narzędziami, które gwarantują, że będą używane przez wszystkich programistów w tej firmie, są Delphi i DBArtisan. Są też klienci, którzy przeszli do All-Access od strony bazy danych. Ich głównym zadaniem jest administrowanie bazami danych, ale od czasu do czasu tworzą aplikacje. Klienci korzystający z All-Access to firmy medialne, konstruktorzy maszyn i inne branże.

Osobno chciałbym zamieszkać na małych firmach. Bardzo często w małych zespołach programista robi wszystko, a taka firma czasami kupuje duże pakiety żywności All-Access dla jednego lub dwóch programistów. W dużych zespołach nie zachęca się, aby programista pełnił również rolę np. administratora bazy danych, dlatego zwykle popularne są tam małe opakowania żywności, a w małych firmach taka kombinacja obowiązków jest całkiem do zaakceptowania.

Delphi Architect to mocno sprzedawany produkt, który zawiera narzędzia do modelowania i programowania. Liczba sprzedanych egzemplarzy jest jednak mniejsza niż wersji Delphi Enterprise, ale też jest duża. Zaznaczam, że w 2010 roku byliśmy najlepszym krajem pod względem sprzedaży, mimo że wszystkie kraje przetrwały kryzys. Ten wzrost nie był tak bardzo spowodowany czynniki ekonomiczne, ale z tym, że wersja RAD Studio XE, wydana pod koniec 2009 roku, okazała się bardzo popularna. I chociaż spodziewamy się dalszego wzrostu sprzedaży.

Podjęliśmy kolejny rozsądny krok, który jest bardzo pożądany w Rosji. Stopień legalizacji poszczególnych wersji naszych produktów jest różny: im wyższa wersja, tym bardziej jest zalegalizowana, ponieważ wcześniej oprogramowanie nie było tak aktywnie kupowane. Począwszy od RAD Studio XE, licencja obejmuje wersje 2010, 2009, 2007, a nawet Delphi 7, szeroko stosowany produkt.

Dziś deweloperzy stają w obliczu faktu, że mają zarówno nowe projekty, jak i projekty w stanie wsparcia. Duża liczba projektów została przeniesiona z wczesne wersje Delphi do wersji 7 i pozostaje w tej wersji, kontynuując pracę na stosunkowo niewielkich zasobach. Nikt nie przenosi ich do nowszych wersji, ale są one opłacalne. A teraz pozwalamy za niewielkie pieniądze (mniej niż cena licencji Delphi 7) dostać zarówno RAD Studio XE, jak i Delphi 7 - czyli legalizujemy dewelopera zarówno na realizację nowych projektów, jak i na wsparcie projektów.

KP: Jak oceniasz obecny stan społeczności Embarcadero?

DI.: Ta społeczność jest duża i bardzo wymagająca. Potrzebują wszystkiego i natychmiast - są programistami. Ale czasami potrzeba dużo czasu, aby coś zrobić dobrze.

Kilka lat temu wzięliśmy architekturę komponentów Windows i umieściliśmy ją na komputerach stacjonarnych z systemem Linux. Teraz widzimy, że nie była to właściwa decyzja. Właściwą decyzją jest stworzenie platformy dla aplikacji. Aplikacje nawet na różne platformy mają menu, okna, grafikę, dostęp do sieci i dostęp do urządzeń. Różne platformy mogą mieć różne modele kontrola przepływu lub obsługa wyjątków, ale w kodzie aplikacji widzimy te same bloki try. Naszym zadaniem jest ułatwienie programistom tworzenia aplikacji biznesowych i kompilacji ich dla platform, na których mają być używane, niezależnie od tego, jak ułożony jest system instrukcji odpowiednich procesorów i jakie są inne cechy tych platform. A FireMonkey jest dokładnie tym, czego potrzebujesz, aby rozwiązać ten problem.

KP: Jeśli firma tworzy nowe urządzenie i chce mieć dla niego obsługę FireMonkey, czy byłoby to możliwe?

DI.: Dzięki kompilatorom nowej generacji, które będą miały niezależny od platformy front-end i zależny od platformy back-end, będzie to całkiem możliwe. W międzyczasie dla każdego systemu operacyjnego tworzymy od podstaw kompilator i bibliotekę uruchomieniową.

Każde nowoczesne nowe urządzenie ma zwykle graficzny interfejs użytkownika (wiele z nich ma dwurdzeniowy procesor i GPU) oraz standardowe zestawy SDK dla programistów. Wszystko to upraszcza tworzenie obsługi urządzeń w FireMonkey. Jeśli nowe urządzenie posiada tylko biblioteki do grafiki 2D, takie jak Quartz, będziemy mogli obsługiwać takie urządzenie w FireMonkey, ale zajmie to około kilku miesięcy. Jednak wiele zależy od platformy: nie wszystkie platformy obsługują wszystkie funkcje, na przykład iOS nie ma menu i okna dialogowe i nie będziesz mógł umieszczać odpowiednich komponentów na formularzach takich aplikacji.

KP: Czy zmieniło się coś w polityce współpracy z partnerami? Co się robi, aby zwiększyć udział użytkowników Twoich produktów? Co się dzieje w Rosji?

DI.: Nasz ekosystem partnerski jest szeroki - istnieją setki producentów narzędzi i komponentów, których nie ma w naszych produktach, a my mamy program partnerstwa technologicznego. Dlatego programiści mają dostęp do szerokiej gamy komponentów, technologii i narzędzi. A rozwiązania, które tworzą dla swoich klientów, są lepsze, niż gdyby używano tylko naszych produktów. A do sprzedaży mamy biura w wielu krajach, sprzedawców i dystrybutorów.

KR: Liczy się dla nas nie liczba partnerów, ale jakość pracy każdego z partnerów. Na razie chcemy skupić się na ścisłej współpracy z dotychczasowymi partnerami, choć pula partnerów pozostaje otwarta. Mamy wielu partnerów i musimy im pomóc pod względem technologicznym. Współpracujemy z programistami, a oni wiedzą, czego chcą i wiedzą, co jest dostępne na rynku, a możliwości partnerów muszą temu odpowiadać.

Mamy partnerów biznesowych, którzy mocno zainwestowali w Embarcadero jako linię biznesową - wyszkolili specjalistów, marketing naszych produktów, oddanych pracowników, którzy odpowiadają za ten obszar i monitorują, co dzieje się z naszymi produktami, cennikiem, marketingiem. Oczywiście odnoszą większe sukcesy pod względem sprzedaży naszych produktów niż firmy, które sprzedają nasze produkty indywidualnie.

KP: David, Kirill, bardzo dziękuję za interesujący wywiad. W imieniu naszej publikacji i naszych czytelników życzę Twojej firmie dalszych sukcesów w tworzeniu niesamowitych narzędzi, których programiści tak bardzo potrzebują!

Pytania zadała Natalia Elmanova

Co to jest ognista małpa?


FireMonkey (FMX) to framework do wieloplatformowego rozwoju zarówno dla systemów stacjonarnych (Windows, Mac OS + w niedalekiej przyszłości planowane jest wsparcie części serwerowej na Linux) jak i mobilnych (iOS i Android) z wykorzystaniem języka Delphi/C++ .

Osobliwości:

  • jedna baza kodu dla wszystkich platform;

  • dowolna kontrolka (komponent wizualny) może być kontenerem (rodzicem) dla innych komponentów;

  • obecność bardzo zaawansowanego względnego rozmieszczenia (20 rodzajów) komponentów na formularzu;

  • LiveBinding umożliwia łączenie dowolnego typu danych lub informacji z dowolnym interfejsem użytkownika lub obiektami graficznymi;

  • obecność stylów form/komponentów;

  • Podgląd wielu urządzeń umożliwia dostosowanie prezentacji wizualnej dla każdej z platform;

  • Podgląd na żywo FireUI — wyświetla widok aplikacji na rzeczywistych urządzeniach w czasie rzeczywistym.

Możliwości:

  • wykorzystanie natywnego API każdej z platform, a także możliwość wywoływania natywnych bibliotek firm trzecich;

  • interakcja ze wszystkimi czujnikami (GPS, Akcelerometr, Kompas, Bluetooth (w tym LE) i inne);

  • obsługa powiadomień push, IoT;

  • obsługa asynchronicznych żądań HTTP;

  • obsługa większości baz danych (MsSQL, MySql, Oracle, PostgreSQL, MongoDB itp.);

  • pracować z Cloud Service (Amazon, Azure);

  • wsparcie serwisowe Androida.

Wady (obecnie):

  • brak wsparcia dla dostosowywania klas natywnych;

  • realizacja określonych rzeczy jest albo niemożliwa (widżety, rozszerzenia (iOS) itp.), albo konieczny jest taniec z tamburynem (usługa w tle, wiadomość nadawcza itp.);

  • dostosowywanie Ekran powitalny (ekran początkowy), delikatnie mówiąc, nie;

  • Kontrolki FMX używają własnego renderowania (wizualizacji, rysowania), które jest czysto wizualnie podobne do natywnego;

  • stosowanie rodzimych kontroli wiąże się z dużymi ruchami ciała;

  • przy dużym zagnieżdżeniu komponentów dzieją się niesamowite rzeczy: aplikacja zawiesza się w różnych miejscach, koncentracja jest tracona, zawiesza się itp.;

  • zawartość informacyjna debugowania aplikacji na platformach mobilnych wynosi zero;

  • opisy błędów na platformach mobilnych są zredukowane do bezużytecznego „Błąd 0x00000X”;

  • czas kompilacji chce być najlepszy dla średnich i dużych projektów;

  • konieczność wykorzystania pliku do dopracowania aplikacji mobilnych na każdą platformę;

  • brak wsparcia dla architektury Intel Atom;

  • nieodpowiednia cena w porównaniu z konkurencją.

Plusy:

  • bardzo aktywny w ostatnim czasie rozwój zarówno produktu, jak i społeczności, wsparcie dla coraz większej liczby nowych technologii;

  • obecność ogromnej liczby darmowych i komercyjnych komponentów;

  • szybkość aplikacji jest bardzo zbliżona do natywnej;

  • bardzo zaawansowany edytor wizualny i ogólnie środowisko, obecność stylów;

  • możliwość przetestowania aplikacji na Win, a dopiero potem wdrożenia jej na urządzenia, co znacznie przyspiesza rozwój;

  • zmiana trybu/platformy jednym ruchem nadgarstka;

  • PAServer zapewnia łatwą interakcję z MacOs podczas programowania dla Apple OS;

  • wsparcie dla grafiki 3D po wyjęciu z pudełka.

Podsumowując, chcę powiedzieć, że w ciągu ostatnich kilku lat FireMonkey wyrósł na profesjonalne narzędzie do wieloplatformowego tworzenia aplikacji biznesowych i nie tylko. Wiele niedociągnięć jest stopniowo naprawianych i z każdym wydaniem produkt staje się bardziej nowoczesny i samowystarczalny, zanika również dotychczasowy sceptycyzm wobec samego języka Delphi, związany z wieloletnią stagnacją. Pisanie nowych projektów na FireMonkey jest „bezpieczne” i obiecujące.

Minęło już wystarczająco dużo czasu, odkąd termin FireMonkey stał się mniej lub bardziej znany, jeśli nie wszystkim programistom, to przynajmniej tym, którzy używają Delphi. W tym czasie pojawiły się książki o FireMonkey, artykuły o FireMonkey, wpisy o FireMonkey na wielu blogach. Czytanie tego wszystkiego jest bardzo interesujące. Ale żadna teoria nie zastąpi praktyki. I, jak wielu wcześniej, miałem ochotę spróbować napisać coś przy użyciu FireMonkey.

Pojawił się jednak przy tym problem. Z jakiegoś powodu zdecydowałem, że po prostu muszę zrealizować jakiś niezbyt skomplikowany projekt roboczy.

Aby wyjaśnić, dlaczego okazało się to dla mnie problemem, trzeba będzie trochę (chce się pisać, lirycznie) dygresja. Wycieczka w moją przeszłość jako programisty. Wyjaśnij niektóre z moich poglądów na programowanie w Delphi.

Muszę powiedzieć, że zacząłem używać Delphi na Windows 3.1, czyli od pierwszej wersji. I od tego czasu studiuję VCL. Studiował w oryginale, że tak powiem. Obserwowane, adresowane, śledzone kody źródłowe. Znowu i znowu.

Wiadomo, że w różnych momentach zestaw komponentów dostarczanych z Delphi zawierał komponenty innych firm, które miały wypełnić luki w VCL i które prawdopodobnie przeszły jakąś kontrolę jakości przed dołączeniem. Niektóre z tych składników są dostarczane do dnia dzisiejszego. Weź ten sam Indy. Nie chcę nikogo urazić, to wyłącznie moja osobista opinia, która dotyczy również mnie jako dewelopera komponentów: ani jeden zestaw nie został tak głęboko przemyślany i zaimplementowany, jak ogromny i różnorodny VCL. Nie, nie udaję ostatecznej prawdy i oczywiście w samym VCL jest wiele błędów, decyzji, które powodują nieporozumienia, powodują odrzucenie iz którymi chcesz się nie zgodzić. Ale zawsze miałem wrażenie, że jest to jeden styl. Moim zdaniem w VCL jest piękny i mocny rdzeń, który wspiera cały projekt Delphi i wokół którego zbudowana jest zarówno infrastruktura oprogramowania, jak i sama społeczność programistów. W dużej mierze dzięki VCL, znowu moim zdaniem plotki o śmierci Delphi to nadal plotki. A kiedy w dostawie VCL znalazły się komponenty innych firm, od razu można było zauważyć, że były inne.

Ale potem nadchodzi chwila i słyszę, że VCL to technologia przestarzała. Technologia, którą należy zostawić w przeszłości. Deweloperzy powinni zaimplementować wszystkie swoje nowe projekty na FireMonkey, ale o starych… fajnie byłoby przenieść je na nowe szyny. FireMonkey jest wszędzie i zawsze. I słyszę to z różnych źródeł. I dość wytrwale. Nie, nikt nie zabija VCL. zostaje z nami. Ale nie jest już numerem jeden. Powinien być zastępcą. Przynajmniej tak rozumiem, co się mówi o przyszłości produktu.

W zasadzie rozumiem to wyrównanie. Obrano kurs na wiele platform i, co ważniejsze, na wiele platform. W końcu czym jest VCL? Biblioteka komponentów wizualnych. Biblioteka komponentów wizualnych. Możesz się z tym nie zgadzać. Na przykład zawsze brałem pod uwagę wiele niewizualnych komponentów, a nie komponenty, ale tylko klasy, integralną część VCL i ogromną liczbę klas i komponentów firm trzecich - kontynuacja, rozszerzenie VCL . Cóż, nie mogę uważać spadkobierców TDataset za nie należących do VCL. Chociaż na przykład termin DBExpress Library mówi, że nie jest to jak gdyby VCL. Najwyraźniej Embarcadero naprawdę dzieli monolityczne, z mojego punktu widzenia, VCL na kilka oddzielnych bibliotek. Nie, oczywiście nie całkowicie oddzielone, ale mimo to. A jeśli przyjmiesz ten punkt widzenia, FireMonkey ma zastąpić wizualną część VCL (jak mam nadal nazywać kompletną bibliotekę klas i komponentów, może Borland Component Library?).

Jakie są wizualne komponenty biblioteki? Wokół niskopoziomowych, podstawowych elementów dostarczanych przez system operacyjny. Uchwyty okien, czcionki, same okna, elementy wejściowe, komunikaty, konteksty urządzeń i wiele więcej - to nie są koncepcje biblioteki dostarczanej z Delphi, ale koncepcje systemu operacyjnego. Tak, zgadza się, Windows. A jeśli chcesz zbudować bibliotekę wieloplatformową, logiczne jest odrzucenie infrastruktury oferowanej przez system operacyjny, który wykonuje program napisany przy użyciu biblioteki.

To jest dokładnie to, co próbuje zrobić FireMonkey. Próbują stworzyć infrastrukturę opartą na podstawowych mechanizmach obsługiwanych przez różne systemy operacyjne, która może zastąpić usługę oferowaną przez same systemy operacyjne.

Wielu pamięta próby zrobieniawieloplatformowa nie tylko biblioteka, ale samo Delphi. Równolegle do Delphi 6 wydano produkt Kylix i bibliotekę CLX. Wszystko to zostało zrobione, aby móc programować dla Linuksa. Jednak Linux nie ma wielu podstawowych koncepcji okienek GUI, które ma Windows. Interfejs okienkowy dla Linuksa na ogół nie jest zjawiskiem natywnym. Jest to aplikacja opcjonalna. I musiałem napisać jakąś syntetyczną bibliotekę. Z jego pomocą można było napisać program zarówno dla Windowsa jak i Linuxa. Jednak wciąż pamiętam to uczucie, nie rozczarowania, a raczej irytującej niedogodności, którego doświadczyłem, gdy próbowałem użyć analogów elementów wizualnych z CLX. Zaczęłam bardzo tęsknić. To, co robiłem bez zastanowienia podczas programowania w VCL, okazało się trudne, bardzo różne lub po prostu niemożliwe do zrobienia w CLX.

Czułem się podobnie, przechodząc z BDE na DBExpress. Stary, znany z Field Test-a BDE (Borland używał go wtedy już w Quattro Pro dla Windows i w Paradox dla Windows, i nazywał się ODAPI, a potem IDAPI, i był wyższy niż, moim zdaniem, ODBC Microsoftu) deklarowana przestarzała technologia, która w nowych projektach powinna ustąpić miejsca nowej bibliotece. Na początku zawsze czegoś mi brakowało w DBExpress, zwłaszcza wiedzy.

Jednocześnie nie chcę w żaden sposób skarcić ani krytykować ani wymienionych bibliotek, ani decyzji, które doprowadziły do ​​ich pojawienia się. Chodzi tylko o moje wrażenia, czasem pierwsze wrażenia.

Teraz być może staje się nieco jaśniejsze, dlaczego decyzja o napisaniu małego działającego projektu przy użyciu FireMonkey przyniosła wiele problemów. Przez wiele lat w rozwoju projektów, projektów i projektów ukształtował się pewien stereotyp, pewien szablon tego, co i jak robić. A w moim przypadku musiałem zmierzyć się z faktem, że szablon wymaga zmiany. Ponieważ nie możesz przenieść wszystkiego, do czego jesteś przyzwyczajony przy użyciu VCL, do projektu opartego na FireMonkey.

Na początku projektu doświadczyłem pewnego poczucia deja vu. Mianowicie uczucie dyskomfortu. Na przykład zwykłe elementy wejściowe nie mają wielu właściwości. Sztuczki, które zadomowiły się w praktyce, oparte na sztuczkach związanych ze znajomością niektórych funkcji systemu operacyjnego, nie sprawdzają się w nowym kontekście. Nie wspominając o tym, że niektóre elementy uległy radykalnej zmianie.

Cóż, kolejny ważny niuans. Jakie projekty zwykle trzeba wykonywać w pracy, jeśli nie jest to (praca) związana z pisaniem kompilatorów, systemami modelowania lub czymkolwiek innym wysoce naukowym? Myślę, że dla większości chodzi o tworzenie czegoś, co wiąże się z wykorzystaniem baz danych. Co więcej, coś wysoce naukowego może również korzystać z usług świadczonych przez DBMS.

Tutaj czekała na mnie kolejna zasadzka. Z jakiegoś powodu, gdy w praktyce zauważysz, że FireMonkey nie zawiera elementów nastawionych na pracę z danymi przechowywanymi w bazie danych, nie jesteś na to do końca przygotowany (delikatnie mówiąc). Chociaż czytałem już o tym wiele razy i wiesz (teoretycznie) czego powinieneś użyć. Chodzi o wiązania na żywo.

Nie chcę wdawać się w kłótnię o to, czy naprawdę fajni programiści powinni używać komponentów db-aware, czy nie. nowy projekt, spotkałem się z faktem: trzeba przyzwyczaić się zarówno do nowych komponentów wizualnych, jak i nowego sposobu wyodrębniania danych do wyświetlania, edycji i ostatecznie do zapisywania. Co znowu nie jest ani złe, ani dobre. Po prostu tak się stało dla mnie.

To kończy mój post z pierwszymi wrażeniami. Następne w kolejce są historie o tym, co i jak przezwyciężyli podczas pracy nad projektem.

Podobał Ci się artykuł? Podziel się z przyjaciółmi!
Czy ten artykuł był pomocny?
tak
Nie
Dziekuję za odpowiedź!
Coś poszło nie tak i Twój głos nie został policzony.
Dziękuję Ci. Twoja wiadomość została wysłana
Znalazłeś błąd w tekście?
Wybierz, kliknij Ctrl+Enter a my to naprawimy!