Die IT-Branche wandelt sich ständig und beeinflusst unsere Gesellschaft als maßgeblicher Arbeit- und Impulsgeber. In den letzten Jahren waren aus der IT-Branche folgende Aussagen zu hören:
- Websites sind im Trend
- Bots sind die neuen Apps
- Apps sind nicht mehr innovativ
In diesem Artikel wird untersucht, wie dieser Trend zustandekommt und welche Vor- und Nachteile sich daraus ergeben. Konkret behandeln wir die Thematik, welcher Applikationstyp – sei es eine Website oder eine klassische App – zu welchem Anwendungsszenario passt.
Ein paralleler Trend ist die plattformübergreifende Entwicklung von Apps, um finanzielle Mittel und Ressourcen einzusparen. Inwiefern sich dies mit den Entwicklungsschemata einer klassischen App in Einklang bringen lässt, diskutieren wir gegen Ende des Artikels.
Motivation und Relevanz
2,7 Millionen Apps befinden sich 2017 im Google Play Store. Weitere 2,2 Millionen Apps sind Teil des Apple App Store – dem entsprechenden Pendant von Apple. Die App-Landschaft wächst kontinuierlich und immer schneller:
Apple eröffnete seinen App Store erstmals im Jahre 2008 mit einer Anzahl von 500 zum Startpunkt verfügbaren Apps. Fünf Jahre später wurde die Marke von einer Million Apps überschritten. Seit 2014 sind mehr Apps von Google verfügbar als von Apple. Google startete mit seinem Play Store im gleichen Jahr (2008) wie Apple.
Vergleicht man die Anzahl der Apps der genannten App Stores mit der Annzahl der heuste bestehenden Websites im Internet, kommt man zu dem Schluss, dass auf eine App jedoch in etwa 200 Websites kommen. Mit mehr als 966 Millionen Websites ergibt sich ein deutlich größeres Potential in vielerlei Hinsicht. Des Weiteren haben diese ein nochmals deutlich höheres Wachstum als Apps; eine neue App begleiteten in den letzten 8 Jahren im Schnitt 348 neue Websites.
Inwiefern können App-Entwickler das Potential der Websites nutzen?
Applikationstypen
Einleitung
Um das Potential von Websites zu erkennen und Erkenntnisse daraus zu ziehen, werden wir uns zunächst die unterschiedlichen und bereits etablierten Formen an Applikationstypen anschauen:
- Website
- Hosted Web App
- Progressive Web App
- Hybrid App
- Native App
In den folgenden Absätzen untersuchen wir die unterschiedlichen Applikationstypen jeweils sowohl auf ihre Tauglichkeit als Ersatz von Websites als auch auf ihre Kompatibilität und Kombinierbarkeit mit Websites.
Websites
Websites basieren maßgeblich auf HTML, CSS und JavaScript und bilden in der Regel keine große Businesslogik ab. Der Vorteil ist, dass die Entwicklungskosten im Vergleich zu nativ ausführbaren Programmen gering sind. Nativ ausführbare Programme wären in beispielsweise c, C++ der C# programmierte Apps, die wir in aller Regel auch aus den App Stores kennen.
Websites werden im Internet Browser ausgeführt und benötigen daher keine Installation; hierdurch wird eine Plattformunabhängigkeit geschaffen, da alle gängigen Betriebssysteme einen Internet Browser mit sich bringen. Sie gelten als vergleichsweise sicher, da das Schließen von Sicherheitslücken und das Beheben von Fehlern zentral auf dem Server (auf dem die Homepage gespeichert ist) geschieht. Weder eine Installation noch die damit verbundenen Wartezeiten sind erforderlich, wie wir es von App-Updates in der Regel gewohnt sind.
Populäre Websites sind die G Suite von Google, Amazon, eBay, Office 365 sowie soziale Netzwerke. Dazu gehört folglich auch LinkedIn:
Hosted Web App
Hosted Web Apps fassen eine Website in einer App zusammen (Web-Wrapper). Beim Öffnen der App wird eine Internetverbindung benötigt, da die App lediglich die eigentliche Website (in einem eigenen Web Viewer) anzeigt. Für das Prozessieren von Daten ist somit nach wie vor die Website zuständig.
Ein populäres Beispiel ist LinkedIn: Im Zuge der 2016 stattfindenen Modernisierung der Weboberfläche stellte das Unternehmen eine neue UWP-App vor – eine Hosted Web App. Diese zeigt exakt denselben Inhalt bei gleichzeitig identischem Layout zu einer Website an, wie folgende Abbildung zeigt:
Durch eine starke Dynamik auf dem Markt von Smartphones (Windows Phones ausgenommen), Tablets und Notebooks ist es von hoher Wichtigkeit, eine Website flexibel zu gestalten. Man spricht von Responsive Webdesign. Die zunehmende Popularität von Hosted Web Apps liefert einen weiteren Grund, die Homepage auf allen Geräteklassen (besser) bedienbar zu gestalten.
Pogressive Web App
Progressive Web Apps kombinieren die Vorteile von Websites – also das Zusammenspiel von neuen Webtechnologien wie CSS3 und HTML5 – mit den Möglichkeiten und Funktionen – Bluetooth, Kamera, Microfon – des jeweiligen Betriebssystems und der jeweiligen Plattform. Diese neue Entwicklung ermöglicht das Ausführen von Websites ohne Internetverbindung (offline), indem wichtige Bestandteile der Websites auf dem Gerät zwischengespeichert (Offline-Caching) werden. Ziel ist es, mit Webtechnologien das „Look and Feel“ nativer Applikationen herzustellen. Eine Progressive Web App bietet von sich aus das Herunterladen an; üblicherweise passiert dies über eine Verknüpfung auf dem Startbildschirm.
Mit dem Fortschritt der Browsertechnologien HTML5 und CSS3 sowie JavaScript-Frameworks sind Progressive Web Apps in den letzten Jahren sehr populär geworden. Insbesondere Google invesiert stark in die Weiterentwicklung; Es sind noch nicht alle Standards definiert und nicht alle Plattformen bringen die notwendige Unterstützung mit sich. Der Zugriff auf Technologien wie NFC und Bluetooth sowie Schnittstellen zum Kalender und zu den Kontakten (je nach Plattform) fehlen noch weitgehend.
Microsoft invesiert ebenso (wie Google) in die Weiterentwicklung dieser Technologie, da (bekanntermaßen) der Microsoft Store nicht genügend Apps beinhaltet und Progressive Web Apps plattformunabhängig lauffähig sind. Mit dem kommenden Redstone 4-Update wird auch Windows die volle Unterstützung mitbringen.
Appe unterstützt Progressive Web Apps bisher nur in einem sehr geringen Umfang. Dies ist dadurch zu erklären, dass Apple finanzielle Einbußen befürchtet: Wenn die Apps nicht mehr über den gewinnbringenden App Store verkauft werden, erhält der Konzern keine finanzielle Beteiligung mehr und kann zudem keine Statistiken über Nutzung und Installationen sammeln.
Ein prominentes und von Google hervorgehobenes Beispiel einer Progressive Web App ist Twitter Lite: Statt 23,5 Megabyte (Google Play Store) ist die Progressive Web App lediglich 600 Kilobyte groß. Gleichzeitig kann diese (durch besagte Schnittstellen) auch Benachrichtigungen schicken, obwohl sie geschlossen ist.
Hybrid App
Bei Hybrid Apps wird ein ähnliches Konzept wie bei Progressive Web Apps verfolgt: Auch hier werden Webtechnologien mit den Funktionalitäten der unterschiedlichen Plattformen kombiniert. Hybrid Apps unterscheiden sich jedoch dadurch, dass sie in einem nativ für die jeweilige Plattform designten Container laufen, der Bestandteil einer jeden solchen App ist. Dieser Conainer ermöglicht es, Webtechnologien auf dem Gerät nativ auszuführen. Durch den Container wird eine native Verbindung zur jeweiligen Plattform geschaffen, sodass – je nach Entwicklungsgrad – eine hardwarenähere Entwicklung mitsamt dem Einsatz der plattformspezifischen Funktionen möglich ist. Progressive Web Apps werden dagegen im Web Browser ausgeführt. Dieser besteht zwar ebenso aus einem Container, um Webinhalte anzuzeigen. Der eigentliche Code (der Website) beinhaltet diesen Container jedoch nicht direkt. Daher gibt es – je nach Internet Browser -Unterschiede bei der Unterstützung von plattformspezifischen Funktionen, da diese ja über den Internet Browser bereitgestellt werden müssen.
Ein weiteres Unterscheidungsmerkmal betrifft die Offline-Fähigkeit von Hybrid Apps: Der gesamte Code ist nicht zentral in Form einer Website verfügbar, sondern ist integraler Bestandteil der App. Dadurch ist es – im Gegensatz zu Progressive Web Apps – auch möglich, diese Apps in den verschiedenen App Stores zu vertreiben.
Das bekannteste Framework PhoneGap wird von Adobe entwickelt und bietet eben diese Möglichkeiten. Ebenso bietet Drifty Co mit Ionic ein populäres Framework an, das auf dem Angular-Framework basiert. Angular ist ein Framework, um Fontends (Oberflächen) zu designen. Hierzu wird die Programmiersprache TypeScript (ähnlich zu JavaScript) verwendet. Um den nativen Code für iOS-, Android und Windows-Plattformen zur Verfügung zu stellen, basieren beide Frameworks auf Apache Cordova.
Native App
Native Apps werden speziell für ein Betriebssystem programmiert und laufen ausschließlich auf diesem. Dadurch ist sichergestellt, dass die Hardware optimal und einheitlich über vorgegebene Schnittstellen angesprochen wird und die Ressourcen optimal genutzt werden. Alle (öffentlichen) Schnittstellen der jeweiligen Platt form können genutzt werden – seien es Zugriffe auf Datenspeicher, Kamerafunktionen oder Bluetooth. Dies stellt den größten Vorteil von Native Apps dar.
Je nach Betriebssystem werden unterschiedliche Programmiersprachen unterstützt; üblicherweise werden Native Apps in C#, C++, Objective-C, Swift oder Java programmiert. Es handelt sich hierbei um höhere Programmiersprachen. Zweck dieser Sprachen ist es, eine möglichst große Unabhängigkeit von einer bestimmten Rechneranlage zu gewährleisten. Der Entwickler benötigt keine Fachkenntnisse über die einzelnen Hardwarekomponenten der verschiedenen Geräte, auf denen die App lauffähig sein soll. Vielmehr stellt die Programmiersprache dem Entwickler umfangreiche Funktionalitäten und Operationen bereit, die verwendet werden können. Die Aufsplittung in einzelne Bestandteile wird durch die Programmiersprache übernommen.
Es ist ein Trugschluss, dass das Programmieren in einer höheren Programmiersprache weniger anspruchsvoll ist: Einerseits wird das objektorientierte Programmieren angewendet, das eine radikale Neuausrichtung des Programmierstils mit sich bringt. Andererseits ist es für die Entwickler obligatorisch und notwendig, die umfangreichen Funktionalitäten zu verstehen, damit diese korrekt implementiert werden. Dadurch lässt sich festhalten, dass das Erstellen von Native Apps generell kostspieliger als das Erstellen von Websites ist.
Für die Vermarktung über App Stores sind Native Apps prädestiniert. Schließlich werden diese plattformspezifisch programmiert.
Entscheidungsfindung
Entwicklern steht eine Vielzahl unterschiedlicher Möglichkeiten an App-Konzepten zur Verfügung. Sie rechen von einer reinen Web-Implementation der Inhalte in Form einer Website bis hin zu einer spezifisch und nativ für die Plattform erstellten App. Im Folgenden listen wir anhand der zwei Extreme (Webtechnologie versus native App) die Vorteile und Nachteile bezogen auf die Einsatztauglichkeit auf.
Webtechnologien sollten dann Verwendung finden, wenn die geplante App folgende Bestandteile beinhaltet:
- Fragebögen und Formulare
- Broschüren, Restaurant-Menüs
- statische Websites (nicht zu aufwändige 3D-Animationen und Effekte)
- Darstellung einfacher Inhalte
- Prototypen oder Proof of Concept
Native Apps sind geeigneter, wenn folgende Kriterien zutreffen:
- 3D-Spiele
- Applikationen mit vielen Animationen und Medien
- große Menge an Daten
- viel Verarbeitung/Aufbereitung an Daten
- Abdeckung aller Schnittstellen
Der anfangs diskutierte Trend in Richtung Websites und Webtechnologien hat bewirkt, dass auch für diesen Bereich neue Technologien geschaffen werden. Diese sollen Nachteile verringern: Gerade im Gaming-Bereich haben sich neue Schnittstellen etabliert: So können über beispielsweise WebGL 3D-Objekte in JavaScript in Verbindung mit HTML5 dargestellt werden.
Plattformübergreifende Entwicklungstools
Einem Nachteil der Native Apps, den hohen Entwicklungskosten, möchten sich plattformübergreifende Entwicklungstools annehmen. Das dahinter stehende Konzept unter dem Motto „Write Once, Run Everywhere“ der One App To Catch ‚Em All lässt sich wie folgt zusammenfassen:
- Die Entwicklung einer App findet nur in einer Programmiersprache statt.
- Beim Kompilieren (Übersetzen) der App wird der Quellcode in die maschinenlesbare Zielsprache der jeweiligen Plattform übersetzt.
Durch dieses sehr abstrakt dargestellte Konzept steht am Ende des Entwicklungsprozesses eine Native App, die nahezu ebenso performant wie das Original ist und zusätzlich alle weiteren Vorteile mit sich bringt.
Folgende Abbildung zeigt den Ansatz des für dieses konzept bekannte Entwicklungstools Xamarin:
Mit Xamarin kann in C# (Backend) und XAML (Frontend) ein plattformübergreifende App entwickelt werden. Dabei teilen sich iOS (links), Android (mittig) und Windows (rechts) denselben Code für das Backend und das User Interface, also das Frontned. Nur ein kleiner Teil des plattformspezifischen Codes muss in der jeweiligen Sprache des Zielsystems geschrieben werden.
Zusammenfassung
Das Vorhaben der Erstellung einer App geht mit obligatorischen Vorüberlegungen einher, die weit über den eigentlichen Inhalt hinausgehen sollten:
- Wer ist die Zielgruppe?
- Welche Plattformen sollen bedient werden?
- Ist eine Weboberfläche gewünscht?
- Ist eine Vielzahl an Daten oder Animationen Teil der App?
Je nach Anforderung lässt sich ableiten, welcher Applikationstyp passend ist. Eine allgemeingültige Aussage, welcher Applikationstyp passend ist, kann somit trotz Hilfestellungen nicht getroffen werden.
Folgende Tabelle zeigt die Abgrenzungen auf, um eine (grobe) Hilfestellung (basierend auf den zwei Extremen) zu bietet:
Gleichzeitig sind die Möglichkeiten der plattformübergreifenden Entwicklung in Betracht zu ziehen. So könne nicht nur Entwicklungskosten eingespart, sondern auch Native Apps mit geringen Kenntnissen der jeweils einzelnen Programmiersprachen der Zielplattformen erstellt werden.
(Bild-)Quellen: Jmgomez, 1&1 Internat (1), 1&1 Internet (2), Adobe, App Entwickler Verzeichnis, Flyacts, Microsoft (1), Drifty, Google, InternetLiveStats, t3n (1), t3n (2), JScrambler, galier-net, TechAdvisor, Clear and Agile, NetMarketShare, MasterOfCode, Uni Wuppertal, Ryte, SaintsAtPlay, Namics, Hostingfacts, Symantec, Apache, Khronos, aikcupchai
Sorry
Vom Prinzip her richtig, wobei ich nicht oo-gläubig bin. Gut strukturierter ablauforientierter code kann voll okay sein und added weniger overhead, besonders bei kleineren projekten.
Aber irgendwie verstehst du den sinn des artikels hier glaube ich nicht. Er soll wohl kaum programmieren und Webentwicklern irgendwas beibringen sondern Laien. Da halte ich gewisse Spielräume in den Erklärungen für ok um es verständlich zu halten. Wir Programmierer verstehen was gemeint ist und Laien können noch halbwegs folgen.
OO- gläubig..
Hat mit Glauben wirklich wenig zu tun. Für Projekte jenseits der 1-2k Zeilen ist strukturiertes programmieren „c“ gerade in Teams nur mit sehr viel Aufwand und Absprache und Dokumentation möglich.
Für kleine projekte welche man womöglich alleine baut stimme ich dir zu, z.b bei der Programmierung von Micro Controller etc.
Ich denke, niemand hat spaß daran (auch nicht wenn objektorientiert) programmcode über 2-3k zeilen code ohne doku durchzuarbeiten.
Wir haben zB ein CMS bei uns in der agentur geschrieben, dass ca. aus 100k code besteht und nicht oo aufgebaut ist. Ist vollkommen ok und teilweise leichter auf die art verständlich als es oo code wäre. Auf der anderen Seite bieten wir medizinische studienabwicklungstoola an, die oo basierend sind. Sind auch gut verständlich. Wie ich schon sagte: Beides halte ich wenn gut strukturiert und dokumentiert für sinnvolle Wege. Man kann aber natürlich sowohl ablauforientiert (bitte stark auf funktionen u co aufbauend um redundanz zu vermeiden) als auch oo gut oder total miese programme bauen.
Ich finds nur quatsch, das eine kategorisch als schlechter als das andere zu definieren. Das ist sehr fallspezifisch und hängt stark von der Sauberkeit des Codes und der Kommunikation der beteiligten entwickler ab.
Was auch erwähnt werden sollte ist die verschieden vollständige Implementation von JavaScript/Css/HTLM – je nach Browser und -Version. Durch Frameworks wie Angular 2 kann das aber „abgeferdert“ werden.
Nimm halt AngularJS wenn du meinst. Die Unterschiede bei den browsern sind maginal (besonders da wir hier praktisch immer von den neuesten oder sehr neuen versionen der browser sprechen) und alle ziemlich simpel zu lösen. Ich persönlich halte wenig von JS-frameworks besonders im bezug auf apps oder websites. Adden selbst bei teilmodularer bauweise viel zu viel overhead und helfen wenig bzw. machen vieles weniger hardwarenah als zB bei animationen css-lösungsansätze das könnten… Und bei nicht optischen dingen wie ner ajaxanfrage, websockets u co sparen sie ein paar wenige zeilen code, adden dafür aber den ganzen kram, den du in deiner app gar nicht verwendest. Zusätzlich lernt man nicht, wie es wirklich funktioniert sondern wie man frameworks verwendet.
Aber das sind dinge, die für ein allgemeines windows portal viel zu komplex sind und hier echt nicht hingehören.
„Mit Xamarin kann in C# (Backend) und XAML (Frontend) ein plattformübergreifende App entwickelt werden.“
Das ist leider nicht ganz korrekt. XAML ist nicht „das Frontend“ sondern eine auf XML basierende deklarative Sprache für das .NET Framework welche üblicherweise für UI Design verwendet wird. Darauf ist XAML aber nicht beschränkt. Der geamte XAML Code wird vom einem .NET Compiler zu MSIL/CIL Code umgesetzt. Man kann das „Frontend“ (also die UI) auch komplett in eine Sprache wie C# schreiben.
Wie in .NET im allgemein ist auch Xamarin nicht auf eine spezielle Sprache festgelegt.
Ich mach es kurz: Sei nicht so pedantisch. Laien sollen eine Idee bekommen, wofür das Ganze verwendet wird. Dafür geht das in Ordnung.
Mit Frontend und Backend hat das einfach nichts zu tun.
Genausowenig wie html das Frontend und JavaScript das Backend einer Web App ist. Backend ist der Server.
…
Willst nicht auch noch auf bytecode, assembler und binarcode-programmierung eingehen, damit laien nichts mehr verstehen? Spiel dich doch bitte nicht so auf. Das sind dinge, die kannst du in nem hardcore programmierforum oder auf der uni in informatik 3 raushauen, aber doch nicht hier.
Etwas muß ich leider bemängeln:
Der Satz:
„Je nach Betriebssystem werden unterschiedliche Programmiersprachen unterstützt“
Stimmt so nicht.
Das OS hat nichts mit der genutzten Programmiersprache zu tun! Man kann ein mit C++ entwickeltes Programm auf nahezu jedem Betriebssystem ausführen (wenn es darauf ausgelegt ist).
Nur wenn interpretierter oder
intermidiate code compiliert wurde, wird auf dem OS ein installierter „just in time bzw. ahead of time“ compiler benötigt. Aber auch das hat mit der Programmiersprache nichts zu tun. Für die .Net Plattform z.B. gibt es diverse verschiedene Programmiersprachen, welche alle mit der selben ,auf dem OS installierten Software (JIT\AOT Compiler)ausgeführt wird.
Allerdings benötigst du eben die libraries zur Entwicklung der apps (außer du baust alles selbst nach). Und da schränken dich praktisch alle ein und bestimmen für dich damit praktisch, welche sprachen ok sind. Versuch mal mit Swift ne UWP-app zu schreiben. Wird ehr aufwendig. Und ähnliches gilt für apks und co. Auch wenn es theoretisch nicht ganz richtig ist, ist praktisch an der aussage schon ne menge dran.
Natürlich benötigt man für UWP apps eine auf .net aufbauende sprache.
Und für c++ Programme sind lib’s, welche für das Zielsystem compiliert sind nötig. Die gibt es aber auch meistens! Siehe beispielsweise gcc mit gtk+.
„ähnliches gilt für apk und co.“
Sorry, ich verstehe den zusammenhang von containerformaten zur installation (apk, cab etc.) mit programmiersprachen nicht. Es sind einfache Archive mit meta Informationen für die Installation.
Apk ist das typischte containerformat für android apps. Hätte man ja auch aus dem zusammenhang in dem wir hier argumentieren herausfinden können, aber das ist genau das, was ich bemängele bei deinen Kommentaren. Ganz hart gesprochen hast du häufig recht, aber es ist einfach für die art von Artikel zu finzig/pedantisch, über die wir hier reden.
Und verwechsel besser mal enthusiasten nicht mit programmieren. Da gibt es offensichtlich eine teilschnittmenge, aber der weitaus größere teil dürfte nur sehr eingeschränkte oder keine Programmierkenntnisse haben. Im Großen und Ganzen sind es Generalisierungen oder „Lügen für Kinder“ (man bringt leuten in der ersten klasse auch erstmal addieren bei, bevor man ihnen mit der Relativitätstheorie kommt und die sachen teilrevidiert) über die wir hier sprechen. Das meiste Zeug ist nah genug an der Wahrheit um die Grundtendenz verständlich wiederzugeben und jeder Programmierer weiss was der Autor meint, während der Laie nicht völlig überfordert wird.
Ich finds einfach ein wenig unfair gegenüber Lennart den Artikel hier wegen jeder winzigen Verallgemeinerung zu zerflücken, wo doch die Zielgruppe hier wirklich zu weit von der Materie weg ist und er einen entsprechenden Artikel verfasst, was wirklich nicht sonderlich leicht ist. Dafür ist der Artikel sehr gut und ich bedank mich nochmal bei Lennart für den schönen Artikel.
Stimmt, fair gegenüber dem Autor sind meine Kommentare hier nicht wirklich.
Sorry dafür.
Vielen Dank, fuchur, für deine Lorbeeren und dein Verständnis für meine gewählten Vereinfachungen und Zusammenfassungen der komplexen Thematik! 🙂
Nur Zwei Anmerkungen:
Native Apps: Soweit ich weiß wird der Begriff „native“ etwas allgemeiner gefasst. Native Programme/Apps sind für spezielle Schnittstellen ausgelegt (natürlich ist ein OS auch eine spezielle Schnittstelle). Als Native bezeichnet man auch für einen spezielle Prozessor (bzw. Instruktions-Satz dessen) kompilierte Programme. Diese Programme sind heutzutage meistens in C/C++ geschrieben, ein Beispiel sind „high performance“ Spiele (welche die Hardware voll ausreizen).
Als „nicht native“ würden dann Programme bezeichnet werden, welche den Prozessor nur indirekt (über eine weitere Schicht) nutzen. Zum Beispiel Java oder .NET Apps. Diese werden zu einem „zwischencode“ (in diesem Beispiel Bytecode bzw. Common Intermediate Language (CIL)) überführt (compiliert). Dafür benötigen diese Programme für die Ausführung aber noch weitere Software auf dem Zielsystem, welche die Übersetzung in Maschinensprache für die CPU Übernimmt ( hier die Java VM bzw. der .NET CIL JIT bzw. AOT Compiler).
Die Web Apps sind noch ein dritter Typ der Abstraktion, sie werden nicht compiliert, sondern direkt im Quellcode übertragen. Man kann prinzipiell den source-code jeder website ansehen (auch wenn in der Praxis das nur selten sinnvoll ist, da der Code meißtens durch ein Programm obfusciert und optimiert wird. Sie benötigen bekanntermaßen einen Browser.
Entwicklungskosten: Warum sind die Entwicklungskosten für WebApp’s niedriger als native Apps? Hängt das nicht davon ab, für welchen Zweck und welche Zielgruppe Programmiert wird?
Wenn z.B. als Ziel nur ein System mit Maus/Tastatur angestrebt wird, gibt es schon lange Plattform unabhängige Lösungen.
Im einfachsten Fall kann man z.B. C/C++ Programme so schreiben, das sie für mehrere Plattformen kompiliert werden können. (Das wurde bei vielen Open Source Projekten so gemacht, z.B. GIMP). Oder man nutzt Java bzw. .NET. Beides ist prinzipiell Plattform und CPU unabhängig.
Auch benötigen die WebApps einen nicht unerheblichen Server-Anteil, welcher auch als Server für native Apps dienen kann.
Klar kann man das, aber schreib mal eine app (-> nicht als synonym für softwareprogramm sondern für mobileapplikation auf den properitären smartphonesystemen), die unabhängig von den entwickler-apis der platformen ist.
Es ist viel simpler, wenn du eine webbasierte app schreibst, alle möglichen systeme gleichzeitig anzusprechen, weil es im web ziemlich einheitliche schnittstellen, guis usw. gibt.
Das ist ne ganz andere geschichte bei rein nativen apps. Da kommen typischerweise völlig unterschiedliche gui libraries zum einsatz. Und java auf nem iphone wäre interessant zu sehen.
Der entwicklungsvorteil kommt immer dann ziemlich schnell, wenn du zB windows, ios und android und vielleicht noch ne website gleich mit einer codebase abdecken möchtest. Es gibt auch andere tools, wie zB xamarian, appcelerator und co, die dir das einfacher machen und dann nativen code erzeugen, aber praktisch ist durch die sehr hohe Standardisierung im Web einfach schon einiges einfacher. Webbrowser können praktisch alle das gleiche und können mit html5, css3 und js auch schon sehr viel von sich aus. Und html/css zusammen bringt ohne viel aufwand eine einfach zu lernende, weit verbreitete und ziemlich mächtige GUI-technologie mit sich, die praktisch kaum zu schlagen ist. UWP und unterschiedliche bildschirmauflösungen? Das ist im web schon seit 10 jahren gang und gebe.
.
Der ganze Artikel ist offensichtlich bezogen auf App-Programmierung, nicht auf alles was irgendwie existiert oder programmiert werden könnte.
Er schreibt hier keine Doktorarbeit sondern einen Artikel für Laien. Also komm mal runter.
OK, als Webentwickler ist mir neu, dass Leute das Programmieren in einer höheren Sprache für einfacher halten. Aber auch Websites kommen da heute locker ran, gerade wenn man unter der Haube z.B. Portale mit C# inklusive .Net und nicht nur objektorientiert, sondern auch in MVC programmiert.
Die plattformübergreifende Umsetzung z.B. mit Xamarin oder Unity wäre extrem wünschenswert, dann hätte es nie ein App-Problem mit WP gegeben. Nur leider programmieren die starrsinnigen Agenturen erstmal für Apple und dann nochmal für Google neu. Völlig hirnrissig seit vielen Jahren. Aber ich rege mich schon wieder zu sehr auf ?
Danke! Solche erklärenden Beiträge sind mir immer sehr willkommen!
+1
Schöner Artikel. Kleine Anmerkung dazu: Das mit den vielen Medien stimmt erst dann, wenn die vielen medien offline abgelegt in der app vorliegen. Wenn die gestreamt werden, ist es wieder ziemlich egal, ob die app nativ auf diese zugreift oder über webtechnologien, weil der bottleneck dann bei der internetverbindung liegt.
Und was phonegap angeht: Phonegap und Cordova sind praktisch gleichwertig und können zB die plugins untereinander austauschen. Das ist in sofern wichtig für w10/w10m, weil visual studio eine direkte cordova-integration mitbringt. Ich zB schreib meine apps alle mit diesen hybrid-frameworks.
Eine Ergänzung noch zu den Websites: Die Websites setzen zwar html, css und javascript vordergründig (auf client-Seite) ein, alles das wird aber bei den allermeisten durch serverscript-sprachen wie PHP (der massiv größte anteil), ASP, JSP oder node.js generiert. Dazu kommen Datenbankanbindungen mit SQL (meist mysql). Auf diesen sprachen basieren nämlich in den meisten Fällen die CMS, die die Website pflegbar machen. Die eigentliche intelligenz liegt dadurch häufig zu hohen Teilen auf dem Server, nicht beim Client. Deshalb kann man eine Standardwebsite meist nicht automatisch einfach packen und hat dann alle Funktionen 1zu1 offline zur Verfügung. Da fehlt dann alles, was der Server für einen macht. Oder kurz gesagt: Websites sind zu sehr großen teilen cloudbasierte Systeme und warwn das auch schon immer, was den hype um Cloud für viele Webdeveloper so unverständliche macht. Cloud gibt’s schon seit es das Internet gibt.
? genau, bei der Cloud habe ich das auch schon immer so gesehen. Bei „Apps“ übrigens auch (Application, Applikation, Programm).
Find ich auch. Besonders schlimm find ich, wenn man jetzt einfach alles apps nennt. Apps waren dann halt kleinprogramme fürs smartphone. Hab ich mich dran gewöhnt. Und jetzt werden offensichtliche desktop only programme teilweise auch apps genannt. Das hieß Jahrzehnte lang Programm. Wofür muss man das jetzt umbenennen? Blödes marketing-buzz-word-bingo…
Für mich stellt sich die Frage, inwiefern Microsoft hier mit dem aktuellen Trend (Stichwort „App“) mitgehen möchte. Einerseits muss Windows 10 modernisiert werden und auch die junge „App-Generation“ (wenn ich sie einmal so nennen darf) sollte angesprochen werden. Andererseits kommt einem beim Betrachten eines ERP-Systems das Wort „App“ doch sehr und viel zu spielerisch vor, da das Wort ja primär von Programmen/Apps für das Smartphone und andere mobile Geräte stammt und suggeriert, dass der Funktionsumfang kleiner als bei einem Programm wäre.
Genau
Ich bin ganz bei dir. Wie du schon in deinen anderen Kommentaren richtig geschrieben hast, habe ich diesen Artikel verfasst, um die grundsätzlichen Unterschiede für „jedermann“ zugänglich zu machen. Dabei bleiben natürlich ein paar technische Details auf der Strecke liegen und gerade Vollblut-Entwickler vermissen selbstverständlich die Tiefen und technischen Details. Einhergehend mit diesen Zusammenfassungen kann natürlich nicht jedes Detail differenziert ausdiskutiert werden und so kommt es (bei diesen umfangreichen Themen) zu Aussagen, die nicht zu 100% korrekt, dafür aber für die Mehrheit unter uns verständlich sind. Trotzdem bedanke ich mich bei insbesondere CopyConstructor und fuchur für die zahlreichen Anregungen und Ergänzungen zu diesem Artikel und Thema. 🙂
+1