Evanjelisti klamú. Firemonkey je na hovno

Odkedy sa pojem FireMonkey stal viac-menej známym, už ubehlo dosť, ak nie všetkým vývojárom, tak aspoň tým, ktorí používajú Delphi. Počas tejto doby boli knihy o FireMonkey, články o FireMonkey, príspevky o FireMonkey v mnohých blogoch. Čítať toto všetko je veľmi zaujímavé. Ale žiadna teória nemôže nahradiť prax. A ja, ako mnohí predtým, som mal nutkanie skúsiť niečo napísať pomocou FireMonkey.

Pri tom však nastal problém. Z nejakého dôvodu som sa rozhodol, že len potrebujem zrealizovať nejaký nie veľmi zložitý pracovný projekt.

Na vysvetlenie, prečo sa mi to ukázalo ako problém, bude treba (človek chce písať, lyrickú) odbočku. Exkurzia do mojej minulosti vývojára. Vysvetlite niektoré moje názory na programovanie pomocou Delphi.

Musím povedať, že Delphi som začal používať na Windows 3.1, teda od prvej verzie. A odvtedy študujem VCL. Naštudované takpovediac v origináli. Sledované, adresované, vysledované zdrojové kódy. Znova a znova.

Je známe, že v rôznych časoch sada komponentov dodávaných s Delphi obsahovala komponenty tretích strán, ktoré mali vyplniť medzery vo VCL a ktoré pravdepodobne prešli nejakým druhom kontroly kvality predtým, než boli zahrnuté. Niektoré z týchto komponentov sa dodávajú dodnes. Vezmite rovnakého Indyho. Nechcem nikoho uraziť, je to čisto môj osobný názor, ktorý platí aj pre mňa ako vývojára komponentov: ani jeden set nebol tak hlboko premyslený a implementovaný, ako obrovský a rôznorodý VCL. Nie, nepredstieram, že som konečná pravda, a, samozrejme, v samotnom VCL je veľa chýb, rozhodnutí, ktoré spôsobujú nedorozumenie, spôsobujú odmietnutie a s ktorými chcete nesúhlasiť. Ale vždy som mal dojem jednotný štýl. Vo VCL je podľa mňa krásne a silné jadro, ktoré podporuje celý dizajn Delphi a okolo ktorého je postavená softvérová infraštruktúra aj samotná vývojárska komunita. Z veľkej časti vďaka VCL, opäť, podľa môjho názoru, klebety o smrti Delphi sú stále fámami. A keď boli súčasťou dodávky VCL komponenty tretích strán, bolo to okamžite viditeľné, boli odlišné.

Ale potom príde moment a počujem, že VCL je technológia, ktorá je zastaraná. Technológia, ktorá by mala zostať v minulosti. Vývojári by mali implementovať všetky svoje nové projekty na FireMonkey, ale o starých ... bolo by pekné preniesť ich na nové koľajnice. FireMonkey je všade a vždy. A počúvam to z rôznych zdrojov. A dosť vytrvalo. Nie, nikto nezabije VCL. zostáva s nami. Ale už nie je číslo jeden. Mal by byť náhradníkom. Aspoň tak chápem, čo sa hovorí o budúcnosti produktu.

V princípe tomuto zosúladeniu rozumiem. Bol absolvovaný kurz pre multiplatformové, a čo je dôležitejšie, pre multiplatformové. Koniec koncov, čo je VCL? Vizuálna knižnica komponentov. Knižnica vizuálnych komponentov. S tým možno nebudete súhlasiť. Napríklad som vždy považoval veľa nevizuálnych komponentov, a nie komponentov, ale iba tried, za neoddeliteľnú súčasť VCL a obrovské množstvo tried a komponentov tretích strán - pokračovanie, rozšírenie VCL. . No, nemôžem považovať dedičov TDatasetu za súčasť VCL. Hoci napríklad výraz DBExpress Library hovorí, že to nie je VCL. Embarcadero zrejme skutočne rozdeľuje monolitické, z môjho pohľadu VCL na množstvo samostatných knižníc. Nie, samozrejme, nie úplne oddelené, ale predsa. A ak vezmete tento uhol pohľadu, FireMonkey má nahradiť vizuálnu časť VCL (ako by som mal stále nazývať kompletnú knižnicu tried a komponentov, možno Borland Component Library?).

Aké sú vizuálne komponenty knižnice? Okolo nízkej úrovne, základné prvky poskytovaný operačným systémom. Rukoväte okien, fonty, samotné okná, vstupné prvky, správy, kontexty zariadení a mnoho ďalšieho – to nie sú koncepty knižnice, ktorá sa dodáva s Delphi, ale koncepty operačného systému. Áno, je to tak, Windows. A ak chcete vybudovať multiplatformovú knižnicu, potom je logické odmietnuť infraštruktúru ponúkanú operačným systémom, ktorý spúšťa program napísaný pomocou knižnice.

Presne o to sa FireMonkey snaží. Snažia sa vytvoriť infraštruktúru založenú na základných mechanizmoch podporovaných rôznymi operačnými systémami, ktoré môžu nahradiť službu, ktorú samotné operačné systémy ponúkajú.

Mnohí si pamätajú, že sa pokúšali vyrobiťmultiplatformová nielen knižnica, ale aj samotné Delphi. Paralelne s Delphi 6 bol vydaný produkt Kylix a knižnica CLX. Toto všetko bolo urobené preto, aby bolo možné vyvíjať pre Linux. Linux však nemá veľa základných konceptov zobrazovania okien GUI ako Windows. Rozhranie okna pre Linux vo všeobecnosti nie je prirodzeným javom. Toto je voliteľná aplikácia. A musel som napísať nejaký druh syntetickej knižnice. S jeho pomocou bolo možné napísať program pre Windows aj Linux. Stále si však pamätám ten pocit, nie sklamanie, skôr nepríjemné nepríjemnosti, ktoré som zažil, keď som sa pokúsil použiť analógy vizuálnych komponentov od CLX. Začalo mi veľa chýbať. To, čo som pri vývoji pomocou VCL robil bez premýšľania, sa ukázalo ako ťažké, veľmi odlišné alebo jednoducho nemožné pomocou CLX.

Pri prechode z BDE na DBExpress som sa cítil približne rovnako. Starý, známy z Field Test-a BDE (Borland ho už vtedy používal v Quattro Pro pre Windows a v Paradoxe pre Windows a volalo sa to ODAPI, a potom IDAPI, a bolo to orezanie vyššie, podľa môjho názoru ODBC od Microsoftu) bola vyhlásená za zastaranú technológiu, ktorá by mala v nových projektoch ustúpiť novej knižnici. Vždy mi v DBExpress spočiatku niečo chýbalo, najmä vedomosti.

Zároveň v žiadnom prípade nechcem nadávať ani kritizovať vyššie uvedené knižnice ani rozhodnutia, ktoré viedli k ich vzniku. Ide len o moje dojmy, niekedy prvé dojmy.

Teraz je možno trochu jasnejšie, prečo rozhodnutie napísať malý pracovný projekt pomocou FireMonkey prinieslo množstvo problémov. Dlhé roky sa vo vývoji projektov, projektov a projektov vytváral určitý stereotyp, určitá šablóna, čo a ako robiť. A v mojom prípade som musel čeliť tomu, že šablónu treba zmeniť. Pretože všetko, na čo ste zvyknutí používať VCL, nemôžete preniesť do projektu postaveného na FireMonkey.

Na začiatku projektu som zažil istý pocit deja vu. Totiž pocit nepohodlia. Napríklad obvyklé vstupné prvky nemajú veľa vlastností. Triky, ktoré sa v praxi pevne udomácnili, založené na trikoch súvisiacich so znalosťou niektorých vlastností operačného systému, v novom kontexte nefungujú. Nehovoriac o tom, že niektoré komponenty sa radikálne zmenili.

No, ďalšia dôležitá nuansa. Aké projekty sa zvyčajne musia robiť v práci, ak to (práca) nesúvisí s písaním kompilátorov, modelovacích systémov alebo čohokoľvek iného vysoko vedeckého? Myslím si, že pre väčšinu je to o vývoji niečoho, čo zahŕňa používanie databáz. Navyše, niečo vysoko vedecké môže tiež využívať služby poskytované DBMS.

Tu ma čakal ďalší prepad. Z nejakého dôvodu, keď v praxi narazíte na to, že FireMonkey neobsahuje prvky zamerané na prácu s dátami uloženými v databáze, nie ste na to celkom pripravení (mierne povedané). Aj keď som o tom už veľakrát čítal a viete (teoreticky), čo by ste mali použiť. Ide o Živé väzby.

Nechcem sa púšťať do hádky o tom, či by skutoční cool programátori mali používať komponenty s db-aware alebo by nemali zobrazovať, upravovať a nakoniec ukladať. Čo opäť nie je zlé ani dobré. Mne sa to tak stalo.

Týmto končím môj príspevok o prvých dojmoch. Ďalšie v poradí sú príbehy o tom, čo a ako pri práci na projekte prekonali.

Prešli viac ako tri roky odvtedy, čo sa divízia CodeGear zodpovedná za vytváranie takých svetoznámych nástrojov, akými sú Delphi, C++Builder a JBuilder, ako aj Interbase DBMS, stala súčasťou Embarcadero Technologies, spoločnosti známej dizajnom a správou databáz. tools. , a dva roky odvtedy, čo sme na stránkach nášho magazínu diskutovali o tom, čo môžeme očakávať pri vývoji nástrojov, ktoré sú medzi ruskými vývojármi také obľúbené. Opýtali sme sa Davida Intersimoneho, viceprezidenta pre vzťahy s vývojármi a hlavného evanjelistu Embarcadero Technologies, a Kirilla Ranneva, vedúceho zastúpenia Embarcadero Technologies v Rusku. Pre našich najmenších čitateľov informujeme, že to zďaleka nie je prvý rozhovor, ktorý David a Kirill poskytli ComputerPress – naša spolupráca trvá už druhú dekádu. A približne rovnaký počet rokov pravidelne publikujeme recenzie nástrojov na správu databáz, v ktorých sa veľká pozornosť venuje produktom Embarcadero.

ComputerPress: David, vaša divízia je už tri roky súčasťou Embarcadera. Pred dvoma rokmi ste boli plní entuziazmu, že sa stala súčasťou vašej účelovo a duchom blízkej spoločnosti. Zmenilo sa niečo počas tejto doby? Cítite s kolegami rovnaké nadšenie?

Áno, stále som nadšený. Hlavnou zmenou, ktorá nastala odkedy sme sa stali súčasťou spoločnosti Embarcadero, je to, že sa veľa investovalo do vývoja Delphi. Zvýšil sa počet zamestnancov pracujúcich na vývojových nástrojoch, zvýšil sa počet technológií, ktoré vieme vyvinúť alebo v prípade potreby získať.

Vydanie RAD Studio XE 2, ktoré plánujeme predviesť v Moskve, je najväčším vydaním tohto produktu s obrovskými schopnosťami a veľkým počtom podporovaných platforiem od prvej verzie Delphi, vytvorenej pre 16-bitové Windows a bývalú inovatívnu produkt, ktorý spájal komponentový prístup a kompiláciu so strojovým kódom. Teraz podporujeme vývoj nielen pre Windows, ale aj pre Macintosh, nehovoriac o webovom vývoji a tvorbe aplikácií pre mobilné zariadenia, pričom tieto aplikácie pre rôzne platformy môžu mať jeden kód.

Nová vývojová platforma FireMonkey je výsledkom spolupráce medzi Embarcadero a nedávno získanou ruskou firmou KSDev so sídlom v Ulan-Ude, výrobcom komponentov vektorovej grafiky, DirectX a OpenGL, technológií grafických efektov a komponentov Delphi využívajúcich GPU s PixelShader 2.0. Pred rokom sme získali spoločnosť KSDev (pozri ksdev.ru) a začali sme spolupracovať na vytvorení multiplatformového vývojového nástroja, ktorý zahŕňa platformu na vývoj aplikácií FireMonkey s komponentmi pre Delphi a C++ Buider na vytváranie používateľských rozhraní aplikácií, integráciu s databázami, grafické spracovanie pomocou grafického procesora a integrácia s operačným systémom.

Pomocou FireMonkey môžete vytvoriť aplikáciu, ktorá prevádzkuje CPU a GPU spoločne, a potom pomocou rôznych kompilátorov a run-time knižníc (Run-time Libraries, RTL) ju môžete skompilovať pre Windows, Mac OS alebo iOS. Namiesto učenia programovania pomocou rôznych grafické knižnice, študovať API rôznych platforiem, ktoré majú rôzne systémy súradnice a rôzne možnosti, vývojári používajúci Delphi a C++Builder môžu použiť rovnaký prístup k komponentom, vizuálne upravovať formuláre a pripájať sa k databázam pohybom komponentu pomocou myši. Je to zásadne Nová cesta vytváranie aplikácií, ktoré bežia na rôznych platformách, a s tým je budúcnosť. Ak chcete do svojej aplikácie pridať podporu pre iné operačné systémy a platformy, nemusíte ju prerábať a vyvíjať – postačí ju len prekompilovať.

Vytvárame nové kompilátory, ktoré generujú natívny kód. Dnes existujú kompilátory Delphi pre 32-bit a 64-bit Verzie systému Windows, 32-bit Mac verzie OS 10. A pracujeme na ďalšej generácii kompilátorov Delphi a C++Builder, ktoré vám umožnia vytvárať vysokovýkonný natívny kód pre tieto aj iné platformy, ako je Android alebo Linux, a zachovať rovnaký dizajn, rovnaké komponenty, rovnaký kód pomocou rôznych kompilátorov a runtime knižníc.

Ako vidíte, dôvodov na nadšenie mám dosť. A vývojári, ktorých stretávam po celom svete, vedia, že Embarcadero veľa investuje do Delphi a C++Builder, ako aj do vývojových nástrojov PHP.

KP: Aký pokrok ste dosiahli v integrácii nástrojov týchto dvoch spoločností za posledné dva roky? Aké sú plány Embarcadera do budúcnosti v tejto oblasti?

DI.: V čase, keď sa divízia CodeGear stala súčasťou Embarcadero, mala táto spoločnosť vývojové tímy v Toronte, Monterrey a Rumunsku, my sme boli a stále sme v Scotts Valley a v Rusku, v Petrohrade. Embarcadero malo nástroje pre vývojárov a DBA, CodeGear nástroje na vývoj aplikácií, no aj tie využívajú databázy. Fúzia spoločností je spojením odbornosti, znalostí v oblasti databáz, optimalizácie kódu vrátane serverového kódu. Výsledkom zlúčenia bol aj vznik nového produktu AppWave, špeciálnej technológie na premenu obyčajnej Windows aplikácie na niečo, čo sa veľmi ľahko používa (napríklad aplikácie pre iPhone alebo iné zariadenia). AppWave umožňuje neinštalovať aplikáciu, ale jednoducho ju vybrať a spustiť z pripraveného aplikačného úložného (app) servera, pričom bude spustená na počítači používateľa bez vykonania zmien v jeho registri a systémová oblasť systém súborov. Mimochodom, prehliadač aplikácií AppWave je napísaný v Delphi. Embarcadero používa Dephi pre svoj vlastný vývoj a naše odborné znalosti v oblasti vývoja aplikácií.

Aplikácia pre iPhone (iOS) vytvorená spoločnosťou
pomocou platformy FireMonkey

Na optimalizáciu SQL dotazov pri vytváraní aplikácií môžete využiť aj integráciu našich vývojových nástrojov a DB Optimizer. Odovzdaním kódu SQL priamo do DB Optimizer ho môžete profilovať, testovať a vrátiť jeho optimalizovanú verziu späť do vývojového prostredia. Databázová expertíza Embarcadero tiež zlepšila technológiu DataSnap. Vďaka vývojárom z Toronta sme získali množstvo poznatkov o architektúre viacvrstvových systémov a databáz. Teraz máme spoločné odborné znalosti v oblasti serverového kódu a uložených procedúr v oboch spoločnostiach. Máme nástroje ako RapidSQL a DB Change Manager a vývojové prostredia, ktoré uľahčujú vytváranie kódu na strane servera, ako sú technológie Code Insight a Code Completion, ktoré umožnili vytvárať technológie SQL insight a SQL Completion. Náš spoločný prístup k vytváraniu klientskeho a serverového kódu, naša spoločná filozofia, nám umožňuje zdieľať spoločné funkcie medzi nástrojmi na správu databáz a nástrojmi na vývoj aplikácií.

Kirill Rannev: Chcem dodať niečo dôležité. Z komerčného hľadiska je veľmi dôležité, ako dodávame naše nástroje. Napríklad nové vydanie RAD Studio XE 2 Ultimate obsahuje kompletnú sadu nástrojov DB Power Studio. Ide o veľmi výkonnú sadu nástrojov vrátane prostredia na tvorbu dotazov RapidSQL, nástroja na správu zmien DB Change Manager a nástroja na optimalizáciu dotazov DB Optimizer, ktorý vám umožňuje vykonávať dôležitú časť procesu vývoja a nasadenia a spravovať zmeny v dátový model, databáza, kód atď. Ide o veľmi dobrú a správnu kombináciu technológií.

DI.: Ale ak je to potrebné, vývojári môžu použiť Subversion na kontrolu verzií. zdrojový kód a DB Change Manager pre vytváranie verzií metadát. Môžete použiť profilovanie kódu a DB Optimizer na optimalizáciu serverového kódu, RapidSQL na vytváranie a ladenie serverového kódu a naše vývojové prostredia na vytváranie a ladenie aplikácií. Táto kombinácia technológií v RAD Studio XE Ultimátna edícia demonštruje paralely medzi modelmi vývoja databáz a aplikácií. Väčšina vývojárov vytvárajúcich podnikové aplikácie pomocou Delphi a C++Builder pracuje s databázami a potrebuje tieto nástroje a RAD Studio XE Ultimate Edition je pre týchto vývojárov skvelou kombináciou.

KP: Moderný používateľ už nie je iba používateľom platformy Windows. Používame mobilné zariadenia, iPhone, iPad, zariadenia založené na platforme Android. To znamená, že vývojári by mali začať cieliť na rôzne platformy bez výrazného zvýšenia investícií do školení – to znamená, že sú potrebné univerzálne nástroje. Je zrejmé, že je nereálne očakávať výskyt univerzálnych nástrojov od výrobcov platforiem a v tejto veci sa môžeme spoľahnúť iba na nezávislých výrobcov nástrojov. Kde sa môžeme spoľahnúť na Embarcadero?

DI.: V oblasti podpory platforiem máme stále čo robiť. Dnes predstavujeme podporu pre platformy iOS pre iPhone a iPad, potom našu podporu získajú smartfóny Android, Windows 7 a Blackberry. V RAD Studio XE 2 sme začali budovaním platformy FireMonkey pre iOS a neskôr portujeme FireMonkey na iné platformy.

Zároveň existuje veľké množstvo operačných systémov, ktoré podporujú dotykové obrazovky(dotyková obrazovka), pre telefóny, tabletové počítače a zariadenia, desktopy a budeme pre ne naďalej pridávať podporu. Okrem toho existujú systémy hlasového ovládania, systémy riadenia pohybu, biometrické systémy, akcelerometre, takže musíme pokračovať v rozširovaní FireMonkey, aby všetci vývojári mohli využívať výhody nových platforiem. Napríklad zariadenie Microsoft Kinect bolo navrhnuté pre Xbox 360 a teraz existuje zodpovedajúca súprava SDK (Software Development Kit) pre Windows. A už máme príklady, keď pohyb používame na ovládanie aplikácie v podstate rovnakým spôsobom, akým by sme bežne používali myš alebo klávesnicu.

Keď vytvárate aplikácie s množstvom komplexnej grafiky, vytvárate celý svet nových používateľských rozhraní. Ak máme čo do činenia s operačným systémom Windows, zapuzdreme jeho Windows API do knižnice VCL (Visual Component Library - knižnica vizuálnych komponentov, ktorá je neoddeliteľnou súčasťou vývojových nástrojov Delphi a C++ Builder. - Poznámka. vyd.), ktorý, mimochodom, možno aplikovať ďalej. A vo FireMonkey zapuzdrujeme API operačného systému. Ale dnes manipulujeme s formami a grafikou oveľa širšie. Môžete tiež pridať vlastnosti fyzického priestoru pre animáciu a špeciálne efekty. Okrem toho existuje mnoho ďalších pridané vlastnosti vytvárať používateľské rozhrania, ktoré sa chystáme implementovať v najbližších rokoch pre rôzne platformy, mobilné a tabletové zariadenia.

Microsoft nedávno zverejnil podrobnosti o Windows 8, ktorý má vyjsť o rok. Tieto inovácie budeme podporovať v knižnici VCL a v platforme FireMonkey. Ale Delphi je vývojový nástroj určený nielen pre Windows, ale aj pre Macintosh, iPhone a iPad. Vyvíjame naše produkty aj pre PHP, podporujeme jQuery Mobile, používame aplikačný softvér rozhranie iOS na vývoj mobilných klientskych aplikácií a vytváranie PHP aplikácií na strane servera pomocou sprievodcov a nástrojov na generovanie JavaScriptu a HTML kódov a kaskádových štýlov na strane klienta. Dokážeme zabaliť PHP aplikácie a klientske aplikácie s natívnym kódom pre iPhone so systémom iOS, pričom takýto klient bude komunikovať s PHP serverom. A to zase bude komunikovať s databázovým serverom a webovými službami - so všetkým, čo je potrebné pre podnikanie.

Vývojové prostredie RadPHP XE2. Vytvorte mobilnú webovú aplikáciu
pomocou komponentov jQuery Mobile pre iPhone 3G

Inými slovami, plánujeme rozšíriť možnosti FireMonkey a VCL vrátane podpory mobilných platforiem.

KP: Mohli by ste viac rozviesť platformu FireMonkey?

DI.: Ako som už poznamenal, knižnica VCL vytvorená pre Windows sa bude naďalej vyvíjať a zlepšovať. Ale dnes, ak chcete skutočne vyvíjať obchodné aplikácie, musíte ich vytvoriť pre rôzne platformy. Na to je určená platforma FireMonkey. Podporuje vytváranie používateľských rozhraní s vysokým rozlíšením, vysokovýkonnú 3D grafiku, vysoké obnovovacie frekvencie a, čo je dôležité, využíva na to GPU.

Tieto funkcie môžete použiť pri vytváraní vedeckých, inžinierskych a obchodných aplikácií. Takéto aplikácie sa môžu pripojiť k databázam pomocou technológie dbExpress, pričom stále používajú nevizuálne komponenty známe vývojárom, ako sú ClientDataSet alebo DataSource, využívajú technológiu DataSnap, pripájajú sa k ľubovoľným databázam, SOAP a REST serverom. Môžete vytvárať atraktívne ovládacie prvky, tlačidlá s políčkami, nezvyčajné tabuľky a ďalšie prvky rozhrania, a to v dvoch a troch rozmeroch. Hotový 3D model si môžete nahrať do aplikácie a skombinovať s 2D tvarom, v ktorom sa dá otáčať a pozerať z rôznych uhlov. Môžete vytvoriť dátovú kocku alebo 3D obchodný graf a otáčať ich pomocou myši, klávesnice alebo dokonca zariadenia Kinect, alebo môžete ísť do kocky a pozrieť sa na jej rôzne povrchy zvnútra. A to všetko je možné vykonať pomocou vysokorýchlostného GPU. Tá istá aplikácia sa potom môže skompilovať pre inú platformu, napríklad Mac OS.

Aplikácia obsahujúca rotujúcu kocku s údajmi,
umiestnené na jeho okrajoch

Alebo môžete vytvoriť 3D tvar úplne od začiatku a použiť kamery a svetlá na osvetlenie a otáčanie častí používateľského rozhrania. Návrhár formulárov už má vstavané prostredie na podporu 3D používateľského rozhrania priamo v čase návrhu.

V systéme Windows môžete použiť knižnice Direct2D pre 2D grafiku s vysokým rozlíšením a Direct3D pre 3D grafiku. Mac OS používa na rovnaký účel knižnice Quartz a OpenGL. Pre iOS sa používajú knižnice Quartz a OpenGL ES. To všetko je ale pred vývojárom skryté – používa platformu FireMonkey, jej súradnicový systém a aplikačné programovacie rozhranie, bez toho, aby premýšľal o týchto knižniciach, a dokáže zostaviť rovnakú aplikáciu pre rôzne platformy.

Pripomeňme si, čo je VCL. VCL je komponent "obal" okolo Windows API. Zaoberáme sa zdrojmi, ponukami, dialógmi, farbami, štýlmi, Správy systému Windows. FireMonkey, ktorý je na rozdiel od VCL multiplatformový obal, si zachováva rovnaké modely udalostí a komponentov, čo vám umožňuje myslieť z hľadiska udalostí (napríklad udalosti OnClick, OnHasFocus, onMouseDown a onKeyDown), ale spracovávať udalosti na počítačoch Macintosh alebo iPhone.

Platforma FireMonkey tiež prichádza s kompletný systém animácia prvkov používateľského rozhrania. Určite to nie je komplexný animačný systém typu Pixar, ale umožňuje aplikovať efekty, ako je napríklad animácia bitmapy, zvýraznenie zamerania prvku používateľského rozhrania a práca s vektorovou grafikou. Vývojár má prístup k viac ako 50 vizuálne efekty: rozmazanie, čiernobiele, rozpustenie, prechody, odraz, tieňovanie – všetky typy efektov dostupné v moderných grafických procesoroch, ktoré sa dnes nachádzajú takmer v každom počítači. Aplikácia vytvorená pomocou platformy FireMonkey odosiela príkazy GPU, ktoré vykonáva všetku prácu pri zobrazovaní grafiky a vytváraní používateľského rozhrania. V čom CPU zadarmo na výpočty a volania do operačného systému. Vývojár potrebuje iba správne umiestniť komponenty.

Najzásadnejšou vecou platformy FireMonkey je spôsob, akým vytvára používateľské rozhranie. Existujú zariadenia na umiestnenie bitmapovej grafiky na prvky rozhrania, ako sú ponuky, tlačidlá a posuvníky. Vo FireMonkey na tento účel používame vektorovú grafiku GPU. Z programovacieho hľadiska sú to všetky rovnaké ovládacie prvky, ale grafický procesor robí všetku prácu pri ich zobrazovaní. Môžeme použiť štýly na ovládacie prvky, upraviť aplikáciu tak, aby vyzerala ako aplikácia pre Mac OS alebo Windows, vytvoriť vlastný štýl, použiť naše štýly na prvky rozhrania (napríklad urobiť z tlačidla obdĺžnikové alebo okrúhle zmenou jeho štýlu v editore formulárov) - na to má vývojové prostredie editor štýlov. Môžete si vytvoriť svoj vlastný štýl, alebo môžete zmeniť štýl už hotovej aplikácie.

Platforma FireMonkey – Vývojové nástroje
a podporované platformy

Ak si pamätáte, v knižnici VCL bol obmedzený počet ovládacích prvkov - kontajnerov (to znamená, že do nich môžete umiestniť ďalšie prvky) a vo FireMonkey je každý ovládací prvok kontajnerom. To znamená, že každý ovládací prvok môže obsahovať akýkoľvek iný ovládací prvok. Položky rozbaľovacieho zoznamu môžu napríklad obsahovať obrázky, tlačidlá, polia úprav a ďalšie ovládacie prvky. A môžete tiež umiestniť komponenty na vrstvy.

Renderovací systém FireMonkey je pomerne flexibilný – dokáže využívať knižnice Direct2D, Direct3D a OpenGL posielaním príkazov do GPU. Na dosiahnutie toho istého vo VCL bolo potrebné vygenerovať samostatný off-screen buffer, vytvoriť v ňom obraz volaním príslušných funkcií grafickej knižnice a následne ho zobraziť na formulári.

Príklady grafických efektov podporovaných FireMonkey

Ak nemáte GPU, stále môžete použiť 2D alebo 3D tvary a použiť ovládacie prvky FireMonkey. V tomto prípade platforma FireMonkey použije knižnice GDI+ alebo iné podobné knižnice a vykoná rovnaké efekty a animácie alebo manipuláciu s 3D objektmi.

Ďalšou vlastnosťou FireMonkey je nový systém viazanie prvkov rozhrania na údaje, otvorené a flexibilné. Vo VCL sú dva typy prvkov rozhrania: dátovo viazané a neviazané na dáta (napríklad TDBEdit a TEdit). Vo FireMonkey môže byť každý ovládací prvok spojený s údajmi akéhokoľvek typu. Môže to byť len výraz, pole z množiny údajov, údaje z objektov vytvorených vývojárom alebo výsledky volaní metód.

Navyše, pri vytváraní aplikácie môžete do nej načítať hotový 3D model a používať ho – takéto schopnosti sú často požadované v obchodných aj inžinierskych aplikáciách. Máme klienta, ktorý vytvára aplikácie pre logistiku. V Delphi mali vybudovaný informačný systém a v ňom aplikáciu, ktorá kreslila plán a zobrazovala informácie z dátových zdrojov. Nedávno urobili niečo zaujímavé - nakreslili plne automatizovaný 3D sklad v AutoCADe a ich aplikácia umožňuje vidieť, ako sa automatický nakladač pohybuje po sklade a umiestňuje tovar do regálov. A rozložia údaje zo zdrojov na príslušný obrázok.

Príklady zmeny aplikačných štýlov

KP: Aké formáty 3D modelov sú v súčasnosti podporované?

DI.: V tomto vydaní podporujeme načítanie modelov z AutoCADu, Collada (nástroj 3D modelovanie s otvoreným zdrojom. - Poznámka. vyd.), Maya, formát OBJ podporovaný mnohými predajcami 3D grafiky.

KP: Aké ďalšie formáty sa plánujú pridať?

DI.: Plánujeme pridať 3DS (3D Studio MAX), SVG (zvyčajne sa tento formát používa pre 2D vektorovú grafiku, ale niekedy aj pre 3D), Google SketchUp. Môžeme podporovať aj iné formáty.

KP: Vyžaduje si používanie 3D modelov v aplikáciách vytvorených pomocou FireMonkey licenciu na príslušný nástroj na 3D modelovanie?

DI.: Nie, nie. Všetko, čo robíme, je čítať súbor modelu. Model importujeme, ale neexportujeme (aj keď samozrejme môžete napísať aplikáciu, ktorá uloží model vo vašom vlastnom formáte). Netvrdíme, že sme výrobcom nástrojov na 3D modelovanie – na tento účel môžete použiť AutoCAD, 3D Studio Max, Maya alebo akýkoľvek iný nástroj na 3D modelovanie a importovať vytvorené modely do našich aplikácií.

KP: Ako výkonné sú aplikácie vytvorené pomocou FireMonkey na moderných hardvérových platformách?

DI.: Výkon je pomerne vysoký. Napríklad 3D tvar s tromi guľami a tromi svetlami možno na MacBooku Pro vykresliť rýchlosťou 100 snímok za sekundu. A môže dosiahnuť 600 - záleží na tom, čo presne robíme. Opäť všetko závisí od výkonu GPU.

KP: Znamená to, že s pomocou FireMonkey môžete vytvárať hry, ktoré spĺňajú moderné požiadavky?

DI.: Naše vývojové nástroje neumiestňujeme ako nástroj pre hry. S využitím vysokého výkonu moderných GPU však môžete vytvárať hry aj s FireMonkey – tie sa napokon vytvárajú pomocou Direct3D alebo OpenGL.

KP: Akú prácu teraz robíte v oblasti podpory rozpoznávania gest a iných nových vecí? Je takáto podpora dostupná?

DI.: V tomto vydaní zatiaľ nemáme podporu gest. Ovládanie gestami bude pridané v budúcom vydaní FireMonkey, ale zatiaľ môžete použiť podporu gest zabudovanú v operačnom systéme.

Michail Filippenko, riaditeľ Fast Reports, Inc.

K.R.: Už sme si povedali, že technológia FireMonkey má ruské korene – jej základy vznikli u nás a následne sa samotná technológia a jej vývojári spojili do Embarcadero. Vo všeobecnosti je potešujúce vidieť rast ruského komponentu v RAD Studio a Delphi. Ide o činnosť nášho vývojového centra v Petrohrade a príspevok nezávislých ruských vývojárov. Napríklad Rad Studio XE2 obsahuje celosvetovo známy a u nás veľmi obľúbený generátor reportov FastReport. Pochádza z Rostova na Done.

KP: Chcel by som hovoriť o kompilátoroch. Aký kompilátor sa používa na vytváranie aplikácií pre iOS?

DI.: Nemáme vlastný kompilátor Delphi pre iPhone alebo iPad – zatiaľ sme nevyvinuli kompilátory pre procesory ARM používané v týchto zariadeniach. Pre iOS dočasne používame kompilátor Free Pascal a runtime knižnicu. Ale pracujeme na ďalšej generácii kompilátorov, vrátane tých pre procesory ARM. Existujú však kompilátory pre Windows a Mac OS, pretože obe hardvérové ​​platformy sú založené na procesoroch Intel.

KP: A čo sa za posledné dva roky urobilo v oblasti vývoja kompilátorov?

DI.: Máme 32 a 64 bitové kompilátory Delphi pre Windows a Mac OS. A pracujeme na novej generácii kompilátorov Delphi a C++. Práce na nich stále pokračujú, ale keď budú dokončené, budeme mať kompilátory Delphi pre procesory ARM, platformy Android, Linux a čokoľvek iné. A budeme mať 64-bitové kompilátory C++ pre Windows a ďalšie platformy kompatibilné s najnovším jazykovým štandardom C++, ktorý práve prijala ISO.

KP:Čo sa dnes deje s podporou cloud computingu vo vývojových nástrojoch Embarcadero?

DI.: S RAD Studio XE 2 podporujeme migráciu aplikácií do cloudu Microsoft Azure alebo Amazon EC2 pomocou Platform Assistant. A máme serverové komponenty pre Cloud Storage for Azure a Amazon S3 na ukladanie tabuliek, binárnych údajov, frontov správ. IN predošlá verzia V RAD Studio XE sme tiež podporovali nasadenie aplikácií do Amazon EC2, chýbala však podpora úložiska.

Podpora cloud computingu v RAD Studio XE 2

KP: Pred dvoma rokmi ste hovorili o novom riešení All-Access. Koľko bol dopyt? Aké sú jeho výhody systémových integrátorov a vývojári?

DI.: Riešenie All-Access a cloudový nástroj AppWave sú široko používané po celom svete. Sú navrhnuté tak, aby uľahčili používanie aplikácií našej spoločnosti aj tretích strán. V skutočnosti ide o riešenie na správu licencií a aplikácií a je vhodné pre veľké spoločnosti. Menšie firmy, ktoré nemajú vyhradené tímy na správu aplikácií, môžu aplikáciu umiestniť do úložiska, získať používateľské mená z databázy a zabezpečiť, aby sa tieto aplikácie používali bez toho, aby si museli pamätať, kde licenčný kľúč a koľko licencií je k dispozícii. All-Access a prehliadač AppWave sú navrhnuté tak, aby spravovali správu verzií aj riadenie prístupu.

K.R.: Trh je taký rozmanitý a používatelia sú tak rôzni, že nie je možné pokryť všetky potreby jedným riešením. Preto sa snažíme o rôznorodé „obalové“ riešenia. Urobili sme veľa práce na zjednotení licencovania, správy licencií a inštalácie produktov. Tento rad riešení zahŕňa nástroje na správu licencií a prístupu nielen pre produkty Embarcadero, ale aj pre akékoľvek iné produkty, vrátane interného vývoja spoločností.

Práca na spájaní vývojových nástrojov do efektívnych užívateľských súprav stále pokračuje. Máme All-Access - superset, ktorý kombinuje všetky produkty Embarcadero. Ak si zákazník zakúpi All-Access Platinum verziu, dostane všetky nástroje, ktoré sú v Embarcadero. Niekedy sa však táto sada ukáže ako nadbytočná, napríklad sme pre databázových špecialistov vyrobili dve ďalšie sady – DB Power Studio Developer Edition a DB Power Studio DBA Edition. Rozdiel medzi nimi je v tom, že pre vývojárov ponúkame RapidSQL, nástroj na vývoj serverového kódu, a pre správcu je v ňom zabudovaný DBArtizan, nástroj na správu databáz, širší produkt ako RapidSQL. Pre profesionálov máme nasledujúce balíky All-Access: balík všetkých produktov, DB Power Studio pre vývojárov, DB Power Studio pre správcov, ER Studio Enterprise Edition pre architektov a kohokoľvek, kto sa zaoberá modelovaním. Existujú kombinácie pre vývoj aplikácií a pre správcov. Delphi je nástroj pre vývojárov a má veľký zmysel pridať k nemu vývojové nástroje SQL a nástroje na optimalizáciu. A nakoniec, DB Change Manager je veľmi logický nástroj na riadenie zložitosti zmien, ktoré nastanú v databázach počas ich životného cyklu.

All-Access je teda hlavou veľkej rodiny rôznych sád produktov.

KP: Ak to nie je tajomstvo, kto v Rusku používa All-Access?

K.R.: Máme zákazníkov, ktorí si kúpili All-Access založený na Delphi. Mnohé z nich vytvárajú komplexné systémy klient-server s SQL Server a Oracle a okamžite si obľúbili našu multiplatformovú databázovú sadu nástrojov. Máme klientsku spoločnosť, ktorá spolupracuje s Delphi od prvej verzie a pred rokom prešla z Delphi na All-Access. Dva nástroje, ktoré zaručene budú používať všetci vývojári v tejto spoločnosti, sú Delphi a DBArtisan. A sú zákazníci, ktorí prišli do All-Access zo strany databázy. Ich primárnou úlohou je správa databáz, ale príležitostne vyvíjajú aj aplikácie. Medzi klientov využívajúcich All-Access patria mediálne spoločnosti, výrobcovia strojov a ďalšie odvetvia.

Samostatne by som sa chcel venovať malým spoločnostiam. Veľmi často v malých tímoch robí všetko vývojár a takáto firma niekedy kúpi veľké potravinové balíčky All-Access pre jedného alebo dvoch vývojárov. Vo veľkých tímoch sa neodporúča, aby vývojár vykonával napríklad aj úlohu správcu databázy, preto sú tam väčšinou obľúbené malé balíčky potravín a v r. malé spoločnosti takáto kombinácia povinností je celkom prijateľná.

Delphi Architect je silne predávaný produkt, ktorý zahŕňa modelovacie a programovacie nástroje. Počet predaných kópií je však nižší ako pri verziách Delphi Enterprise, ale je tiež veľký. Podotýkam, že v roku 2010 sme boli z hľadiska tržieb najlepšia krajina aj napriek tomu, že krízu prežili všetky krajiny. Tento rast nebol spôsobený ani tak ekonomickými faktormi, ako skutočnosťou, že verzia RAD Studio XE, vydaná koncom roka 2009, bola veľmi žiadaná. A zatiaľ očakávame ďalší rast tržieb.

Urobili sme ďalší rozumný krok, ktorý je v Rusku veľmi žiadaný. Stupeň legalizácie rôzne verzie našich produktov je iný: čím vyššia verzia, tým viac je legalizovaná, pretože skôr softvér nie tak aktívne kupované. Počnúc RAD Studio XE, licencia pokrýva verzie 2010, 2009, 2007 a dokonca aj Delphi 7, čo je široko používaný produkt.

Dnes sa developeri stretávajú s tým, že majú nové projekty aj projekty v stave podpory. Veľké množstvo projektov bolo migrovaných zo skorých verzií Delphi na verziu 7 a zostávajú v tejto verzii, pričom naďalej pracujú na relatívne malých zdrojoch. Nikto ich nepresúva na novšie verzie, ale udržiavajú ich životaschopné. A teraz umožňujeme za málo peňazí (menej ako cena licencie Delphi 7) získať RAD Studio XE aj Delphi 7 - to znamená, že legalizujeme vývojára na implementáciu nových projektov aj na podporné projekty.

KP: Ako hodnotíte súčasný stav komunity Embarcadero?

DI.: Táto komunita je veľká a veľmi náročná. Potrebujú všetko a okamžite – sú vývojári. Niekedy však trvá dlho, kým sa niečo podarí.

Pred niekoľkými rokmi sme vzali architektúru komponentov Windows a umiestnili ju na desktopy Linuxu. Teraz vidíme, že to nebolo správne rozhodnutie. Správnym rozhodnutím je vytvorenie platformy pre aplikácie. Aplikácie aj pre rôzne platformy majú menu, okná, grafiku, prístup k sieti a prístup k zariadeniu. Rôzne platformy môžu mať rôzne modely riadenie toku alebo spracovanie výnimiek, ale v kóde aplikácie vidíme rovnaké bloky try. Našou úlohou je uľahčiť vývojárom vytváranie obchodných aplikácií a ich kompiláciu pre platformy, na ktorých sa majú používať, bez ohľadu na to, ako je usporiadaný inštrukčný systém príslušných procesorov a aké sú ďalšie vlastnosti týchto platforiem. A FireMonkey je presne to, čo potrebujete na vyriešenie tohto problému.

KP: Ak by spoločnosť vytvorila nové zariadenie a chcela by mať preň podporu FireMonkey, bolo by to možné?

DI.: S kompilátormi novej generácie, ktoré budú mať platformovo nezávislý front-end a platformovo závislý back-end, to bude celkom možné. Medzitým pre každý operačný systém vytvoríme kompilátor a knižnicu runtime úplne od začiatku.

Každé moderné nové zariadenie má zvyčajne grafické používateľské rozhranie (mnohé z nich majú dvojjadrový procesor a GPU) a štandardné súpravy SDK pre vývojárov. To všetko zjednodušuje vytváranie podpory zariadení vo FireMonkey. Ak má nové zariadenie iba knižnice pre 2D grafiku ako Quartz, budeme môcť podporovať takéto zariadenie vo FireMonkey, ale bude to trvať približne niekoľko mesiacov. Veľa však závisí od platformy: nie všetky platformy podporujú všetky funkcie, napríklad iOS nemá ponuky a dialógové okná a na formuláre takýchto aplikácií nebudete môcť umiestniť zodpovedajúce komponenty.

KP: Zmenilo sa niečo v politike spolupráce s partnermi? Čo sa robí pre zvýšenie podielu používateľov vašich produktov? Čo sa robí v Rusku?

DI.: Náš partnerský ekosystém je široký – existujú stovky výrobcov nástrojov a komponentov, ktoré sa nenachádzajú v našich produktoch, a máme program technologického partnerstva. Preto je vývojárom k dispozícii široká škála komponentov, technológií a nástrojov. A riešenia, ktoré vytvárajú pre svojich zákazníkov, sú lepšie, ako keby sa používali iba naše produkty. A pre predaj máme pobočky v mnohých krajinách, predajcov a distribútorov.

K.R.: Nie je pre nás dôležitý počet partnerov, ale kvalita práce každého konkrétneho partnera. Zatiaľ sa chceme zamerať na úzku spoluprácu s existujúcimi partnermi, aj keď okruh partnerov zostáva otvorený. Máme veľa partnerov a musíme im pomôcť v oblasti technológií. Spolupracujeme s vývojármi a tí vedia, čo chcú a vedia, čo je na trhu dostupné a schopnosti partnerov tomu musia zodpovedať.

Máme obchodných partnerov, ktorí do Embarcadera ako do oblasti podnikania veľa investovali – majú vyškolených špecialistov, marketing našich produktov, oddaných zamestnancov, ktorí sú zodpovední za túto oblasť a sledujú, čo sa deje s našimi produktmi, cenníkom, marketingom. Prirodzene sú z hľadiska predaja našich produktov úspešnejšie ako spoločnosti, ktoré naše produkty predávajú od prípadu k prípadu.

KP: David, Kirill, veľmi pekne ďakujem za zaujímavý rozhovor. V mene našej publikácie a našich čitateľov mi dovoľte zaželať vašej spoločnosti ďalší úspech pri vytváraní vašich úžasných nástrojov, ktoré vývojári tak veľmi potrebujú!

Otázky položila Natalia Elmanova

V kontexte tohto blogu je tento projekt v prvom rade zaujímavý, pretože je implementovaný na FireMonkey a je úžasnou ukážkou možností tejto platformy. A tak len minulý týždeň vyšla verejná beta produktu. Čitatelia blogu tak môžu „cítiť“ skutočne komplex Firemonkey aplikácie.

Pár slov o programe. V prvom rade treba poznamenať, že aktuálna verzia Sphere je umiestnená trochu inak. Áno, niekedy sa to stane...

Nový SphereLive Toto nie je len ďalší posol. V prvom rade je to nástroj, ktorý umožňuje efektívne organizovať vzdelávací proces. Umožňuje vzdialené prednášky, súkromné ​​konzultácie, individuálne hodiny a iné podobné akcie. Zároveň je vybavený takmer všetkým potrebným pre prácu. Počnúc jedinečným systémom prenosu súborov a končiac výkonným fakturačným subsystémom.

V tomto štádiu sú ceny za používanie produktu celkom demokratické. S výhradou obmedzeného počtu poslucháčov a malého množstva zdrojov je možné produkt používať bezplatne.

Prirodzene, Sphere využíva hlavnú výhodu Firemonkey- multiplatformový. Teraz je aplikácia dostupná vo verziách Windows a MacOS. verzia pre Android očakávané zo dňa na deň.

Napriek tomu je pre mňa SphereLive zaujímavý v prvom rade ako inovatívny produkt s celým radom originálnych riešení. Niekedy len na úrovni "...wow, ako si to dokázal?" Mimochodom, jeden z vývojárov Sphere sa aktívne zapája do diskusií na fóre FireMonkey. To samo o sebe môže byť príležitosťou na stiahnutie aplikácie a diskusiu technické otázky priamo s autorom. Verte mi, je čo vidieť, je sa čo učiť.

TListView je jedným z kľúčových komponentov pre budovanie rozhrania mobilnej aplikácie Firemonkey. Tento komponent nie je najjednoduchší na používanie, často zahŕňa značné množstvo kódu, ale poskytuje vývojárovi značnú slobodu konania. Samozrejme, aplikácie môžu tiež použiť TListBox kde je všetko oveľa jednoduchšie. ale TListBox, možno dobrý na zobrazenie pevného počtu záznamov, na zobrazenie údajov z dátových zdrojov by ste určite mali použiť TListView.

Hlavné rozdiely medzi TListView a TListBox sú:

  1. TListBoxItem- ovládanie, TListViewItem- Nie
  2. IN TListBoxItem Pomocou položky Rodič môžete pridať ľubovoľné ovládacie prvky. IN TListVIewItem- Nie.
  3. TListVIewItem ukladá iba zobrazované údaje
  4. TListVIewItem sám vykonáva vykresľovanie uložených údajov prostredníctvom metódy Vykresliť
  5. Vďaka skutočnému manuálnemu vykresľovaniu v TListVIewItem sa dosahuje zvýšenie rýchlosti a nízka spotreba pamäte (ukladanie iba skutočných údajov)
  6. Na vytvorenie vlastného TListViewItem, musíte si vytvoriť vlastnú triedu položiek, implementovať do nej požadované údaje (napríklad čas) a vytvoriť editor na mieste na úpravu času, jeho registráciu atď.

Samotný fakt zlepšenia výkonu a zníženia spotreby pamäte je silným argumentom v prospech používania TListView. Ale je tu aj niečo iné.

V mnohých Android aplikácie, videl som nasledujúcu implementáciu zoznamov. Keď kliknete na položku zoznamu (Položka, ak sa budete držať zvolenej terminológie), vykoná sa určitá akcia. Na úpravu údajov sa zvyčajne volá nový formulár. Ale keď stlačíte a podržíte (Long Tap), vykoná sa úplne iná akcia. A tieto udalosti sa neprelínajú. Inými slovami, aplikácie pre Android dokážu jasne rozlíšiť medzi „dlhým stlačením“ a „normálnym“. Okrem toho sa žiadna z týchto udalostí nespustí pri rolovaní zoznamu. Dobrým príkladom je zoznam písmen v Yandex Mail.

V prvom rade chcem všetkým čitateľom blogu zablahoželať k uplynulým sviatkom a popriať všetko dobré v budúcom roku.

Z pochopiteľných okolností som nerobil tradičnú novoročnú správu, ako aj plány na rok. Napriek tomu život nestojí, pracuje sa a dejú sa určité udalosti vo svete Delphi. Zaväzujem sa, že počas vianočných sviatkov v blízkej dobe zverejním výber zmeškaných „noviniek zo sveta Delphi“. Medzitým vám poviem o novom zariadení, ktoré som si kúpil.

Špecifikácie nájdete na oficiálnej stránke. A subjektívny dojem je veľmi príjemný. Pozoruhodný je fakt, že zariadenie je doslova prešpikované proprietárnym softvérom od výrobcu. Áno, a od predajcov dostali pôsobivú sadu softvéru ako darček. V prevádzke je smartfón dostatočne rýchly a plne odôvodňuje jeho náklady (asi 200 dolárov). Mimochodom, môj predchádzajúci telefón GSmart 1362 som kúpil za približne rovnaké peniaze pred 2 rokmi. Ale, ako ste pravdepodobne uhádli, hlavným záujmom pre mňa bolo, ako Firemonkey aplikácie.

Pred pokračovaním príbehu o časovači - dve novinky.

Po prvé, bola vydaná prvá aktualizácia XE7. Tradične je dostupný pre registrovaných užívateľov. Môžete nájsť zoznam opravených chýb. Chcel som vidieť, ako sa aplikácia správa v aktualizovanom prostredí. V skutočnosti sa nemuseli robiť žiadne opravy, hoci pole pre experimenty zostalo.

Druhá správa. Špeciálne ponuky Embarcadero predĺžené do konca roka:

No a teraz priamo k téme príspevku. V zásade nám zostáva len skúsiť spustiť už vytvorené túto aplikáciu v systéme Android. Používame na to to, o čom som písal v predchádzajúcich príspevkoch. Totiž ten nový. Odladil som túto aplikáciu Nexus 7, v súlade s tým pridal pohľad na Android 7″ Tablet. Dizajn bolo potrebné len trochu „doladiť“.

Asi len leniví nenapísali svoj časovač. A v kontexte podpory vývoja mobilných platforiem možno úlohu napísať časovač v Delphi vo všeobecnosti považovať za kultovú. Tak som si povedal, prečo nie ako príklad vývoja Firemonkey Aplikácie neanalyzujú presne časovač. Samozrejme pod Androidom. Samozrejme, toto bude presne môj pohľad na úlohu, ktorá, aj keď nie je obzvlášť náročná, má predsa len svoje nuansy. Možno máte nejaké pripomienky alebo návrhy, bolo by skvelé o nich diskutovať v komentároch. V žiadnom prípade nie som odborník na písanie. mobilných aplikácií takže každý váš komentár bude pre mňa cenný.

Vyvinieme presne časovač, v anglickom zmysle tohto výrazu. To znamená, že sa na obrazovke zobrazí číselník a štyri tlačidlá - „Štart“, „Pozastaviť“, „Zastaviť“ a „Zrušiť“. Odpočítavanie bude pokračovať (t. j. čas sa zvýši). Možnosť, v ktorej sa nastavuje čas a prebieha odpočítavanie v anglickej terminológii sa volá Stop Watch, možno ju skúsim implementovať neskôr. Aplikácia, ktorej sa budeme venovať, je funkcionalitou bližšie k stopkám.

Delphi XE7 nám umožňuje výrazne zjednodušiť vývojový proces, pretože teraz môžeme vytvoriť a odladiť skutočnú aplikáciu pre Win32 a potom jednoducho pridať formulárové zobrazenia pre potrebné mobilné zariadenia a s malou úpravou získať funkčný mobil aplikácie. Znie to príliš dobre, aby to bola pravda? Možno. Ale chcem si toto tvrdenie overiť aj realizáciou úlohy.

O to častejšie sa ma v súkromných rozhovoroch pýtajú kolegov, či je možné vyvíjať mobilné aplikácie Firemonkey alebo je to skôr prototyp ako výrobné riešenie?

Myslím, že teraz dokážem zabezpečiť aj tých najnáročnejších skeptikov.

Môj priateľ a kolega Tagir Yumaguzin mi povedal o projekte, ktorého sa zúčastnil už dávno. Teraz, keď je tento projekt v stave pred vydaním, sme sa rozhodli, že tento popis bude zaujímavý pre komunitu Delphi. Vo svojej podstate ide o naozaj veľký projekt realizovaný vo FM. Hovoríme o projekte Sphere Live. Malý článok venovaný tomuto projektu bol nedávno uverejnený na Habrahabr.ru Alexey Glyzin, vedúci vývojového oddelenia súhlasil, že o projekte povie viac, pričom vezme do úvahy publikum môjho blogu.

A.B.– Alexey, vo všeobecnosti, aký je váš projekt?

A.G.: – Myšlienka sa neobjavila naraz a okamžite. Pred projektom „Sphere“ náš tím pracoval na projekte, kde boli implementované stream audio/video technológie. Neskôr sme vytvorili vlastný softvér, ktorý bol schopný poskytovať multimediálne streamy neobmedzenému množstvu používateľov vrátane spätnej väzby. Potrebovali sme však mať zahrnutú funkciu fakturácie.
Aplikácia musela spĺňať niekoľko požiadaviek. Po prvé, maximálne zjednodušená organizácia konferencií alebo prenos účastníkom, ktorých množstvo nevieme predpovedať. Po druhé, najdôležitejšie, je poskytnúť našim klientom príležitosť zarobiť si s našou aplikáciou a znížiť zložitosť systému, množstvo nástrojov potrebných na dosiahnutie cieľa. Jednoduchosť organizácie kurzov, webinárov alebo len konzultácie.

Malý pamäťový zárez týkajúci sa FireDAC v aktuálnej verzii Delphi XE6. Najprv však pár slov o tom, kde hľadať odpovede na otázky týkajúce sa Firemonkey. Rusky hovoriaci používatelia tu majú privilegované postavenie.

Počas prípravy na podujatie v Charkove v rámci RAD Studio XE5 World Tour som narazil na malý problém pri práci s SQLite používaním FireDAC. Ak sa vyplnená databáza prenesie spolu s aplikáciou Windows do Android, riadky v azbuke v databáze už nie sú čitateľné (namiesto písmen sa zobrazujú otázniky). Ak však vyplníte databázu priamo na mobilnom zariadení, ruské znaky sa čítajú celkom správne. Údaje z databázy vyplnené aplikácie tretej strany, alebo v Delphi aplikácia využívajúca iné komponenty prístupu k údajom sa tiež zobrazuje normálne. Zhromaždenie nedokázalo nájsť riešenie a musel som citovať známeho ukrajinského futbalového špecialistu: „Prídeme na to!

Na rozdiel od toho posledného sa mi podarilo vysporiadať sa s popísaným problémom. V predvolenom nastavení pri pripojení k SQLite V FireDAC Používa sa formát reťazca ANSI.

Ak vynútite Unicode, všetko bude fungovať tak, ako má. Je tu však aj nepríjemný moment. Po zmene formátu riadkov budete musieť znova vytvoriť zoznam polí vo všetkých súboroch údajov, ako aj znova pripojiť komponenty zodpovedné za zobrazovanie a zadávanie údajov. Preto je lepšie postarať sa o kódovanie hneď.

V predchádzajúcich častiach tohto miniseriálu sme sa zaoberali vytvorením databázy, jej štruktúrou a pripojením k nej z Delphi. V tejto časti navrhujem zaoberať sa zobrazovaním údajov z tabuliek, počnúc najjednoduchším prípadom.

Jednoduchý editor tabuľkových údajov je zvyčajne súčasťou komplexnej aplikácie. Na úpravu tabuliek zvyčajne používam samostatný formulár. Začnime zoznamom produktov. Najprv musíme vytvoriť DataSet na prístup k údajom tabuľky. V našom prípade je celkom možné použiť komponent Tabuľka TADT. Dajme to do DataModule a špecifikujme hodnotu vlastnosti spojenie. V editore nehnuteľností názov tabuľky objaví sa zoznam tabuliek, z ktorých vyberieme tabuľku Produkty. Ak ste urobili všetko správne, môžete priradiť nehnuteľnosť Aktívne Skutočná hodnota. Komponent je lepšie hneď premenovať (napríklad ADTProduct). Potom zvyčajne vytvorím sadu polí pre DataSet. Zavoláme editor polí (dvojklikom na komponent) a v kontextovom menu vyberieme položku Pridať všetky polia.

Pre tých, ktorí nevedia, vysvetlím podstatu tejto operácie. Tu vytvoríme preddefinovanú množinu polí DataSet. Ak to neurobíme ručne v režime návrhu, tak sa v zásade nič strašné nestane. Pri RunTime sa táto sada vytvorí automaticky. Ale aj tak ho radšej vytváram ručne. Má to viacero dôvodov. Jednak je pohodlnejšie spravovať množinu polí, pretože ďalšie (vypočítané alebo vyhľadávacie) polia si môžeme vytvárať sami v režime návrhu. Môžeme meniť aj vlastnosti samotných polí. A okrem toho dostávame možnosť odkazovať na polia v kóde názvom komponentu TField, čo podľa môjho názoru výrazne zjednodušuje písanie kódu.

Rovnako ako v prípade aplikácie VCL pripojíme komponent k datasetu TDataSource. Tento komponent poskytne prepojenie medzi množinou údajov a vizuálnymi ovládacími prvkami. Vlastnosť DataSet komponentu by mala odkazovať na našu množinu údajov (ADTProduct). Nižšie uvádzam fragment súboru DFM

objekt ADTProduct: TADTable IndexFieldNames = "ID" Pripojenie = ADConnection UpdateOptions. UpdateTableName = "Produkt" TableName = "Produkt" Vľavo = 64 Hore = 192 objekt ADTProductID: TADAutoIncField FieldName = "ID" Pôvod = "ID" ProviderFlags = [pfInWhere, pfInKey] ReadOnly = Skutočný koncový objekt "TTProduct"Teld Fielditleing: TStreing poľa Pôvod = "Názov" Veľkosť = 50 koncový objekt dsProduct: TDataSource DataSet = ADTProduct Vľavo = 120 Hore = 192 koniec

Venujte pozornosť jednej zvláštnej funkcii, súbor formulára DataModule nie je uložený vo formáte FMX, ako bežný formulár FireMonkey, ale vo formáte DFM, ako vo VCL.

Ďalším krokom je vytvorenie procedúry na otvorenie množiny údajov, ktorú budeme musieť zavolať pri spustení programu pri spustení programu. Vytvorme ho v rovnakom DataModule. Kód postupu je veľmi jednoduchý:

postup TDM. ConnectToDB ; spustiť ADConnection. OTVORENÉ(); Produkt ADT. OTVORENÉ(); koniec ;

Volanie procedúry sa umiestni do obsluhy udalosti OnCreate pre DataModule.

FireMonkey je základná technológia „nového Delphi“. Povedzte nám o cieľoch, schopnostiach a technických aspektoch tejto zásadne novej knižnice. Po chvíli, keď sa obzriete späť, aké ťažké a opodstatnené bolo vaše odmietnutie ďalej rozvíjať super populárny VCL?

Bol zvolený ako hlavný smer vývoja technológie Delphi na dosiahnutie konkrétneho cieľa – multiplatformový vývoj z jedného prostredia, založený na jednotnej základni zdrojového kódu a bez nutnosti radikálneho preškoľovania vývojárov. V rámci dnes už klasického a mimoriadne populárneho VCL to nebolo možné, jeho prepojenie s WinAPI bolo príliš úzke, dalo by sa povedať, „na genetickej úrovni“.

Komponenty VCL nemali „abstraktnú“ vrstvu medzi funkčnou úrovňou z hľadiska rozhrania a ich mapovacích mechanizmov. Funkčná úroveň- ako sa správa ako kontrola, na aké udalosti reaguje, akú interakciu používateľa poskytuje. Displej- volanie metód vykresľovania orientovaných na platformu ako druhu obrazu tvoreného rastrovými objektmi a vektorovými primitívami. FireMonkey spočiatku implementoval princíp prísneho rozdelenia ovládania na dve zložky: „behaviorálnu“ a „vizuálnu“.


Vsevolod Leonov, Embarcadero Technologies

Prvý ako celok zopakuje ani nie základy VCL, ale podstatu objektovo orientovaného programovania. Komponent je trieda, triedy komponentov tvoria hierarchiu, v ktorej možno rozlíšiť rodiny a moduly. Trieda komponentu nemá veľa spoločného s tým, ako sa vykresľuje.

Vizuálny „obraz“ sa tvorí dynamicky, nie je pevne zakódovaný v triede komponentov. Obrázok alebo „štýl“ vo FireMonkey sa načíta do komponentu pri spustení aplikácie. Máme nejaký funkčný rámec pre komponent a "pokožka" alebo "plášť" sa dá zmeniť, ale prečo? Preto aplikácie FireMonkey vyzerajú autenticky na akejkoľvek platforme – Windows 7, Windows 8, Mac OS, iOS a v blízkej budúcnosti aj Android. Tradičná monolitická štruktúra triedy VCL to nemohla poskytnúť.

Osobitnú úlohu tu zohráva technologický prístup. V zásade si môžete vziať knižnicu VCL a „naplniť“ WinAPI všetkými ostatnými možnými volaniami platformy. Na veľmi obmedzenej podskupine komponentov sa to stále dá urobiť, ale VCL obsahuje niekoľko stoviek komponentov, takže tento prístup by mohol jednoducho „zabiť“ VCL. Bolo rozhodnuté nedotýkať sa VCL a vyvinúť nové funkcie na novej platforme - FireMonkey. Táto technológia má dokonca istú technickú eleganciu – v čase budovania projektu pre konkrétnu platformu pripojí Delphi IDE potrebný kompilátor a komponenty rozhrania dostanú platformový štýl.

Pre používateľa je to jedno kliknutie myšou a rovnaký zdrojový kód, pre Delphi je to mnoho rokov tvrdej práce vývojárov na vytvorení takejto multiplatformovej knižnice.

Keď bolo jasné, že FireMonkey bude predstavený ako samostatná nová platforma, bolo potrebné zvoliť správnu stratégiu koexistencie: Embarcadero nechcelo žiadnym spôsobom negatívne ovplyvniť používateľov VCL. Preto sme zvolili nasledovný plán: VCL zostáva ideovo a architektonicky stabilný, aby bola zabezpečená čo najväčšia kompatibilita a zároveň uľahčila migrácia projektov na moderné verzie. Vývoj FireMonkey sa bude uberať prirodzenou a paralelnou cestou, bez spätného pohľadu na VCL.

Slabou stránkou tohto riešenia je pomerne problematická migrácia z VCL na FireMonkey v rámci jedného projektu. Ale na druhej strane, pre nový projekt si vývojár môže zvoliť FireMonkey, aby zabezpečil multiplatformový charakter svojej výslednej aplikácie. S vydaním XE4 s podporou iOS už môžeme hovoriť o jasných konkurenčných výhodách Delphi. mobilný vývoj vo firemnom prostredí, ktoré sa zvýši po implementácii plánovanej podpory pre Android.

Preto ako také neexistuje žiadne výslovné „odmietnutie“ vývoja VCL. V nových verziách sa vyvíja aj VCL časť Delphi. To zahŕňa podporu pre 64-bit a zavedenie štýlu pre vizuálne komponenty a implementáciu mechanizmu pre flexibilné dynamické prepojenia alebo „viazanie“ a zahrnutie knižnice FireDAC pre prácu s databázami v projektoch VCL. Ide len o to, že na pozadí obrovského kvalitatívneho skoku vďaka FireMonkey vyzerá pokrok vo VCL akosi neprejavene. Ale nech je to akokoľvek, VCL je integrálnou súčasťou Delphi a zostane ňou ešte mnoho rokov. Aj keď vývoj platforiem a súčasný stav v oblasti OS pre desktopové systémy a mobilné zariadenia sú také, že budúcnosť je jednoznačne s FireMonkey.

V rozhovore sme už rozoberali podporu iOS, povedzme našim čitateľom o podpore ostatných najnovšie technológie z najnovšieho RAD Studio XE4, ako sú Windows 8 a WinRT, 64-bitové systémy, MacOS atď. Môžete vymenovať, čo ešte môžete ponúknuť modernému programátorovi rozmaznanému inováciami?

Moderný programátor s najväčšou pravdepodobnosťou nie je „rozmaznaný“ inováciami. Pri veľkých projektoch sa každá „inovácia“ často zmení na gigantické množstvo práce.

Napríklad všetci dlho čakali, mnohí sa okamžite ponáhľali preniesť svoje kódy na novú platformu. Ukazuje sa však, že ani veľmi profesionálne tímy na to nie sú pripravené. Kompilovateľný 64-bitový kód neznamená funkčný. Začali sa objavovať „hriechy mladosti“, ako napríklad používanie inštrukcií predpokladajúcich veľkosť adresy 4 bajty. Chýbajúca kultúra vykonávania testov spojená s technologickou neochotou implementovať tento proces v krátkom čase.

A tu – čím väčší je projekt, meraný napríklad počtom riadkov zdrojového kódu, tým starostlivejšie a vyváženejšie programátori zaobchádzajú s rôznymi druhmi inovácií, od vzhľadu „tlačidla“ v rozhraní až po „syntaktický cukor“ v kompilátore.

Jedným z týchto „problémových“ úspechov bolo vydanie systému Windows 8. Osobne, ako používateľ PC a iba moderný IT špecialista, som s Windowsom 8 spokojný. Ale pre vývojárov, ktorým bola ako záťaž zaslaná dávka počítačov so systémom Windows 8 s technickými špecifikáciami na vývoj pod novým OS, to znamená určité ťažkosti.

Snažili sme sa poskytnúť podporu pre vývoj tým najpohodlnejším a bezbolestným spôsobom. nové rozhranie tento OS. Preto boli zavedené špeciálne štýly pre VCL aj FireMonkey a programátor môže buď prebudovať rozhranie aplikácie, alebo vytvoriť novú aplikáciu, ktorá bude vzhľadom na nerozoznanie od tej „natívnej“ pre Windows 8. Samozrejme, je potrebný „domorodec“ podpora Windows 8 kvôli WinRT. Ale tu je uprednostňovanie cieľov v moderné podmienky. Mac OS, iOS, Android v blízkej budúcnosti zatiaľ nedávajú príležitosť hovoriť o plnej podpore WinRT v blízkej budúcnosti.

Strategickým cieľom Embarcadera je samozrejme multiplatformnosť. Vydanie RAD Studio XE4 bolo kľúčové, predovšetkým kvôli podpora iOS. Aktívny programátor používajúci VCL môže začať s vývojom pre iOS v priebehu niekoľkých hodín. Aj jednoduchá mobilná aplikácia sa dá okamžite premeniť na výkonný projekt, ktorý funguje v rámci existujúcej infraštruktúry. Nemyslite si, že ide len o nový kompilátor pre FireMonkey a nový štýl aby zodpovedali rozhraniu iOS.

To zahŕňa nový vizuálny dizajnér, vstavanú podporu pre rôzne tvarové faktory, knižnice prístupu k údajom vrátane nového FireDAC a technológiu LiveBindings pre flexibilné a dynamické viazanie na firemné údaje. Všetky tieto inovácie prichádzajú súčasne – pre Windows, pre Mac OS a pre iOS. operačný systém Mac OS sa nevyvíja tak rýchlo, takže neexistujú také problémy ako prechod z Windows 7 na Windows 8. Objavili sa však Retina displeje a to si vyžadovalo osobitnú pozornosť. Teraz každá aplikácia MacOS vytvorená v Delphi XE4 automaticky obsahuje dva štýly – „normálny“ a „vysoké rozlíšenie“.

To. rovnaká aplikácia môže mať rovnako kvalitné „natívne“ rozhranie na ľubovoľnom stolný počítač od spoločnosti Apple.

Embarcadero nechce svojimi novými inovatívnymi vydaniami „prekvapiť“, „ohromiť“ či dokonca „baviť“ vývojárov. Naopak, IT sféra je už teraz plná rôznych prekvapení: nové zariadenia, nové platformy, noví používatelia, ich nové potreby, nové scenáre interakcie. Pridajte k tomu nové technológie vývoja softvéru a programátori jednoducho nebudú mať čas vytvárať nové systémy a na existujúcich - urobia len to, čo migrujú z jedného prostredia do druhého, zo starej knižnice do novej, z jedného jazyka do ďalší.

Ale nepriznávame odmietnutie všetkého nového. Chceme len zabezpečiť kontinuitu všetkého – kódu, rozhrania, projektu, dokonca aj profesionálnych zručností, keď sa objavia nové platformy a zariadenia. Dá sa povedať, že bojujeme proti nezdravému konzervativizmu vo vzťahu k novým platformám na úkor zdravého konzervativizmu vo vývojových nástrojoch. Od Embarcadera nečakajte exotické produkty, neštandardné programovacie jazyky a bizarné vývojové nástroje.

U nás vždy nájdete vizuálny vývoj, klasické jazyky, "native" kód a nech sú cieľové platformy pre vaše aplikácie vytvorené rovnakým osvedčeným klasickým spôsobom nové.

Čo je Fire Monkey?


FireMonkey (FMX) je framework pre multiplatformový vývoj pre desktopové systémy (Windows, Mac OS + podpora serverovej strany na Linuxe v blízkej budúcnosti) a mobilné (iOS a Android) s použitím jazyka Delphi/C++.

Zvláštnosti:

  • jednotná kódová základňa pre všetky platformy;

  • akýkoľvek ovládací prvok (vizuálny komponent) môže byť kontajnerom (rodičom) pre iné komponenty;

  • prítomnosť veľmi pokročilého relatívneho usporiadania (20 typov) komponentov na formulári;

  • LiveBinding vám umožňuje pripojiť akýkoľvek typ údajov alebo informácií k akémukoľvek používateľskému rozhraniu alebo grafickým objektom;

  • prítomnosť štýlov formy/komponentov;

  • Multi-Device Preview vám umožňuje prispôsobiť vizuálnu prezentáciu pre každú z platforiem;

  • FireUI Live Preview – Zobrazuje zobrazenie aplikácie na skutočných zariadeniach v reálnom čase.

možnosti:

  • používanie natívneho API každej z platforiem, ako aj možnosť volať natívne knižnice tretích strán;

  • interakcia so všetkými senzormi (GPS, Akcelerometer, Kompas, Bluetooth (vrátane LE) a ďalšie);

  • podpora push notifikácií, IoT;

  • podpora asynchrónnych HTTP požiadaviek;

  • podpora väčšiny databáz (MsSQL, MySql, Oracle, PostgreSQL, MongoDB atď.);

  • pracovať s Cloud Service (Amazon, Azure);

  • podpora služby Android.

Nevýhody (momentálne):

  • nedostatok podpory pre prispôsobenie natívnych tried;

  • implementácia konkrétnych vecí je buď nemožná (widgety, rozšírenia (iOS) atď.), alebo je potrebný tanec s tamburínou (služba na pozadí, vysielaná správa atď.);

  • prispôsobenie Úvodná obrazovka (úvodná obrazovka), mierne povedané, nie;

  • Ovládanie FMX používa vlastné vykresľovanie (vizualizácia, kresba), ktoré je čisto vizuálne podobné natívnemu;

  • používanie natívnych ovládacích prvkov je spojené s veľkými pohybmi tela;

  • pri veľkom vnorení komponentov sa dejú neuveriteľné veci: aplikácia padá na rôznych miestach, stráca sa zameranie, zamrzne atď.;

  • informačný obsah ladenia aplikácie na mobilných platformách je nulový;

  • popisy chýb na mobilných platformách sú zredukované na zbytočné „Chyba 0x00000X“;

  • čas kompilácie si želá, aby bol najlepší pre stredné a veľké projekty;

  • potreba použiť súbor na zdokonalenie mobilných aplikácií pre každú platformu;

  • žiadna podpora architektúry Intel Atom;

  • neprimeraná cena v porovnaní s konkurenciou.

Výhody:

  • veľmi aktívny nedávny vývoj produktu aj komunity, podpora stále nových a nových technológií;

  • prítomnosť veľkého množstva bezplatných a komerčných komponentov;

  • rýchlosť aplikácie je veľmi blízka natívnej;

  • veľmi pokročilý vizuálny editor a prostredie vo všeobecnosti, prítomnosť štýlov;

  • možnosť otestovať aplikáciu na Win, a až potom ju nasadiť do zariadení, čo výrazne urýchľuje vývoj;

  • zmena režimu/platformy pohybom zápästia;

  • PAServer poskytuje jednoduchú interakciu s MacO pri vývoji pre Apple OS;

  • podpora 3D grafiky hneď po vybalení.

Na záver chcem povedať, že za posledných pár rokov sa FireMonkey rozrástol na profesionálny nástroj pre multiplatformový vývoj podnikových aplikácií a nielen to. Mnohé nedostatky sa postupne riešia a každým vydaním sa produkt stáva modernejším a sebestačnejším, vytráca sa aj doterajšia skepsa voči samotnému jazyku Delphi spojená s dlhoročnou stagnáciou. Písanie nových projektov na FireMonkey je „bezpečné“ a sľubné.



Načítava...
Hore