Evangelisten lügen. Feuermonkey ist scheiße

Es ist genug Zeit vergangen, seit der Begriff FireMonkey mehr oder weniger vertraut geworden ist, wenn nicht allen Entwicklern, so doch zumindest denen, die Delphi verwenden. In dieser Zeit gab es Bücher zu FireMonkey, Artikel zu FireMonkey, Einträge zu FireMonkey in zahlreichen Blogs. Das alles zu lesen ist sehr interessant. Aber keine Theorie kann die Praxis ersetzen. Und ich hatte, wie viele zuvor, das Bedürfnis, etwas mit FireMonkey zu schreiben.

Dabei trat jedoch ein Problem auf. Aus irgendeinem Grund entschied ich, dass ich nur ein nicht sehr kompliziertes Arbeitsprojekt umsetzen musste.

Um zu erklären, warum sich dies für mich als Problem herausgestellt hat, bedarf es einiger (man möchte schreiben, lyrischer) Abschweifungen. Ein Ausflug in meine Vergangenheit als Entwickler. Erklären Sie einige meiner Ansichten zur Programmierung mit Delphi.

Ich muss sagen, dass ich angefangen habe, Delphi unter Windows 3.1 zu verwenden, also von der ersten Version an. Und seitdem studiere ich VCL. Sozusagen im Original studiert. Beobachtete, adressierte, verfolgte Quellcodes. Wieder und wieder.

Es ist bekannt, dass der mit Delphi gelieferte Komponentensatz zu verschiedenen Zeiten Komponenten von Drittanbietern enthielt, die die Lücken in der VCL füllen sollten und die wahrscheinlich eine Art Qualitätskontrolle durchlaufen haben, bevor sie aufgenommen wurden. Einige dieser Komponenten werden bis heute geliefert. Nehmen Sie den gleichen Indy. Ich will niemanden vor den Kopf stoßen, das ist meine rein persönliche Meinung, die auch für mich als Komponentenentwickler gilt: Kein einziges Set wurde so tief durchdacht und umgesetzt wie eine riesige und vielfältige VCL. Nein, ich behaupte nicht, die letzte Wahrheit zu sein, und natürlich gibt es viele Fehler in der VCL selbst, Entscheidungen, die zu Missverständnissen führen, Ablehnung hervorrufen und denen Sie widersprechen möchten. Aber ich hatte immer den Eindruck einheitlicher Stil. Meiner Meinung nach gibt es in VCL einen schönen und starken Kern, der das gesamte Delphi-Design unterstützt und um den herum sowohl die Softwareinfrastruktur als auch die Entwicklergemeinschaft selbst aufgebaut sind. Zum großen Teil dank der VCL, auch hier sind meiner Meinung nach die Gerüchte über den Tod von Delphi immer noch Gerüchte. Und als Fremdkomponenten im Lieferumfang der VCL enthalten waren, fiel sofort auf, die waren anders.

Aber dann kommt der Moment und ich höre, dass VCL eine veraltete Technologie ist. Eine Technologie, die der Vergangenheit angehören sollte. Entwickler sollten alle ihre neuen Projekte auf FireMonkey implementieren, aber über alte ... es wäre schön, sie auf neue Schienen zu übertragen. FireMonkey ist überall und immer. Und ich höre es aus verschiedenen Quellen. Und das ziemlich hartnäckig. Nein, niemand tötet VCL. er bleibt bei uns. Aber er ist nicht mehr die Nummer eins. Er sollte ein Stellvertreter sein. So verstehe ich zumindest, was über die Zukunft des Produkts gesagt wird.

Grundsätzlich verstehe ich diese Ausrichtung. Es wurde ein Kurs für Multi-Plattform und vor allem für Cross-Plattform absolviert. Was ist schließlich VCL? Visuelle Komponentenbibliothek. Bibliothek visueller Komponenten. Sie können dem nicht zustimmen. Zum Beispiel habe ich immer viele nicht-visuelle Komponenten in Betracht gezogen, und keine Komponenten, sondern nur Klassen, einen integralen Bestandteil der VCL, und eine große Anzahl von Klassen und Komponenten von Drittanbietern - eine Fortsetzung, eine Erweiterung der VCL . Nun, ich kann die Erben des TDataset nicht als nicht Teil der VCL betrachten. Obwohl beispielsweise der Begriff DBExpress Library besagt, dass es sich sozusagen nicht um eine VCL handelt. Anscheinend teilt Embarcadero die aus meiner Sicht monolithische VCL wirklich in eine Reihe separater Bibliotheken auf. Nein, natürlich nicht ganz getrennt, aber trotzdem. Und so gesehen soll FireMonkey den visuellen Teil der VCL ersetzen (wie soll ich die komplette Klassen- und Komponentenbibliothek noch nennen, vielleicht Borland Component Library?).

Um was herum sind die visuellen Komponenten der Bibliothek aufgebaut? Um die niedrige Ebene, Grundelemente vom Betriebssystem bereitgestellt. Fenstergriffe, Schriftarten, Fenster selbst, Eingabeelemente, Meldungen, Gerätekontexte und vieles mehr – das sind nicht die Konzepte der mit Delphi gelieferten Bibliothek, sondern die Konzepte des Betriebssystems. Ja, das ist richtig, Windows. Und wenn Sie eine plattformübergreifende Bibliothek erstellen möchten, ist es logisch, die vom Betriebssystem angebotene Infrastruktur abzulehnen, die das mit der Bibliothek geschriebene Programm ausführt.

Genau das versucht FireMonkey. Sie versuchen, auf der Grundlage der zugrunde liegenden Mechanismen, die von verschiedenen Betriebssystemen unterstützt werden, eine Infrastruktur zu schaffen, die den Dienst ersetzen kann, den die Betriebssysteme selbst anbieten.

Viele erinnern sich an den Versuch, etwas zu machenplattformübergreifend nicht nur die Bibliothek, sondern Delphi selbst. Parallel zu Delphi 6 wurden das Produkt Kylix und die CLX-Bibliothek veröffentlicht. All dies wurde getan, um für Linux entwickeln zu können. Linux verfügt jedoch nicht über viele der grundlegenden GUI-Fensterkonzepte, die Windows bietet. Die Windows-Oberfläche für Linux ist im Allgemeinen kein natives Phänomen. Dies ist eine optionale Anwendung. Und ich musste eine Art synthetische Bibliothek schreiben. Mit seiner Hilfe war es möglich, ein Programm sowohl für Windows als auch für Linux zu schreiben. Ich erinnere mich jedoch immer noch an dieses Gefühl, nicht an Enttäuschung, sondern an lästige Unannehmlichkeiten, die ich erlebte, als ich versuchte, die Analoga der visuellen Komponenten von CLX zu verwenden. Ich fing an, viel zu vermissen. Was ich früher beim Entwickeln mit der VCL unüberlegt gemacht habe, stellte sich mit dem CLX als schwierig, ganz anders oder einfach als unmöglich heraus.

Mir ging es ähnlich, als ich von BDE zu DBExpress wechselte. Alte, aus Feldtest bekannte BDE (Borland hat sie damals schon in Quattro Pro verwendet für Windows und in Paradox für Windows, und es hieß ODAPI, und dann IDAPI, und war meiner Meinung nach eine Kürzung über Microsofts ODBC) wurde für veraltete Technologie erklärt, die in neuen Projekten einer neuen Bibliothek weichen sollte. Bei DBExpress hat mir anfangs immer etwas gefehlt, vor allem Wissen.

Gleichzeitig möchte ich weder die oben aufgeführten Bibliotheken noch die Entscheidungen, die zu ihrem Erscheinen geführt haben, schimpfen oder kritisieren. Es geht nur um meine Eindrücke, manchmal erste Eindrücke.

Jetzt wird vielleicht etwas klarer, warum die Entscheidung, ein kleines funktionierendes Projekt mit FireMonkey zu schreiben, eine Reihe von Problemen mit sich brachte. Bei der Entwicklung von Projekten, Projekten und Projekten hat sich seit vielen Jahren ein bestimmtes Stereotyp gebildet, eine bestimmte Vorlage dafür, was und wie zu tun ist. Und in meinem Fall musste ich mich damit auseinandersetzen, dass die Vorlage geändert werden muss. Weil Sie nicht alles, was Sie mit VCL gewohnt sind, auf ein Projekt übertragen können, das auf FireMonkey basiert.

Zu Beginn des Projekts hatte ich ein gewisses Déjà-vu-Gefühl. Nämlich ein Gefühl des Unbehagens. Beispielsweise haben die üblichen Eingabeelemente nicht viele Eigenschaften. In der Praxis fest etablierte Tricks, die auf Tricks basieren, die mit der Kenntnis einiger Funktionen des Betriebssystems zusammenhängen, funktionieren in einem neuen Kontext nicht. Ganz zu schweigen davon, dass sich einige Komponenten radikal verändert haben.

Nun, eine weitere wichtige Nuance. Welche Art von Projekten müssen normalerweise bei der Arbeit erledigt werden, wenn es (Arbeit) nicht darum geht, Compiler zu schreiben, Systeme zu modellieren oder irgendetwas anderes Hochwissenschaftliches? Ich denke, für die meisten geht es darum, etwas zu entwickeln, das die Verwendung von Datenbanken beinhaltet. Darüber hinaus kann auch etwas Hochwissenschaftliches die Dienste des DBMS nutzen.

Hier erwartete mich ein weiterer Hinterhalt. Wenn Sie in der Praxis feststellen, dass FireMonkey keine Elemente enthält, die sich auf die Arbeit mit in der Datenbank gespeicherten Daten konzentrieren, sind Sie aus irgendeinem Grund noch nicht ganz bereit dafür (um es milde auszudrücken). Obwohl ich schon oft darüber gelesen habe und Sie (theoretisch) wissen, was Sie verwenden sollten. Es geht um Live-Bindungen.

Ich möchte mich nicht darüber streiten, ob wirklich coole Programmierer db-fähige Komponenten verwenden sollten oder nicht, anzeigen, bearbeiten und letztendlich speichern sollten. Was wiederum weder schlecht noch gut ist. Bei mir hat es sich einfach so ergeben.

Damit schließe ich meinen Beitrag zu den ersten Eindrücken. Als nächstes folgen Geschichten darüber, was und wie sie bei der Arbeit an dem Projekt überwunden haben.

Mehr als drei Jahre sind vergangen, seit die CodeGear-Abteilung, die für die Entwicklung weltberühmter Tools wie Delphi, C++Builder und JBuilder sowie des Interbase-DBMS verantwortlich ist, Teil von Embarcadero Technologies wurde, einem Unternehmen, das für sein Datenbankdesign und seine Datenbankverwaltung bekannt ist tools., und vor zwei Jahren haben wir auf den Seiten unseres Magazins diskutiert, was bei der Entwicklung von Tools zu erwarten ist, die bei russischen Entwicklern so beliebt sind. Wir haben David Intersimone, Vice President for Developer Relations und Chief Evangelist von Embarcadero Technologies, und Kirill Rannev, Head of Representative Office von Embarcadero Technologies in Russland, gefragt. Für unsere jüngsten Leser möchten wir Sie darüber informieren, dass dies bei weitem nicht das erste Interview ist, das David und Kirill ComputerPress geben – unsere Zusammenarbeit dauert bereits das zweite Jahrzehnt an. Und seit ungefähr der gleichen Anzahl von Jahren veröffentlichen wir regelmäßig Bewertungen von Datenbankverwaltungstools, in denen Embarcadero-Produkten viel Aufmerksamkeit geschenkt wird.

ComputerPress: David, Ihre Abteilung ist seit drei Jahren Teil von Embarcadero. Vor zwei Jahren waren Sie voller Begeisterung darüber, dass es Teil eines Unternehmens geworden ist, das Ihnen in Sinn und Geist nahe steht. Hat sich in dieser Zeit etwas verändert? Spüren Sie und Ihre Kollegen dieselbe Begeisterung?

Ja, ich bin immer noch begeistert. Die wichtigste Änderung, die stattgefunden hat, seit wir Teil des Embarcadero-Unternehmens geworden sind, besteht darin, dass viel in die Entwicklung von Delphi investiert wurde. Die Zahl der Mitarbeiter, die an Entwicklungswerkzeugen arbeiten, ist gestiegen, die Zahl der Technologien, die wir entwickeln oder gegebenenfalls akquirieren können, hat zugenommen.

Die Veröffentlichung von RAD Studio XE 2, die wir in Moskau vorführen möchten, ist die größte Version dieses Produkts mit enormen Fähigkeiten und einer großen Anzahl unterstützter Plattformen seit der ersten Version von Delphi, die für 16-Bit-Windows erstellt wurde und die frühere Innovation war Produkt, das den Komponentenansatz und die Kompilierung mit Maschinencode verband. Jetzt unterstützen wir die Entwicklung nicht nur für Windows, sondern auch für Macintosh, ganz zu schweigen von der Webentwicklung und der Erstellung von Anwendungen für mobile Geräte, und diese Anwendungen für verschiedene Plattformen können einen einzigen Code haben.

Die neue Entwicklungsplattform FireMonkey ist eine Zusammenarbeit zwischen Embarcadero und der kürzlich übernommenen russischen Firma KSDev mit Sitz in Ulan-Ude, einem Hersteller von Vektorgrafikkomponenten, DirectX und OpenGL, Technologien für Grafikeffekte und Delphi-Komponenten verwendend Grafikkarte mit PixelShader 2.0. Wir haben vor einem Jahr die Firma KSDev (siehe ksdev.ru) übernommen und begonnen, zusammenzuarbeiten, um ein plattformübergreifendes Entwicklungstool zu erstellen, das eine Plattform zum Entwickeln von FireMonkey-Anwendungen mit Komponenten für Delphi und C ++ Buider zum Erstellen von Benutzeroberflächen für Anwendungen integriert mit Datenbanken, Grafikverarbeitung mit einem Grafikprozessor und Integration mit dem Betriebssystem.

Mit FireMonkey können Sie eine Anwendung erstellen, die CPU und GPU zusammen ausführt, und sie dann mit verschiedenen Compilern und Laufzeitbibliotheken (Run-time Libraries, RTL) für Windows, Mac OS oder iOS kompilieren. Anstatt das Programmieren mit verschiedenen zu lernen Grafikbibliotheken, studieren Sie die API verschiedener Plattformen, die haben verschiedene Systeme Koordinaten und unterschiedlichen Fähigkeiten können Entwickler, die Delphi und C++Builder verwenden, denselben Komponentenansatz verwenden, Formulare visuell bearbeiten und eine Verbindung zu Datenbanken herstellen, indem sie die Komponente mit der Maus bewegen. Es ist grundsätzlich neuer Weg Erstellen von Anwendungen, die auf verschiedenen Plattformen laufen, und die Zukunft liegt darin. Wenn Sie Ihrer Anwendung Unterstützung für andere Betriebssysteme und Plattformen hinzufügen möchten, müssen Sie sie nicht neu entwerfen und entwickeln – es reicht aus, sie einfach neu zu kompilieren.

Wir erstellen neue Compiler, die nativen Code generieren. Heute gibt es Delphi-Compiler für 32-Bit und 64-Bit Windows-Versionen, 32-Bit Mac-Versionen OS 10. Und wir arbeiten an der nächsten Generation von Delphi- und C++Builder-Compilern, mit denen Sie leistungsstarken nativen Code für diese und andere Plattformen wie Android oder Linux erstellen und das gleiche Design beibehalten können gleiche Komponenten, der gleiche Code durch Verwendung unterschiedlicher Compiler und Laufzeitbibliotheken.

Wie Sie sehen, habe ich genug Gründe zur Begeisterung. Und die Entwickler, die ich auf der ganzen Welt treffe, wissen, dass Embarcadero viel in Delphi und C++Builder sowie in PHP-Entwicklungstools investiert.

KP: Welche Fortschritte haben Sie in den letzten zwei Jahren bei der Integration der Tools beider Unternehmen gemacht? Welche Pläne hat Embarcadero in diesem Bereich für die Zukunft?

DI.: Als die Division CodeGear Teil von Embarcadero wurde, hatte dieses Unternehmen Entwicklungsteams in Toronto, Monterrey und Rumänien, wir waren und sind in Scotts Valley und in Russland, in St. Petersburg. Embarcadero hatte Entwickler- und DBA-Tools, CodeGear hatte Anwendungsentwicklungstools, aber letztere verwenden auch Datenbanken. Der Zusammenschluss von Unternehmen ist eine Kombination aus Fachwissen, Wissen im Bereich Datenbanken, Codeoptimierung, einschließlich Servercode. Die Fusion führte auch zur Schaffung eines neuen Produkts, AppWave, einer speziellen Technologie, um eine gewöhnliche Windows-Anwendung in etwas sehr einfach zu Verwendendes zu verwandeln (wie Anwendungen für iPhone oder andere Geräte). Mit AppWave können Sie eine Anwendung nicht installieren, sondern sie einfach auswählen und vom vorbereiteten Anwendungsspeicherserver (App-Server) ausführen, während sie auf dem Computer des Benutzers ausgeführt wird, ohne Änderungen an der Registrierung vorzunehmen und Systembereich Dateisystem. Übrigens ist der AppWave-Anwendungsbrowser in Delphi geschrieben. Embarcadero nutzt Dephi für seine eigene Entwicklung und unser Know-how in der Anwendungsentwicklung.

iPhone-App (iOS) erstellt von
mit der FireMonkey-Plattform

Sie können auch die Integration unserer Entwicklungstools und DB Optimizer verwenden, um SQL-Abfragen beim Erstellen von Anwendungen zu optimieren. Indem Sie SQL-Code direkt an DB Optimizer übergeben, können Sie ihn profilieren, testen und eine optimierte Version davon an die Entwicklungsumgebung zurückgeben. Das Datenbank-Know-how von Embarcadero hat auch die DataSnap-Technologie verbessert. Dank der Entwickler aus Toronto haben wir viel Wissen über die Architektur von Multi-Tier-Systemen und Datenbanken gewonnen. Wir verfügen jetzt in beiden Unternehmen über gemeinsame Expertise in Servercode und gespeicherten Prozeduren. Wir haben Tools wie RapidSQL und DB Change Manager und Entwicklungsumgebungen, die es einfach machen, serverseitigen Code zu erstellen, wie z. B. Code Insight- und Code Completion-Technologien, die es ermöglicht haben, SQL Insight- und SQL Completion-Technologien zu erstellen. Unser gemeinsamer Ansatz zum Erstellen von Client- und Servercode, unsere gemeinsame Philosophie, ermöglicht es uns, gemeinsame Funktionen zwischen Datenbankverwaltungstools und Anwendungsentwicklungstools zu teilen.

Kirill Rannev: Ich möchte etwas Wichtiges hinzufügen. Aus kaufmännischer Sicht ist es sehr wichtig, wie wir unsere Werkzeuge liefern. Beispielsweise enthält die neue Version von RAD Studio XE 2 Ultimate den vollständigen Satz von DB Power Studio-Tools. Es handelt sich um einen sehr leistungsstarken Satz von Tools, einschließlich der RapidSQL-Abfrageerstellungsumgebung, des DB Change Manager-Änderungsmanagementtools und des DB Optimizer-Abfrageoptimierungstools, mit denen Sie einen wichtigen Teil des Entwicklungs- und Bereitstellungsprozesses ausführen können, nämlich die Verwaltung von Änderungen in der Datenmodell, Datenbank, Code usw. Dies ist eine sehr gute und richtige Kombination von Technologien.

DI.: Bei Bedarf können Entwickler jedoch Subversion zur Versionskontrolle verwenden. Quellcode und DB Change Manager für die Versionierung von Metadaten. Sie können Code-Profiling und DB Optimizer verwenden, um Servercode zu optimieren, RapidSQL zum Erstellen und Debuggen von Servercode und unsere Entwicklungsumgebungen zum Erstellen und Debuggen von Anwendungen. Diese Kombination von Technologien in RAD Studio XE Ultimative Edition demonstriert die Parallelen zwischen Datenbank- und Anwendungsentwicklungsmodellen. Die meisten Entwickler, die Geschäftsanwendungen mit Delphi und C++Builder erstellen, arbeiten mit Datenbanken und benötigen diese Tools, und RAD Studio XE Ultimate Edition ist eine großartige Kombination für diese Entwickler.

KP: Der moderne Benutzer ist nicht mehr nur ein Benutzer der Windows-Plattform. Wir verwenden mobile Geräte, iPhone, iPad, Geräte auf Basis der Android-Plattform. Das bedeutet, dass Entwickler damit beginnen sollten, auf verschiedene Plattformen abzuzielen, ohne die Investitionen in Schulungen wesentlich zu erhöhen – das heißt, es werden universelle Tools benötigt. Offensichtlich ist es unrealistisch, das Erscheinen von Universalwerkzeugen von Plattformherstellern zu erwarten, und in dieser Angelegenheit können wir uns nur auf unabhängige Werkzeughersteller verlassen. Wo können wir uns auf Embarcadero verlassen?

DI.: Im Bereich der Plattformbetreuung haben wir noch viel zu tun. Heute präsentieren wir Unterstützung für iOS-Plattformen für iPhone und iPad, dann erhalten Android-, Windows 7- und Blackberry-Smartphones unseren Support. In RAD Studio XE 2 haben wir mit dem Aufbau der FireMonkey-Plattform für iOS begonnen und werden FireMonkey später auf andere Plattformen portieren.

Gleichzeitig gibt es eine große Anzahl von Betriebssystemen, die dies unterstützen Touchscreen(Touchscreen), für Telefone, Tablet-Computer und Geräte, Desktops, und wir werden weiterhin Unterstützung für sie hinzufügen. Darüber hinaus gibt es Sprachsteuerungssysteme, Bewegungssteuerungssysteme, biometrische Systeme, Beschleunigungsmesser, also müssen wir FireMonkey weiter ausbauen, damit alle Entwickler von neuen Plattformen profitieren können. Beispielsweise wurde das Microsoft Kinect-Gerät für die Xbox 360 entwickelt, und jetzt gibt es ein entsprechendes SDK (Software Development Kit) für Windows. Und wir haben bereits Beispiele, bei denen wir Bewegung verwenden, um eine Anwendung auf die gleiche Weise zu steuern, wie wir normalerweise eine Maus oder Tastatur verwenden würden.

Wenn Sie Anwendungen mit vielen komplexen Grafiken erstellen, erzeugen Sie eine ganze Welt neuer Benutzeroberflächen. Wenn wir es mit dem Windows-Betriebssystem zu tun haben, kapseln wir seine Windows-API in der VCL-Bibliothek (Visual Component Library - eine visuelle Komponentenbibliothek, die ein wesentlicher Bestandteil der Entwicklungstools Delphi und C ++ Builder ist. - Notiz. ed.), die übrigens weiter angewendet werden können. Und in FireMonkey kapseln wir die Betriebssystem-API. Aber heute manipulieren wir Formulare und Grafiken viel umfassender. Sie können auch physische Raumeigenschaften für Animationen und Spezialeffekte hinzufügen. Darüber hinaus gibt es viele andere Zusatzfunktionen um Benutzeroberflächen zu erstellen, die wir in den nächsten Jahren für verschiedene Plattformen, Mobil- und Tablet-Geräte implementieren werden.

Microsoft hat kürzlich Details zu Windows 8 veröffentlicht, das in einem Jahr erscheinen soll. Wir werden diese Innovationen in der VCL-Bibliothek und in der FireMonkey-Plattform unterstützen. Aber Delphi ist ein Entwicklungstool, das nicht nur für Windows, sondern auch für Macintosh, iPhone und iPad entwickelt wurde. Wir entwickeln unsere Produkte auch für PHP, unterstützen jQuery Mobile, verwenden Anwendungssoftware iOS-Schnittstelle um mobile Client-Anwendungen zu entwickeln und serverseitige PHP-Anwendungen mit Assistenten und Tools zu erstellen, um clientseitige JavaScript- und HTML-Codes und Cascading Style Sheets zu generieren. Wir können PHP-Anwendungen und Client-Anwendungen mit nativem Code für packen iPhone iOS, während ein solcher Client mit dem PHP-Server kommuniziert. Und die wiederum kommuniziert mit dem Datenbankserver und mit Webservices – mit allem, was fürs Business benötigt wird.

RadPHP XE2-Entwicklungsumgebung. Erstellen Sie eine mobile Webanwendung
mit jQuery Mobile-Komponenten für iPhone 3G

Mit anderen Worten, wir planen, die Fähigkeiten von FireMonkey und VCL zu erweitern, einschließlich der Unterstützung für mobile Plattformen.

KP: Können Sie die FireMonkey-Plattform näher erläutern?

DI.: Wie ich bereits angemerkt habe, wird die für Windows erstellte VCL-Bibliothek weiterentwickelt und verbessert. Wenn Sie heute jedoch Geschäftsanwendungen entwickeln möchten, müssen Sie diese für verschiedene Plattformen erstellen. Dafür wurde die FireMonkey-Plattform entwickelt. Es unterstützt die Erstellung von hochauflösenden Benutzeroberflächen, leistungsstarken 3D-Grafiken, hohen Bildraten und verwendet dafür vor allem eine GPU.

Sie können diese Funktionen beim Erstellen von wissenschaftlichen, technischen und geschäftlichen Anwendungen verwenden. Solche Anwendungen können mithilfe der dbExpress-Technologie eine Verbindung zu Datenbanken herstellen, wobei sie weiterhin nicht-visuelle Komponenten verwenden, die Entwicklern vertraut sind, wie z. B. ClientDataSet oder DataSource, die DataSnap-Technologie verwenden und eine Verbindung zu beliebigen Datenbanken, SOAP- und REST-Servern herstellen. Sie können attraktive Steuerelemente, Schaltflächen mit Kästchen, ungewöhnliche Tabellen und andere Oberflächenelemente erstellen, und zwar in zwei und drei Dimensionen. Sie können ein fertiges 3D-Modell in die Anwendung laden und es mit einer 2D-Form kombinieren, in der es gedreht und aus verschiedenen Winkeln betrachtet werden kann. Sie können einen Datenwürfel oder ein 3D-Geschäftsdiagramm erstellen und es mit Ihrer Maus, Tastatur oder sogar einem Kinect-Gerät drehen, oder Sie können in den Würfel gehen und seine verschiedenen Oberflächen von innen betrachten. Und all dies kann mit einer Hochgeschwindigkeits-GPU erreicht werden. Dieselbe Anwendung kann dann für eine andere Plattform wie Mac OS kompiliert werden.

Anwendung, die einen rotierenden Würfel mit Daten enthält,
an seinen Rändern platziert

Oder Sie können eine 3D-Form von Grund auf neu erstellen und Kameras und Lichter verwenden, um Teile der Benutzeroberfläche zu beleuchten und zu drehen. Der Formulardesigner verfügt bereits über eine integrierte Umgebung, um die 3D-Benutzeroberfläche direkt zur Entwurfszeit zu unterstützen.

Unter Windows können Sie die Direct2D-Bibliotheken für hochauflösende 2D-Grafiken und Direct3D für 3D-Grafiken verwenden. Mac OS verwendet die Quartz- und OpenGL-Bibliotheken für denselben Zweck. Für iOS werden die Bibliotheken Quartz und OpenGL ES verwendet. Aber all dies bleibt dem Entwickler verborgen – er verwendet die FireMonkey-Plattform, ihr Koordinatensystem und die Anwendungsprogrammierschnittstelle, ohne sich Gedanken über diese Bibliotheken zu machen, und kann dieselbe Anwendung für verschiedene Plattformen kompilieren.

Erinnern wir uns, was VCL ist. Die VCL ist ein Komponenten-"Wrapper" um die Windows-API. Wir beschäftigen uns mit Ressourcen, Menüs, Dialogen, Farben, Stilen, Windows-Meldungen. Als Multi-Plattform-Wrapper behält FireMonkey im Gegensatz zu VCL die gleichen Ereignis- und Komponentenmodelle bei, sodass Sie in Ereignissen (z. B. OnClick-, OnHasFocus-, onMouseDown- und onKeyDown-Ereignissen) denken können, aber Macintosh- oder iPhone-Ereignisse verarbeiten können.

Die FireMonkey-Plattform wird ebenfalls mitgeliefert Vollständiges System Animation von Elementen der Benutzeroberfläche. Es ist sicherlich kein umfassendes Animationssystem vom Pixar-Typ, aber es ermöglicht Ihnen, Effekte wie Animationen anzuwenden Bitmaps, Hervorheben des Fokus eines Elements der Benutzeroberfläche und Arbeiten mit Vektorgrafiken. Der Entwickler hat Zugriff auf mehr als 50 visuelle Effekte: Unschärfe, Schwarzweiß, Überblendung, Übergänge, Spiegelung, Schattenbildung - alle Arten von Effekten, die in modernen Grafikprozessoren verfügbar sind und die heute in fast jedem Computer zu finden sind. Eine Anwendung, die mit der FireMonkey-Plattform erstellt wurde, sendet Befehle an die GPU, die die gesamte Arbeit der Anzeige von Grafiken und der Erstellung der Benutzeroberfläche übernimmt. Dabei Zentralprozessor frei für Berechnungen und Aufrufe des Betriebssystems. Der Entwickler muss nur die Komponenten richtig platzieren.

Das Wichtigste an der FireMonkey-Plattform ist die Art und Weise, wie sie die Benutzeroberfläche erstellt. Es gibt Einrichtungen zum Platzieren von Bitmap-Grafiken auf Oberflächenelementen wie Menüs, Schaltflächen und Bildlaufleisten. In FireMonkey verwenden wir zu diesem Zweck GPU-Vektorgrafiken. Aus Sicht der Programmierung sind dies alle die gleichen Steuerelemente, aber der Grafikprozessor erledigt die ganze Arbeit, sie anzuzeigen. Wir können Stile auf Steuerelemente anwenden, eine Anwendung wie eine Anwendung für Mac OS oder Windows aussehen lassen, unseren eigenen Stil erstellen, unsere Stile auf Oberflächenelemente anwenden (z. B. eine Schaltfläche rechteckig oder rund machen, indem wir ihren Stil im Formulareditor ändern). - dafür hat die Entwicklungsumgebung einen Style-Editor. Sie können Ihren eigenen Stil erstellen oder den Stil einer bereits fertigen Anwendung ändern.

FireMonkey-Plattform – Entwicklungstools
und unterstützte Plattformen

Wie Sie sich erinnern, gab es in der VCL-Bibliothek eine begrenzte Anzahl von Steuerelementen – Container (d. h. die es Ihnen ermöglichten, andere Elemente darin zu platzieren), und in FireMonkey ist jedes Steuerelement ein Container. Das bedeutet, dass jedes Steuerelement jedes andere Steuerelement enthalten kann. Dropdown-Listenelemente können beispielsweise Bilder, Schaltflächen, Bearbeitungsfelder und andere Steuerelemente enthalten. Und Sie können Komponenten auch auf Ebenen platzieren.

Das FireMonkey-Renderingsystem ist ziemlich flexibel – es kann die Direct2D-, Direct3D- und OpenGL-Bibliotheken verwenden, indem es Befehle an die GPU sendet. Um dasselbe in VCL zu erreichen, war es notwendig, einen separaten Off-Screen-Puffer zu generieren, ein Bild darin zu erstellen, indem die entsprechenden Grafikbibliotheksfunktionen aufgerufen wurden, und es dann auf dem Formular anzuzeigen.

Beispiele für von FireMonkey unterstützte Grafikeffekte

Wenn Sie keine GPU haben, können Sie dennoch 2D- oder 3D-Formen anwenden und FireMonkey-Steuerelemente verwenden. In diesem Fall verwendet die FireMonkey-Plattform die GDI+-Bibliotheken oder andere ähnliche Bibliotheken und führt dieselben Effekte und Animationen oder Manipulationen von 3D-Objekten durch.

Ein weiteres Feature von FireMonkey ist neues System Schnittstellenelemente an Daten binden, offen und flexibel. Es gibt zwei Arten von Schnittstellenelementen in der VCL: datengebundene und nicht datengebundene (z. B. TDBEdit und TEdit). In FireMonkey kann jedes Steuerelement mit Daten beliebigen Typs verknüpft werden. Es kann nur ein Ausdruck, ein Feld aus einem Dataset, Daten aus von Entwicklern erstellten Objekten oder die Ergebnisse von Methodenaufrufen sein.

Darüber hinaus können Sie beim Erstellen einer Anwendung ein fertiges 3D-Modell laden und verwenden - solche Funktionen werden häufig sowohl in Geschäfts- als auch in Ingenieuranwendungen benötigt. Wir haben einen Kunden, der Anwendungen für die Logistik erstellt. Sie hatten ein mit Delphi erstelltes Informationssystem und darin eine Anwendung, die einen Plan zeichnete und Informationen aus Datenquellen anzeigte. Sie haben kürzlich etwas Interessantes gemacht – sie haben ein vollautomatisches 3D-Lager in AutoCAD gezeichnet, und ihre Anwendung ermöglicht es Ihnen zu sehen, wie sich ein automatischer Lader durch das Lager bewegt und Waren in Regale stellt. Und sie legen Daten aus Quellen auf dem entsprechenden Bild an.

Beispiele für das Ändern von Anwendungsstilen

KP: Welche 3D-Modellformate werden derzeit unterstützt?

DI.: In dieser Version unterstützen wir das Laden von Modellen aus AutoCAD, Collada (tool 3D Modellierung mit Open-Source. - Notiz. ed.), Maya, ein OBJ-Format, das von vielen 3D-Grafikanbietern unterstützt wird.

KP: Welche weiteren Formate sollen hinzukommen?

DI.: Wir planen, 3DS (3D Studio MAX), SVG (normalerweise wird dieses Format für 2D-Vektorgrafiken, manchmal aber auch für 3D) und Google SketchUp hinzuzufügen. Wir können auch andere Formate unterstützen.

KP: Erfordert die Verwendung von 3D-Modellen in mit FireMonkey erstellten Anwendungen eine Lizenz für das entsprechende 3D-Modellierungstool?

DI.: Nein, tut es nicht. Alles, was wir tun, ist die Modelldatei zu lesen. Wir importieren das Modell, aber exportieren es nicht (obwohl Sie natürlich eine Anwendung schreiben können, die das Modell in Ihrem eigenen Format speichert). Wir erheben nicht den Anspruch, Hersteller von 3D-Modellierungswerkzeugen zu sein – dafür können Sie AutoCAD, 3D Studio Max, Maya oder jedes andere 3D-Modellierungswerkzeug verwenden und die erstellten Modelle in unsere Anwendungen importieren.

KP: Wie leistungsfähig sind mit FireMonkey erstellte Anwendungen auf modernen Hardwareplattformen?

DI.: Die Leistung ist recht hoch. Beispielsweise kann eine 3D-Form mit drei Kugeln und drei Lichtern auf einem MacBook Pro mit 100 Bildern pro Sekunde gerendert werden. Und es kann 600 erreichen – es hängt davon ab, was genau wir tun. Auch hier hängt alles von der Leistung der GPU ab.

KP: Bedeutet das, dass Sie mit Hilfe von FireMonkey Spiele erstellen können, die modernen Anforderungen entsprechen?

DI.: Wir positionieren unsere Entwicklungstools nicht als Tools für Spiele. Durch die hohe Leistung moderner GPUs können Sie aber auch Spiele mit FireMonkey erstellen – schließlich werden diese mit Direct3D oder OpenGL erstellt.

KP: Welche Arbeit leisten Sie jetzt im Bereich der Unterstützung für Gestenerkennung und andere neumodische Dinge? Gibt es eine solche Unterstützung?

DI.: Wir haben in dieser Version noch keine Gestenunterstützung. Die Gestensteuerung wird in einer zukünftigen Version von FireMonkey hinzugefügt, aber vorerst können Sie die im Betriebssystem integrierte Gestenunterstützung verwenden.

Mikhail Filippenko, Direktor von Fast Reports, Inc.

K.R.: Wir haben bereits gesagt, dass die FireMonkey-Technologie russische Wurzeln hat - ihre Grundlagen wurden in unserem Land geschaffen, und dann verschmolzen die Technologie selbst und ihre Entwickler zu Embarcadero. Im Allgemeinen ist es erfreulich, das Wachstum der russischen Komponente in RAD Studio und Delphi zu sehen. Dies ist die Aktivität unseres Entwicklungszentrums in St. Petersburg und der Beitrag unabhängiger russischer Entwickler. Zum Beispiel enthält Rad Studio XE2 den Berichtsgenerator FastReport, der auf der ganzen Welt bekannt und in unserem Land sehr beliebt ist. Er stammt aus Rostow am Don.

KP: Ich möchte über Compiler sprechen. Welcher Compiler wird zum Erstellen von iOS-Apps verwendet?

DI.: Wir haben keinen eigenen Delphi-Compiler für das iPhone oder iPad – wir haben noch keine Compiler für die in diesen Geräten verwendeten ARM-Prozessoren entwickelt. Für iOS verwenden wir vorübergehend den Compiler und die Laufzeitbibliothek von Free Pascal. Aber wir arbeiten an der nächsten Compiler-Generation, auch für ARM-Prozessoren. Aber es gibt Compiler für Windows und Mac OS, da beide Hardwareplattformen auf Intel-Prozessoren basieren.

KP: Und was hat sich in den letzten zwei Jahren im Bereich der Compilerentwicklung getan?

DI.: Wir haben 32- und 64-Bit-Delphi-Compiler für Windows und Mac OS. Und wir arbeiten an einer neuen Generation von Delphi- und C++-Compilern. Die Arbeit an ihnen ist noch nicht abgeschlossen, aber wenn sie abgeschlossen ist, werden wir Delphi-Compiler für ARM-Prozessoren haben, Android-Plattformen, Linux und was auch immer. Und wir werden 64-Bit-C++-Compiler für Windows und andere Plattformen haben, die mit dem neuesten C++-Sprachstandard kompatibel sind, der gerade von ISO übernommen wurde.

KP: Was ist heute mit der Cloud-Computing-Unterstützung in Embarcadero-Entwicklungstools los?

DI.: Mit RAD Studio XE 2 unterstützen wir die Migration von Anwendungen in die Microsoft Azure- oder Amazon EC2-Cloud mithilfe des Plattformassistenten. Und wir haben Serverkomponenten für Cloud Storage für Azure und Amazon S3 zum Speichern von Tabellen, Binärdaten und Nachrichtenwarteschlangen. IN vorherige Version In RAD Studio XE haben wir auch die Bereitstellung von Anwendungen auf Amazon EC2 unterstützt, aber es fehlte Speicherunterstützung.

Cloud-Computing-Unterstützung in RAD Studio XE 2

KP: Vor zwei Jahren haben Sie von der neuen All-Access-Lösung gesprochen. Wie stark war die Nachfrage? Wozu dient es Systemintegratoren und Entwickler?

DI.: Die All-Access-Lösung und das Cloud-Tool AppWave sind weltweit weit verbreitet. Sie sollen die Nutzung der Anwendungen unseres Unternehmens und von Drittanbietern erleichtern. Tatsächlich handelt es sich um eine Lösung zur Verwaltung von Lizenzen und Anwendungen, die für große Unternehmen praktisch ist. Kleinere Firmen, die keine dedizierten Anwendungsmanagementteams haben, können die Anwendung in einem Repository ablegen, Benutzernamen aus einer Datenbank abrufen und sicherstellen, dass diese Anwendungen verwendet werden, ohne sich merken zu müssen, wo Lizenzschlüssel und wie viele Lizenzen verfügbar sind. All-Access und der AppWave-Browser wurden entwickelt, um sowohl die Versionsverwaltung als auch die Zugriffskontrolle zu verwalten.

K.R.: Der Markt ist so vielfältig und die Benutzer so unterschiedlich, dass es unmöglich ist, alle Bedürfnisse mit einer Lösung abzudecken. Daher streben wir nach vielfältigen „Verpackungs“-Lösungen. Wir haben viel Arbeit geleistet, um die Lizenzierung, die Lizenzverwaltung und die Produktinstallation zu vereinheitlichen. Diese Lösungslinie umfasst Lizenz- und Zugriffsverwaltungstools nicht nur für Embarcadero-Produkte, sondern auch für alle anderen Produkte, einschließlich interner Entwicklungen von Unternehmen.

Die Arbeit an der Bündelung von Entwicklungstools zu effektiven Benutzerkits ist noch nicht abgeschlossen. Wir haben All-Access – ein Superset, das alle Embarcadero-Produkte kombiniert. Wenn der Kunde die All-Access-Platinum-Version erwirbt, erhält er alle Tools, die in Embarcadero enthalten sind. Aber manchmal stellt sich dieses Set als überflüssig heraus, zum Beispiel haben wir zwei weitere Sets für Datenbankspezialisten erstellt – DB Power Studio Developer Edition und DB Power Studio DBA Edition. Der Unterschied zwischen ihnen besteht darin, dass wir für den Entwickler RapidSQL anbieten, ein Tool zur Entwicklung von Servercode, und für den Administrator DBArtizan, ein Datenbankverwaltungstool, das darin integriert ist, ein breiteres Produkt als RapidSQL. Für Profis haben wir die folgenden All-Access-Suiten: die All-Product-Suite, DB Power Studio für Entwickler, DB Power Studio für Administratoren, ER Studio Enterprise Edition für Architekten und alle, die mit Modellierung zu tun haben. Es gibt Kombinationen für die Anwendungsentwicklung und für Administratoren. Delphi ist ein Entwicklertool, und es ist sehr sinnvoll, SQL-Entwicklungstools und Optimierungstools hinzuzufügen. Schließlich ist DB Change Manager ein sehr logisches Werkzeug zur Verwaltung der Komplexität der Änderungen, die an Datenbanken während ihres Lebenszyklus auftreten.

Somit ist All-Access das Oberhaupt einer großen Familie unterschiedlicher Produktsets.

KP: Wenn es kein Geheimnis ist, wer in Russland nutzt All-Access?

K.R.: Wir haben Kunden, die All-Access basierend auf Delphi gekauft haben. Viele von ihnen erstellen komplexe Client-Server-Systeme mit SQL Server und Oracle, und sie mochten sofort unser plattformübergreifendes Datenbank-Toolkit. Wir haben ein Kundenunternehmen, das seit der ersten Version mit Delphi arbeitet und vor einem Jahr von Delphi zu All-Access gewechselt ist. Zwei Tools, die garantiert von allen Entwicklern in diesem Unternehmen verwendet werden, sind Delphi und DBArtisan. Und es gibt Kunden, die von der Datenbankseite zu All-Access gekommen sind. Ihre Hauptaufgabe besteht in der Verwaltung von Datenbanken, gelegentlich entwickeln sie aber auch Anwendungen. Zu den Kunden, die All-Access nutzen, gehören Medienunternehmen, Maschinenbauer und andere Branchen.

Gesondert möchte ich auf kleine Unternehmen eingehen. Sehr oft macht der Entwickler in kleinen Teams alles, und so ein Unternehmen kauft manchmal große All-Access-Lebensmittelpakete für ein oder zwei Entwickler. In großen Teams ist es nicht erwünscht, dass der Entwickler beispielsweise auch die Rolle eines Datenbankadministrators übernimmt, daher sind kleine Lebensmittelpakete dort und in der Regel beliebt kleine Unternehmen eine solche Kombination von Pflichten ist durchaus akzeptabel.

Delphi Architect ist ein stark vermarktetes Produkt, das Modellierungs- und Programmierwerkzeuge enthält. Die Zahl der verkauften Exemplare ist zwar geringer als bei den Delphi-Enterprise-Versionen, dafür aber auch groß. Ich stelle fest, dass wir 2010 das umsatzstärkste Land waren, obwohl alle Länder die Krise überstanden haben. Dieses Wachstum war weniger auf wirtschaftliche Faktoren zurückzuführen, als vielmehr darauf, dass sich die Ende 2009 veröffentlichte Version von RAD Studio XE als sehr gefragt herausstellte. Und zwar erwarten wir weiteres Umsatzwachstum.

Wir haben einen weiteren sinnvollen Schritt getan, der in Russland sehr gefordert wird. Grad der Legalisierung verschiedene Versionen unserer Produkte ist anders: Je höher die Version, desto mehr wird sie legalisiert, weil früher Software nicht so aktiv gekauft. Beginnend mit RAD Studio XE umfasst die Lizenz die Versionen 2010, 2009, 2007 und sogar Delphi 7, ein weit verbreitetes Produkt.

Entwickler sind heute mit der Tatsache konfrontiert, dass sie sowohl neue Projekte als auch Projekte im Support-Zustand haben. Eine große Anzahl von Projekten wurde von frühen Versionen von Delphi auf Version 7 migriert und bleibt in dieser Version, wobei sie weiterhin mit relativ kleinen Ressourcen arbeiten. Niemand verschiebt sie auf neuere Versionen, aber sie bleiben funktionsfähig. Und jetzt erlauben wir für wenig Geld (weniger als der Preis einer Delphi 7-Lizenz), sowohl RAD Studio XE als auch Delphi 7 zu bekommen – das heißt, wir legalisieren den Entwickler sowohl für die Implementierung neuer Projekte als auch für Support-Projekte.

KP: Wie schätzen Sie den aktuellen Zustand der Embarcadero-Community ein?

DI.: Diese Gemeinschaft ist groß und sehr anspruchsvoll. Sie brauchen alles und sofort - sie sind Entwickler. Aber manchmal dauert es lange, bis etwas richtig ist.

Vor ein paar Jahren haben wir die Windows-Komponentenarchitektur genommen und sie auf Linux-Desktops übertragen. Jetzt sehen wir, dass es nicht die richtige Entscheidung war. Die richtige Entscheidung ist, eine Plattform für Bewerbungen zu schaffen. Anwendungen sogar für verschiedene Plattformen haben Menüs, Fenster, Grafiken, Netzwerkzugang und Gerätezugriff. Verschiedene Plattformen können haben verschiedene Modelle Flusskontrolle oder Ausnahmebehandlung, aber im Anwendungscode sehen wir die gleichen try-Blöcke. Unsere Aufgabe ist es, Entwicklern das Erstellen von Geschäftsanwendungen zu erleichtern und sie für die Plattformen zu kompilieren, auf denen sie verwendet werden sollen, unabhängig davon, wie das Befehlssystem der entsprechenden Prozessoren gestaltet ist und welche anderen Funktionen diese Plattformen haben. Und FireMonkey ist genau das, was Sie brauchen, um dieses Problem zu lösen.

KP: Wenn ein Unternehmen ein neues Gerät erstellt und FireMonkey-Unterstützung dafür haben möchte, wäre das möglich?

DI.: Mit Compilern der neuen Generation, die ein plattformunabhängiges Frontend und ein plattformabhängiges Backend haben werden, wird dies durchaus möglich sein. In der Zwischenzeit erstellen wir für jedes Betriebssystem von Grund auf eine Compiler- und Laufzeitbibliothek.

Jedes moderne neue Gerät verfügt normalerweise über eine grafische Benutzeroberfläche (viele von ihnen haben einen Dual-Core-Prozessor und eine GPU) und Standard-SDKs für Entwickler. All dies vereinfacht die Erstellung der Geräteunterstützung in FireMonkey. Wenn das neue Gerät nur über Bibliotheken für 2D-Grafiken wie Quartz verfügt, können wir ein solches Gerät in FireMonkey unterstützen, aber dies wird ungefähr mehrere Monate dauern. Vieles hängt jedoch von der Plattform ab: Nicht alle Plattformen unterstützen alle Funktionen, iOS verfügt beispielsweise nicht über Menüs und Dialogfelder, und Sie können die entsprechenden Komponenten nicht auf den Formularen solcher Anwendungen platzieren.

KP: Hat sich etwas an der Politik der Zusammenarbeit mit Partnern geändert? Was wird getan, um den Anteil der Nutzer Ihrer Produkte zu erhöhen? Was wird in Russland getan?

DI.: Unser Partner-Ökosystem ist breit gefächert – es gibt Hunderte von Herstellern von Werkzeugen und Komponenten, die nicht in unseren Produkten zu finden sind, und wir haben ein Technologiepartnerschaftsprogramm. Daher steht Entwicklern eine breite Palette an Komponenten, Technologien und Tools zur Verfügung. Und die Lösungen, die sie für ihre Kunden schaffen, sind besser, als wenn nur unsere Produkte verwendet würden. Und für den Verkauf haben wir Niederlassungen in vielen Ländern, Wiederverkäufer und Distributoren.

K.R.: Für uns zählt nicht die Anzahl der Partner, sondern die Qualität der Arbeit jedes einzelnen Partners. Vorerst wollen wir uns auf die enge Zusammenarbeit mit bestehenden Partnern konzentrieren, auch wenn der Partnerpool offen bleibt. Wir haben viele Partner, denen müssen wir technologisch helfen. Wir arbeiten mit Entwicklern zusammen, und sie wissen, was sie wollen und was auf dem Markt verfügbar ist, und die Fähigkeiten der Partner müssen dazu passen.

Wir haben Geschäftspartner, die stark in Embarcadero als Geschäftszweig investiert haben – sie haben ausgebildete Spezialisten, Marketing unserer Produkte, engagierte Mitarbeiter, die für diesen Bereich verantwortlich sind und überwachen, was mit unseren Produkten, Preislisten und Marketing passiert. Natürlich sind sie beim Verkauf unserer Produkte erfolgreicher als Unternehmen, die unsere Produkte von Fall zu Fall verkaufen.

KP: David, Kirill, vielen Dank für das interessante Interview. Im Namen unserer Publikation und unserer Leser wünsche ich Ihrem Unternehmen weiterhin viel Erfolg bei der Entwicklung Ihrer erstaunlichen Tools, die Entwickler so sehr brauchen!

Fragen wurden von Natalia Elmanova gestellt

Im Kontext dieses Blogs ist dieses Projekt in erster Linie interessant, weil es auf FireMonkey implementiert ist und eine erstaunliche Demonstration der Fähigkeiten dieser Plattform darstellt. Und so wurde erst letzte Woche die öffentliche Beta des Produkts veröffentlicht. So können Blog-Leser das wirklich Komplexe „erfühlen“. Feueraffe Anwendung.

Ein paar Worte zum Programm. Zunächst ist anzumerken, dass die aktuelle Version von Sphere etwas anders aufgestellt ist. Ja, manchmal passiert das...

Neu SphäreLive Dies ist nicht nur ein weiterer Bote. Zunächst einmal ist es ein Werkzeug, mit dem Sie den Bildungsprozess effektiv organisieren können. Es ermöglicht Fernvorträge, private Beratungen, Einzelunterricht und andere ähnliche Veranstaltungen. Gleichzeitig ist es mit fast allem ausgestattet, was für die Arbeit notwendig ist. Beginnend mit einem einzigartigen Dateiübertragungssystem und endend mit einem leistungsstarken Abrechnungssubsystem.

In diesem Stadium sind die Preise für die Verwendung des Produkts recht demokratisch. Vorbehaltlich einer begrenzten Anzahl von Zuhörern und einer geringen Menge an Ressourcen kann das Produkt kostenlos verwendet werden.

Natürlich nutzt die Sphäre den Hauptvorteil Feueraffe- plattformübergreifend. Jetzt ist die Anwendung in Windows- und MacOS-Editionen verfügbar. Android-Version von Tag zu Tag erwartet.

Trotzdem ist SphereLive für mich vor allem als innovatives Produkt mit einer ganzen Reihe origineller Lösungen interessant. Manchmal nur auf der Ebene von „…wow, wie hast du das gemacht?“ Übrigens beteiligt sich einer der Entwickler von Sphere aktiv an Diskussionen im FireMonkey-Forum. Dies kann an sich schon eine Gelegenheit sein, die Anwendung herunterzuladen und zu diskutieren technische Fragen direkt beim Autor. Glauben Sie mir, es gibt etwas zu sehen, es gibt etwas zu lernen.

TListView ist eine der Schlüsselkomponenten für den Aufbau einer mobilen Anwendungsschnittstelle in Feueraffe. Diese Komponente ist nicht die einfachste zu verwenden, beinhaltet oft eine beträchtliche Menge an Code, bietet dem Entwickler jedoch eine beträchtliche Handlungsfreiheit. Anwendungen lassen sich natürlich auch nutzen TListBox wo alles viel einfacher ist. Aber TListBox, vielleicht gut zum Anzeigen einer festen Anzahl von Datensätzen, zum Anzeigen von Daten aus Datenquellen, sollten Sie unbedingt verwenden TListView.

Die Hauptunterschiede zwischen TListView und TListBox sind:

  1. TListBoxItem- Kontrolle, TListViewItem- Nein
  2. IN TListBoxItem Sie können beliebige Steuerelemente mit Parent hinzufügen. IN TListViewItem- Nein.
  3. TListViewItem speichert nur Anzeigedaten
  4. TListViewItem führt selbst das Rendering der gespeicherten Daten durch das Verfahren durch Machen
  5. Durch das tatsächliche manuelle Rendern in TListViewItem wird eine Geschwindigkeitssteigerung und ein geringer Speicherverbrauch erreicht (Speichern nur der tatsächlichen Daten)
  6. Um Ihre eigenen zu erstellen TListViewItem, müssen Sie Ihre eigene Elementklasse erstellen, die erforderlichen Daten darin implementieren (z. B. Zeit) und einen In-Place-Editor erstellen, um die Zeit zu bearbeiten, zu registrieren usw.

Allein die Tatsache, die Leistung zu verbessern und den Speicherverbrauch zu reduzieren, ist ein starkes Argument für die Verwendung TListView. Aber es gibt noch etwas anderes.

In vielen Android Anwendungen habe ich die folgende Implementierung von Listen gesehen. Wenn Sie auf ein Listenelement (Item, wenn Sie sich an die gewählte Terminologie halten) klicken, wird eine bestimmte Aktion ausgeführt. Normalerweise wird ein neues Formular aufgerufen, um die Daten zu bearbeiten. Aber wenn Sie (langes Antippen) gedrückt halten, wird eine völlig andere Aktion ausgeführt. Und diese Ereignisse überschneiden sich nicht. Mit anderen Worten, Android-Anwendungen können eindeutig zwischen einem „langen Drücken“ und einem „normalen“ unterscheiden. Außerdem wird keines dieser Ereignisse ausgelöst, wenn die Liste gescrollt wird. Ein gutes Beispiel ist die Liste der Briefe in Yandex Mail.

Zunächst möchte ich allen Lesern des Blogs zu den vergangenen Feiertagen gratulieren und für das kommende Jahr alles Gute wünschen.

Auf einen traditionellen Neujahrsbericht habe ich aus nachvollziehbaren Gründen verzichtet, ebenso wie keine Pläne für das Jahr zu machen. Trotzdem steht das Leben nicht still, es wird gearbeitet und es finden bestimmte Ereignisse in der Delphi-Welt statt. Ich verpflichte mich, in naher Zukunft eine Auswahl verpasster „Neuigkeiten aus der Welt von Delphi“ in den Weihnachtsferien zu veröffentlichen. In der Zwischenzeit erzähle ich Ihnen von dem neuen Gerät, das ich gekauft habe.

Die Spezifikationen finden Sie auf der offiziellen Website. Und der subjektive Eindruck ist sehr angenehm. Bemerkenswert ist die Tatsache, dass das Gerät regelrecht mit proprietärer Software des Herstellers vollgestopft ist. Ja, und von den Verkäufern wurde ein beeindruckendes Softwarepaket geschenkt. Im Betrieb ist das Smartphone schnell genug und rechtfertigt seinen Preis (rund 200 Euro) voll und ganz. Übrigens habe ich vor 2 Jahren mein vorheriges GSmart 1362-Telefon für ungefähr das gleiche Geld gekauft. Aber wie Sie wahrscheinlich erraten haben, war das Hauptinteresse für mich, wie die Feueraffe Anwendungen.

Bevor Sie die Geschichte über den Timer fortsetzen - zwei Neuigkeiten.

Zunächst wurde das erste XE7-Update veröffentlicht. Traditionell steht es registrierten Benutzern zur Verfügung. Sie können eine Liste der behobenen Fehler finden. Ich wollte sehen, wie sich die Anwendung in der aktualisierten Umgebung verhält. Eigentlich mussten keine Korrekturen vorgenommen werden, obwohl das Feld für Experimente blieb.

Zweite Neuigkeit. Embarcadero-Sonderangebote verlängert bis Ende des Jahres:

So, nun direkt zum Thema des Beitrags. Im Prinzip bleibt uns nur, zu versuchen, bereits erstellte Produkte auf den Markt zu bringen Diese Anwendung unter Android. Dafür verwenden wir das, worüber ich in früheren Beiträgen geschrieben habe. Nämlich die neue. Ich habe diese Anwendung auf debuggt Nexus 7, fügte dementsprechend die Ansicht von Android 7″ Tablet hinzu. Das Design musste nur geringfügig „angepasst“ werden.

Wahrscheinlich haben nur die Faulen ihren Timer nicht geschrieben. Und im Kontext der Entwicklungsunterstützung für mobile Plattformen kann die Aufgabe, einen Timer in Delphi zu schreiben, allgemein als Kult angesehen werden. Also dachte ich, warum nicht als Beispiel für Entwicklung Feueraffe Anwendungen analysieren den Timer nicht genau. Unter Android natürlich. Natürlich wird dies genau meine Sicht auf die Aufgabe sein, die zwar nicht besonders schwierig ist, aber dennoch ihre eigenen Nuancen hat. Vielleicht haben Sie Kommentare oder Vorschläge, es wäre großartig, sie in den Kommentaren zu diskutieren. Ich bin keineswegs ein Experte für das Schreiben. mobile Anwendungen Daher ist jeder Ihrer Kommentare für mich wertvoll.

Wir entwickeln genau den Timer, im englischen Sinne dieses Begriffs. Das heißt, auf dem Bildschirm werden ein Zifferblatt und vier Schaltflächen angezeigt – „Start“, „Pause“, „Stopp“ und „Abbrechen“. Der Countdown läuft vorwärts (d. h. die Zeit wird erhöht). Die Option, bei der die Zeit eingestellt wird und der Countdown läuft, heißt in englischer Terminologie Stop Watch, vielleicht versuche ich es später mal umzusetzen. Die Anwendung, mit der wir uns befassen werden, ist in ihrer Funktionalität näher an einer Stoppuhr.

Mit Delphi XE7 können wir den Entwicklungsprozess erheblich vereinfachen, da wir jetzt eine echte Anwendung für Win32 erstellen und debuggen und dann einfach Formularansichten für die erforderlichen Mobilgeräte hinzufügen und mit einer kleinen Anpassung ein funktionierendes Mobilgerät erhalten können Anwendung. Klingt zu gut um wahr zu sein? Vielleicht. Diese Aussage möchte ich aber auch überprüfen, indem ich die Aufgabe realisiere.

Umso häufiger werde ich in privaten Gesprächen von meinen Kollegen gefragt, ob es möglich sei, mobile Anwendungen in zu entwickeln Feueraffe oder ist es eher ein prototyp als eine produktionslösung?

Ich denke, jetzt kann ich sogar die ausgesprochenen Skeptiker überzeugen.

Mein Busenfreund und Kollege Tagir Yumaguzin hat mir vor langer Zeit von dem Projekt erzählt, an dem er teilgenommen hat. Jetzt, da sich dieses Projekt im Vorabversionsstadium befindet, haben wir entschieden, dass diese Beschreibung für die Delphi-Community interessant sein wird. Im Wesentlichen ist dies ein wirklich großes Projekt, das in FM umgesetzt wird. Wir sprechen über das Sphere Live-Projekt. Ein kleiner Artikel, der diesem Projekt gewidmet ist, wurde kürzlich in Habrahabr.ru veröffentlicht. Alexey Glyzin, Leiter der Entwicklungsabteilung, erklärte sich bereit, mehr über das Projekt zu erzählen, unter Berücksichtigung der Zielgruppe meines Blogs.

AB– Alexey, im Allgemeinen, was ist Ihr Projekt?

A.G.: – Die Idee ist nicht sofort und sofort erschienen. Vor dem „Sphere“-Projekt hatte unser Team an dem Projekt gearbeitet, in dem Stream-Audio/Video-Technologien implementiert wurden. Später haben wir unsere eigene Software entwickelt, die Multimedia-Streams an eine unbegrenzte Anzahl von Benutzern liefern konnte, einschließlich des Feedbacks. Aber wir mussten eine Abrechnungsfunktion haben.
Der Antrag musste mehrere Anforderungen erfüllen. Erstens die maximal vereinfachte Organisation von Konferenzen oder die Übermittlung an die Teilnehmer, deren Höhe wir nicht vorhersagen können. Zweitens ist es am wichtigsten, unseren Kunden die Möglichkeit zu geben, mit unserer Anwendung zu verdienen und die Komplexität des Systems sowie die Menge an Instrumenten zu reduzieren, die zum Erreichen des Ziels erforderlich sind. Die einfache Organisation von Kursen, Webinaren oder einfach nur einer Beratung.

Eine kleine Erinnerungskerbe bzgl FireDAC in der aktuellen Fassung Delphi XE6. Aber zuerst ein paar Worte dazu, wo Sie nach Antworten auf Fragen suchen können Feueraffe. Russischsprachige Nutzer sind hier in einer privilegierten Position.

Bei der Vorbereitung auf das Charkiw-Event im Rahmen der RAD Studio XE5 World Tour stieß ich auf ein kleines Problem bei der Arbeit mit SQLite mit Hilfe FireDAC. Wenn die Datenbank in die Windows-Anwendung gefüllt ist, wird sie zusammen mit der Anwendung übertragen Android, kyrillische Zeilen in der Datenbank sind nicht mehr lesbar (statt Buchstaben werden Fragezeichen angezeigt). Wenn Sie die Datenbank jedoch direkt auf einem mobilen Gerät ausfüllen, werden russische Schriftzeichen ziemlich korrekt gelesen. Daten aus der Datenbank ausgefüllt Anwendung von Drittanbietern, oder hinein Delphi eine Anwendung, die andere Datenzugriffskomponenten verwendet, wird ebenfalls normal angezeigt. Die Kundgebung fand keine Lösung, und ich musste einen bekannten ukrainischen Fußballspezialisten zitieren: „Wir werden es herausfinden!“

Im Gegensatz zu letzterem konnte ich das beschriebene Problem lösen. Standardmäßig, wenn verbunden mit SQLite v FireDAC Es wird das ANSI-String-Format verwendet.

Wenn Sie Unicode erzwingen, funktioniert alles so, wie es sollte. Aber es gibt auch einen unangenehmen Moment. Nachdem Sie das Format der Zeilen geändert haben, müssen Sie die Liste der Felder in allen Datensätzen neu erstellen und die für die Anzeige und Eingabe von Daten verantwortlichen Komponenten neu verbinden. Daher ist es besser, sich gleich um die Codierung zu kümmern.

In den vorherigen Teilen dieser Miniserie haben wir uns mit der Erstellung einer Datenbank, ihrer Struktur und der Verbindung zu ihr von Delphi aus befasst. In diesem Teil schlage ich vor, mich mit der Anzeige von Daten aus Tabellen zu befassen, beginnend mit dem einfachsten Fall.

Ein einfacher Tabellendateneditor ist normalerweise Teil einer komplexen Anwendung. Um Tabellen zu bearbeiten, verwende ich normalerweise ein separates Formular. Beginnen wir mit der Produktliste. Zunächst müssen wir ein DataSet erstellen, um auf die Tabellendaten zuzugreifen. In unserem Fall ist es durchaus möglich, die Komponente zu verwenden TADTabelle. Lassen Sie uns es in das DataModule einfügen und den Wert der Eigenschaft angeben Verbindung. Im Eigenschaftseditor Tabellenname Es erscheint eine Liste mit Tabellen, aus der wir eine Tabelle auswählen Produkte. Wenn Sie alles richtig gemacht haben, können Sie die Eigenschaft zuweisen Aktiv Wahrer Wert. Es ist besser, die Komponente gleich umzubenennen (z. B. ADTProduct). Danach erstelle ich normalerweise eine Reihe von Feldern für das DataSet. Wir rufen den Feldeditor auf (Doppelklick auf die Komponente) und wählen im Kontextmenü den Punkt Add All Fields.

Für diejenigen, die es nicht wissen, werde ich das Wesen dieser Operation erklären. Hier erstellen wir einen vordefinierten Satz von DataSet-Feldern. Wenn wir dies nicht manuell im Designmodus tun, passiert im Prinzip nichts Schreckliches. Zur Laufzeit wird dieses Set automatisch erstellt. Aber ich ziehe es immer noch vor, es manuell zu erstellen. Dafür gibt es mehrere Gründe. Erstens ist es bequemer, eine Reihe von Feldern zu verwalten, da wir im Entwurfsmodus selbst zusätzliche (berechnete oder LookUp-) Felder erstellen können. Wir können auch die Eigenschaften der Felder selbst ändern. Außerdem haben wir die Möglichkeit, Felder im Code mit dem Namen der TField-Komponente zu referenzieren, was meiner Meinung nach das Schreiben von Code erheblich vereinfacht.

Wie im Fall der VCL-Anwendung verbinden wir die Komponente mit dem Datensatz TDataSource. Diese Komponente stellt die Verbindung zwischen dem Datensatz und den visuellen Kontrollen her. Die DataSet-Eigenschaft der Komponente sollte auf unseren Datensatz (ADTProduct) verweisen. Unten gebe ich ein Fragment der DFM-Datei

Objekt ADTProduct: TADTable IndexFieldNames = "ID" Connection = ADConnection UpdateOptions. UpdateTableName = "Product" TableName = "Product" Left = 64 Top = 192 object ADTProductID: TADAutoIncField FieldName = "ID" Origin = "ID" ProviderFlags = [pfInWhere, pfInKey] ReadOnly = True end object ADTProductTitle: TStringField FieldName = "Title" Ursprung = "Titel" Größe = 50 Endobjekt dsProduct: TDataSource DataSet = ADTProduct Links = 120 Oben = 192 Ende

Beachten Sie eine Besonderheit: Die DataModule-Formulardatei wird nicht im FMX-Format gespeichert, wie ein normales FireMonkey-Formular, sondern im DFM-Format, wie in der VCL.

Der nächste Schritt besteht darin, eine Prozedur zum Öffnen eines Datensatzes zu erstellen, die wir beim Start des Programms zur Laufzeit aufrufen müssen. Lassen Sie es uns im selben DataModule erstellen. Der Verfahrenscode ist denkbar einfach:

Verfahren TDM. ConnectToDB ; Starten Sie ADConnection. offen(); ADT-Produkt. offen(); Ende ;

Der Prozeduraufruf wird im OnCreate-Ereignishandler für das DataModule platziert.

FireMonkey ist die Kerntechnologie des „neuen Delphi“. Bitte teilen Sie uns die Ziele, Möglichkeiten und technischen Aspekte dieser grundlegend neuen Bibliothek mit. Wenn Sie nach einer Weile zurückblicken, wie hart und gerechtfertigt war Ihre Weigerung, die super beliebte VCL weiterzuentwickeln?

Es wurde als Hauptrichtung für die Entwicklung der Delphi-Technologie gewählt, um ein bestimmtes Ziel zu erreichen – plattformübergreifende Entwicklung aus einer Umgebung, basierend auf einer einzigen Quellcodebasis und ohne die Notwendigkeit einer radikalen Umschulung von Entwicklern. Im Rahmen der inzwischen klassischen und überaus beliebten VCL war dies unmöglich, ihre Verbindung zur WinAPI war zu eng, man könnte sagen, „auf genetischer Ebene“.

VCL-Komponenten hatten keine "abstrakte" Schicht zwischen der Funktionsebene in Bezug auf die Schnittstelle und ihre Abbildungsmechanismen. Funktionsebene- wie es sich als Steuerelement verhält, auf welche Ereignisse es reagiert, welche Art von Benutzerinteraktion es bereitstellt. Anzeige- Aufrufen von plattformorientierten Rendering-Methoden als eine Art Bild, das aus Rasterobjekten und Vektorprimitiven besteht. FireMonkey implementierte zunächst das Prinzip, die Steuerung strikt in zwei Komponenten zu unterteilen: „Behavioral“ und „Visual“.


Vsevolod Leonov, Embarcadero Technologies

Der erste als Ganzes wird nicht einmal die Grundlagen von VCL wiederholen, sondern die Essenz der objektorientierten Programmierung. Eine Komponente ist eine Klasse, Komponentenklassen bilden eine Hierarchie, in der Familien und Module unterschieden werden können. Die Klasse einer Komponente hat wenig damit zu tun, wie sie gerendert wird.

Das visuelle „Bild“ wird dynamisch gebildet, es ist nicht in der Komponentenklasse fest codiert. Ein Bild oder „Stil“ in FireMonkey wird in eine Komponente geladen, wenn die Anwendung gestartet wird. Wir haben eine Art Funktionsrahmen für die Komponente, und die „Haut“ oder „Verkleidung“ kann geändert werden, aber warum? Aus diesem Grund sehen FireMonkey-Anwendungen auf jeder Plattform authentisch aus – Windows 7, Windows 8, Mac OS, iOS und in naher Zukunft auch Android. Die traditionelle monolithische VCL-Klassenstruktur könnte dies nicht leisten.

Dabei spielt der technologische Ansatz eine besondere Rolle. Im Prinzip kann man die VCL-Bibliothek nehmen und WinAPI mit allen anderen möglichen Plattformaufrufen „stopfen“. Bei einer sehr begrenzten Teilmenge von Komponenten ist dies immer noch möglich, aber die VCL enthält mehrere hundert Komponenten, sodass dieser Ansatz die VCL einfach "töten" könnte. Es wurde entschieden, die VCL nicht anzufassen und neue Funktionen auf der neuen Plattform FireMonkey zu entwickeln. Diese Technologie hat sogar eine gewisse technische Eleganz - beim Erstellen des Projekts für eine bestimmte Plattform verbindet die Delphi-IDE den erforderlichen Compiler und die Schnittstellenkomponenten erhalten den Plattformstil.

Für den Benutzer ist dies ein Mausklick und derselbe Quellcode, für Delphi ist es viele Jahre harter Arbeit der Entwickler, eine solche Multi-Plattform-Bibliothek zu erstellen.

Als klar wurde, dass FireMonkey als separate neue Plattform eingeführt werden würde, musste die richtige Koexistenzstrategie gewählt werden: Embarcadero wollte VCL-Benutzer in keiner Weise negativ beeinflussen. Daher haben wir uns für folgenden Plan entschieden: VCL bleibt ideologisch und architektonisch stabil, um größtmögliche Kompatibilität zu gewährleisten und gleichzeitig die Migration von Projekten auf moderne Versionen zu erleichtern. Die Entwicklung von FireMonkey wird einem natürlichen und parallelen Weg folgen, ohne auf die VCL zurückzublicken.

Schwachpunkt dieser Lösung ist die recht problematische Migration von VCL zu FireMonkey innerhalb eines Projektes. Andererseits kann sich ein Entwickler für ein neues Projekt für FireMonkey entscheiden, um sicherzustellen, dass die resultierende Anwendung plattformübergreifend ist. Mit der Veröffentlichung von XE4 mit iOS-Unterstützung können wir bereits über die hellen Wettbewerbsvorteile von Delphi sprechen, um damit zu beginnen. Mobile Entwicklung im Unternehmensumfeld, die nach der Umsetzung um die geplante Unterstützung für Android erhöht werden.

Daher gibt es als solches keine ausdrückliche "Ablehnung" von der Entwicklung von VCL. In neuen Versionen wird auch der VCL-Teil von Delphi weiterentwickelt. Dazu gehören die Unterstützung für 64-Bit und die Einführung von Stilen für visuelle Komponenten und die Implementierung eines Mechanismus für flexible dynamische Links oder "Binding" und die Einbeziehung der FireDAC-Bibliothek für die Arbeit mit Datenbanken in VCL-Projekten. Es ist nur so, dass vor dem Hintergrund eines riesigen qualitativen Sprungs durch FireMonkey der Fortschritt in der VCL etwas unmanifestiert aussieht. Aber wie dem auch sei, VCL ist ein fester Bestandteil von Delphi und wird es noch viele Jahre bleiben. Obwohl die Entwicklung der Plattformen und der aktuelle Stand der Dinge im Bereich der Betriebssysteme für Desktop-Systeme und mobile Geräte so sind, dass die Zukunft eindeutig FireMonkey gehört.

Im Interview haben wir bereits über die iOS-Unterstützung gesprochen, erzählen wir unseren Lesern von der Unterstützung anderer die neuesten Technologien aus dem neuesten RAD Studio XE4, wie Windows 8 und WinRT, 64-Bit-Systeme, MacOS und so weiter. Können Sie aufzählen, was Sie einem modernen, innovationsverwöhnten Programmierer sonst noch bieten können?

Höchstwahrscheinlich ist der moderne Programmierer nicht von Innovationen "verwöhnt". Bei großen Projekten wird jede „Innovation“ oft zu einem gigantischen Arbeitsaufwand.

Zum Beispiel haben alle lange gewartet, viele haben sich sofort beeilt, ihre Codes auf eine neue Plattform zu übertragen. Aber es stellt sich heraus, dass selbst sehr professionelle Teams dafür nicht bereit sind. Kompilierbarer 64-Bit-Code bedeutet nicht praktikabel. "Jugendsünden" begannen aufzutauchen, wie die Verwendung von Anweisungen, die eine Adressgröße von 4 Byte annehmen. Das Fehlen einer Kultur des Testens, gepaart mit der technologischen mangelnden Bereitschaft, diesen Prozess in kurzer Zeit umzusetzen.

Und hier gilt: Je größer das Projekt, gemessen beispielsweise an der Anzahl der Quellcodezeilen, desto sorgfältiger und ausgewogener behandeln Programmierer verschiedene Arten von Innovationen, die vom Erscheinen eines "Knopfs" in der Oberfläche bis zum "syntaktischen Zucker" reichen. im Compiler.

Eine dieser „problematischen“ Errungenschaften war die Veröffentlichung von Windows 8. Ich persönlich bin als PC-Benutzer und eben als moderner IT-Spezialist von Windows 8 begeistert. Aber für Entwickler, die einen Stapel von Windows 8-Computern mit technischen Spezifikationen für die Entwicklung unter dem neuen Betriebssystem als Last erhalten haben, bedeutet dies gewisse Schwierigkeiten.

Wir haben versucht, die Entwicklung so angenehm und schmerzlos wie möglich zu unterstützen. neue Schnittstelle dieses Betriebssystem. Daher wurden sowohl für VCL als auch für FireMonkey spezielle Stile eingeführt, und der Programmierer kann entweder die Anwendungsschnittstelle neu erstellen oder eine neue Anwendung erstellen, die sich optisch nicht von der „nativen“ Anwendung für Windows 8 unterscheidet. Natürlich braucht es einen "Einheimischen" Windows-Unterstützung 8 aufgrund von WinRT. Aber hier kommt die Priorisierung von Zielen ins Spiel modernen Bedingungen. Mac OS, iOS, Android in naher Zukunft bieten noch keine Gelegenheit, in naher Zukunft über die vollständige Unterstützung von WinRT zu sprechen.

Das strategische Ziel von Embarcadero ist natürlich Multi-Plattform. Die Veröffentlichung von RAD Studio XE4 war eine Schlüsselerscheinung, vor allem wegen iOS-Unterstützung. Ein aktiver Programmierer, der die VCL verwendet, kann innerhalb weniger Stunden mit der Entwicklung für iOS beginnen. Selbst eine einfache mobile Anwendung kann sofort in ein leistungsstarkes Projekt umgewandelt werden, das innerhalb der bestehenden Infrastruktur funktioniert. Denken Sie nicht, dass dies nur ein neuer Compiler für FireMonkey ist und ein neuer Stil passend zur iOS-Oberfläche.

Dazu gehören ein neuer visueller Designer, integrierte Unterstützung für verschiedene Formfaktoren, Datenzugriffsbibliotheken, einschließlich des neuen FireDAC, und LiveBindings-Technologie für eine flexible und dynamische Bindung an Unternehmensdaten. All diese Innovationen kommen gleichzeitig – für Windows, für Mac OS und für iOS. Operationssystem Mac OS entwickelt sich nicht so schnell, daher gibt es keine Probleme wie den Übergang von Windows 7 zu Windows 8. Aber Retina-Displays tauchten auf, und dies erforderte besondere Aufmerksamkeit. Jetzt enthält jede in Delphi XE4 erstellte MacOS-Anwendung automatisch zwei Stile – „normal“ und „hochauflösend“.

Das. Dieselbe Anwendung kann auf allen dieselbe hochwertige „native“ Schnittstelle haben Desktop-Computer von Apple.

Embarcadero möchte Entwickler mit seinen neuen innovativen Releases nicht „überraschen“, „verblüffen“ oder gar „unterhalten“. Im Gegenteil, die IT-Welt ist bereits voller Überraschungen: neue Geräte, neue Plattformen, neue Benutzer, ihre neuen Bedürfnisse, neue Interaktionsszenarien. Fügen Sie neue Softwareentwicklungstechnologien hinzu, und Programmierer haben einfach keine Zeit, neue Systeme und bestehende Systeme zu erstellen - sie werden nur tun, was sie tun müssen, um von einer Umgebung in eine andere, von einer alten Bibliothek in eine neue, von einer Sprache zu migrieren andere.

Aber wir bekennen uns nicht zur Ablehnung alles Neuen. Wir wollen einfach die Kontinuität von allem sicherstellen – dem Code, der Schnittstelle, dem Projekt, sogar professionellen Fähigkeiten, wenn neue Plattformen und Geräte auftauchen. Wir können sagen, dass wir einen ungesunden Konservatismus in Bezug auf neue Plattformen auf Kosten eines gesunden Konservatismus bei Entwicklungstools bekämpfen. Erwarten Sie keine exotischen Produkte, nicht standardmäßigen Programmiersprachen und ausgefallenen Entwicklungstools von Embarcadero.

Bei uns finden Sie immer visuelle Entwicklung, klassische Sprachen, "nativen" Code und lassen die Zielplattformen für Ihre Anwendungen auf die gleiche bewährte klassische Weise neu erstellen.

Was ist Feueraffe?


FireMonkey (FMX) ist ein Framework für die plattformübergreifende Entwicklung sowohl für Desktop-Systeme (Windows, Mac OS + Unterstützung für die Serverseite unter Linux in naher Zukunft) als auch für Mobilgeräte (iOS und Android) unter Verwendung der Sprache Delphi/C++.

Besonderheiten:

  • einheitliche Codebasis für alle Plattformen;

  • jedes Steuerelement (visuelle Komponente) kann ein Container (übergeordnet) für andere Komponenten sein;

  • das Vorhandensein einer sehr fortgeschrittenen relativen Anordnung (20 Arten) von Komponenten auf dem Formular;

  • LiveBinding ermöglicht es Ihnen, jede Art von Daten oder Informationen mit jeder Benutzeroberfläche oder grafischen Objekten zu verbinden;

  • Vorhandensein von Form-/Komponentenstilen;

  • Mit der Multi-Device-Vorschau können Sie die visuelle Präsentation für jede der Plattformen anpassen;

  • FireUI Live Preview – Zeigt die App-Ansicht auf echten Geräten in Echtzeit an.

Möglichkeiten:

  • Verwendung der nativen API jeder der Plattformen sowie die Möglichkeit, native Bibliotheken von Drittanbietern aufzurufen;

  • Interaktion mit allen Sensoren (GPS, Beschleunigungsmesser, Kompass, Bluetooth (einschließlich LE) und andere);

  • Unterstützung für Push-Benachrichtigungen, IoT;

  • Unterstützung für asynchrone HTTP-Anforderungen;

  • Unterstützung für die meisten Datenbanken (MsSQL, MySql, Oracle, PostgreSQL, MongoDB usw.);

  • Arbeit mit Cloud Service (Amazon, Azure);

  • Android-Service-Unterstützung.

Nachteile (aktuell):

  • fehlende Unterstützung für die Anpassung nativer Klassen;

  • die Umsetzung bestimmter Dinge ist entweder unmöglich (Widgets, Erweiterungen (iOS), etc.) oder ein Tanz mit einem Tamburin ist notwendig (Hintergrunddienst, Broadcast-Nachricht, etc.);

  • Anpassung Startbildschirm (Startbildschirm), um es milde auszudrücken, nein;

  • FMX-Steuerelemente verwenden ihr eigenes Rendering (Visualisierung, Zeichnung), das dem nativen rein visuell ähnlich ist;

  • Die Verwendung nativer Steuerelemente ist mit großen Körperbewegungen verbunden.

  • Bei einer großen Verschachtelung von Komponenten passieren unglaubliche Dinge: Die Anwendung stürzt an verschiedenen Stellen ab, der Fokus geht verloren, friert ein usw.;

  • der Informationsgehalt beim Debuggen einer Anwendung auf mobilen Plattformen ist null;

  • Fehlerbeschreibungen auf mobilen Plattformen werden auf nutzlosen „Error 0x00000X“ reduziert;

  • Kompilierungszeit möchte die beste für mittlere und große Projekte sein;

  • die Notwendigkeit, eine Datei zu verwenden, um mobile Anwendungen für jede Plattform zu verfeinern;

  • keine Unterstützung für Intel Atom-Architektur;

  • unangemessener Preis im Vergleich zu Mitbewerbern.

Vorteile:

  • sehr aktive Entwicklung sowohl des Produkts als auch der Community in letzter Zeit, Unterstützung für immer mehr neue Technologien;

  • das Vorhandensein einer großen Anzahl kostenloser und kommerzieller Komponenten;

  • die Geschwindigkeit der Anwendung kommt der nativen sehr nahe;

  • ein sehr fortschrittlicher visueller Editor und eine Umgebung im Allgemeinen, das Vorhandensein von Stilen;

  • die Möglichkeit, die Anwendung unter Win zu testen und sie erst dann auf Geräten bereitzustellen, was die Entwicklung erheblich beschleunigt;

  • Wechseln Sie den Modus/die Plattform im Handumdrehen;

  • PAServer bietet eine einfache Interaktion mit MacOs bei der Entwicklung für Apple OS;

  • Unterstützung für 3D-Grafiken aus der Box.

Abschließend möchte ich sagen, dass sich FireMonkey in den letzten Jahren zu einem professionellen Tool für die plattformübergreifende Entwicklung von Geschäftsanwendungen entwickelt hat und nicht nur. Viele Mängel werden nach und nach behoben und mit jedem Release wird das Produkt moderner und autarker, auch die vorhandene Skepsis gegenüber der Delphi-Sprache selbst, verbunden mit langjähriger Stagnation, verschwindet. Das Schreiben neuer Projekte auf FireMonkey ist „sicher“ und vielversprechend.



Wird geladen...
Spitze