firemonkey. Počni

03/06/2013 12:46 pm

Mnogo sam patio zbog nedostatka komponente pretraživača u FireMonkey-u. Čuveni Delphi Chromium Embedded projekat je uključivao FMX podršku u najnovijoj verziji. Ali uprkos činjenici da je prošlo dosta vremena, autor ne žuri da doda podršku za FMX2. Na kraju sam morao uzeti stvari u svoje ruke.

TChromiumFMX komponenta iz zvaničnog sklopa radi prilično dobro u FireMonkey-u (u XE2), ali se čak ni ne kompajlira u FMX2. Morao sam malo shvatiti kako to funkcionira i popraviti ga. Srećom, nisu bile potrebne veće promjene.

U FMX2 su se promijenile dvije stvari koje su potrebne komponenti.

Prvo, TBitmap više nema svojstva ScanLine i StartLine. Direktan pristup TBitmap sadržaju je redizajniran (pitam se zašto?) i sada je dostupan putem klase TBitmapData, koja vraća metodu TBitmap.Map.

Pa, druge, poznatije - Platforme .* više nema, sada trebate dobiti željeni interfejs preko TPlatformServices.GetPlatformService. Ovdje je sve prilično jednostavno i nema nikakvih problema.

Nisam je testirao s posebnom domišljatošću, ali komponenta je sasvim prikladna za moje potrebe - preko nje možete pregledavati web stranice. Preuzmite ga. Ipak, možda ću svoje izmjene poslati autoru, možda će on smatrati potrebnim da ih doda u zvaničnu verziju.

30.07.2012 2:43 am

Jason Southwell predlaže razvoj skupa FireMonkey omota za izvorne Windows/OSX kontrole i prikuplja novac za to. Za početak planira prikupiti 20.000 dolara.

Ideja je jasna. Postojeće FireMonkey komponente su iscrtane pomoću Delphi alata gotovo od nule, što s jedne strane u velikoj mjeri osigurava njihovu cross-platformu, ali s druge strane, kao rezultat, dobijamo komponente koje ne izgledaju sasvim prirodno u oba trenutno podržana rada sistemima. I to nije tako loše - osim izgleda, morate samostalno razviti logiku ovih komponenti. Na primjer, RichEdit je prilično komplikovan, a ponavljanje njegove logike unutar FireMonkey-a nije trivijalan zadatak. I VCL i CLX nisu izmislili bicikle, već su koristili gotove.

A sada loše vijesti. Sve radi u toku rada, ali nisam našao način da dodam svoj novi tip kartice u Dizajner predmeta. I čini se da sve kontrole liste imaju isti problem: TListBox, TGrid, itd. U početku mi se jako svidio pristup njihovoj implementaciji, ali sada čak nekako sumnjam u to. Internet pretraga je otkrila da nisam sama sa ovim problemom.

Pomoć je tiha, također nisam našao ništa u kodu. Zaista nema šanse? Ovo bi bilo izuzetno neugodno.

Više od tri godine prošlo je otkako je CodeGear odeljenje odgovorno za kreiranje svetski poznatih alata kao što su Delphi, C++Builder i JBuilder, kao i Interbase DBMS, postalo deo Embarcadero Technologies, kompanije poznate po dizajnu i administraciji baza podataka , a dvije godine otkako smo na stranicama našeg časopisa raspravljali o tome šta očekivati ​​u razvoju alata koji su toliko popularni među ruskim programerima. Pitali smo Davida Intersimonea, potpredsjednika za odnose sa programerima i glavnog evanđelistu Embarcadero Technologies, i Kirila Ranneva, šefa predstavništva Embarcadero Technologies u Rusiji. Za naše najmlađe čitaoce, obavještavamo vas da je ovo daleko od prvog intervjua koji David i Kiril daju ComputerPressu - naša saradnja traje već drugu deceniju. I otprilike isto toliko godina periodično objavljujemo recenzije alata za upravljanje bazama podataka, u kojima se velika pažnja posvećuje Embarcadero proizvodima.

ComputerPres: Davide, tvoj odjel je dio Embarcadera već tri godine. Prije dvije godine bili ste puni entuzijazma činjenicom da je postao dio kompanije koja vam je bliska po svrsi i duhu. Da li se nešto promijenilo za ovo vrijeme? Da li vi i vaše kolege osjećate isti entuzijazam?

Da, još uvijek sam entuzijastičan. Glavna promjena koja se dogodila otkako smo postali dio kompanije Embarcadero je da je bilo dosta ulaganja u razvoj Delphija. Povećao se broj zaposlenih koji rade na razvojnim alatima, povećao se broj tehnologija koje možemo razviti ili po potrebi nabaviti.

Izdanje RAD Studio XE 2, koje planiramo da demonstriramo u Moskvi, najveće je izdanje ovog proizvoda sa ogromnim mogućnostima i velikim brojem podržanih platformi od prve verzije Delphija, kreiranog za 16-bitni Windows i nekadašnje inovativne proizvod koji je povezao komponentni pristup i kompilaciju sa mašinskim kodom. Sada podržavamo razvoj ne samo za Windows već i za Macintosh, a da ne govorimo o web razvoju i kreiranju aplikacija za mobilne uređaje, a ove aplikacije za različite platforme mogu imati jedan kod.

Nova razvojna platforma, FireMonkey, je saradnja između Embarcadera i nedavno kupljene ruske firme KSDev iz Ulan-Udea, proizvođača komponenti vektorske grafike, DirectX i OpenGL, tehnologija grafičkih efekata i Delphi komponenti koje koriste GPU sa PixelShader 2.0. Kupili smo kompaniju KSDev (pogledajte ksdev.ru) prije godinu dana i počeli zajedno raditi na stvaranju multi-platformskog razvojnog alata koji uključuje platformu za razvoj FireMonkey aplikacija sa komponentama za Delphi i C++ Buider za kreiranje korisničkih interfejsa aplikacija, integraciju sa bazama podataka, grafička obrada pomoću grafičkog procesora i integracija sa operativnim sistemom.

Koristeći FireMonkey, možete kreirati aplikaciju koja zajedno pokreće CPU i GPU, a zatim pomoću različitih kompajlera i run-time biblioteka (Run-time Libraries, RTL) možete je kompajlirati za Windows, Mac OS ili iOS. Umjesto učenja programiranja koristeći različite grafičke biblioteke, učenje API-ja sa različitih platformi s različitim koordinatnim sistemima i različitim mogućnostima, programeri koji koriste Delphi i C++Builder mogu koristiti isti pristup komponentama, vizualno uređujući forme i povezujući se na baze podataka pomicanjem komponente sa miš. Ovo je fundamentalno novi način za kreiranje aplikacija koje rade na različitim platformama i predstavlja budućnost. Ako želite da svojoj aplikaciji dodate podršku za druge operativne sisteme i platforme, ne morate je redizajnirati i razvijati - biće dovoljno samo da je ponovo kompajlirate.

Kreiramo nove kompajlere koji generiraju izvorni kod. Danas postoje Delphi kompajleri za 32-bitne i 64-bitne verzije Windows-a, 32-bitne verzije Mac OS-a 10. I radimo na sljedećoj generaciji Delphi i C++Builder kompajlera koji će vam omogućiti da kreirate visoke performanse izvorni kod za ove i druge platforme poput Androida ili Linuxa i zadržati isti dizajn, iste komponente, isti kod korištenjem različitih kompajlera i runtime biblioteka.

Kao što vidite, imam dovoljno razloga za entuzijazam. A programeri koje srećem širom sveta znaju da Embarcadero mnogo ulaže u Delphi i C++Builder, kao i PHP razvojne alate.

KP: Kakav ste napredak postigli u integraciji alata dvije kompanije u protekle dvije godine? Koji su planovi Embarcadera za budućnost u ovoj oblasti?

DI.: U vrijeme kada je CodeGear divizija postala dio Embarcadera, ova kompanija je imala razvojne timove u Torontu, Monterreyu i Rumuniji, bili smo i još uvijek smo u Scotts Valleyu iu Rusiji, u Sankt Peterburgu. Embarcadero je imao alate za programere i administratore baze podataka, CodeGear je imao alate za razvoj aplikacija, ali potonji također koriste baze podataka. Spajanje kompanija je kombinacija stručnosti, znanja iz oblasti baza podataka, optimizacije koda, uključujući i serverski kod. Spajanje je također rezultiralo stvaranjem novog proizvoda, AppWave, posebne tehnologije za pretvaranje obične Windows aplikacije u nešto vrlo jednostavno za korištenje (poput aplikacija za iPhone ili druge uređaje). AppWave vam omogućava da ne instalirate aplikaciju, već je jednostavno odaberete i pokrenete sa pripremljenog servera za pohranu aplikacija (app) pri čemu će se ona izvršavati na korisnikovom računaru bez unošenja promjena u njegov registar i područje sistema datoteka. Inače, AppWave pretraživač aplikacija je napisan u Delphiju. Embarcadero koristi Dephi za vlastiti razvoj i našu stručnost u razvoju aplikacija.

iPhone aplikacija (iOS) koju je kreirao
koristeći FireMonkey platformu

Također možete koristiti integraciju naših razvojnih alata i DB Optimizer za optimizaciju SQL upita prilikom izrade aplikacija. Prosljeđivanjem SQL koda direktno u DB Optimizer, možete ga profilirati, testirati i vratiti njegovu optimiziranu verziju nazad u razvojno okruženje. Embarcaderova ekspertiza baze podataka je takođe poboljšala DataSnap tehnologiju. Zahvaljujući programerima iz Toronta, stekli smo mnogo znanja o arhitekturi višeslojnih sistema i baza podataka. Sada imamo zajedničku ekspertizu u serverskom kodu i uskladištenim procedurama u obe kompanije. Imamo alate kao što su RapidSQL i DB Change Manager, i razvojna okruženja koja olakšavaju kreiranje koda na strani servera, kao što su tehnologije Code Insight i Code Completion koje su omogućile kreiranje SQL uvida i SQL Completion tehnologija. Naš zajednički pristup kreiranju klijentskog i serverskog koda, naša zajednička filozofija, omogućava nam da dijelimo zajedničke karakteristike između alata za upravljanje bazom podataka i alata za razvoj aplikacija.

Kirill Rannev:Želim da dodam nešto važno. Sa komercijalne tačke gledišta veoma je važno kako isporučujemo naše alate. Na primjer, novo izdanje RAD Studio XE 2 Ultimate uključuje cijeli set alata DB Power Studio. To je vrlo moćan skup alata, uključujući RapidSQL okruženje za kreiranje upita, alat za upravljanje promjenama DB Change Manager i alat za optimizaciju upita DB Optimizer, koji vam omogućava da izvršite važan dio procesa razvoja i implementacije, upravljajući promjenama u model podataka, baza podataka, kod, itd. Ovo je vrlo dobra i ispravna kombinacija tehnologija.

DI.: Ali, ako je potrebno, programeri mogu koristiti Subverziju za upravljanje verzijama izvornog koda i DB Change Manager za upravljanje verzijama metapodataka. Možete koristiti profiliranje koda i DB Optimizer za optimizaciju serverskog koda, RapidSQL za pravljenje i otklanjanje grešaka kod servera, a naša razvojna okruženja za pravljenje i otklanjanje grešaka u aplikacijama. Ova kombinacija tehnologija u RAD Studio XE Ultimate Edition demonstrira paralele između modela baze podataka i razvoja aplikacija. Većina programera koji grade poslovne aplikacije sa Delphi-jem i C++Builder-om radi sa bazama podataka i trebaju im ovi alati, a RAD Studio XE Ultimate Edition je odlična kombinacija za te programere.

KP: Savremeni korisnik više nije samo korisnik Windows platforme. Koristimo mobilne uređaje, iPhone, iPad, uređaje bazirane na Android platformi. To znači da bi programeri trebali početi ciljati različite platforme bez značajnog povećanja ulaganja u obuku – odnosno potrebni su univerzalni alati. Očigledno je nerealno očekivati ​​pojavu univerzalnih alata od proizvođača platformi, a po tom pitanju možemo se osloniti samo na nezavisne proizvođače alata. Gdje se možemo osloniti na Embarcadero?

DI.: Imamo još dosta toga da uradimo u oblasti podrške platformi. Danas uvodimo podršku za iOS platformu za iPhone i iPad, nakon čega slijedi podrška za Android, Windows 7 i Blackberry pametne telefone. U RAD Studio XE 2 počeli smo izgradnjom FireMonkey platforme za iOS, a kasnije ćemo prenijeti FireMonkey na druge platforme.

Istovremeno, postoji veliki broj operativnih sistema koji podržavaju ekrane osetljive na dodir (touch screen), za telefone, tablete i uređaje, desktop računare, a mi ćemo nastaviti da dodajemo podršku za njih. Osim toga, postoje sistemi glasovne kontrole, sistemi kontrole kretanja, biometrijski sistemi, akcelerometri, tako da moramo nastaviti da širimo FireMonkey kako bi svi programeri mogli iskoristiti prednosti novih platformi. Na primjer, uređaj Microsoft Kinect dizajniran je za Xbox 360, a sada postoji i odgovarajući SDK (Software Development Kit) za Windows. I već imamo primjere u kojima koristimo pokret za kontrolu aplikacije na isti način na koji bismo inače koristili miš ili tastaturu.

Kada kreirate aplikacije sa puno složene grafike, generišete čitav svet novih korisničkih interfejsa. Ako imamo posla sa Windows operativnim sistemom, njegov Windows API inkapsuliramo u VCL biblioteku (Visual Component Library - biblioteka vizuelnih komponenti koja je sastavni deo razvojnih alata Delphi i C++ Builder. - Bilješka. ed.), koji se, inače, može dalje primjenjivati. A u FireMonkey-u inkapsuliramo API operativnog sistema. Ali danas mnogo šire manipuliramo oblicima i grafikama. Također možete dodati svojstva fizičkog prostora za animaciju i specijalne efekte. Osim toga, postoji veliki broj drugih dodatnih mogućnosti za kreiranje korisničkih interfejsa koje ćemo implementirati u narednih nekoliko godina za različite platforme, mobilne i tablet uređaje.

Microsoft je nedavno objavio detalje o Windows 8, koji bi trebao izaći za godinu dana. Podržaćemo ove inovacije u VCL biblioteci i na FireMonkey platformi. Ali Delphi je razvojni alat dizajniran ne samo za Windows, već i za Macintosh, iPhone i iPad. Također razvijamo naše PHP proizvode, podržavamo jQuery Mobile, koristimo iOS API za razvoj mobilnih klijentskih aplikacija i gradimo PHP serverske aplikacije koristeći čarobnjake i alate za generiranje JavaScripta, HTML-a i kaskadnih stilskih tablica na strani klijenta. Možemo pakovati PHP aplikacije i iPhone iOS izvorne klijentske aplikacije, pri čemu klijent razgovara sa PHP serverom. A to će zauzvrat komunicirati sa serverom baze podataka i sa web servisima - sa svime što je potrebno za poslovanje.

RadPHP XE2 razvojno okruženje. Kreirajte mobilnu web aplikaciju
koristeći jQuery Mobile komponente za iPhone 3G

Drugim riječima, planiramo proširiti mogućnosti FireMonkey-a i VCL-a, uključujući podršku za mobilne platforme.

KP: Možete li detaljnije objasniti FireMonkey platformu?

DI.: Kao što sam već napomenuo, VCL biblioteka kreirana za Windows će nastaviti da se razvija i poboljšava. Ali danas, ako zaista želite da razvijate poslovne aplikacije, morate ih kreirati za različite platforme. Za to je dizajnirana FireMonkey platforma. Podržava kreiranje korisničkih interfejsa visoke rezolucije, 3D grafike visokih performansi, visoke brzine kadrova i, što je još važnije, koristi GPU za to.

Ove funkcije možete koristiti kada kreirate naučne, inženjerske i poslovne aplikacije. Takve aplikacije se mogu povezati na baze podataka koristeći dbExpress tehnologiju, i dalje koristeći ne-vizualne komponente poznate programerima, kao što su ClientDataSet ili DataSource, koriste DataSnap tehnologiju, povezuju se na bilo koju bazu podataka, SOAP i REST servere. Možete kreirati atraktivne kontrole, dugmad sa kutijama, neobične tabele i druge elemente interfejsa, i to u dve i tri dimenzije. Možete učitati gotov 3D model u aplikaciju i kombinirati ga s 2D oblikom, u kojem se može rotirati i gledati iz različitih uglova. Možete kreirati kocku podataka ili 3D poslovni grafikon i rotirati je pomoću miša, tastature ili čak Kinect uređaja, ili možete ući u kocku i pogledati njene različite površine iznutra. A sve se to može uraditi sa brzim GPU-om. Ista aplikacija se zatim može kompajlirati za drugu platformu, kao što je Mac OS.

Aplikacija koja sadrži rotirajuću kocku s podacima,
postavljena na njegove ivice

Ili možete kreirati 3D oblik od nule i koristiti kamere i svjetla za osvjetljavanje i rotiranje dijelova korisničkog interfejsa. Dizajner obrazaca već ima ugrađeno okruženje za podršku 3D korisničkog sučelja direktno u vrijeme dizajna.

Na Windows-u možete koristiti Direct2D biblioteke za 2D grafiku visoke rezolucije i Direct3D za 3D grafiku. Mac OS koristi Quartz i OpenGL biblioteke za istu svrhu. Za iOS se koriste Quartz i OpenGL ES biblioteke. Ali sve je to skriveno od programera - on koristi FireMonkey platformu, njen koordinatni sistem i sučelje za programiranje aplikacija, ne razmišljajući o ovim bibliotekama, i može kompajlirati istu aplikaciju za različite platforme.

Prisjetimo se šta je VCL. VCL je komponentni "omotač" oko Windows API-ja. Bavimo se resursima, menijima, dijaloškim okvirima, bojama, stilovima, Windows porukama. Budući da je omot na više platformi, za razliku od VCL-a, FireMonkey zadržava iste modele događaja i komponenti, omogućavajući vam da razmišljate u terminima događaja (na primjer, OnClick, OnHasFocus, onMouseDown i onKeyDown događaji), ali upravlja Macintosh ili iPhone događajima.

FireMonkey framework takođe dolazi sa kompletnim sistemom za animiranje elemenata korisničkog interfejsa. To svakako nije sveobuhvatan sistem animacije u Pixar stilu, ali vam omogućava da primenite efekte kao što su animiranje bitmapa, isticanje fokusa elementa korisničkog interfejsa i rad sa vektorskom grafikom. Programeru je dostupno više od 50 vizuelnih efekata: zamućenje, pretvaranje slike u crno-belo, rastvaranje, prelazi, refleksija, kreiranje senki - sve vrste efekata dostupnih u modernim GPU-ovima koji su sada u gotovo svakom računaru. Aplikacija napravljena pomoću FireMonkey platforme šalje komande GPU-u, koji obavlja sav posao prikazivanja grafike i izgradnje korisničkog interfejsa. Istovremeno, centralni procesor je slobodan za proračune i pristup operativnom sistemu. Programer samo treba pravilno postaviti komponente.

Najosnovnija stvar kod FireMonkey platforme je način na koji gradi korisničko sučelje. Postoje mogućnosti za postavljanje bitmap grafike na elemente interfejsa kao što su meniji, dugmad i trake za pomeranje. U FireMonkey-u koristimo GPU vektorsku grafiku u tu svrhu. Sa stanovišta programiranja, sve su to iste kontrole, ali grafički procesor obavlja sav posao da ih prikaže. Možemo primijeniti stilove na kontrole, učiniti da aplikacija izgleda kao aplikacija za Mac OS ili Windows, kreirati vlastiti stil, primijeniti naše stilove na elemente interfejsa (na primjer, napraviti dugme pravokutnim ili okruglim promjenom njegovog stila u uređivaču obrazaca) - za ovo razvojno okruženje ima uređivač stilova. Možete kreirati vlastiti stil ili možete promijeniti stil već gotove aplikacije.

FireMonkey platforma - razvojni alati
i podržane platforme

Ako se sećate, u VCL biblioteci je postojao ograničen broj kontrola - kontejnera (to jest, koji vam omogućavaju da u njih postavite druge elemente), au FireMonkey-u svaka kontrola je kontejner. To znači da svaka kontrola može sadržavati bilo koju drugu kontrolu. Na primjer, stavke padajuće liste mogu sadržavati slike, dugmad, okvire za uređivanje i druge kontrole. Takođe možete postaviti komponente na slojeve.

FireMonkey sistem renderiranja je prilično fleksibilan - može koristiti Direct2D, Direct3D i OpenGL biblioteke slanjem komandi GPU-u. Da bi se to postiglo u VCL-u, bilo je potrebno generirati poseban međuspremnik van ekrana, kreirati sliku u njemu pozivanjem odgovarajućih funkcija grafičke biblioteke, a zatim je prikazati na obrascu.

Primjeri grafičkih efekata koje podržava FireMonkey

Ako nemate GPU, još uvijek možete primijeniti 2D ili 3D oblike i koristiti FireMonkey kontrole. U ovom slučaju, FireMonkey platforma će koristiti GDI+ biblioteke ili druge slične biblioteke i izvoditi iste efekte i animaciju ili manipulaciju 3D objektima.

Još jedna karakteristika FireMonkey-a je novi sistem za vezivanje elemenata interfejsa za podatke, koji je otvoren i fleksibilan. Postoje dvije vrste elemenata sučelja u VCL-u: vezani za podatke i koji nisu vezani za podatke (na primjer, TDBEdit i TEdit). U FireMonkey-u, svaka kontrola može biti povezana s podacima, bilo koje vrste. To može biti samo izraz, polje iz skupa podataka, podaci iz objekata koje je kreirao programer ili rezultati poziva metoda.

Osim toga, kada kreirate aplikaciju, možete u nju učitati gotov 3D model i koristiti ga - takve mogućnosti su često potrebne i u poslovnim i u inženjerskim aplikacijama. Imamo klijenta koji kreira aplikacije za logistiku. Imali su informacioni sistem izgrađen sa Delphijem, a u njemu i aplikaciju koja je crtala plan i prikazivala informacije iz izvora podataka. Nedavno su uradili nešto zanimljivo – nacrtali su potpuno automatizovano 3D skladište u AutoCAD-u, a njihova aplikacija vam omogućava da vidite kako se automatski utovarivač kreće kroz skladište i stavlja robu na police. I postavljaju podatke iz izvora na odgovarajuću sliku.

Primjeri promjene stilova aplikacija

KP: Koji formati 3D modela su trenutno podržani?

DI.: U ovom izdanju podržavamo učitavanje modela iz AutoCAD-a, Collada (alat za 3D modeliranje otvorenog koda. - Bilješka. ed.), Maya, OBJ format koji podržavaju mnogi proizvođači 3D grafike.

KP: Koji drugi formati se planiraju dodati?

DI.: Planiramo da dodamo 3DS (3D Studio MAX), SVG (obično se ovaj format koristi za 2D vektorsku grafiku, ali ponekad i za 3D), Google SketchUp. Možda podržavamo i druge formate.

KP: Da li je za korištenje 3D modela u aplikacijama napravljenim uz FireMonkey potrebna licenca za odgovarajući alat za 3D modeliranje?

DI.: Ne, nije. Sve što radimo je čitanje datoteke modela. Mi uvozimo model, ali ga ne izvozimo (iako, naravno, možete napisati aplikaciju koja sprema model u vašem vlastitom formatu). Ne tvrdimo da smo proizvođač alata za 3D modeliranje - za to možete koristiti AutoCAD, 3D Studio Max, Maya ili bilo koji drugi alat za 3D modeliranje, te uvesti kreirane modele u naše aplikacije.

KP: Koliko su učinkovite aplikacije napravljene sa FireMonkey-om na modernim hardverskim platformama?

DI.: Performanse su prilično visoke. Na primjer, 3D oblik sa tri sfere i tri svjetla može se prikazati pri 100 sličica u sekundi na MacBook Pro-u. A može dostići i 600 - zavisi šta tačno radimo. Opet, sve zavisi od snage GPU-a.

KP: Da li to znači da uz pomoć FireMonkey-a možete kreirati igre koje zadovoljavaju moderne zahtjeve?

DI.: Ne pozicioniramo naše razvojne alate kao alate za igre. Međutim, koristeći visoke performanse modernih GPU-a, također možete kreirati igre s FireMonkey-om - na kraju krajeva, one su kreirane pomoću Direct3D ili OpenGL-a.

KP: Koji posao sada radite na polju podrške prepoznavanju gesta i drugih novonastalih stvari? Da li je takva podrška dostupna?

DI.: Još uvijek nemamo podršku za pokrete u ovom izdanju. Kontrola pokreta će biti dodata u budućem izdanju FireMonkey-a, ali za sada možete koristiti podršku za pokrete ugrađenu u operativni sistem.

Mikhail Filippenko, direktor Fast Reports, Inc.

K.R.: Već smo rekli da tehnologija FireMonkey ima ruske korijene - njeni temelji su stvoreni u našoj zemlji, a zatim su se sama tehnologija i njeni programeri spojili u Embarcadero. Općenito, zadovoljstvo je vidjeti rast ruske komponente u RAD Studiju i Delphiju. Ovo je aktivnost našeg razvojnog centra u Sankt Peterburgu i doprinos nezavisnih ruskih programera. Na primjer, Rad Studio XE2 uključuje FastReport generator izvještaja, koji je poznat u cijelom svijetu i veoma popularan kod nas. On je iz Rostova na Donu.

KP:Želio bih razgovarati o kompajlerima. Koji kompajler se koristi za kreiranje iOS aplikacija?

DI.: Nemamo svoj Delphi kompajler za iPhone ili iPad - još nismo razvili kompajlere za ARM procesore koji se koriste u ovim uređajima. Za iOS, privremeno koristimo Free Pascal kompajler i runtime biblioteku. Ali radimo na sljedećoj generaciji kompajlera, uključujući i one za ARM procesore. Ali postoje kompajleri za Windows i Mac OS, pošto su obe hardverske platforme zasnovane na Intel procesorima.

KP: A šta je urađeno na polju razvoja kompajlera u posljednje dvije godine?

DI.: Imamo 32-bitne i 64-bitne Delphi kompajlere za Windows i Mac OS. I radimo na novoj generaciji Delphi i C++ kompajlera. Rad na njima je i dalje u toku, ali kada bude završen, imaćemo Delphi kompajlere za ARM procesore, Android platforme, Linux i sve ostalo. I imaćemo 64-bitne C++ kompajlere za Windows i druge platforme kompatibilne sa najnovijim standardom C++ jezika koji je upravo usvojio ISO.

KP:Šta se danas dešava sa podrškom računarstva u oblaku u razvojnim alatima Embarcadero?

DI.: Uz RAD Studio XE 2, podržavamo migraciju aplikacija na Microsoft Azure ili Amazon EC2 oblak pomoću Platform Assistant-a. Imamo i serverske komponente za Cloud Storage za Azure i Amazon S3 za skladištenje tabela, binarnih podataka, redova poruka. U prethodnoj verziji RAD Studio XE, takođe smo podržavali postavljanje aplikacija na Amazon EC2, ali nije bilo podrške za skladištenje.

Podrška za računarstvo u oblaku u RAD Studio XE 2

KP: Prije dvije godine govorili ste o novom rješenju All-Access. Koliko je bila tražena? Koje su njegove prednosti za sistem integratore i programere?

DI.: Rešenje All-Access i AppWave cloud alat se široko koriste širom sveta. Oni su dizajnirani da olakšaju korištenje aplikacija naše kompanije i trećih strana. Zapravo, ovo je rješenje za upravljanje licencama i aplikacijama i pogodno je za velike kompanije. Manje firme koje nemaju namenski tim za upravljanje aplikacijama mogu staviti aplikaciju u spremište, izabrati korisnička imena iz baze podataka i učiniti te aplikacije dostupnim za upotrebu bez potrebe da pamte gde je licencni ključ i koliko je licenci dostupno. All-Access i AppWave pretraživač su dizajnirani da upravljaju i upravljanjem verzijama i kontrolom pristupa.

K.R.: Tržište je toliko raznoliko, a korisnici toliko različiti, da je nemoguće pokriti sve potrebe jednim rješenjem. Stoga težimo raznim rješenjima za "pakovanje". Uradili smo dosta posla na objedinjavanju licenciranja, upravljanja licencama i instalacije proizvoda. Ova linija rješenja uključuje alate za upravljanje licencama i pristupom ne samo za Embarcadero proizvode, već i za sve druge proizvode, uključujući interni razvoj kompanija.

Rad na povezivanju razvojnih alata u efektivne korisničke komplete još uvijek traje. Imamo All-Access - superset koji kombinuje sve Embarcadero proizvode. Ako kupac kupi All-Access Platinum verziju, dobija sve alate koji se nalaze u Embarcaderu. Ali ponekad se ovaj skup pokaže suvišnim, na primjer, napravili smo dva druga seta za stručnjake za baze podataka - DB Power Studio Developer Edition i DB Power Studio DBA Edition. Razlika između njih je u tome što za programera nudimo RapidSQL, alat za razvoj serverskog koda, a za administratora je u njega ugrađen DBArtizan, alat za administraciju baze podataka, širi proizvod od RapidSQL-a. Za profesionalce imamo sljedeće pakete za potpuni pristup: paket za sve proizvode, DB Power Studio za programere, DB Power Studio za administratore, ER Studio Enterprise Edition za arhitekte i sve koji su uključeni u modeliranje. Postoje kombinacije za razvoj aplikacija i za administratore. Delphi je alat za programere i ima puno smisla dodati mu SQL razvojne alate i alate za optimizaciju. Konačno, DB Change Manager je vrlo logičan alat za upravljanje složenošću promjena koje se dešavaju u bazama podataka tokom njihovog životnog ciklusa.

Dakle, All-Access je glava velike porodice različitih setova proizvoda.

KP: Ako nije tajna, ko u Rusiji koristi All-Access?

K.R.: Imamo kupce koji su kupili All-Access baziran na Delphiju. Mnogi od njih grade složene klijent-server sisteme sa SQL Serverom i Oracleom, i odmah im se dopao naš komplet alata za baze podataka na više platformi. Imamo kompaniju klijenta koja radi sa Delphijem od prve verzije i prešla je sa Delphija na All-Access prije godinu dana. Dva alata za koje se garantuje da će ih koristiti svi programeri u ovoj kompaniji su Delphi i DBArtisan. I postoje kupci koji su došli u All-Access sa strane baze podataka. Njihov primarni posao je administriranje baza podataka, ali povremeno razvijaju i aplikacije. Klijenti koji koriste All-Access uključuju medijske kompanije, proizvođače mašina i druge industrije.

Odvojeno, želeo bih da se zadržim na malim kompanijama. Vrlo često u malim timovima programer radi sve, a takva kompanija ponekad kupuje velike All-Access pakete hrane za jednog ili dva programera. U velikim timovima se ne ohrabruje da programer obavlja i ulogu administratora baze podataka, na primjer, pa su tamo obično popularni mali paketi hrane, au malim kompanijama ova kombinacija dužnosti je sasvim prihvatljiva.

Delphi Architect je proizvod koji se intenzivno prodaje i uključuje alate za modeliranje i programiranje. Broj prodatih kopija je, međutim, manji od Delphi Enterprise verzija, ali je takođe velik. Napominjem da smo 2010. godine bili najbolja zemlja po prodaji, uprkos činjenici da su sve zemlje preživjele krizu. Ovaj rast nije bio toliko zbog ekonomskih faktora koliko zbog činjenice da je verzija RAD Studio XE, objavljena krajem 2009. godine, bila veoma tražena. I dok očekujemo dalji rast prodaje.

Napravili smo još jedan razuman korak, koji je veoma tražen u Rusiji. Stepen legalizacije različitih verzija naših proizvoda je različit: što je verzija viša, to je legalizovanija, jer se ranije softver nije toliko aktivno kupovao. Počevši od RAD Studio XE, licenca pokriva verzije 2010, 2009, 2007, pa čak i Delphi 7, široko korišćeni proizvod.

Danas su programeri suočeni s činjenicom da imaju i nove projekte i projekte u stanju podrške. Veliki broj projekata je migriran sa ranih verzija Delphija na verziju 7 i ostaje unutar ove verzije, nastavljajući da radi na relativno malim resursima. Niko ih ne premješta na novije verzije, ali ostaju održivi. A sada dozvoljavamo za malo novca (manje od cijene Delphi 7 licence) da dobijemo i RAD Studio XE i Delphi 7 - odnosno legaliziramo programera i za implementaciju novih projekata i za projekte podrške.

KP: Kako ocjenjujete trenutno stanje zajednice Embarcadero?

DI.: Ova zajednica je velika i veoma zahtjevna. Treba im sve i odmah - oni su programeri. Ali ponekad je potrebno mnogo vremena da se nešto ispravi.

Prije nekoliko godina uzeli smo arhitekturu Windows komponenti i stavili je na Linux desktope. Sada vidimo da to nije bila ispravna odluka. Prava odluka je kreiranje platforme za aplikacije. Aplikacije čak i za različite platforme imaju menije, prozore, grafiku, pristup mreži i pristup uređajima. Različite platforme mogu imati različite modele kontrole toka ili obrade izuzetaka, ali vidimo iste blokove pokušaja u kodu aplikacije. Naš posao je da olakšamo programerima da kreiraju poslovne aplikacije i kompajliraju ih za platforme na kojima bi trebalo da se koriste, bez obzira na to kako je uređen sistem instrukcija odgovarajućih procesora i koje su druge karakteristike ovih platformi. A FireMonkey je upravo ono što vam treba da riješite ovaj problem.

KP: Ako kompanija kreira novi uređaj i želi imati FireMonkey podršku za njega, da li bi to bilo moguće?

DI.: Sa kompajlerima nove generacije koji će imati prednji kraj nezavisan od platforme i back-end zavisan od platforme, to će biti sasvim moguće. U međuvremenu, za svaki operativni sistem kreiramo kompajler i runtime biblioteku od nule.

Svaki moderni novi uređaj obično ima grafičko korisničko sučelje (mnogi od njih imaju dvojezgreni procesor i GPU) i standardne SDK-ove za programere. Sve ovo pojednostavljuje kreiranje podrške za uređaje u FireMonkey-u. Ako novi uređaj ima samo biblioteke za 2D grafiku kao što je Quartz, moći ćemo podržati takav uređaj u FireMonkey-u, ali to će trajati otprilike nekoliko mjeseci. Međutim, mnogo zavisi od platforme: ne podržavaju sve platforme sve funkcije, na primer, iOS nema menije i dijaloške okvire, a nećete moći da postavite odgovarajuće komponente na forme takvih aplikacija.

KP: Da li se nešto promijenilo u politici rada sa partnerima? Šta se poduzima kako bi se povećao udio korisnika vaših proizvoda? Šta se radi u Rusiji?

DI.: Naš partnerski ekosistem je širok - postoje stotine proizvođača alata i komponenti koje se ne nalaze u našim proizvodima, a imamo i program tehnološkog partnerstva. Stoga je širok raspon komponenti, tehnologija i alata dostupan programerima. A rješenja koja kreiraju za svoje kupce su bolja nego da se koriste samo naši proizvodi. A za prodaju imamo urede u mnogim zemljama, preprodavce i distributere.

K.R.: Nama nije bitan broj partnera, već kvalitet rada svakog pojedinog partnera. Za sada se želimo fokusirati na blisku saradnju sa postojećim partnerima, iako je fond partnera i dalje otvoren. Imamo mnogo partnera i moramo im pomoći u tehnološkom smislu. Radimo sa programerima, i oni znaju šta žele i znaju šta je dostupno na tržištu, a mogućnosti partnera moraju odgovarati tome.

Imamo poslovne partnere koji su dosta uložili u Embarcadero kao liniju poslovanja - imaju obučene stručnjake, marketing naših proizvoda, posvećene zaposlenike koji su odgovorni za ovu oblast i prate šta se dešava sa našim proizvodima, cenovnikom, marketingom. Naravno, oni su uspješniji u smislu prodaje naših proizvoda od kompanija koje prodaju naše proizvode od slučaja do slučaja.

KP: Davide, Kirill, hvala puno na zanimljivom intervjuu. U ime naše publikacije i naših čitatelja, dozvolite mi da poželim vašoj kompaniji nastavak uspjeha u stvaranju vaših nevjerovatnih alata koji su programerima toliko potrebni!

Pitanja je postavila Natalia Elmanova

FireMonkey je osnovna tehnologija "novog Delphija". Recite nam o ciljevima, mogućnostima i tehničkim aspektima ove fundamentalno nove biblioteke. Nakon nekog vremena, gledajući unazad, koliko je teško i opravdano bilo vaše odbijanje da dalje razvijate super popularni VCL?

Izabran je kao glavni pravac razvoja Delphi tehnologije radi postizanja specifičnog cilja - multiplatformskog razvoja iz jednog okruženja, zasnovanog na jednoj bazi izvornog koda, i bez potrebe za radikalnom prekvalifikacijom programera. U okviru sada već klasičnog i izuzetno popularnog VCL-a, to je bilo nemoguće, njegova veza sa WinAPI-jem bila je previše bliska, moglo bi se reći, „na genetskom nivou“.

VCL komponente nisu imale "apstraktni" sloj između funkcionalnog nivoa u smislu interfejsa i njihovih mehanizama mapiranja. Funkcionalni nivo- kako se ponaša kao kontrola, na koje događaje reaguje, kakvu interakciju korisnika pruža. Display- pozivanje platformski orijentiranih metoda renderiranja kao neke vrste slike formirane od rasterskih objekata i vektorskih primitiva. FireMonkey je u početku implementirao princip striktne podjele kontrole na dvije komponente: "bihevioralnu" i "vizuelnu".


Vsevolod Leonov, Embarcadero Technologies

Prvi u cjelini neće ponoviti čak ni osnove VCL-a, već suštinu objektno orijentiranog programiranja. Komponenta je klasa, klase komponenti formiraju hijerarhiju u kojoj se mogu razlikovati porodice i moduli. Klasa komponente nema mnogo veze sa načinom na koji je prikazana.

Vizuelna "slika" se formira dinamički, nije tvrdo kodirana u klasi komponenti. Slika ili "stil" u FireMonkey-u se učitava u komponentu kada se aplikacija pokrene. Imamo neku vrstu funkcionalnog okvira za komponentu, a "koža" ili "obloga" se mogu mijenjati, ali zašto? Zato FireMonkey aplikacije izgledaju autentično na bilo kojoj platformi - Windows 7, Windows 8, Mac OS, iOS i, u bliskoj budućnosti, Android. Tradicionalna monolitna struktura VCL klase to nije mogla pružiti.

Ovdje tehnološki pristup igra posebnu ulogu. U principu, možete uzeti VCL biblioteku i "napuniti" WinAPI sa svim drugim mogućim pozivima platforme. Na vrlo ograničenom podskupu komponenti, ovo se još uvijek može učiniti, ali VCL sadrži nekoliko stotina komponenti, tako da bi ovaj pristup mogao jednostavno "ubiti" VCL. Odlučeno je da se ne dira VCL, i da se razviju nove funkcije na novoj platformi - FireMonkey. Ova tehnologija čak ima i određenu tehničku eleganciju - u trenutku sklapanja projekta za određenu platformu, Delphi IDE povezuje neophodan kompajler, a komponente interfejsa dobijaju platformski stil.

Za korisnika je ovo jedan klik miša i isti izvorni kod, za Delphi je mnogo godina napornog rada programera da se napravi ovakva multi-platformska biblioteka.

Kada je postalo jasno da će FireMonkey biti predstavljen kao posebna nova platforma, morala je biti izabrana prava strategija koegzistencije: Embarcadero nije želio negativno utjecati na korisnike VCL-a na bilo koji način. Stoga smo odabrali sljedeći plan: VCL ostaje ideološki i arhitektonski stabilan kako bi se osigurala najveća moguća kompatibilnost, istovremeno olakšavajući migraciju projekata na moderne verzije. Razvoj FireMonkey-a će ići prirodnim i paralelnim putem, bez osvrtanja na VCL.

Slaba tačka ovog rješenja je prilično problematična migracija sa VCL-a na FireMonkey unutar jednog projekta. Ali s druge strane, za novi projekat, programer može izabrati FireMonkey kako bi osigurao višeplatformsku prirodu svoje rezultirajuće aplikacije. Izlaskom XE4 sa iOS podrškom, već možemo govoriti o snažnoj konkurentskoj prednosti Delphija za razvoj mobilnih uređaja u korporativnom okruženju, koja će biti povećana nakon implementacije planirane podrške za Android.

Stoga, kao takav, ne postoji eksplicitno "odbijanje" od razvoja VCL-a. U novim verzijama, VCL dio Delphija se također razvija. Ovo uključuje podršku za 64-bit, i uvođenje stila za vizuelne komponente, i implementaciju mehanizma za fleksibilne dinamičke veze ili "vezivanje", i uključivanje FireDAC biblioteke za rad sa bazama podataka u VCL projektima. Samo što u pozadini ogromnog kvalitativnog skoka zbog FireMonkey-a, napredak u VCL-u izgleda pomalo neispoljeno. Ali kako god bilo, VCL je sastavni dio Delphi-ja i tako će ostati još mnogo godina. Iako su evolucija platformi i trenutno stanje u oblasti OS za desktop sisteme i mobilne uređaje takvi da je budućnost očigledno za FireMonkey-om.

Već smo razgovarali o iOS podršci u intervjuu, hajde da našim čitaocima kažemo o najnovijoj RAD Studio XE4 podršci za druge najnovije tehnologije, kao što su Windows 8 i WinRT, 64-bitni sistemi, MacOS i tako dalje. Možete li nabrojati šta još možete ponuditi modernom programeru razmaženom inovacijama?

Najvjerovatnije, moderni programer nije "razmažen" inovacijama. Za velike projekte, svaka "inovacija" često se pretvara u gigantsku količinu posla.

Na primjer, svi su dugo čekali, mnogi su odmah požurili da prenesu svoje kodove na novu platformu. No, pokazalo se da čak ni vrlo profesionalni timovi nisu spremni za ovo. Kompabilan 64-bitni kod ne znači i izvodljiv. Počeli su da se pojavljuju "grijesi mladosti", kao što je korištenje instrukcija koje pretpostavljaju veličinu adrese od 4 bajta. Nedostatak kulture provođenja testova, uz tehnološku nespremnost da se ovaj proces implementira u kratkom roku.

I ovdje - što je projekt veći, mjereno, na primjer, brojem redova izvornog koda, to se programeri pažljivije i uravnoteženije odnose prema raznim vrstama inovacija u rasponu od pojave "dugma" u interfejsu do "sintaktičkog šećera" u kompajleru.

Jedno od ovih „problematičnih“ dostignuća je bilo izdavanje Windows 8. Lično, kao korisnik računara i samo savremeni IT stručnjak, oduševljen sam Windowsom 8. Ali za programere kojima je poslana serija Windows 8 računara sa tehničkim specifikacijama za razvoj pod novim OS-om kao opterećenje, to znači određene poteškoće.

Trudili smo se da pružimo podršku za razvoj pod novim interfejsom ovog OS-a što je udobnije i bezbolnije. Stoga su uvedeni posebni stilovi i za VCL i za FireMonkey, a programer može ili ponovo izgraditi interfejs aplikacije ili kreirati novu aplikaciju koja će se po izgledu ne razlikovati od „nativne“ za Windows 8. Naravno, postoji potreba za "prirodnom" podrškom za Windows 8 preko WinRT-a. Ali ovdje utječe prioritetizacija ciljeva u savremenim uslovima. Mac OS, iOS, Android u bliskoj budućnosti još ne daju priliku da se govori o punoj podršci za WinRT u bliskoj budućnosti.

Strateški cilj Embarcadera je, naravno, multiplatforma. Izdavanje RAD Studio XE4 bilo je ključno, prvenstveno zbog podrške za iOS. Aktivni programer koji koristi VCL može započeti razvoj za iOS za nekoliko sati. Čak se i jednostavna mobilna aplikacija može trenutno transformisati u moćan projekat koji radi u okviru postojeće infrastrukture. Nemojte misliti da je to samo novi kompajler za FireMonkey i novi stil koji odgovara iOS interfejsu.

Ovo uključuje novi vizualni dizajner, ugrađenu podršku za različite faktore oblika, biblioteke za pristup podacima, uključujući novi FireDAC i LiveBindings tehnologiju za fleksibilno i dinamičko povezivanje s korporativnim podacima. Sve ove inovacije dolaze istovremeno - i za Windows, i za Mac OS, i za iOS. Operativni sistem Mac OS se ne razvija tako brzo, tako da nema problema kao što je prelazak sa Windows 7 na Windows 8. Ali pojavili su se Retina displeji i to je zahtijevalo posebnu pažnju. Sada svaka MacOS aplikacija kreirana u Delphi XE4 automatski uključuje dva stila - "normalni" i "high-definition".

To. ista aplikacija može imati isti kvalitetan "native" interfejs na bilo kom desktop računaru kompanije Apple.

Embarcadero ne želi da "iznenadi", "zadivi" ili čak "zabavi" programere svojim novim inovativnim izdanjima. Naprotiv, IT sfera je već puna raznih iznenađenja: novi uređaji, nove platforme, novi korisnici, njihove nove potrebe, novi scenariji interakcije. Dodajte tome nove tehnologije razvoja softvera i programeri jednostavno neće imati vremena da kreiraju nove sisteme i na postojećim - radiće samo ono što bi migrirali iz jednog okruženja u drugo, iz stare biblioteke u novu, sa jednog jezika na drugi.

Ali mi ne priznajemo odbacivanje svega novog. Želimo samo osigurati kontinuitet svega - koda, sučelja, projekta, pa čak i profesionalnih vještina kako se pojavljuju nove platforme i uređaji. Možemo reći da se borimo protiv nezdravog konzervativizma u odnosu na nove platforme na račun zdravog konzervativizma u razvojnim alatima. Ne očekujte egzotične proizvode, nestandardne programske jezike i neobične razvojne alate od Embarcadera.

Kod nas ćete uvijek pronaći vizualni razvoj, klasične jezike, "nativni" kod i neka ciljne platforme za vaše aplikacije kreirane na isti dokazano klasičan način budu nove.

Šta je vatreni majmun?


FireMonkey (FMX) je okvir za razvoj na više platformi za desktop sisteme (Windows, Mac OS + podrška za serversku stranu na Linuxu u bliskoj budućnosti) i mobilne (iOS i Android) koristeći Delphi/C++ jezik.

Posebnosti:

  • jedinstvena kodna baza za sve platforme;

  • svaka kontrola (vizuelna komponenta) može biti kontejner (roditelj) za druge komponente;

  • prisustvo veoma naprednog relativnog rasporeda (20 vrsta) komponenti na obrascu;

  • LiveBinding vam omogućava da povežete bilo koju vrstu podataka ili informacija sa bilo kojim korisničkim interfejsom ili grafičkim objektima;

  • prisustvo stilova forme/komponente;

  • Multi-Device Preview vam omogućava da prilagodite vizuelnu prezentaciju za svaku od platformi;

  • FireUI Live Preview - Prikazuje prikaz aplikacije na stvarnim uređajima u realnom vremenu.

Mogućnosti:

  • korištenje izvornog API-ja svake od platformi, kao i mogućnost pozivanja izvornih biblioteka trećih strana;

  • interakcija sa svim senzorima (GPS, Akcelerometar, Kompas, Bluetooth (uključujući LE) i drugi);

  • podrška za push notifikacije, IoT;

  • podrška za asinhrone HTTP zahtjeve;

  • podrška za većinu baza podataka (MsSQL, MySql, Oracle, PostgreSQL, MongoDB, itd.);

  • rad sa Cloud servisom (Amazon, Azure);

  • android servisna podrška.

Nedostaci (trenutno):

  • nedostatak podrške za prilagođavanje izvornih klasa;

  • implementacija određenih stvari je ili nemoguća (widgeti, ekstenzije (iOS) itd.) ili je neophodan ples uz tamburu (pozadinski servis, emitovana poruka itd.);

  • prilagođavanje Splash screen (početni ekran) blago rečeno, ne;

  • FMX kontrole koriste vlastito renderiranje (vizualizacija, crtanje), koje je čisto vizuelno slično izvornom;

  • upotreba izvornih kontrola povezana je s velikim pokretima tijela;

  • uz veliko ugnježđenje komponenti dešavaju se nevjerovatne stvari: aplikacija se ruši na raznim mjestima, gubi fokus, zamrzava se itd.;

  • sadržaj informacija za otklanjanje grešaka u aplikaciji na mobilnim platformama je nula;

  • opisi grešaka na mobilnim platformama svedeni su na beskorisnu “Greška 0x00000X”;

  • vrijeme kompilacije želi biti najbolje za srednje i velike projekte;

  • potreba za korištenjem datoteke za preciziranje mobilnih aplikacija za svaku platformu;

  • nema podrške za Intel Atom arhitekturu;

  • neadekvatna cijena u odnosu na konkurente.

Pros:

  • vrlo aktivan nedavni razvoj proizvoda i zajednice, podrška za sve više novih tehnologija;

  • prisutnost velikog broja besplatnih i komercijalnih komponenti;

  • brzina aplikacije je vrlo blizu izvornoj;

  • veoma napredan vizuelni uređivač i okruženje uopšte, prisustvo stilova;

  • mogućnost testiranja aplikacije na Win-u, pa je tek onda implementirati na uređaje, što uvelike ubrzava razvoj;

  • promijenite način rada/platformu pokretom ručnog zgloba;

  • PAServer omogućava jednostavnu interakciju sa MacO-ovima pri razvoju za Apple OS;

  • podrška za 3D grafiku iz kutije.

U zaključku, želim reći da je FireMonkey u posljednjih nekoliko godina izrastao u profesionalni alat za krosplatformski razvoj poslovnih aplikacija i ne samo. Mnogi nedostaci se postepeno otklanjaju i sa svakim izdanjem proizvod postaje moderniji i samodovoljniji, nestaje i postojeći skepticizam prema samom Delphi jeziku, povezan sa dugogodišnjom stagnacijom. Pisanje novih projekata na FireMonkey je "sigurno" i obećavajuće.

Prošlo je dovoljno vremena otkako je termin FireMonkey postao manje-više poznat, ako ne svim programerima, onda barem onima koji koriste Delphi. Tokom tog vremena, postojale su knjige o FireMonkey-u, članci o FireMonkey-u, zapisi o FireMonkey-u u brojnim blogovima. Čitanje svega ovoga je veoma zanimljivo. Ali nijedna teorija ne može zamijeniti praksu. I ja sam, kao i mnogi prije, imao svrab da pokušam nešto napisati koristeći FireMonkey.

Međutim, pri tome je nastao problem. Iz nekog razloga sam odlučio da samo trebam implementirati neki ne baš komplikovan radni projekat.

Da bih objasnio zašto mi se ovo ispostavilo kao problem, biće potrebna neka (hoće se napisati, lirska) digresija. Ekskurzija u moju prošlost kao programera. Objasnite neke od mojih pogleda na programiranje koristeći Delphi.

Moram reći da sam Delphi počeo da koristim na Windows 3.1, odnosno od prve verzije. I od tada studiram VCL. Studirao u originalu, da tako kažem. Gledali, adresirali, pratili izvorne kodove. Opet i opet.

Poznato je da je u različitim vremenima skup komponenti isporučenih uz Delphi uključivao komponente treće strane koje su trebale da popune praznine u VCL-u, a koje su verovatno prošle kroz neku vrstu kontrole kvaliteta pre nego što su uključene. Neke od ovih komponenti se isporučuju do danas. Uzmite isti Indy. Ne želim nikoga uvrijediti, ovo je čisto moje lično mišljenje, koje se odnosi i na mene kao programera komponenti: niti jedan set nije tako duboko osmišljen i implementiran kao ogroman i raznolik VCL. Ne, ne pretvaram se da sam konačna istina i, naravno, ima mnogo grešaka u samom VCL-u, odluka koje izazivaju nesporazum, izazivaju odbijanje i sa kojima se ne slažete. Ali uvijek sam stekao utisak nekog određenog stila. U VCL-u postoji, po mom mišljenju, prelepo i snažno jezgro koje podržava ceo Delphi dizajn, i oko kojeg se grade i softverska infrastruktura i sama zajednica programera. U velikoj mjeri zahvaljujući VCL-u, opet, po mom mišljenju, glasine o smrti Delphija su i dalje glasine. A kada su komponente treće strane bile uključene u isporuku VCL-a, bilo je odmah primjetno, bile su drugačije.

Ali onda dolazi trenutak i čujem da je VCL tehnologija koja je zastarjela. Tehnologija koju treba ostaviti u prošlosti. Programeri bi trebali implementirati sve svoje nove projekte na FireMonkey, ali o starim... bilo bi lijepo prenijeti ih na nove šine. FireMonkey je svuda i uvijek. I to čujem iz različitih izvora. I to prilično uporno. Ne, niko ne ubija VCL. on ostaje sa nama. Ali on više nije broj jedan. On bi trebao biti zamjenik. Barem ja tako razumijem ono što se govori o budućnosti proizvoda.

U principu, razumijem ovo usklađivanje. Položen je kurs za više platformi, i, što je još važnije, za cross-platforme. Uostalom, šta je VCL? Biblioteka vizuelnih komponenti. Biblioteka vizuelnih komponenti. Možda se ne slažete sa ovim. Na primjer, uvijek sam razmatrao puno nevizualnih komponenti, a ne komponenti, već samo klasa, sastavni dio VCL-a i ogroman broj klasa i komponenti treće strane - nastavak, proširenje VCL-a . Pa, ne mogu smatrati da nasljednici TDataseta nisu dio VCL-a. Iako, na primjer, termin DBExpress Library kaže da to, takoreći, nije VCL. Očigledno, Embarcadero zaista dijeli monolitni, s moje tačke gledišta, VCL na nekoliko zasebnih biblioteka. Ne, naravno, ne potpuno odvojeno, ali ipak. I ako uzmete ovu tačku gledišta, FireMonkey je namijenjen da zamijeni vizualni dio VCL-a (kako bih još nazvao kompletnu biblioteku klasa i komponenti, možda Borland Component Library?).

Oko čega su izgrađene vizuelne komponente biblioteke? Oko niskog nivoa, osnovni elementi koje obezbeđuje operativni sistem. Ručke za prozore, fontovi, sami prozori, elementi za unos, poruke, konteksti uređaja i još mnogo toga - to nisu koncepti biblioteke koja dolazi sa Delphijem, već koncepti operativnog sistema. Da, tako je, Windows. A ako želite da napravite međuplatformsku biblioteku, onda je logično da odbijete infrastrukturu koju nudi operativni sistem koji izvršava program napisan pomoću biblioteke.

To je upravo ono što FireMonkey pokušava učiniti. Oni pokušavaju stvoriti infrastrukturu zasnovanu na osnovnim mehanizmima podržanim od strane različitih operativnih sistema koji mogu zamijeniti uslugu koju sami operativni sistemi nude.

Mnogi se sjećaju pokušaja da napravecross-platform ne samo biblioteka, već i sam Delphi. Paralelno sa Delphijem 6, objavljeni su Kylix proizvod i CLX biblioteka. Sve je to urađeno kako bi se mogao razvijati za Linux. Međutim, Linux nema mnogo osnovnih GUI koncepta prozora koje ima Windows. Interfejs prozora za Linux općenito nije urođeni fenomen. Ovo je opciona aplikacija. I morao sam da napišem neku vrstu sintetičke biblioteke. Uz njegovu pomoć bilo je moguće napisati program i za Windows i za Linux. Ipak, još uvijek se sjećam tog osjećaja, ne razočaranja, već neugodne neugodnosti, koji sam doživio kada sam pokušao koristiti analoge vizuelnih komponenti iz CLX-a. Počeo sam mnogo da nedostaje. Ono što sam radio bez razmišljanja dok sam razvijao sa VCL-om pokazalo se da je teško, veoma drugačije ili jednostavno nemoguće uraditi koristeći CLX.

Osjećao sam se otprilike isto kada sam prešao sa BDE na DBExpress. Stari, poznati iz Field Test-a BDE (Borland ga je tada već koristio u Quattro Pro za Windows i Paradox za Windows, i zvao se ODAPI, pa IDAPI, i bio je rez iznad, po mom mišljenju, Microsoftovog ODBC-a) je bio proglašena zastarjelom tehnologijom, koja bi u novim projektima trebala ustupiti mjesto novoj biblioteci. Uvijek mi je u početku nešto nedostajalo u DBExpressu, posebno znanje.

Istovremeno, ni na koji način ne želim da grdim ili kritikujem ni gore navedene biblioteke, ni odluke koje su dovele do njihovog pojavljivanja. Radi se samo o mojim utiscima, ponekad prvim utiscima.

Sada, možda, postaje malo jasnije zašto je odluka da se napiše mali radni projekat koristeći FireMonkey donijela niz problema. Dugi niz godina, u razvoju projekata, projekata i projekata, formirao se određeni stereotip, određeni šablon šta i kako raditi. I u mom slučaju morao sam se suočiti sa činjenicom da šablon treba promijeniti. Zato što ne možete prenijeti sve što ste navikli koristiti VCL u projekat izgrađen na FireMonkey.

Na početku projekta doživio sam određeni osjećaj deja vua. Naime, osjećaj nelagode. Na primjer, uobičajeni elementi unosa nemaju mnogo svojstava. Trikovi koji su se čvrsto ustalili u praksi, zasnovani na trikovima vezanim za poznavanje nekih karakteristika operativnog sistema, ne funkcionišu u novom kontekstu. Da ne spominjemo da su se neke komponente radikalno promijenile.

Pa, još jedna važna nijansa. Kakvi se projekti obično moraju raditi na poslu, ako to (rad) nije vezan za pisanje kompajlera, sistema modeliranja ili bilo čega drugog visokonaučnog? Mislim da se za većinu radi o razvoju nečega što uključuje korištenje baza podataka. Štaviše, nešto visoko naučno takođe može koristiti usluge koje pruža DBMS.

Ovdje me je čekala još jedna zasjeda. Iz nekog razloga, kada se u praksi susrećete da FireMonkey ne sadrži elemente fokusirane na rad sa podacima pohranjenim u bazi, niste baš spremni za to (blago rečeno). Iako sam o tome već čitao mnogo puta i znate (teoretski) šta biste trebali koristiti. Radi se o živim vezama.

Ne želim da ulazim u raspravu oko toga da li pravi kul programeri treba da koriste komponente koje znaju za db ili ne bi trebalo da prikazuju, uređuju i na kraju čuvaju. Što, opet, nije ni loše ni dobro. Samo mi se tako desilo.

Ovim završavam moj post o prvim utiscima. Sljedeće su priče o tome šta su i kako savladali radeći na projektu.