Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding > Coding Tutorials
You last visited: Today at 15:19

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Review]Easy App Entwicklung|Firemonkey [C++ | Delphi]

Discussion on [Review]Easy App Entwicklung|Firemonkey [C++ | Delphi] within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 572
[Review]Easy App Entwicklung|Firemonkey [C++ | Delphi]

Hallo Community,

vor ein paar Wochen las ich, als ich meine Mails gecheckt hab, mal alle diese Typischen Spammails, und bin dann auf eine Mail von Embarcadero gestoßen, in dem das neue Rad Studio vorgestellt wurde.
Da die aktuellste Version die ich genutzt habe mit 2010 schon ein wenig zurück liegt, dachte ich mir, hey sieh dir doch mal an, was es so neues gibt.
Besonders habe ich mich da für das neue Firemonkey, einer Plattformübergreifenden Bibliothek zur Entwicklung von Apps.
Als ich dann auf mir die Features durchlas, schlug mein Programmierer-Herz immer höher und höher, endlich eine Möglichkeit, native Programme ohne große Sourcecode Änderungen auf den Mobilen Plattformen zum laufen zu bringen. Also habe ich es Getestet.

Zu Anfangs ein wenig unschlüssig was ich von dieser Technologie halten soll, hab ich nun nachdem ein Paar Wochen verstrichen sind, mein doch sehr ernüchterndes Resumé gezogen, und werde nun einen kleinen Review zu Firemonkey schreiben.

Inhaltsverzeichnis
1. Vorwort
2. Inhaltsverzeichnis
3. Firemonkey Technologie
4. Unterschiede zur VCL
5. Verwendung in Rad Studio
6. Debuggen & Devices
7. Resumé

Firemonkey Technologie

Die Firemonkey Technologie ist seit dem Rad Studio XE2 sowohl für Delphi als auch für C++ verfügbar, und bietet die Möglichkeit grafische Anwendungen für multiple Systeme zu schreiben.
Diese Idee ist jetzt nicht allzu neu, unter Lazarus mit der LCL war dies ja schon lange möglich, doch Firemonkey konzentriert sich vor allem auf die Mobile und Mac Entwicklung.
Früher wurde mit Firemonkey nur IOS, MacOS und Windows unterstützt, mittlerweile werden auch Android Geräte und sogar Wearable Gatgets wie z.b. die Google Glass unterstützt.

Die Funktionsweise ist recht simpel, das GUI wird Hardwarebeschläunigt über die Grafikkarte gezeichnet, hierzu werden Templates für das aussehen verwendet, die auf die entsprechende Plattform angepasst sind.

Als kleines Beispiel mal ein Bild wie es auf den Entsprechenden Systemen aussieht (Nicht in original Auflösung)

Neben den grafischen Elementen bietet Firemonkey noch Klassen und Methoden an, um die technischen Elemente des Zielsystems anzusteuern, ohne dass der Entwickler dabei auf die entsprechenden, von System zu System unterschiedlichen, API's zugreifen muss.

Neben diesen Klassen und Methoden ist es dennoch möglich auf alle Systemeigenen API's, mit kleinen ausnahmen, zuzugreifen.

Ein paar Beispiele für diese Klassen sind, das TNotification Center, mit dem unter Android, MacOS und IOS Notifications angezeigt werden können, oder die TSensor Klassen, mit denen man z.b. auf den GPS Sensor zugreifen kann. Außerdem wurde das Indy Project für jedes System Portiert, um das erstellen von Webanwendungen zu unterstützen.


Unterschiede zur VCL

Obwohl die meisten altbekannten VCL Objekte in Firemonkey wiederfinden lassen, sind, zumindest die Grafischen, leicht oder Komplett anders.
So besitzt der Speedbutten z.b. keine Glyph Eigenschaft mehr, und bei der Listbox lassen sich die einzelnen Elemente mit z.b. Images, einer Höhe oder Breite ausstatten.

Dadurch, dass die Anwendung Hardwarebeschläunigt gezeichnet wird, hat man weit aus mehr Grafische Möglichkeiten, und auch in den Zeichenprozess direkt einwirken, und so z.b. den Hintergrund, den Rand und fast alles selbst bestimmen. Mit Farbverläufen oder Hintergrundbildern lassen sich so komplexe Grafiken einfach in die Standardelemente einbinden. Jedes Grafische Objekt besitzt auch die Eigenschaft Rotation und Opacity. Außerdem gibt es über 40 Effekte, die sich auf jedes Objekt anwenden lassen, dazu gehören Schattenwurf, Bevel, aber auch so Sachen wie der Gausche Weichzeichner, oder andere Stilistischen Effekte, die man so eigentlich nur von Grafikern kennt.

Dazu ist in Firemonkey, im Gegensatz zur VCL jedes Objekt ein Container, so lassen sich Abhängigkeiten verschiedener Objekte wie Relative Positionen ziemlich Simpel gestalten.

Die internen Klassen wie z.B. die TStringList sind allerdings genauso zu nutzen wie in der VCL.

Durch die Hardwarebeschläunigte Zeichnung lassen sich auch einfach 3D Objekte wie Würfel, Kugeln, oder auch Komplexe Objekte aus z.b. den Obj Format importieren. Dazu gibt es noch die Möglichkeit Texturen direkt im Formeditor auf die Objekte zu laden, und durch das Einbinden der OpenGL (ES) Header lässt sich auch mit den Standard OpenGL Befehlen wie glBegin(gl_Quads);...glEnd; direkt in die Zeichenroutine eingreifen, und damit kann man auch ziemlich einfach z.B. Spiele Entwickeln.

Während mit der VCL allerdings alle Windows API's benutzen ließen, ist es in Firemonkey z.b. nicht Möglich, auf die Standart Interface API's zu zu greifen, so ist man an das Firemonkey Interface gebunden.
Außerdem lassen sich mit Firemonkey nur schwerlich und über Umwege Hintergrundprozesse Entwickeln, man ist sozusagen an die grafische Anwendung gebunden.


Verwendung in Rad Studio

Um eine Firemonkey Anwendung in Rad Studio zu erstellen geht man Einfach auf Neues Projekt -> Geräteübergreifende Firemonkey Anwendung
Dann bekommt man eine Auswahl von Templates, ich benutze wenn aber immer die leeren Roh Templates
Der Editor verhält sich fast genauso wie der Standardeditor, bis auf die Kopfzeile
In der nun eingestellt werden kann für Welches System die Anwendung Compiliert werden soll (DropBox oben Links), auf welchem Gerät die Anwendung zum Debuggen gestartet werden soll (Oben Rechts), Wie der Visuelle Stil im Editor aussehen soll (Unten Links), und auf welches Gerät es Optiomiert wird (Unten Rechts).

Im Masterview (DropBox unten Links) kann man das Programm für alle Systeme Bearbeiten, Wählt man nun z.b. iPhone aus, so sind die Grafischen Änderungen nur im iPhone angewandt. So kann man seine Anwendungen auf verschiedene Seitenverhältnisse Optimieren.

Im Code ist eigentlich relativ wenig anders als zur Entwicklung mit der VCL, außer dass man mit Compiler Abfragen wie z.b.
PHP Code:
{$IFDEF ANDROID
Den Code auf das entsprechende System Anwenden kann.

Außerdem, da sich Firemonkey keine Bibliothek Teilt wurde die Uses klausel überarbeitet, so dass die Standartbibliotheken mit System.Bibliotheksname gekennzeichnet sind die VCL Bibiotheken mit vcl.Name und die Firemonkey mit fmx.Name


Debuggen & Devices

Wie Bereits schon oben erwähnt kann man über die DropBox im Editor wählen, für welches System die Anwendung compiliert werden soll. Da hat man die Wahl dann zwischen Win64, Win32, OS X, iOS Gerät, iOS Simulator und Android.
Win64 und Win32 werden zunächst einmal Standartmäßig auf dem eigenen Windows PC gestartet, man kann aber auch über den paServer auf einem anderen Gerät debuggen.

Für Android wird mit dem Rad Studio standartmäßig das Android SDK und NDK installiert. Wählt man Android oben in der Dropbox aus, kann man in der Dropbox daneben aus allen angeschlossenen Android Geräten und laufenden Simulatoren wählen.

Für iOS und OS X benötigt man einen Mac. Da es das Rad Studio nur für Windows, da es mit der VCL geschrieben wurde, muss man nun, wenn man nur einen Mac als rechner hat, unter Mac OS Windows als VM Laufen lassen, und auf dem Mac den paServer zum Remotedebuggen installieren. Hat man einen Windows Rechner und einen Mac, so müssen lediglich beide im selben Netzwerk sein, und auf dem Mac muss der paServer laufen.





Resumé

Firemonkey funktioniert sauber, und es ist wohl der mit Abstand einfachste Weg eine App zu entwickeln. Noch dazu bietet es die Möglichkeit diese App ohne Einschränkungen sowohl auf iOS als auch auf Andoid laufen zu lassen.
An sich eigentlich echt genial. Leider muss ich sagen war ich doch relativ enttäuscht. Zwar ist die iOS version recht gut, und auch über die Windows Version kann ich mich kaum beklagen, aber bei Mac und Android ist es nicht so gut.
Bei Firemonkey ist das Entstanden was passiert wenn man einem Windows Entwickler sagt, mach mir mal eine Android oder iOS App. Dadurch, dass alles selbst gezeichnet ist verhält sich alles irgendwie eigen. Es fühlt sich nicht an wie eine Android App, sondern wie ein Windows Programm welches auf Android emuliert wird.
Android Zeichnet sich dadurch aus, das jeder Hersteller eigene Styles einbauen kann, und das gesamte System selbst Designen kann. So sehen Geräte mit dem Samsung Interface komplett anders aus als Geräte mit HTC Sense. Das fällt bei Firemonkey komplett weg. Dadurch das es weder aussieht noch sich verhält wie ein richtiges Android Programm. Egal wie sich Android verändert, die Apps sehen immer gleich aus. Das selbe unter Mac OS, die Grafischen Steuerelemente sehen aus wie eine Mischung der Mac OS X 10.4 Steuerelemente, vermischt mit iOS Steuerelementen. die Aktuelle Version Mavericks, oder das neue OS X Yosemite sehen da wieder komplett anders aus.

Doch ich will das ganze jetzt nicht schlechter reden als es ist.
Firemonkey ist vor allem sehr gut für Leute die schnell eine Funktionale App auf allen Systemen brauchen, z.B. Großunternehmen, für die Visuelles Aussehen an 2ter Stelle steht.

Außerdem ist Firemonkey genial, wenn man Grafisch aufwendige Anwendungen schreiben will. Wer alle Buttons und Steuerelemente selbst Designen will, oder gleich mit OpenGL 2D oder 3D arbeiten will, für den ist Firemonkey wohl die beste wahl. Kaum ein System gibt dir die Möglichkeit Grafisch selbst so viel einzuwirken, ohne Programmieraufwand, wie Firemonkey.

Für so leute wie mich, die Grafisch eher mittelmäßig begabt sind, die keine Ahnung von Farbharmonien habe, die sollten wohl besser auf Systemgezeichnete Elemente zurückgreifen, denn die sehen immer so aus wie das System es will.

Ein weiterer Punkt der mich allerdings an Firemonkey stört, ist dass man in seiner Grafischen Anwendung gefangen ist, man kann in diesen bereichen zwar nahezu alles machen, aber sobald jemand auf den Homeknopf drückt ist die App aus. Da sich dies nur durch große Umwege umgehen lässt (was für z.B. Chats eher ungeignet ist), schränkt das doch gewalltig ein.


Man merkt definitiv das Rad Studio auf Produktivität außgelegt ist, und die Hauptzielgruppe Großunternehmen sind.

Ich als Privater kleiner Hobby Entwickler nutze Firemonkey nur wenn ich mal eben ein kleines Produktiv Programm selbst für mich brauche, aber zum Großen App Entwickler werde ich damit wohl nie werden, dazu müsste ich mich zu viel Grafisch reinhängen.

Ich gebe Firemonkey 6/10 Punkten, da es zwar verdammt einfach zu nutzen, ist, aber meine Bedürfnisse kaum erfüllt.
warfley is offline  
Thanks
2 Users
Old 10/22/2014, 18:34   #2
 
MrDami123's Avatar
 
elite*gold: 56
Join Date: Oct 2010
Posts: 3,409
Received Thanks: 1,219
Das angesprochene Manko
Quote:
Es fühlt sich nicht an wie eine Android App, sondern wie ein Windows Programm welches auf Android emuliert wird.
Könnte sich mehr oder weniger leicht damit lösen lassen, dass das App erkennt auf welchen System es läuft und dementsprechend einen anderen Stil verwendet.
MrDami123 is offline  
Old 10/22/2014, 19:59   #3
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 572
Quote:
Originally Posted by MrDami123 View Post
Das angesprochene Manko

Könnte sich mehr oder weniger leicht damit lösen lassen, dass das App erkennt auf welchen System es läuft und dementsprechend einen anderen Stil verwendet.
Es geht hier nicht ums aussehen, das kann man einfach sogar im Form Editor selbst anpassen, das sich die ganzen controls nicht systemgetreu reagieren, nenn mich einen Spinner, aber der workflow mit einer solchen app fühlt sich einfach falsch an, und das zu fixxen ist zwar kein Hexe Werk, aber doch mit Recht viel Arbeit verbunden (z.b. noch bevor der Button losgelassen wird wechselt er vom pressed style in den normalen Stil)
warfley is offline  
Reply


Similar Threads Similar Threads
Alternative zu Firemonkey
06/16/2013 - C/C++ - 11 Replies
Moin Leute, da ich es langsam leid bin, ständig meine IDE Switchen zu müssen, brauche ich eine neue Lösung dafür. Derzeit arbeite ich hauptsächlich mit Visual Studio 2012 wenn es sich um Konsolenprogramme o.Ä. handelt. Geht es in Richtung GUI (+ eigene custom themes) verwende ich das Firemonkey Framework in Embarcadero C++ Builder. Der Vorteil dort ist, dass ich ohne meterlangen Code eine simple GUI schreiben kann und jedes Detail am Design mit nur minimalen Aufwand verändern kann....
DELPHI - Who make Exploits, Hacks and Tools with DELPHI?
05/15/2013 - CO2 Programming - 13 Replies
Hi all. Iwith DELPHI, but a dont now. hello, I use Delphi to program and i like someone put here source code of make Exploits, Hacks and Tools bot here, or part of the code. ty to all
[DELPHI&METIN]Wie sind die Delphi Befehle für einen Bot?
03/07/2010 - General Coding - 3 Replies
Hallo liebe com, ich habe mal eine Frage: Ich möchte einen Metin Bot in Delphi schreiben aber ich weiß nicht die Befehle für eine bestimmte Taste senden etc. könnt ihr mir die pls sagen oder per pn geben MfGGGGGG



All times are GMT +2. The time now is 15:19.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.