Frameworks als Lebenshilfe

Lesezeit: 3 Minuten

Das Rad braucht niemand nochmal neu zu erfinden. Also warum nicht Frameworks benutzen?

Was ist ein Framework?

Jedes Software-Projekt wird sinnfällig in einzelne Komponenten und Strukturen aufgeteilt. Die Lösung eines großen Problems splittet man in mehrere kleinere Probleme. Das macht das ganze übersichtlicher und einfacher zu verstehen.

Ein weiteres wichtiges Thema ist die Wiederverwendbarkeit von geschriebenen Funktionen oder Klassen.

Unterscheidet sich die grobe Struktur eines Softwareprojektes von einem anderen, ist die Wiederverwendung allerdings gegebenenfalls nur mit einer Anpassung möglich. Das kann zu neuen Fehlern und/oder zu zeitlichem Aufwand führen.

Dies wird durch die Benutzung von Frameworks vereinfacht – sie geben eine Struktur vor und Module/Elemente und Komponenten können leicht von einem Projekt ins andere transportiert werden. Vorausgesetzt, die Projekte basieren auf dem gleichen Framework.

Wiki nennt das auch Ordnungsrahmen – meiner Meinung nach die bessere Übersetzung des Begriffs: https://de.wikipedia.org/wiki/Framework

Das beste Framework ever

Glaubt man den Anbietern von Frameworks, gibt es bei 10.000 Frameworks satte 10.000 „beste Frameworks“.

Logisch: Es gibt kein bestes Framework, oder es gibt nur beste Frameworks!

Aus der Vielzahl der angebotenen Produkte muss man sich seinen Liebling heraussuchen und anschließend erarbeiten. Auf den ersten Blick soll man abschätzen:

  • Wie groß ist die Community dahinter (Foren)?
  • Wie gut ist die Dokumentation?
  • Wie viele Tutorials und/oder Beispiele gibt es dazu (Blogs/Youtube)
  • Wie viele bekannte Projekte sind mit dem Framework erstellt oder nutzen es?
  • Ist das Framework transparent (Open-Source)?
  • Kostet die Nutzung was?
  • Passt das System zu meinen Anforderungen (z. B. Performance, Kanonen-Spatzen-Problematik)?

Viele Vorteile erkennt man jedoch erst, wenn man länger damit gearbeitet hat.

Mein Framework für PHP basierte Server-Anwendungen

In 2006 bin ich zufällig auf Symfony gestoßen – damals in der Version 1.1. Es brachte Ordnung in meine PHP-Klassen und ermöglichte wirkliche Wiederverwendung meiner Module in folgenden Projekten. Besonders die Trennung von Datenbank-Logik, den erzeugten HTML-Seiten und der Programm-Logik – Fachleute sprechen von MVC (Model/View/Controller) – überzeugte mich.

Mit der großen Versionsänderung auf 2.0 tat ich mich lange Zeit schwer, bedeutete dies doch wieder Anpassungen in bereits entwickelten Klassen, da sich die Struktur grundlegend geändert hat. Das ist ein allgemeines Problem bei der Nutzung von Frameworks. Der Aufwand hat sich allerdings in meinem Fall gelohnt: ich benutze mittlerweile Symfony 4.0 und kann auf eine große Bibliothek von Routinen, Algorithmen und Klassen zurückgreifen und diese schnell in neue Projekte integrieren.

Hier meine Hitliste für PHP basierte Frameworks:

  1. Symfony: https://symfony.com/
  2. Zend Framework: https://framework.zend.com/
  3. CakePHP: https://cakephp.org/

Mein Framework für Android/iOS/Windows Client-Anwendungen

In 2012 wollte ich mein Handy mit einer eigenen App bestücken. Ich hatte ein Android-Smartphone und folglich war JAVA angesagt. Der Unterschied zwischen Android und iOS schien zu groß. Wollte man eine App für beide Systeme haben, musste man zwei Apps implementieren.

Verwöhnt durch Symfony auf PHP-Basis durchsuchte ich das Netz nach Lösungen und fand drei vielversprechende Frameworks: Cocos2d-x, Unity und Project Anarchy. Letzteres mit der Spiele-Engine von Havok ausgestattet.

Project Anarchy ist seit 2016 nicht mehr verfügbar, daher hier nur die Links zu Cocos2d-x und Unity:

Da ich einige Projekte in 2D implementierte fiel meine Wahl auf Cocos2d-x: die obigen Fragen zur Transparenz, Kosten und Anforderungen waren für meine Belange ausschlaggebend.

Für mein neues Projekt benötige ich allerdings 3D-Unterstützung. Ab Cocos2d-x Version 3.0 wurden 3D Funktionen ermöglicht und direkte Programmierung in OpenGL. Unity hat diese Unterstützung direkt an Bord.

Ebenso sind die Werkzeuge von Unity professioneller, der Workflow vereinfacht, die Unterstützung von Dateiformaten vielfältiger. Um nur mal ein paar Punkte zu nennen.

Unity hat für mich allerdings zwei Haken:

  1. Das Framework ist frei, bei der Kommerzialisierung fallen dann aber Lizenzgebühren an
  2. Es ist sehr mächtig, dadurch wird der Overhead auch recht groß – zu Lasten der Performance:

 

Und daher fällt nunmehr auch für 3D Apps für Windows/Android und iOS meine Entscheidung auf: (*trommelwirbel*)

Cocos2d-x!

Weiterführende Links

Im nächsten Blog installiere ich Cocos2d-x und kompiliere die Demo-App für Android – dazu benutze ich einen Windows-Rechner: http://www.grafiction.de/2018/03/12/cocos2d-x-installation-windows/

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.