Zeige Artikel getaggt mit software-entwicklung

Veröffentlicht von am in CS Tech
Die PHP Revolution

PHP ist ursprünglich als Script-Sprache entstanden und wurde nicht als Programmier-Sprache entworfen. In der Folgezeit hatte sich PHP dann in die Richtung einer Programmiersprache weiterentwickelt, aber hatte in diesem Bereich lange Zeit einen schlechten Ruf, welcher teilweise immer noch anhält, z. T. auch begründet.

Dabei hat sich PHP in den letzten Jahren schrittweise revolutioniert und verbessert, so dass sich die Situation mittlerweile ganz anders darstellt. PHP hat seine Anfänge als ''lingua franca” für Script-Kiddies längst hinter sich gelassen und findet sich als ernstzunehmende Programmiersprache verstärkt wieder, so beispielsweise auch im Enterprise Bereich.

Oftmals als Teil des LAMP-Stacks (Linux, Apache, MySQL, PHP) spielt PHP eine dominierende Rolle im Internet. Ca. 80% aller Webseiten basieren auf PHP und grundsätzlich ist PHP die am meist benutzte Programmiersprache für Web-Seiten und Web-Applikationen.

php-websites.png

Entwicklungsschritte der Sprache PHP

Einen wichtigen Meilenstein in dieser Entwicklung stellte 2004 die Einführung eines neuen Object-Models dar, welches mit der PHP Version 5.0 Einzug gehalten hat und einen grossen Schritt hinsichtlich OOP (Object Oriented Programming) bedeutete. Ausserdem wurde PHP signifikant modernisiert z.B. durch die Einführung von Namespaces, Anonymous functions und Closures (PHP 5.3) sowie Traits, einem integrierten Webserver (PHP 5.4) und Generators (PHP 5.5). Darüber hinaus hat sich die Performance von PHP beträchtlich verbessert und für die nächste Version PHP 7 ist nochmal mit einem deutlichen Geschwindigkeitsschub zu rechnen. Zudem wird PHP 7 lange vermisste Konzepte wie Scalar Type Hints und Return Types einführen.

php-performance-may-2014-300x235.png

Git und Composer

Git ist das am weit verbreitetste Source-Code Management Tool, welches von einer Vielzahl von PHP Projekten sowie auch von PHP selbst verwendet wird. Dazu haben sich mit GitHub und ähnlichen Diensten einfache und beliebte Plattformen etabliert, dank denen Teams gemeinsam an Software arbeiten können.

Composer ist der lange überfällige Packet-Manager für PHP und ist für PHP, was Gem für Ruby oder npm für Node sind. Das funktionale Zusammenspiel von Git und Composer bildet eine sehr praktische, flexible und mächtige Grundlage für eine fortschrittliche Software-Entwicklung mit PHP. Dieses Zusammenspiel ist auch einer der wichtigsten Gründe, für die drastisch steigende Qualität vieler PHP Frameworks und Libraries in letzter Zeit und führt zum neuen aufblühen des PHP Ecosystems.

logo-composer-transparent.png

PHP Ecosystem und Community

Einzelne PHP Frameworks, Libraries oder Applikationen sind heutzutage näher zusammengerückt, während es früher eher isolierte Inseln waren. Diese verschiedenen Projekte profitieren nun oftmals voneinander, ergänzen sich und es findet eine enorme Verbesserung der Software-Qualität und Anpassung an Software-Standards (wie PSR der PHP Framework Interop Group) statt.

So können neue Projekte entstehen, die auf ein bestehendes Framework aufbauen und zusätzlich benötigte Libraries, welche sich bereits bewährt haben, können automatisch mit Hilfe von Composer eingebunden werden. Dadurch werden auch die einzelnen Projekte gestärkt, welche eine grössere Verbreitung finden, was nicht zuletzt der PHP Community im Allgemeinen als auch den Communities der einzelnen Projekte einen Aufschwung gibt. Diese sind sich wiederum gegenseitig von Nutzen. Insgesamt gibt es eine grosse und dynamische Community, welche etwa die League of Extraordinary Packages hervorgebracht hat, die sich dem Sammeln von guten und modernen PHP Libraries verschrieben hat.

Im PHP Umfeld finden sich auch eine Menge von prominenten Projekten wieder. So basieren beispielsweise die drei am häufigsten eingesetzten CMS (Content Management Systeme), WordPress, Joomla und Drupal alle auf PHP. Des Weiteren gibt es eine grosse Auswahl an Frameworks wie Zend Framework, Symfony oder Laravel, welche dazu beigetragen haben, dass PHP vermehrt im Enterprise Bereich eingesetzt wird. Einige bekannte Firmen wie Facebook, Google und Yahoo setzen PHP erfolgreich ein.

Fazit

PHP hat die letzten Jahre eine revolutionäre Entwicklung durchgemacht und das gesamte Umfeld hat sich verändert. Die angebrochene neue Ära bietet weiterhin grosses Potential für PHP und dessen fortwährende Verbesserungen. Mit PHP kann qualitativ hochwertige Software erstellt werden und viele Probleme der Webentwicklung können auf elegante Weise gelöst werden.

Formen der Anwendungsentwicklung: Was sind native, hybride und web Apps?

Manches Software Start-Up oder Projektteam hat sich bereits in einer Situation wie der folgenden wieder gefunden: Man hat eine tolle Idee für eine Anwendung, die Investoren sind überzeugt, das Team ready und die Büroräume eingerichtet. Eigentlich könnte man sofort mit der Umsetzung beginnen. Doch bevor die ersten Zeilen Code geschrieben werden können, muss man sich für eine Umsetzungsform entscheiden. Keine einfache Wahl. Soll die Anwendung als responsive Web-Applikation umgesetzt werden, wie das immer häufiger getan wird oder sind die besonderen Funktionen von mobilen Geräten zentral für das vorliegende Problem?

Dieser Artikel gibt eine kurz Einführung in die drei Hauptvarianten der App-Entwicklung.

1. Webanwendung

Die Anwendung wird wie eine Internetseite zentral auf einem Server gehostet, auf die von allen Usern zugegriffen wird. Hierbei dient der Browser als Anwendungsumgebung und als Schnittstelle zum Betriebssystem. Der Entwickler kann deswegen davon ausgehen, dass die Webseite auf verschiedenen Betriebssystemen funktioniert, ohne dass spezielle Anpassungen nötig sind. Beispiele für Webanwendungen sind Google DocsToggl oder Facebook.

Vorteile

  • Webanwendungen sind Plattform übergreifend, da über jedes Gerät mit Internetbrowsern darauf zugegriffen werden kann, dadurch entsteht weit weniger Entwicklungsaufwand im Vergleich zu nativen Anwendungen.
  • Updates der Applikation müssen nicht installiert werden sonder sind sofort für alle Nutzer verfügbar.
  • Bei Verkauf muss keine Provision an App-Stores gezahlt werden.
  • Keine Limitierungen bei Design oder Funktionalität durch strenge Vorgaben der App-Stores (besonders Apple und Microsoft).

Nachteile

  • Es wird eine permanente Internetverbindung benötigt.
  • Aus Sicherheitsgründen wenig oder gar kein Zugriff auf Hardware und Features des Betriebssystems möglich (Kamera, Mikrofon, Speicherverwaltung,...).
  • Längere Reaktionszeiten als bei nativen Anwendungen, diese sind vor allem bei Touch-Eingaben bemerkbar.
  • Schlechtere Performance im Vergleich zu nativen Anwendungen.
  • Kein Verkauf über App-Stores möglich.
  • Browserkonformität kann problematisch sein, vor allem wenn ältere Versionen des Internet-Explorers oder verschiedene mobile Browser unterstützt werden sollen.

2. Hybride Anwendung

Eine hybride Anwendung vereint Vorteile der Web App und der nativen Anwendung. Bei hybriden Anwendungen wird eine native Hülle (engl. “wrapper”) erstellt, welche als Schnittstelle zum Betriebssystem dient und den Zugriff auf die Hardware des Geräts und auf Funktionen des Betriebssystems ermöglicht, wie zum Beispiel auf den Beschleunigungssensor, das GPS oder die Speicherverwaltung. Diese Hülle ist in einer für die Zielplattform verständlichen Sprache geschrieben. In diese Hülle wird anschließend eine Webseite gelegt, welche aus HTML, CSS und Javascript besteht. Vereinfacht kann gesagt werden, dass die Hülle ein Browser ist, bei dem alle Navigationselemente und Menüpunkte ausgeblendet wurden.

Bei hybriden Applikationen kann zusätzlich zwischen der Off- und der Onlinevariante unterschieden werden. Bei der Offline-Version wird die Internetseite direkt auf dem Gerät gespeichert. Bei der Online-Version muss bei dem Öffnen der App eine Internetverbindung bestehen, um die Webseite abrufen zu können.

Die hybride Form wird eher für die Entwicklung von mobilen Applikationen verwendet als für die Umsetzung einer klassischen Desktopanwendung. In Windows 8 gibt es aber bereits die Möglichkeit, hybride Desktopanwendungen zu realisieren.

Frameworks, welche den Entwickler dabei unterstützen, eine hybride Anwendung für verschiedene Betriebssysteme zu Verfügung zu stellen sind zum Beispiel titanium oder phonegap.

Vorteile

  • Verkauf in App-Stores ist möglich.
  • Haben das Aussehen einer nativen Anwendung, da Menüpunkte und die URL-Leiste des Browsers entfallen.
  • Zugriff auf Geräte- und Betriebssystemspezifische Funktionen ist möglich.
  • Sind im Vergleich zu Webanwendungen auch offline benutzbar, so lange die Anwendung keine permanente Datenverbindung benötigt.
  • Es entsteht weniger Entwicklungsaufwand als bei nativen Anwendungen.
  • Updates gelten sofort für alle Nutzer, sobald diese mit dem Gerät online gehen.

Nachteile

  • Schlechtere Performance im Vergleich zu nativen Anwendungen.
  • Längere Reaktionszeiten als bei nativen Anwendungen, vor allem bei Touch-Eingaben.
    Browserkonformität kann problematisch sein.
  • Verkauf bei mobilen Anwendungen meist nur über App-Stores möglich, dadurch auch Bindung an Shoprichtlinien.
  • Bugfixing kann problematisch sein wenn kein Framework verwendet wird, da die Wrapper  sich zum Teil anders verhalten als “normale” Browser.
  • App-Stores sind Wrappern gegenüber eher skeptisch.

a1sx2_blog_Hybrid_Apps.jpg

 

3. Native Anwendung

Dies ist die “edelste” Form der Umsetzung. Hierbei wird die Anwendung speziell für die jeweilige Zielplattform (daher nativ) zugeschnitten und umgesetzt. Dadurch können über die Anwendung Funktionen und spezielle Software des Betriebssystems direkt angesteuert werden, wie zum Beispiel die Kamera, die Speicherverwaltung oder der Fingerabdrucksensor. Außerdem sind native Anwendungen potentiell sehr performant und eignen sich besonders für rechenintensive Applikationen, etwa für 3D Computer Spiele oder Aufgaben im Forschungsbereich.

Dies setzt jedoch voraus, dass die Anwendung in einer für das Betriebssystem verständlichen (“nativen”) Sprache geschrieben wurde. Für iOS, welches auf iPhone und iPads läuft, wäre das zum Beispiel Objective-C und für Android-Geräte Java. Für Windows 8 können Apps gleich in mehreren Sprachen umgesetzt werden - in C++.NET und sogar mit HTML, CSS und Javascript.

Die Umsetzung als native Anwendung ist daher oftmals die aufwändigste, da viele Funktionen selbst geschrieben werden müssen, die bei Webseiten der Browser bereitstellt (zum Beispiel die Arbeitsspeicherverwaltung).

Vorteile

  • Sehr Performant.
  • Verkauf in App-Stores möglich.
  • Zugriff auf alle Geräte- und Betriebssystemspezifische Funktionen.

Nachteile

  • Hoher Entwicklungsaufwand, vor allem bei Umsetzungen für mehrere Plattformen.
  • Verkauf bei mobilen Anwendungen meist nur über App-Stores möglich, dadurch auch Bindung an Shoprichtlinien.
  • Updates aufwändig.

Es wird leicht klar, dass es nicht eine beste Umsetzungsform gibt, sondern dass die Wahl stark von der jeweiligen Anwendung abhängt. Ist eine einfache ToDo-Liste für Mobilgeräte geplant, welche auch offline verfügbar sein soll, macht eine Umsetzung als hybride Anwendung Sinn. Möchte man ein Spiel entwickeln, bei dem es auf schnelle Reaktionen ankommt oder welches grafisch anspruchsvoll ist, sollte man nativ entwickeln. Und für eine Social Media Anwendung mit einer großen Nutzerbasis und vielen Kollaborationsmöglichkeiten macht es wahrscheinlich Sinn, diese sowohl als Webapplikation als auch als hybride Anwendung umzusetzen, um den Nutzern auch unterwegs eine bestmögliche Anwendungserfahrung zu ermöglichen.

 a1sx2_blog_Native_html5_hybrid.png

Show page in

Was Kunden
über uns sagen

Die Zusammenarbeit erlebten wir als äusserst zuverlässig, persönlich, angenehm und umsetzungsorientiert. Auch mit dem Einsatz der Befragungsplattform haben wir nur positive Erfahrungen gemacht.

Nadine Eggimann
Militärakademie an der ETH Zürich, Schweiz

 
 
 
The future of the PHP PaaS is here: Our journey to Platform.sh
CS Tech
In our team we’re very confident in our ability to produce high quality software. For the past decad...