Evangheliştii mint. maimuța de foc e nasol

A trecut destul timp de când termenul FireMonkey a devenit mai mult sau mai puțin familiar, dacă nu tuturor dezvoltatorilor, atunci cel puțin celor care folosesc Delphi. În acest timp, au existat cărți despre FireMonkey, articole despre FireMonkey, articole despre FireMonkey în numeroase bloguri. Este foarte interesant să citești toate acestea. Dar nicio teorie nu poate înlocui practica. Și eu, ca mulți înainte, am avut o mâncărime să încerc să scriu ceva folosind FireMonkey.

Procedând astfel, a apărut însă o problemă. Din anumite motive, am decis că trebuie doar să implementez un proiect de lucru nu foarte complicat.

Pentru a explica de ce s-a dovedit a fi o problemă pentru mine, va fi nevoie de o digresiune (cine vrea să scrie, liric). O excursie în trecutul meu ca dezvoltator. Explicați câteva dintre părerile mele despre programarea folosind Delphi.

Trebuie să spun că am început să folosesc Delphi pe Windows 3.1, adică din prima versiune. Și de atunci studiez VCL. Studiat în original, ca să zic așa. Codurile sursă urmărite, adresate, urmărite. Iar si iar.

Se știe că, în diferite momente, setul de componente livrat cu Delphi a inclus componente terțe care trebuiau să umple golurile din VCL și care probabil au trecut printr-un fel de control al calității înainte de a fi incluse. Unele dintre aceste componente continuă să fie furnizate până în prezent. Luați aceeași Indy. Nu vreau să jignesc pe nimeni, aceasta este părerea mea pur personală, care se aplică și mie ca dezvoltator de componente: nici un set nu a fost atât de profund gândit și implementat, precum și un VCL uriaș și divers. Nu, nu mă prefac a fi adevărul suprem și, desigur, există multe erori în VCL în sine, decizii care provoacă neînțelegeri, provoacă respingere și cu care vrei să nu fii de acord. Dar mereu am avut impresia stil uniform. Există în VCL, după părerea mea, un nucleu frumos și puternic care susține întregul design Delphi și în jurul căruia sunt construite atât infrastructura software, cât și comunitatea de dezvoltatori în sine. Mulțumesc în mare parte VCL, din nou, în opinia mea, zvonurile despre moartea lui Delphi sunt încă zvonuri. Și când componente terțe au fost incluse în livrarea VCL, a fost imediat observat, acestea au fost diferite.

Dar apoi vine momentul și aud că VCL este o tehnologie depășită. O tehnologie care ar trebui lăsată în trecut. Dezvoltatorii ar trebui să implementeze toate proiectele lor noi pe FireMonkey, dar despre cele vechi... ar fi bine să le transfere pe șine noi. FireMonkey este peste tot și întotdeauna. Și o aud din diferite surse. Și destul de persistent. Nu, nimeni nu ucide VCL. el rămâne cu noi. Dar nu mai este numărul unu. Ar trebui să fie un substitut. Cel puțin așa înțeleg ce se spune despre viitorul produsului.

În principiu, înțeleg această aliniere. S-a luat un curs pentru multi-platformă și, mai important, pentru multi-platformă. La urma urmei, ce este VCL? Biblioteca de componente vizuale. Biblioteca de componente vizuale. Este posibil să nu fiți de acord cu asta. De exemplu, am considerat întotdeauna o mulțime de componente non-vizuale și nu componente, ci doar clase, o parte integrantă a VCL și un număr mare de clase și componente terțe - o continuare, o extensie a VCL . Ei bine, nu pot considera moștenitorii TDataset-ului ca nefăcând parte din VCL. Deși, de exemplu, termenul DBExpress Library spune că nu este, așa cum ar fi, un VCL. Aparent, Embarcadero împarte într-adevăr VCL-ul monolitic, din punctul meu de vedere, într-o serie de biblioteci separate. Nu, desigur, nu complet separat, dar totuși. Și dacă luați acest punct de vedere, FireMonkey este destinat să înlocuiască partea vizuală a VCL (cum ar trebui să numesc în continuare clasă completă și biblioteca de componente, poate Borland Component Library?).

În jurul cărora sunt componentele vizuale ale bibliotecii? În jurul nivelului scăzut, elemente de baza furnizate de sistemul de operare. Mânerele ferestrelor, fonturile, ferestrele în sine, elementele de intrare, mesajele, contextele dispozitivului și multe altele - acestea nu sunt conceptele bibliotecii care vine cu Delphi, ci conceptele sistemului de operare. Da, așa este, Windows. Și dacă doriți să construiți o bibliotecă multiplatformă, atunci este logic să refuzați infrastructura oferită de sistemul de operare care execută programul scris cu ajutorul bibliotecii.

Este exact ceea ce FireMonkey încearcă să facă. Aceștia încearcă să creeze o infrastructură bazată pe mecanismele de bază susținute de diverse sisteme de operare care pot înlocui serviciul pe care îl oferă sistemele de operare în sine.

Mulți își amintesc că au încercat să facăcross-platform nu numai biblioteca, ci și Delphi însuși. Paralel cu Delphi 6, au fost lansate produsul Kylix și biblioteca CLX. Toate acestea au fost făcute pentru a putea dezvolta pentru Linux. Cu toate acestea, Linux nu are multe dintre conceptele de bază de ferestre GUI pe care le are Windows. Interfața fereastră pentru Linux nu este, în general, un fenomen nativ. Aceasta este o aplicație opțională. Și a trebuit să scriu un fel de bibliotecă sintetică. Cu ajutorul acestuia, a fost posibil să se scrie un program atât pentru Windows, cât și pentru Linux. Totuși, îmi amintesc și acum acel sentiment, nu de dezamăgire, mai degrabă de inconvenient enervant, pe care l-am trăit când am încercat să folosesc analogii componentelor vizuale de la CLX. Am început să lipsesc multe. Ceea ce făceam fără să mă gândesc când dezvoltam cu VCL s-a dovedit a fi dificil, foarte diferit sau pur și simplu imposibil de făcut folosind CLX.

Am simțit cam același lucru când am trecut de la BDE la DBExpress. Vechi, familiar de la Field Test-a BDE (Borland îl folosea deja în Quattro Pro pentru Windows iar în Paradox pentru Windows, și se numea ODAPI, apoi IDAPI, și era o tăietură mai sus, după părerea mea, ODBC-ul Microsoft) a fost declarată tehnologie învechită, care ar trebui să cedeze în noi proiecte unei noi biblioteci. La început îmi lipsea mereu ceva din DBExpress, în special cunoștințele.

În același timp, nu vreau în niciun caz să mustrez sau să critic nici bibliotecile enumerate mai sus, nici deciziile care au dus la apariția lor. Este vorba doar despre impresiile mele, uneori despre primele impresii.

Acum, poate, devine puțin mai clar de ce decizia de a scrie un mic proiect de lucru folosind FireMonkey a adus o serie de probleme. De mulți ani, în dezvoltarea proiectelor, proiectelor și proiectelor, s-a format un anumit stereotip, un anumit șablon despre ce și cum trebuie făcut. Și în cazul meu, a trebuit să mă confrunt cu faptul că șablonul trebuie schimbat. Pentru că nu poți transfera tot ce te-ai obișnuit folosind VCL într-un proiect construit pe FireMonkey.

La începutul proiectului, am experimentat un anumit sentiment de deja vu. Și anume, un sentiment de disconfort. De exemplu, elementele de intrare obișnuite nu au multe proprietăți. Trucurile care au devenit ferm stabilite în practică, bazate pe trucuri legate de cunoașterea unor caracteristici ale sistemului de operare, nu funcționează într-un context nou. Ca să nu mai vorbim că unele componente s-au schimbat radical.

Ei bine, o altă nuanță importantă. Ce fel de proiecte trebuie de obicei realizate la locul de muncă, dacă nu are legătură cu compilatoare de scriere, sisteme de modelare sau orice altceva extrem de științific? Cred că pentru majoritatea este vorba despre dezvoltarea a ceva care implică utilizarea bazelor de date. Mai mult, ceva înalt științific poate folosi și serviciile oferite de SGBD.

Aici mă mai aștepta o ambuscadă. Din anumite motive, atunci când descoperiți în practică că FireMonkey nu conține elemente axate pe lucrul cu datele stocate în baza de date, nu sunteți prea pregătit pentru acest lucru (pentru a spune ușor). Deși am citit deja despre asta de multe ori și știi (teoretic) ce ar trebui să folosești. Este vorba despre Live Bindings.

Nu vreau să intru într-o ceartă dacă programatorii adevărați ar trebui să folosească componente db-aware sau nu ar trebui să afișeze, să editeze și, în cele din urmă, să salveze. Ceea ce, din nou, nu este nici rău, nici bun. Pur și simplu s-a întâmplat așa pentru mine.

Aceasta se încheie cu prima mea postare cu impresii. Urmează poveștile despre ce și cum au depășit în timp ce lucrau la proiect.

Au trecut mai bine de trei ani de când divizia CodeGear responsabilă pentru crearea unor instrumente renumite în lume precum Delphi, C++Builder și JBuilder, precum și DBMS-ul Interbase, au devenit parte a Embarcadero Technologies, o companie cunoscută pentru proiectarea și administrarea bazelor de date. instrumente. și doi ani de când am discutat pe paginile revistei noastre la ce să ne așteptăm în dezvoltarea instrumentelor atât de populare în rândul dezvoltatorilor ruși. I-am întrebat pe David Intersimone, vicepreședinte pentru relații cu dezvoltatorii și evanghelist șef al Embarcadero Technologies, și pe Kirill Rannev, șeful biroului de reprezentanță al Embarcadero Technologies în Rusia. Pentru cei mai tineri cititori ai noștri, vă vom informa că acesta este departe de primul interviu pe care David și Kirill îl acordă ComputerPress - cooperarea noastră continuă pentru al doilea deceniu. Și de aproximativ același număr de ani, publicăm periodic recenzii ale instrumentelor de gestionare a bazelor de date, în care se acordă multă atenție produselor Embarcadero.

ComputerPress: David, divizia ta face parte din Embarcadero de trei ani. În urmă cu doi ani, erai plin de entuziasm în legătură cu faptul că a devenit parte dintr-o companie apropiată ca scop și spirit. S-a schimbat ceva în acest timp? Tu și colegii tăi simțiți același entuziasm?

Da, sunt încă entuziasmat. Principala schimbare care a avut loc de când am devenit parte a companiei Embarcadero este că au fost multe investiții în dezvoltarea Delphi. Numărul de angajați care lucrează la instrumente de dezvoltare a crescut, a crescut numărul de tehnologii pe care le putem dezvolta sau, dacă este cazul, le dobândim.

Lansarea RAD Studio XE 2, pe care intenționăm să o demonstrăm la Moscova, este cea mai mare lansare a acestui produs cu capabilități uriașe și un număr mare de platforme acceptate de la prima versiune Delphi, creată pentru Windows pe 16 biți și fostul inovator. produs care a conectat abordarea componentelor și compilarea la codul mașinii. Acum susținem dezvoltarea nu doar pentru Windows, ci și pentru Macintosh, ca să nu mai vorbim de dezvoltarea web și crearea de aplicații pentru dispozitive mobile, iar aceste aplicații pentru diferite platforme pot avea un singur cod.

Noua platformă de dezvoltare, FireMonkey, este o colaborare între Embarcadero și firma rusă recent achiziționată, cu sediul în Ulan-Ude, KSDev, un producător de componente de grafică vectorială, DirectX și OpenGL, tehnologii de efecte grafice și componente Delphi care utilizează GPU cu PixelShader 2.0. Am achiziționat compania KSDev (vezi ksdev.ru) în urmă cu un an și am început să lucrăm împreună pentru a crea un instrument de dezvoltare multiplatformă care include o platformă pentru dezvoltarea aplicațiilor FireMonkey cu componente pentru Delphi și C ++ Buider pentru crearea de interfețe cu utilizatorul aplicației, integrarea cu baze de date, procesare grafică folosind un procesor grafic și integrare cu sistemul de operare.

Folosind FireMonkey, puteți crea o aplicație care rulează CPU și GPU împreună, iar apoi folosind diferite compilatoare și biblioteci de rulare (Run-time Libraries, RTL) o puteți compila pentru Windows, Mac OS sau iOS. În loc să înveți programarea folosind diverse biblioteci grafice, studiați API-ul diferitelor platforme care au diverse sisteme coordonate și capacități diferite, dezvoltatorii care folosesc Delphi și C++Builder pot folosi aceeași abordare a componentelor, editând vizual formulare și conectându-se la baze de date prin mutarea componentei cu mouse-ul. Este fundamental Metoda noua crearea de aplicații care rulează pe diferite platforme, iar viitorul ține de el. Dacă doriți să adăugați suport pentru alte sisteme de operare și platforme la aplicația dvs., nu trebuie să o reproiectați și să o dezvoltați - va fi suficient doar să o recompilați.

Creăm noi compilatoare care generează cod nativ. Astăzi există compilatoare Delphi pentru 32 de biți și 64 de biți versiuni Windows, 32 de biți versiuni Mac OS 10. Și lucrăm la următoarea generație de compilatoare Delphi și C++Builder, care vă vor permite să creați cod nativ de înaltă performanță atât pentru acestea, cât și pentru alte platforme, cum ar fi Android sau Linux, și să păstrați același design, aceleași componente, același cod folosind compilatoare și biblioteci de rulare diferite.

După cum vedeți, am destule motive de entuziasm. Și dezvoltatorii pe care îi întâlnesc din întreaga lume știu că Embarcadero investește foarte mult în Delphi și C++Builder, precum și în instrumentele de dezvoltare PHP.

KP: Ce progrese ați făcut în integrarea instrumentelor celor două companii în ultimii doi ani? Care sunt planurile Embarcadero pentru viitor în acest domeniu?

DI.: La momentul în care divizia CodeGear a devenit parte a Embarcadero, această companie avea echipe de dezvoltare în Toronto, Monterrey și România, eram și suntem încă în Scotts Valley și în Rusia, la Sankt Petersburg. Embarcadero avea instrumente de dezvoltare și administratori de baze de date, CodeGear avea instrumente de dezvoltare a aplicațiilor, dar aceștia din urmă folosesc și baze de date. Fuziunea companiilor este o combinație de expertiză, cunoștințe în domeniul bazelor de date, optimizare a codului, inclusiv cod server. Fuziunea a avut ca rezultat și crearea unui nou produs, AppWave, o tehnologie specială pentru a transforma o aplicație Windows obișnuită în ceva foarte ușor de utilizat (cum ar fi aplicațiile pentru iPhone sau alte dispozitive). AppWave vă permite să nu instalați o aplicație, ci pur și simplu să o selectați și să o rulați de pe serverul pregătit de stocare a aplicației (aplicații), în timp ce va fi executată pe computerul utilizatorului fără a face modificări în registrul acestuia și zona sistemului Sistemul de fișiere. Apropo, browserul aplicației AppWave este scris în Delphi. Embarcadero folosește Dephi pentru propria sa dezvoltare și expertiza noastră în dezvoltarea de aplicații.

Aplicația iPhone (iOS) creată de
folosind platforma FireMonkey

De asemenea, puteți utiliza integrarea instrumentelor noastre de dezvoltare și DB Optimizer pentru a optimiza interogările SQL atunci când construiți aplicații. Prin transmiterea codului SQL direct către DB Optimizer, îl puteți face profil, îl puteți testa și puteți returna o versiune optimizată a acestuia în mediul de dezvoltare. Expertiza Embarcadero în bazele de date a îmbunătățit, de asemenea, tehnologia DataSnap. Datorită dezvoltatorilor din Toronto, am acumulat multe cunoștințe despre arhitectura sistemelor și bazelor de date cu mai multe niveluri. Acum avem expertiză comună în codul serverului și procedurile stocate în ambele companii. Avem instrumente precum RapidSQL și DB Change Manager și medii de dezvoltare care facilitează crearea de cod pe server, cum ar fi tehnologiile Code Insight și Code Completion, care au făcut posibilă crearea de tehnologii SQL Insight și SQL Completion. Abordarea noastră comună pentru crearea codului client și server, filozofia noastră comună, ne permite să împărtășim caracteristici comune între instrumentele de gestionare a bazelor de date și instrumentele de dezvoltare a aplicațiilor.

Kirill Rannev: Vreau să adaug ceva important. Din punct de vedere comercial, este foarte important modul în care livrăm instrumentele noastre. De exemplu, noua versiune a RAD Studio XE 2 Ultimate include setul complet de instrumente DB Power Studio. Este un set foarte puternic de instrumente, inclusiv mediul de creare a interogărilor RapidSQL, instrumentul de gestionare a modificărilor DB Change Manager și instrumentul de optimizare a interogărilor DB Optimizer, permițându-vă să efectuați o parte importantă a procesului de dezvoltare și implementare, gestionând modificările în model de date, bază de date, cod etc. Aceasta este o combinație foarte bună și corectă de tehnologii.

DI.: Dar, dacă este necesar, dezvoltatorii pot folosi Subversion pentru controlul versiunilor. cod sursași DB Change Manager pentru versiunea metadatelor. Puteți utiliza profilarea codului și DB Optimizer pentru a optimiza codul serverului, RapidSQL pentru a construi și depana codul serverului și mediile noastre de dezvoltare pentru a construi și depana aplicații. Această combinație de tehnologii în RAD Studio XE Ultima ediție demonstrează paralelele dintre bazele de date și modelele de dezvoltare a aplicațiilor. Majoritatea dezvoltatorilor care construiesc aplicații de afaceri cu Delphi și C++Builder lucrează cu baze de date și au nevoie de aceste instrumente, iar RAD Studio XE Ultimate Edition este o combinație excelentă pentru acești dezvoltatori.

KP: Utilizatorul modern nu mai este doar un utilizator al platformei Windows. Folosim dispozitive mobile, iPhone, iPad, dispozitive bazate pe platforma Android. Aceasta înseamnă că dezvoltatorii ar trebui să înceapă să vizeze diferite platforme fără o creștere semnificativă a investițiilor în formare - adică sunt necesare instrumente universale. Evident, este nerealist să ne așteptăm la apariția instrumentelor universale de la producătorii de platforme și, în această chestiune, ne putem baza doar pe producătorii independenți de scule. Unde ne putem baza pe Embarcadero?

DI.: Mai avem multe de făcut în zona suportului platformei. Astăzi vă prezentăm suport pentru platforme iOS pentru iPhone și iPad, apoi smartphone-urile Android, Windows 7 și Blackberry vor primi suportul nostru. În RAD Studio XE 2, am început prin a construi platforma FireMonkey pentru iOS și ulterior vom porta FireMonkey pe alte platforme.

În același timp, există un număr mare de sisteme de operare care acceptă ecrane tactile(ecran tactil), pentru telefoane, tableteși dispozitive, desktop-uri și vom continua să adăugăm suport pentru acestea. În plus, există sisteme de control vocal, sisteme de control al mișcării, sisteme biometrice, accelerometre, așa că trebuie să continuăm extinderea FireMonkey pentru ca toți dezvoltatorii să poată profita de noile platforme. De exemplu, dispozitivul Microsoft Kinect a fost proiectat pentru Xbox 360, iar acum există un SDK (Software Development Kit) corespunzător pentru Windows. Și avem deja exemple în care folosim mișcarea pentru a controla o aplicație în același mod în care am folosi în mod normal un mouse sau o tastatură.

Când creați aplicații cu o mulțime de grafică complexă, generați o lume întreagă de noi interfețe de utilizator. Dacă avem de-a face cu sistemul de operare Windows, încapsulăm API-ul Windows al acestuia în biblioteca VCL (Visual Component Library - o bibliotecă de componente vizuale care face parte integrantă din instrumentele de dezvoltare Delphi și C++ Builder. - Notă. ed.), care, de altfel, poate fi aplicată în continuare. Și în FireMonkey, încapsulăm API-ul sistemului de operare. Dar astăzi manipulăm formele și grafica mult mai pe scară largă. De asemenea, puteți adăuga proprietăți ale spațiului fizic pentru animație și efecte speciale. În plus, există multe altele caracteristici suplimentare pentru a crea interfețe de utilizator pe care le vom implementa în următorii câțiva ani pentru diferite platforme, dispozitive mobile și tablete.

Microsoft a lansat recent detalii despre Windows 8, care urmează să fie lansat peste un an. Vom sprijini aceste inovații în biblioteca VCL și în platforma FireMonkey. Dar Delphi este un instrument de dezvoltare conceput nu numai pentru Windows, ci și pentru Macintosh, iPhone și iPad. De asemenea, dezvoltăm produsele noastre pentru PHP, acceptăm jQuery Mobile, utilizăm aplicații software interfață iOS să dezvolte aplicații mobile client și să creeze aplicații PHP pe partea de server folosind vrăjitori și instrumente pentru a genera coduri JavaScript și HTML la nivelul clientului și foi de stil în cascadă. Putem împacheta aplicații PHP și aplicații client cu cod nativ pt iPhone iOS, în timp ce un astfel de client va comunica cu serverul PHP. Și acesta, la rândul său, va comunica cu serverul de baze de date și cu serviciile web - cu tot ceea ce este necesar pentru afaceri.

Mediul de dezvoltare RadPHP XE2. Creați o aplicație web mobilă
folosind componente jQuery Mobile pentru iPhone 3G

Cu alte cuvinte, intenționăm să extindem capacitățile FireMonkey și VCL, inclusiv suport pentru platformele mobile.

KP: Ați putea detalia mai multe despre platforma FireMonkey?

DI.: După cum am menționat deja, biblioteca VCL creată pentru Windows va continua să se dezvolte și să se îmbunătățească. Dar astăzi, dacă doriți să dezvoltați efectiv aplicații de afaceri, trebuie să le creați pentru diferite platforme. Pentru asta este concepută platforma FireMonkey. Acceptă crearea de interfețe de utilizator de înaltă rezoluție, grafică 3D de înaltă performanță, rate de cadre ridicate și, mai important, utilizează un GPU pentru a face acest lucru.

Puteți utiliza aceste caracteristici atunci când creați aplicații științifice, de inginerie și de afaceri. Astfel de aplicații se pot conecta la baze de date utilizând tehnologia dbExpress, folosind încă componente non-vizuale familiare dezvoltatorilor, cum ar fi ClientDataSet sau DataSource, folosesc tehnologia DataSnap, se pot conecta la orice baze de date, servere SOAP și REST. Puteți crea comenzi atractive, butoane cu casete, tabele neobișnuite și alte elemente de interfață, și în două și trei dimensiuni. Puteți încărca un model 3D gata făcut în aplicație și îl puteți combina cu o formă 2D, în care poate fi rotit și vizualizat din diferite unghiuri. Puteți crea un cub de date sau o diagramă de afaceri 3D și îl puteți roti folosind mouse-ul, tastatura sau chiar un dispozitiv Kinect, sau puteți intra în interiorul cubului și vă uitați la diferitele sale suprafețe din interior. Și toate acestea se pot face cu un GPU de mare viteză. Aceeași aplicație poate fi apoi compilată pentru o altă platformă, cum ar fi Mac OS.

Aplicație care conține un cub rotativ cu date,
asezat pe marginile sale

Sau puteți crea o formă 3D de la zero și puteți utiliza camere și lumini pentru a ilumina și roti părți ale interfeței cu utilizatorul. Designerul de formulare are deja un mediu încorporat pentru a sprijini interfața cu utilizatorul 3D direct în momentul proiectării.

Pe Windows, puteți utiliza bibliotecile Direct2D pentru grafică 2D de înaltă rezoluție și Direct3D pentru grafică 3D. Mac OS folosește bibliotecile Quartz și OpenGL în același scop. Pentru iOS, sunt utilizate bibliotecile Quartz și OpenGL ES. Dar toate acestea sunt ascunse de dezvoltator - el folosește platforma FireMonkey, sistemul de coordonate și interfața de programare a aplicațiilor, fără să se gândească la aceste biblioteci și poate compila aceeași aplicație pentru diferite platforme.

Să ne amintim ce este VCL. VCL este o componentă „înveliș” în jurul API-ului Windows. Avem de-a face cu resurse, meniuri, casete de dialog, culori, stiluri, Mesaje Windows. Fiind un wrapper multi-platformă, spre deosebire de VCL, FireMonkey păstrează aceleași modele de evenimente și componente, permițându-vă să gândiți în termeni de evenimente (de exemplu, evenimente OnClick, OnHasFocus, onMouseDown și onKeyDown), dar gestionați evenimentele Macintosh sau iPhone.

Platforma FireMonkey vine și cu sistem complet animarea elementelor interfeței cu utilizatorul. Cu siguranță nu este un sistem de animație complet de tip Pixar, dar vă permite să aplicați efecte precum animația bitmaps, evidențiind focalizarea unui element de interfață cu utilizatorul și lucrând cu grafică vectorială. Dezvoltatorul are acces la mai mult de 50 efecte vizuale: estompare, alb-negru, dizolvare, tranziții, reflexie, umbrire - toate tipurile de efecte disponibile în procesoarele grafice moderne, care se găsesc acum în aproape orice computer. O aplicație construită folosind platforma FireMonkey trimite comenzi către GPU, care face toată munca de afișare a graficelor și construirea interfeței cu utilizatorul. în care CPU gratuit pentru calcule și apeluri către sistemul de operare. Dezvoltatorul trebuie doar să plaseze corect componentele.

Cel mai fundamental lucru despre platforma FireMonkey este modul în care construiește interfața cu utilizatorul. Există facilități pentru plasarea graficelor bitmap pe elemente de interfață, cum ar fi meniuri, butoane și bare de defilare. În FireMonkey, folosim grafică vectorială GPU în acest scop. Din punct de vedere al programării, toate acestea sunt aceleași controale, dar procesorul grafic face toată munca de a le afișa. Putem aplica stiluri la controale, putem face ca o aplicație să arate ca o aplicație pentru Mac OS sau Windows, ne putem crea propriul stil, putem aplica stilurile noastre elementelor de interfață (de exemplu, facem un buton dreptunghiular sau rotund schimbându-i stilul în editorul de formulare) - pentru aceasta mediul de dezvoltare are un editor de stil. Vă puteți crea propriul stil sau puteți schimba stilul unei aplicații deja terminate.

FireMonkey Platform - Instrumente de dezvoltare
și platforme acceptate

Dacă vă amintiți, în biblioteca VCL exista un număr limitat de controale - containere (adică vă permiteau să plasați alte elemente în ele), iar în FireMonkey fiecare control este un container. Aceasta înseamnă că fiecare control poate conține orice alt control. De exemplu, elementele din lista derulantă pot conține imagini, butoane, casete de editare și alte comenzi. Și puteți plasa componente și pe straturi.

Sistemul de randare FireMonkey este destul de flexibil - poate folosi bibliotecile Direct2D, Direct3D și OpenGL trimițând comenzi către GPU. Pentru a realiza același lucru în VCL, a fost necesar să se genereze un buffer separat în afara ecranului, să se creeze o imagine în el apelând funcțiile adecvate ale bibliotecii grafice și apoi să o afișeze pe formular.

Exemple de efecte grafice acceptate de FireMonkey

Dacă nu aveți un GPU, puteți aplica în continuare forme 2D sau 3D și puteți utiliza comenzile FireMonkey. În acest caz, platforma FireMonkey va folosi bibliotecile GDI+ sau alte biblioteci similare și va efectua aceleași efecte și animație sau manipulare a obiectelor 3D.

O altă caracteristică a FireMonkey este un nou sistem pentru legarea elementelor de interfață la date, care este deschis și flexibil. Există două tipuri de elemente de interfață în VCL: legate de date și nelegate de date (de exemplu, TDBEdit și TEdit). În FireMonkey, fiecare control poate fi asociat cu date, de orice tip. Poate fi doar o expresie, un câmp dintr-un set de date, date de la obiecte create de dezvoltator sau rezultatele apelurilor de metodă.

În plus, atunci când creați o aplicație, puteți încărca în ea un model 3D gata făcut și îl puteți utiliza - astfel de capabilități sunt adesea necesare atât în ​​aplicațiile de afaceri, cât și în cele de inginerie. Avem un client care creează aplicații pentru logistică. Aveau un sistem informatic construit cu Delphi și, în el, o aplicație care desenează un plan și afișa informații din surse de date. Recent au făcut ceva interesant - au desenat un depozit 3D complet automatizat în AutoCAD, iar aplicația lor vă permite să vedeți cum se deplasează un încărcător automat prin depozit și plasează mărfurile pe rafturi. Și prezintă datele din surse pe imaginea corespunzătoare.

Exemple de modificare a stilurilor de aplicație

KP: Ce formate de model 3D sunt acceptate în prezent?

DI.:În această versiune, acceptăm încărcarea modelelor din AutoCAD, Collada (instrument Modelare 3D cu sursă deschisă. - Notă. ed.), Maya, un format OBJ acceptat de mulți furnizori de grafică 3D.

KP: Ce alte formate sunt planificate să fie adăugate?

DI.: Intenționăm să adăugăm 3DS (3D Studio MAX), SVG (de obicei acest format este folosit pentru grafica vectorială 2D, dar uneori pentru 3D), Google SketchUp. Este posibil să acceptăm și alte formate.

KP: Utilizarea modelelor 3D în aplicațiile create cu FireMonkey necesită o licență pentru instrumentul de modelare 3D corespunzător?

DI.: Nu, nu este. Tot ce facem este să citim fișierul model. Importăm modelul, dar nu îl exportăm (deși, desigur, puteți scrie o aplicație care salvează modelul în formatul dvs.). Nu pretindem că suntem producători de instrumente de modelare 3D - pentru aceasta puteți utiliza AutoCAD, 3D Studio Max, Maya sau orice alt instrument de modelare 3D și puteți importa modelele create în aplicațiile noastre.

KP: Cât de performante sunt aplicațiile construite cu FireMonkey pe platformele hardware moderne?

DI.: Performanța este destul de ridicată. De exemplu, o formă 3D cu trei sfere și trei lumini poate fi redată la 100 de cadre pe secundă pe un MacBook Pro. Și poate ajunge la 600 - depinde exact ce facem. Din nou, totul depinde de puterea GPU-ului.

KP:Înseamnă asta că cu ajutorul FireMonkey poți crea jocuri care îndeplinesc cerințele moderne?

DI.: Nu poziționăm instrumentele noastre de dezvoltare ca instrument pentru jocuri. Cu toate acestea, folosind performanța ridicată a GPU-urilor moderne, puteți crea și jocuri cu FireMonkey - la urma urmei, acestea sunt create folosind Direct3D sau OpenGL.

KP: Ce lucru faci acum în domeniul suportului pentru recunoașterea gesturilor și alte lucruri noi? Este disponibil un astfel de suport?

DI.: Nu avem încă suport pentru gesturi în această versiune. Controlul gesturilor va fi adăugat într-o versiune viitoare a FireMonkey, dar deocamdată puteți utiliza suportul pentru gesturi încorporat în sistemul de operare.

Mikhail Filippenko, directorul Fast Reports, Inc.

K.R.: Am spus deja că tehnologia FireMonkey are rădăcini rusești - bazele sale au fost create în țara noastră, iar apoi tehnologia în sine și dezvoltatorii săi au fuzionat în Embarcadero. În general, este îmbucurător să vedem creșterea componentei rusești în RAD Studio și Delphi. Aceasta este activitatea centrului nostru de dezvoltare din Sankt Petersburg și contribuția dezvoltatorilor ruși independenți. De exemplu, Rad Studio XE2 include generatorul de rapoarte FastReport, care este cunoscut în întreaga lume și foarte popular în țara noastră. El este din Rostov-pe-Don.

KP: Aș vrea să vorbesc despre compilatoare. Ce compilator este folosit pentru a crea aplicații iOS?

DI.: Nu avem propriul nostru compilator Delphi pentru iPhone sau iPad - nu am dezvoltat încă compilatoare pentru procesoarele ARM utilizate în aceste dispozitive. Pentru iOS, folosim temporar compilatorul Free Pascal și biblioteca de rulare. Dar lucrăm la următoarea generație de compilatoare, inclusiv cele pentru procesoare ARM. Dar există compilatoare pentru Windows și Mac OS, deoarece ambele platforme hardware se bazează pe procesoare Intel.

KP:Și ce s-a făcut în domeniul dezvoltării compilatorului în ultimii doi ani?

DI.: Avem compilatoare Delphi pe 32 și 64 de biți pentru Windows și Mac OS. Și lucrăm la o nouă generație de compilatoare Delphi și C++. Lucrările la ele sunt încă în desfășurare, dar când se vor finaliza, vom avea compilatoare Delphi pentru procesoarele ARM, Platforme Android, Linux și orice altceva. Și vom avea compilatoare C++ pe 64 de biți pentru Windows și alte platforme compatibile cu cel mai recent standard de limbaj C++ adoptat tocmai de ISO.

KP: Ce se întâmplă astăzi cu suportul cloud computing în instrumentele de dezvoltare Embarcadero?

DI.: Cu RAD Studio XE 2, acceptăm migrarea aplicațiilor către cloud-ul Microsoft Azure sau Amazon EC2 folosind Platform Assistant. Și avem componente de server pentru Cloud Storage pentru Azure și Amazon S3 pentru stocarea de tabele, date binare, cozi de mesaje. LA versiunea anterioaraÎn RAD Studio XE, am acceptat și implementarea aplicațiilor pe Amazon EC2, dar nu avea suport pentru stocare.

Suport pentru cloud computing în RAD Studio XE 2

KP: Acum doi ani ați vorbit despre noua soluție All-Access. Cât a fost la cerere? Pentru ce beneficii are integratori de sistemși dezvoltatori?

DI.: Soluția All-Access și instrumentul cloud AppWave sunt utilizate pe scară largă în întreaga lume. Acestea sunt concepute pentru a facilita utilizarea atât a aplicațiilor companiei noastre, cât și a celor terțe părți. De fapt, aceasta este o soluție pentru gestionarea licențelor și aplicațiilor și este convenabilă pentru companiile mari. Firmele mai mici care nu au echipe dedicate de gestionare a aplicațiilor pot pune aplicația într-un depozit, pot prelua nume de utilizator dintr-o bază de date și se pot asigura că acele aplicații sunt utilizate fără a fi nevoie să-și amintească unde cheie de licențăși câte licențe sunt disponibile. All-Access și browserul AppWave sunt concepute pentru a gestiona atât versiunea, cât și controlul accesului.

K.R.: Piața este atât de diversă, iar utilizatorii sunt atât de diferiți, încât este imposibil să acoperiți toate nevoile cu o singură soluție. Prin urmare, ne străduim pentru o varietate de soluții de „ambalare”. Am depus mult de lucru pentru a unifica licențierea, gestionarea licențelor și instalarea produsului. Această linie de soluții include instrumente de gestionare a licențelor și accesului nu numai pentru produsele Embarcadero, ci și pentru orice alte produse, inclusiv dezvoltări interne ale companiilor.

Munca de grupare a instrumentelor de dezvoltare în kituri de utilizator eficiente este încă în desfășurare. Avem All-Access - un superset care combină toate produsele Embarcadero. Dacă clientul achiziționează versiunea All-Access Platinum, el primește toate instrumentele care se află în Embarcadero. Dar uneori acest set se dovedește a fi redundant, de exemplu, am realizat alte două seturi pentru specialiștii în baze de date - DB Power Studio Developer Edition și DB Power Studio DBA Edition. Diferența dintre ele este că pentru dezvoltator oferim RapidSQL, un instrument de dezvoltare a codului de server, iar pentru administrator, este încorporat DBArtizan, un instrument de administrare a bazelor de date, un produs mai larg decât RapidSQL. Pentru profesioniști, avem următoarele suite All-Access: suita pentru toate produsele, DB Power Studio pentru dezvoltatori, DB Power Studio pentru administratori, ER Studio Enterprise Edition pentru arhitecți și oricine este implicat în modelare. Există combinații pentru dezvoltarea aplicațiilor și pentru administratori. Delphi este un instrument pentru dezvoltatori și are foarte mult sens să adăugați instrumente de dezvoltare SQL și instrumente de optimizare. În cele din urmă, DB Change Manager este un instrument foarte logic pentru gestionarea complexității modificărilor care apar bazelor de date în timpul ciclului de viață al acestora.

Astfel, All-Access este capul unei familii mari de diferite seturi de produse.

KP: Dacă nu este un secret, cine în Rusia folosește All-Access?

K.R.: Avem clienți care au cumpărat All-Access bazat pe Delphi. Multe dintre ele creează sisteme complexe client-server cu SQL Serverși Oracle și le-a plăcut imediat setul nostru de instrumente pentru baze de date multiplatforme. Avem o companie client care a lucrat cu Delphi încă de la prima versiune și s-a mutat de la Delphi la All-Access în urmă cu un an. Două instrumente care sunt garantate a fi utilizate de toți dezvoltatorii din această companie sunt Delphi și DBArtisan. Și există clienți care au venit la All-Access din partea bazei de date. Sarcina lor principală este să administreze baze de date, dar ocazional dezvoltă și aplicații. Clienții care folosesc All-Access includ companii media, constructori de mașini și alte industrii.

Separat, aș dori să mă opresc asupra companiilor mici. Foarte des, în echipe mici, dezvoltatorul face totul, iar o astfel de companie cumpără uneori pachete mari de alimente All-Access pentru unul sau doi dezvoltatori. În echipele mari, nu este încurajat ca dezvoltatorul să îndeplinească, de exemplu, rolul de administrator al bazei de date, așa că pachetele mici de alimente sunt de obicei populare acolo, iar în firme mici o astfel de combinație de îndatoriri este destul de acceptabilă.

Delphi Architect este un produs puternic comercializat, care include instrumente de modelare și programare. Numărul de copii vândute este însă mai mic decât versiunile Delphi Enterprise, dar este și mare. Observ că în 2010 eram cea mai bună țară din punct de vedere al vânzărilor, în ciuda faptului că toate țările au supraviețuit crizei. Această creștere sa datorat nu atât factorilor economici, cât și faptului că versiunea RAD Studio XE, lansată la sfârșitul anului 2009, s-a dovedit a fi la mare căutare. Și în timp ce ne așteptăm la o creștere suplimentară a vânzărilor.

Am făcut un alt pas rezonabil, care este foarte solicitat în Rusia. Gradul de legalizare a diferitelor versiuni ale produselor noastre este diferit: cu cât versiunea este mai mare, cu atât este mai legalizată, deoarece mai devreme software nu atât de activ cumpărat. Începând cu RAD Studio XE, licența acoperă versiunile 2010, 2009, 2007 și chiar Delphi 7, un produs utilizat pe scară largă.

Astăzi, dezvoltatorii se confruntă cu faptul că au atât proiecte noi, cât și proiecte în stare de sprijin. Un număr mare de proiecte au fost migrate de la versiunile timpurii ale Delphi la versiunea 7 și rămân în această versiune, continuând să lucreze pe resurse relativ mici. Nimeni nu le mută la versiuni mai noi, dar sunt menținute viabile. Și acum permitem puțini bani (mai puțin decât prețul unei licențe Delphi 7) pentru a obține atât RAD Studio XE, cât și Delphi 7 - adică legalizăm dezvoltatorul atât pentru implementarea de noi proiecte, cât și pentru proiecte de suport.

KP: Cum evaluezi starea actuală a comunității Embarcadero?

DI.: Această comunitate este mare și foarte pretențioasă. Au nevoie de totul și imediat - sunt dezvoltatori. Dar uneori este nevoie de mult timp pentru a face ceva corect.

Acum câțiva ani am luat arhitectura componentelor Windows și am pus-o pe desktop-uri Linux. Acum vedem că nu a fost decizia corectă. Decizia corectă este crearea unei platforme pentru aplicații. Aplicațiile chiar și pentru diferite platforme au meniuri, ferestre, grafică, acces la reteași accesul la dispozitiv. Diferite platforme pot avea diferite modele controlul fluxului sau gestionarea excepțiilor, dar în codul aplicației vedem aceleași blocuri de încercare. Sarcina noastră este să le facilităm dezvoltatorilor să creeze aplicații de afaceri și să le compilați pentru platformele pe care ar trebui să fie utilizate, indiferent de modul în care este aranjat sistemul de instrucțiuni al procesoarelor corespunzătoare și care sunt alte caracteristici ale acestor platforme. Și FireMonkey este exact ceea ce aveți nevoie pentru a rezolva această problemă.

KP: Dacă o companie creează un dispozitiv nou și dorește să aibă suport FireMonkey pentru acesta, ar fi posibil acest lucru?

DI.: Cu compilatoare de nouă generație care vor avea un front-end independent de platformă și un back-end dependent de platformă, acest lucru va fi destul de posibil. Între timp, pentru fiecare sistem de operare, creăm de la zero un compilator și o bibliotecă runtime.

Orice dispozitiv nou modern are de obicei o interfață grafică cu utilizatorul (multe dintre ele au un procesor dual-core și un GPU) și SDK-uri standard pentru dezvoltatori. Toate acestea simplifică crearea de suport pentru dispozitive în FireMonkey. Dacă noul dispozitiv are doar biblioteci pentru grafică 2D precum Quartz, vom putea suporta un astfel de dispozitiv în FireMonkey, dar acest lucru va dura aproximativ câteva luni. Totuși, multe depind de platformă: nu toate platformele acceptă toate caracteristicile, de exemplu, iOS nu are meniuri și casete de dialog și nu vei putea plasa componentele corespunzătoare pe formularele unor astfel de aplicații.

KP: S-a schimbat ceva în politica de lucru cu partenerii? Ce se face pentru a crește ponderea utilizatorilor produselor dvs.? Ce se face în Rusia?

DI.: Ecosistemul nostru de parteneri este larg - există sute de producători de instrumente și componente care nu se regăsesc în produsele noastre și avem un program de parteneriat tehnologic. Prin urmare, o gamă largă de componente, tehnologii și instrumente sunt disponibile pentru dezvoltatori. Iar soluțiile pe care le creează pentru clienții lor sunt mai bune decât dacă ar fi folosite numai produsele noastre. Iar pentru vânzări, avem birouri în multe țări, revânzători și distribuitori.

K.R.: Ceea ce contează pentru noi nu este numărul de parteneri, ci calitatea muncii fiecărui partener specific. Deocamdată, dorim să ne concentrăm pe colaborarea strânsă cu partenerii existenți, deși grupul de parteneri rămâne deschis. Avem mulți parteneri și trebuie să-i ajutăm din punct de vedere tehnologic. Lucrăm cu dezvoltatori și ei știu ce vor și știu ce este disponibil pe piață, iar capacitățile partenerilor trebuie să se potrivească cu asta.

Avem parteneri de afaceri care au investit masiv în Embarcadero ca linie de afaceri - au specialiști pregătiți, marketingul produselor noastre, angajați dedicați care sunt responsabili de acest domeniu și monitorizează ce se întâmplă cu produsele noastre, lista de prețuri, marketingul. Desigur, au mai mult succes în ceea ce privește vânzările produselor noastre decât companiile care vând produsele noastre de la caz la caz.

KP: David, Kirill, mulțumesc foarte mult pentru interviul interesant. În numele publicației noastre și al cititorilor noștri, permiteți-mi să urez companiei dvs. succes în continuare în crearea instrumentelor uimitoare de care dezvoltatorii au atât de mult nevoie!

Întrebările au fost puse de Natalia Elmanova

În contextul acestui blog, acest proiect este în primul rând interesant deoarece este implementat pe FireMonkey și este o demonstrație uimitoare a capacităților acestei platforme. Și așa, chiar săptămâna trecută, a fost lansată versiunea beta publică a produsului. Astfel, cititorii blogului pot „simți” cu adevărat complexul maimuță de foc Apendice.

Câteva cuvinte despre program. În primul rând, trebuie menționat că versiunea actuală a Sphere este poziționată puțin diferit. Da, uneori se întâmplă...

Nou SphereLive Acesta nu este doar un alt mesager. În primul rând, este un instrument care vă permite să organizați eficient procesul educațional. Permite prelegeri la distanță, consultații private, lecții individuale și alte evenimente similare. În același timp, este dotat cu aproape tot ce este necesar pentru muncă. Începând cu un sistem unic de transfer de fișiere și terminând cu un subsistem puternic de facturare.

În această etapă, prețurile pentru utilizarea produsului sunt destul de democratice. Sub rezerva unui număr limitat de ascultători și a unei cantități mici de resurse, produsul poate fi folosit gratuit.

Desigur, Sfera folosește avantajul principal maimuță de foc- multiplatformă. Acum aplicația este disponibilă în edițiile Windows și MacOS. versiunea Android asteptat de la o zi la alta.

Cu toate acestea, pentru mine, SphereLive este interesant, în primul rând, ca produs inovator, cu o gamă întreagă de soluții originale. Uneori doar la nivelul „... wow, cum ai făcut asta?” Apropo, unul dintre dezvoltatorii Sphere participă activ la discuțiile de pe forumul FireMonkey. Acest lucru în sine poate fi o ocazie de a descărca aplicația și de a discuta întrebări tehnice direct cu autorul. Crede-mă, există ceva de văzut, există ceva de învățat.

TListView este una dintre componentele cheie pentru construirea unei interfețe de aplicație mobilă în maimuță de foc. Această componentă nu este cel mai ușor de utilizat, implică adesea o cantitate semnificativă de cod, dar oferă dezvoltatorului o libertate considerabilă de acțiune. Desigur, se pot folosi și aplicațiile TListBox unde totul este mult mai ușor. Dar TListBox, poate bun pentru afișarea unui număr fix de înregistrări, pentru afișarea datelor din surse de date, cu siguranță ar trebui să utilizați TListView.

Principalele diferențe dintre TListView și TListBox sunt:

  1. TListBoxItem- Control, TListViewItem- Nu
  2. LA TListBoxItem Puteți adăuga orice comenzi utilizând Parent. LA TListVIEWItem- Nu.
  3. TListVIEWItem stochează doar date afișate
  4. TListVIEWItemînsuși realizează redarea datelor stocate prin metoda Face
  5. Datorită redării manuale reale în TListVIewItem, se realizează o creștere a vitezei și un consum redus de memorie (stochând doar datele reale)
  6. Pentru a crea propriul tău TListViewItem, trebuie să vă creați propria clasă de articole, să implementați datele necesare în ea (de exemplu, ora) și să creați un editor la loc pentru a edita ora, a o înregistra etc.

În sine, faptul de a îmbunătăți performanța și de a reduce consumul de memorie este un argument puternic în favoarea utilizării TListView. Dar mai este și altceva.

In multe Android aplicații, am văzut următoarea implementare a listelor. Când faceți clic pe un articol din listă (Articol, dacă rămâneți la terminologia aleasă), se efectuează o anumită acțiune. De obicei este apelat un formular nou pentru a edita datele. Dar când apăsați și mențineți apăsat (Atingere lungă), se efectuează o acțiune complet diferită. Și aceste evenimente nu se intersectează. Cu alte cuvinte, aplicațiile Android pot distinge clar între o „apăsare lungă” și una „normală”. Mai mult, niciunul dintre aceste evenimente nu este declanșat atunci când lista este derulată. Un bun exemplu este lista de scrisori din Yandex Mail.

În primul rând, vreau să felicit toți cititorii blogului pentru sărbătorile trecute și să vă urez toate cele bune în anul care vine.

Din cauza unor circumstanțe de înțeles, nu am făcut un raport tradițional de Anul Nou și nici nu am făcut niciun plan pentru anul. Cu toate acestea, viața nu stă pe loc, se lucrează și au loc anumite evenimente în lumea Delphi. Mă angajez să public în viitorul apropiat o selecție de „știri din lumea Delphi” ratate în timpul sărbătorilor de Crăciun. Între timp, vă voi povesti despre noul dispozitiv pe care l-am achiziționat.

Specificațiile le găsiți pe site-ul oficial. Iar impresia subiectivă este foarte plăcută. De remarcat este faptul că dispozitivul este literalmente plin de software proprietar de la producător. Da, și de la vânzători am primit cadou un set impresionant de software. În funcționare, smartphone-ul este suficient de rapid și își justifică pe deplin costul (aproximativ 200 USD). Apropo, mi-am cumpărat telefonul anterior GSmart 1362 pentru aproximativ aceiași bani în urmă cu 2 ani. Dar, după cum probabil ați ghicit, principalul interes pentru mine a fost modul în care maimuță de foc aplicatii.

Înainte de a continua povestea despre cronometru - două știri.

În primul rând, a fost lansată prima actualizare XE7. Prin tradiție, este disponibil pentru utilizatorii înregistrați. Puteți găsi o listă de erori remediate. Am vrut să văd cum se comportă aplicația în mediul actualizat. De fapt, nu a trebuit să se facă nicio corecție, deși a rămas câmpul pentru experimente.

A doua veste. Ofertele speciale Embarcadero extinse până la sfârșitul anului:

Ei bine, acum direct la subiectul postării. În principiu, nu ne rămâne decât să încercăm să rulăm o aplicație deja creată pentru Android. Pentru aceasta, folosim ceea ce am scris în postările anterioare. Și anume cel nou. Am depanat această aplicație Nexus 7, a adăugat în consecință vizualizarea tabletei Android 7″. Designul a trebuit să fie „ajustat” doar puțin.

Probabil că doar leneșii nu și-au scris cronometrul. Și în contextul suportului de dezvoltare pentru platformele mobile, sarcina de a scrie un cronometru în Delphi poate fi în general considerată una de cult. Așa că m-am gândit, de ce nu ca exemplu de dezvoltare maimuță de foc Aplicațiile nu analizează exact cronometrul. Sub Android, desigur. Desigur, aceasta va fi exact punctul meu de vedere asupra sarcinii, care, deși nu este deosebit de dificilă, are totuși propriile sale nuanțe. Poate aveți comentarii sau sugestii, ar fi minunat să le discutați în comentarii. Nu sunt nicidecum un expert în domeniul scrierii de aplicații mobile, așa că oricare dintre observațiile dvs. îmi vor fi valoroase.

Vom dezvolta exact cronometrul, în sensul englezesc al acestui termen. Adică, ecranul va afișa un cadran și patru butoane - „Start”, „Pauză”, „Oprire” și „Anulare”. Numărătoarea inversă va fi înainte (adică timpul va crește). Opțiunea în care se setează ora și se desfășoară numărătoarea inversă în terminologia engleză se numește Stop Watch, poate voi încerca să o implementez mai târziu. Aplicația de care ne vom ocupa este mai apropiată ca funcționalitate de un cronometru.

Delphi XE7 ne permite să simplificăm semnificativ procesul de dezvoltare, datorită faptului că acum putem crea și depana o aplicație reală pentru Win32, apoi pur și simplu adăugam vizualizări de formular pentru dispozitivele mobile necesare și, cu o mică ajustare, obținem un mobil funcțional. aplicarea. Sună prea frumos pentru a fi adevărat? Poate. Dar vreau și să verific această afirmație realizând sarcina.

Cu cât sunt mai des întrebat colegii mei în conversații private dacă este posibil să dezvolt aplicații mobile maimuță de foc sau este mai degrabă un prototip decât o soluție de producție?

Cred că acum îi pot asigura chiar și pe cei sceptici.

Prietenul și colegul meu Tagir Yumaguzin mi-a povestit despre proiectul la care a participat cu mult timp în urmă. Acum, când acest proiect este în starea de pre-lansare, am decis că această descriere va fi interesantă pentru comunitatea Delphi. În esență, acesta este un proiect cu adevărat mare implementat în FM. Vorbim despre proiectul Sphere Live. Un mic articol dedicat acelui proiect a fost publicat recent pe Habrahabr.ru Alexey Glyzin, șeful departamentului de dezvoltare ‘’, a fost de acord să spună mai multe despre proiect luând în considerare publicul blogului meu.

A.B.– Alexey, în general, care este proiectul tău?

A.G.: – Ideea nu a apărut deodată și instantaneu. Înainte de proiectul „Sphere”, echipa noastră a lucrat la proiectul în care au fost implementate tehnologii de stream audio/video. Ulterior am creat propriul nostru software care a fost capabil să livreze fluxuri multimedia unui număr nelimitat de utilizatori, inclusiv feedback. Dar trebuia să includem o funcție de facturare.
Aplicația trebuia să respecte mai multe cerințe. În primul rând, organizarea la maximum simplificată a conferințelor sau transmiterea către participanți a cărei sumă nu putem prevedea. În al doilea rând, cel mai important, este să oferim clienților noștri oportunitatea de a câștiga cu aplicația noastră și de a reduce complexitatea sistemului, cantitatea de instrumente necesare pentru a atinge obiectivul. Ușurința organizării cursurilor, webinarului sau doar a unei consultații.

O mică crestătură de memorie cu privire la FireDACîn versiunea actuală Delphi XE6. Dar mai întâi, câteva cuvinte despre unde să căutați răspunsuri la întrebările referitoare la maimuță de foc. Utilizatorii vorbitori de limbă rusă se află aici într-o poziție privilegiată.

În timp ce mă pregăteam pentru evenimentul de la Kharkiv, ca parte a turneului mondial RAD Studio XE5, am întâmpinat o mică problemă în lucrul cu SQLite prin utilizarea FireDAC. Dacă baza de date completată în aplicația Windows este transferată împreună cu aplicația către Android, Liniile chirilice din baza de date nu mai pot fi citite (în loc de litere sunt afișate semnele de întrebare). Cu toate acestea, dacă completați baza de date direct pe un dispozitiv mobil, caracterele rusești sunt citite destul de corect. Datele din baza de date completate aplicație terță parte, sau în Delphi o aplicație care utilizează alte componente de acces la date, de asemenea, afișată în mod normal. Mitingul nu a reușit să găsească o soluție și a trebuit să citez un cunoscut specialist ucrainean în fotbal: „Ne vom da seama!”

Spre deosebire de acesta din urmă, am reușit să fac față problemei descrise. În mod implicit, atunci când este conectat la SQLiteîn FireDAC Este utilizat formatul șir ANSI.

Dacă forțați Unicode, atunci totul va funcționa așa cum ar trebui. Dar există și un moment neplăcut. După ce ați schimbat formatul liniilor, va trebui să recreați lista de câmpuri din toate seturile de date, precum și să reconectați componentele responsabile cu afișarea și introducerea datelor. Prin urmare, este mai bine să aveți grijă de codificare imediat.

În părțile anterioare ale acestei mini-serie, ne-am ocupat de crearea unei baze de date, structura acesteia și conectarea la ea din Delphi. În această parte, îmi propun să ne ocupăm de afișarea datelor din tabele, începând cu cel mai simplu caz.

Un simplu editor de date de tabel face de obicei parte dintr-o aplicație complexă. Pentru a edita tabele, folosesc de obicei un formular separat. Să începem cu lista de produse. În primul rând, trebuie să creăm un DataSet pentru a accesa datele din tabel. În cazul nostru, este destul de posibil să folosiți componenta TADTtable. Să-l punem în DataModule și să specificăm valoarea proprietății conexiune. În editorul de proprietăți numele tabelului va apărea o listă de tabele, din care selectăm un tabel Produse. Dacă ați făcut totul corect, puteți atribui proprietatea Activ Valoare adevarata. Este mai bine să redenumiți componenta imediat (de exemplu, ADTProduct). După aceea, de obicei creez un set de câmpuri pentru DataSet. Apelăm editorul de câmpuri (fă dublu clic pe componentă) și selectăm elementul Add All Fields din meniul contextual.

Pentru cei care nu știu, voi explica esența acestei operațiuni. Aici creăm un set predefinit de câmpuri DataSet. Dacă nu facem acest lucru manual în modul de proiectare, atunci, în principiu, nu se va întâmpla nimic groaznic. La RunTime, acest set va fi creat automat. Dar tot prefer să-l creez manual. Există mai multe motive pentru aceasta. În primul rând, este mai convenabil să gestionăm un set de câmpuri, deoarece putem crea noi înșine câmpuri suplimentare (calculate sau de căutare) în modul de proiectare. De asemenea, putem schimba proprietățile câmpurilor în sine. Și în plus, avem ocazia să ne referim la câmpurile din cod prin numele componentei TField, ceea ce, în opinia mea, simplifică foarte mult scrierea codului.

Ca și în cazul aplicației VCL, vom conecta componenta la setul de date TDataSource. Această componentă va oferi legătura dintre setul de date și controalele vizuale. Proprietatea DataSet a componentei ar trebui să se refere la setul nostru de date (ADTProduct). Mai jos dau un fragment din fișierul DFM

obiect ADTProduct: TADTable IndexFieldNames = „ID” Conexiune = ADConnection UpdateOptions. UpdateTableName = "Product" TableName = "Product" Stânga = 64 Sus = 192 obiect ADTProductID: TADAutoIncField FieldName = "ID" Origine = "ID" ProviderFlags = [pfInWhere, pfInKey] ReadOnly = Obiectul final adevărat ADTProduct = „Titul câmpului:”TmeNameField Origine = „Titlu” Dimensiune = 50 obiect final dsProduct: TDataSource DataSet = ADTProduct Stânga = 120 Sus = 192 final

Atenție la o caracteristică curioasă, fișierul de formular DataModule nu este salvat în format FMX, ca un formular FireMonkey obișnuit, ci în format DFM, ca în VCL.

Următorul pas este să creăm o procedură pentru deschiderea unui set de date, pe care va trebui să o apelăm la RunTime când programul pornește. Să-l creăm în același DataModule. Codul procedurii este extrem de simplu:

procedura TDM. ConnectToDB ; începe ADConnection. deschis(); Produs ADT. deschis(); Sfârşit ;

Apelul procedurii va fi plasat în handlerul de evenimente OnCreate pentru DataModule.

FireMonkey este tehnologia de bază a „noului Delphi”. Vă rugăm să ne spuneți despre obiectivele, capacitățile și aspectele tehnice ale acestei biblioteci fundamental noi. După un timp, privind în urmă, cât de greu și justificat a fost refuzul tău de a dezvolta în continuare super popularul VCL?

A fost aleasă ca direcție principală pentru dezvoltarea tehnologiei Delphi pentru a atinge un obiectiv specific - dezvoltarea multi-platformă dintr-un singur mediu, bazată pe o singură bază de cod sursă și fără a fi nevoie de o reinstruire radicală a dezvoltatorilor. În cadrul VCL-ului acum clasic și extrem de popular, acest lucru era imposibil, legătura sa cu WinAPI era prea strânsă, s-ar putea spune, „la nivel genetic”.

Componentele VCL nu au avut un strat „abstract” între nivelul funcțional în ceea ce privește interfața și mecanismele lor de mapare. Nivel funcțional- cum se comportă ca un control, la ce evenimente reacționează, ce fel de interacțiune cu utilizatorul oferă. Afişa- apelarea metodelor de randare orientate pe platformă ca un fel de imagine formată din obiecte raster și primitive vectoriale. FireMonkey a implementat inițial principiul împărțirii stricte a controlului în două componente: „comportamental” și „vizual”.


Vsevolod Leonov, Embarcadero Technologies

Primul în ansamblu nu va repeta nici măcar elementele de bază ale VCL, ci esența programării orientate pe obiecte. O componentă este o clasă, clasele de componente formează o ierarhie în care pot fi distinse familiile și modulele. Clasa unei componente are puțin de-a face cu modul în care este redată.

„Imaginea” vizuală este formată dinamic, nu este codificată în clasa de componente. O imagine sau „stil” în FireMonkey este încărcată într-o componentă atunci când pornește aplicația. Avem un fel de cadru funcțional pentru componentă, iar „pielea” sau „placarea” poate fi schimbată, dar de ce? De aceea aplicațiile FireMonkey arată autentic pe orice platformă - Windows 7, Windows 8, Mac OS, iOS și, în viitorul apropiat, Android. Structura tradițională de clasă VCL monolitică nu a putut oferi acest lucru.

Aici, abordarea tehnologică joacă un rol deosebit. În principiu, puteți lua biblioteca VCL și „chestrui” WinAPI cu toate celelalte apeluri posibile ale platformei. Pe un subset foarte limitat de componente, acest lucru se poate face în continuare, dar VCL-ul conține câteva sute de componente, așa că această abordare ar putea pur și simplu „ucide” VCL-ul. S-a decis să nu se atingă VCL și să se dezvolte noi funcții pe noua platformă - FireMonkey. Această tehnologie chiar are o anumită eleganță tehnică - la momentul construirii proiectului pentru o anumită platformă, IDE-ul Delphi conectează compilatorul necesar, iar componentele interfeței primesc stilul platformei.

Pentru utilizator, acesta este un clic de mouse și același cod sursă, pentru Delphi, este mulți ani de muncă grea a dezvoltatorilor pentru a crea o astfel de bibliotecă multi-platformă.

Când a devenit clar că FireMonkey va fi introdus ca o nouă platformă separată, a trebuit să fie aleasă strategia de coexistență corectă: Embarcadero nu a vrut să afecteze negativ utilizatorii VCL în niciun fel. Prin urmare, am ales următorul plan: VCL rămâne stabil din punct de vedere ideologic și arhitectural pentru a asigura cea mai mare compatibilitate posibilă, facilitând în același timp migrarea proiectelor către versiuni moderne. Dezvoltarea FireMonkey va urma o cale naturală și paralelă, fără a privi înapoi la VCL.

Punctul slab al acestei soluții este migrarea destul de problematică de la VCL la FireMonkey în cadrul unui proiect. Dar, pe de altă parte, pentru un proiect nou, un dezvoltator poate alege FireMonkey pentru a asigura natura multi-platformă a aplicației sale rezultate. Odată cu lansarea lui XE4 cu suport iOS, putem vorbi deja despre avantajul competitiv puternic al Delphi pentru dezvoltarea mobilă în mediul corporativ, care va fi sporit după implementarea suportului planificat pentru Android.

Prin urmare, ca atare, nu există un „refuz” explicit de la dezvoltarea VCL. În versiunile noi, partea VCL a Delphi este de asemenea în curs de dezvoltare. Aceasta include suport pentru 64 de biți și introducerea stilului pentru componentele vizuale și implementarea unui mecanism pentru legături dinamice flexibile sau „legare” și includerea bibliotecii FireDAC pentru lucrul cu bazele de date în proiectele VCL. Doar că, pe fundalul unui salt calitativ uriaș din cauza FireMonkey, progresul în VCL pare oarecum nemanifestat. Dar oricum ar fi, VCL este o parte integrantă a Delphi și va rămâne așa pentru mulți ani de acum înainte. Deși evoluția platformelor și starea actuală a lucrurilor în domeniul OS pentru sisteme desktop și dispozitive mobile sunt de așa natură încât viitorul este clar cu FireMonkey.

În interviu, am discutat deja despre suportul iOS, să le spunem cititorilor noștri despre sprijinul altora cele mai noi tehnologii de la cel mai recent RAD Studio XE4, cum ar fi Windows 8 și WinRT, sisteme pe 64 de biți, MacOS și așa mai departe. Poți enumera ce altceva poți oferi unui programator modern răsfățat de inovații?

Cel mai probabil, programatorul modern nu este „răsfățat” de inovații. Pentru proiectele mari, orice „inovație” se transformă adesea într-o cantitate gigantică de muncă.

De exemplu, toată lumea a așteptat mult timp, mulți s-au grăbit imediat să-și transfere codurile pe o nouă platformă. Dar se dovedește că nici măcar echipele foarte profesioniste nu sunt pregătite pentru asta. Cod compilabil pe 64 de biți nu înseamnă funcțional. „Păcatele tinereții” au început să apară, cum ar fi utilizarea instrucțiunilor presupunând o dimensiune a adresei de 4 octeți. Lipsa unei culturi de efectuare a testelor, cuplată cu nedorința tehnologică de a implementa acest proces într-un timp scurt.

Și aici - cu cât proiectul este mai mare, măsurat, de exemplu, prin numărul de linii de cod sursă, cu atât mai atent și mai echilibrați programatorii tratează diverse tipuri de inovații, de la apariția unui „buton” în interfață la „zahăr sintactic” în compilator.

Una dintre aceste realizări „problematice” a fost lansarea Windows 8. Personal, ca utilizator de PC și doar un specialist IT modern, sunt încântat de Windows 8. Dar pentru dezvoltatorii cărora li sa trimis un lot de computere Windows 8 cu specificații tehnice pentru dezvoltare sub noul sistem de operare ca încărcare, aceasta înseamnă anumite dificultăți.

Am încercat să oferim sprijin pentru dezvoltare în cel mai confortabil și nedureros mod. noua interfata acest sistem de operare. Prin urmare, au fost introduse stiluri speciale atât pentru VCL, cât și pentru FireMonkey, iar programatorul poate fie să reconstruiască interfața aplicației, fie să creeze o nouă aplicație care să nu se distingă de cea „nativă” pentru Windows 8 ca aspect. Desigur, este nevoie de un „nativ” Suport Windows 8 datorită WinRT. Dar aici prioritizarea obiectivelor în conditii moderne. Mac OS, iOS, Android în viitorul apropiat nu oferă încă ocazia de a vorbi despre suportul deplin al WinRT în viitorul apropiat.

Scopul strategic al Embarcadero este, desigur, multi-platformă. Lansarea RAD Studio XE4 a fost una cheie, în primul rând datorită Suport iOS. Un programator activ care folosește VCL poate începe să se dezvolte pentru iOS în câteva ore. Chiar și o simplă aplicație mobilă poate fi transformată instantaneu într-un proiect puternic care funcționează în cadrul infrastructurii existente. Nu credeți că acesta este doar un nou compilator pentru FireMonkey și nou stil pentru a se potrivi cu interfața iOS.

Acesta include un nou designer vizual, suport încorporat pentru diferiți factori de formă, biblioteci de acces la date, inclusiv noul FireDAC și tehnologia LiveBindings pentru legarea flexibilă și dinamică la datele corporative. Toate aceste inovații vin simultan - pentru Windows, și pentru Mac OS și pentru iOS. Sistem de operare Mac OS nu se dezvoltă atât de rapid, așa că nu există probleme precum trecerea de la Windows 7 la Windows 8. Dar au apărut ecranele Retina, iar acest lucru a necesitat o atenție specială. Acum, orice aplicație MacOS creată în Delphi XE4 include automat două stiluri - „normal” și „de înaltă definiție”.

Acea. aceeași aplicație poate avea aceeași interfață „nativă” de calitate pe orice calculator desktop de la Apple.

Embarcadero nu vrea să „surprindă”, să „uimească” sau chiar să „distreze” dezvoltatorii cu noile sale versiuni inovatoare. Mai degrabă, dimpotrivă, sfera IT este deja plină de diverse surprize: noi dispozitive, noi platforme, noi utilizatori, noi nevoi, noi scenarii de interacțiune. Adăugați noi tehnologii de dezvoltare software la aceasta, iar programatorii pur și simplu nu vor avea timp să creeze sisteme noi și pe cele existente - vor face doar ceea ce trebuie să migreze dintr-un mediu în altul, de la o bibliotecă veche la una nouă, de la o limbă la alta. o alta.

Dar nu mărturisim respingerea a tot ceea ce este nou. Vrem doar să asigurăm continuitatea a tot - codul, interfața, proiectul, chiar și abilitățile profesionale pe măsură ce apar noi platforme și dispozitive. Putem spune că luptăm cu un conservatorism nesănătos în raport cu noile platforme în detrimentul unui conservatorism sănătos în instrumentele de dezvoltare. Nu vă așteptați la produse exotice, limbaje de programare non-standard și instrumente de dezvoltare ciudate de la Embarcadero.

La noi vei găsi întotdeauna dezvoltare vizuală, limbaje clasice, cod „nativ” și vei lăsa platformele țintă pentru aplicațiile tale create în același mod clasic dovedit să fie noi.

Ce este maimuța de foc?


FireMonkey (FMX) este un cadru pentru dezvoltarea multiplatformă atât pentru sisteme desktop (Windows, Mac OS + suport pentru partea de server pe Linux în viitorul apropiat) cât și pentru mobil (iOS și Android) folosind limbajul Delphi/C++.

Particularitati:

  • bază de cod unică pentru toate platformele;

  • orice control (componentă vizuală) poate fi un container (părinte) pentru alte componente;

  • prezența unui aranjament relativ foarte avansat (20 de tipuri) de componente pe formular;

  • LiveBinding vă permite să conectați orice tip de date sau informații la orice interfață de utilizator sau obiecte grafice;

  • prezența stilurilor de formă/componentă;

  • Multi-Device Preview vă permite să personalizați prezentarea vizuală pentru fiecare dintre platforme;

  • FireUI Live Preview - Afișează vizualizarea aplicației pe dispozitive reale în timp real.

Capabilitati:

  • utilizarea API-ului nativ al fiecărei platforme, precum și capacitatea de a apela biblioteci native terțe;

  • interacțiunea cu toți senzorii (GPS, Accelerometru, Busolă, Bluetooth (inclusiv LE) și altele);

  • suport pentru notificări push, IoT;

  • suport pentru cereri HTTP asincrone;

  • suport pentru majoritatea bazelor de date (MsSQL, MySql, Oracle, PostgreSQL, MongoDB etc.);

  • lucrul cu Serviciul Cloud (Amazon, Azure);

  • suport de servicii Android.

Contra (în prezent):

  • lipsa suportului pentru personalizarea claselor native;

  • implementarea unor lucruri specifice este fie imposibilă (widgeturi, extensii (iOS), etc.), fie este necesar un dans cu tamburin (serviciu de fundal, mesaj de difuzare etc.);

  • personalizare Splash screen (ecran inițial) pentru a spune ușor, nu;

  • Controalele FMX folosesc propria lor redare (vizualizare, desen), care este pur vizual similară cu cea nativă;

  • utilizarea controalelor native este asociată cu mișcări mari ale corpului;

  • cu un imbricat mare de componente, se întâmplă lucruri incredibile: aplicația se blochează în diverse locuri, se pierde focalizarea, se blochează etc.;

  • conținutul informațional al depanării unei aplicații pe platformele mobile este zero;

  • descrierile erorilor de pe platformele mobile sunt reduse la „Eroare 0x00000X” inutilă;

  • timpul de compilare dorește să fie cel mai bun pentru proiecte medii și mari;

  • necesitatea de a folosi un fișier pentru a rafina aplicațiile mobile pentru fiecare platformă;

  • fără suport pentru arhitectura Intel Atom;

  • preț inadecvat în comparație cu concurenții.

Pro:

  • dezvoltare recentă foarte activă atât a produsului, cât și a comunității, sprijin pentru tot mai multe tehnologii noi;

  • prezența unui număr mare de componente gratuite și comerciale;

  • viteza aplicației este foarte apropiată de cea nativă;

  • un editor vizual foarte avansat și mediu în general, prezența stilurilor;

  • capacitatea de a testa aplicația pe Win și abia apoi de a o implementa pe dispozitive, ceea ce accelerează foarte mult dezvoltarea;

  • schimbați modul/platforma cu o mișcare a încheieturii mâinii;

  • PAServer oferă o interacțiune ușoară cu MacO-uri atunci când se dezvoltă pentru Apple OS;

  • suport pentru grafică 3D din cutie.

În concluzie, vreau să spun că în ultimii doi ani, FireMonkey a devenit un instrument profesional pentru dezvoltarea multiplatformă a aplicațiilor de afaceri și nu numai. Multe neajunsuri sunt rezolvate treptat și cu fiecare lansare produsul devine mai modern și mai autosuficient, dispare și scepticismul existent față de limbajul Delphi în sine, asociat cu mulți ani de stagnare. Scrierea de noi proiecte pe FireMonkey este „sigură” și promițătoare.



Se încarcă...
Top