Cross-Plattform: Entwicklung und Anwendung
()
About this ebook
Read more from Manuel Rauber
Expertentipps zu Angular: Neuerungen in Angular 6, Umgang mit Microservices, Performanz und UX-Design Rating: 0 out of 5 stars0 ratingsDie Serverwelt von Node.js Rating: 0 out of 5 stars0 ratings
Related to Cross-Plattform
Titles in the series (100)
Einstieg in Google Go Rating: 0 out of 5 stars0 ratingsServiceorientierte Architektur: Anforderungen, Konzeption und Praxiserfahrungen Rating: 0 out of 5 stars0 ratingsJavaScript für Eclipse-Entwickler: Orion, RAP und GWT Rating: 0 out of 5 stars0 ratingsSharePoint-Entwicklung für Einsteiger Rating: 0 out of 5 stars0 ratingsC++: Kurzportträt einer zeitlosen Sprache Rating: 0 out of 5 stars0 ratingsHTML5 für Mobile Web Rating: 0 out of 5 stars0 ratingsHTML5 Security Rating: 0 out of 5 stars0 ratingsF#: Ein praktischer Einstieg Rating: 0 out of 5 stars0 ratingsSkalierbare Softwaresysteme: Design, Betrieb und Optimierungspotenziale Rating: 0 out of 5 stars0 ratingsJava EE Security Rating: 0 out of 5 stars0 ratingsNFC: Near Field Communication für Android-Entwickler Rating: 5 out of 5 stars5/5Erfolgreiche Spieleentwicklung: OpenGL, OpenAL und KI Rating: 0 out of 5 stars0 ratingsUser Experience Testing 3.0: Status Quo, Entwicklung und Trends Rating: 0 out of 5 stars0 ratingsJavaScript auf dem Server Rating: 0 out of 5 stars0 ratingsIT Wissensmanagement: Theorie und Praxis Rating: 0 out of 5 stars0 ratingsUX Design - Definition und Grundlagen: Definition und Grundlagen Rating: 4 out of 5 stars4/5Algorithmen: Grundlagen und Implementierung Rating: 0 out of 5 stars0 ratingsÜberzeugende Präsentationen: Konzeption, Technik und Design Rating: 0 out of 5 stars0 ratingsWebentwicklung mit dem Play Framework Rating: 0 out of 5 stars0 ratingsTFS 2012 Anforderungsmanagement: Work Items und Prozessvorlagen Rating: 0 out of 5 stars0 ratingsTFS 2012 Versionskontrolle: Grundlagen, Check-In Policies und Branch-Modelle Rating: 0 out of 5 stars0 ratingsErfolgreiche Spieleentwicklung: OpenCL Rating: 0 out of 5 stars0 ratingsJava 7: Fork-Join-Framework und Phaser Rating: 0 out of 5 stars0 ratingsMobile Business: Was Entscheider morgen wissen müssen Rating: 0 out of 5 stars0 ratingsAmazon Web Services für .NET Entwickler Rating: 0 out of 5 stars0 ratingsSpring: Vier Perspektiven auf Framework und Ökosystem Rating: 0 out of 5 stars0 ratingsUX Design für Tablet-Websites: Ein Überblick Rating: 0 out of 5 stars0 ratingsBig Data: Executive Briefing Rating: 0 out of 5 stars0 ratingsZend Framework 2: Für Einsteiger und Umsteiger Rating: 0 out of 5 stars0 ratingsBig Data: Technologiegrundlagen Rating: 0 out of 5 stars0 ratings
Related ebooks
Progressive Web-Apps: Offlinefähige Web-Anwendungen mit nativen Qualitäten Rating: 0 out of 5 stars0 ratingsHTML5 für Mobile Web Rating: 0 out of 5 stars0 ratingsCross-Plattform-Entwicklung mit HTML und JavaScript Rating: 0 out of 5 stars0 ratingsMobile Web-Apps mit JavaScript: Leitfaden für die professionelle Entwicklung Rating: 0 out of 5 stars0 ratingsMicroservices-Architektur: Patterns in Spring implementieren Rating: 0 out of 5 stars0 ratingsSharePoint Kompendium - Bd. 16 Rating: 0 out of 5 stars0 ratingsSharePoint Kompendium - Bd. 13 Rating: 0 out of 5 stars0 ratingsMicroservices: Der Hype im Realitätscheck Rating: 0 out of 5 stars0 ratingsMicrosoft KINECT: Programmierung des Sensorsystems Rating: 0 out of 5 stars0 ratingsBootstrap kurz & gut Rating: 0 out of 5 stars0 ratingsMeine erste App Rating: 0 out of 5 stars0 ratingsJavaScript und Ajax: Das Praxisbuch für Web-Entwickler Rating: 0 out of 5 stars0 ratingsWindows-8-Apps für C#-Entwickler: Design-Guidelines, Anleitungen, Best Practices Rating: 0 out of 5 stars0 ratingsDynamic Proxies: Effizient programmieren Rating: 0 out of 5 stars0 ratingsModerne Datenzugriffslösungen mit Entity Framework 6 Rating: 0 out of 5 stars0 ratingsAutomatisiertes Testen: Testautomatisierung mit Geb und ScalaTest Rating: 0 out of 5 stars0 ratingsZukunftssichere Architektur: So bauen Sie monolithische Anwendungen zu komponentenorientierten um Rating: 0 out of 5 stars0 ratingsEinstieg in TypeScript: Grundlagen für Entwickler Rating: 0 out of 5 stars0 ratingsMit Scratch 3 programmieren lernen Rating: 0 out of 5 stars0 ratingsF#: Ein praktischer Einstieg Rating: 0 out of 5 stars0 ratingsDynamische Webseiten: Einstieg in HTML, PHP und MySQL Rating: 0 out of 5 stars0 ratingsGroovy – kurz & gut Rating: 0 out of 5 stars0 ratingsJavaScript objektorientiert: Verständlicher, flexibler und effizienter programmieren Rating: 0 out of 5 stars0 ratingsHacken mit Kali-Linux: Schnelleinstieg für Anfänger Rating: 0 out of 5 stars0 ratingsProjektmanagement kurz & gut Rating: 0 out of 5 stars0 ratingsJavaScript effektiv: 68 Dinge, die ein guter JavaScript-Entwickler wissen sollte Rating: 0 out of 5 stars0 ratingsModerne Webentwicklung: Geräteunabhängige Entwicklung -- Techniken und Trends in HTML5, CSS3 und JavaScript Rating: 0 out of 5 stars0 ratingsNeue Geschichten vom Scrum: Von Führung, Lernen und Selbstorganisation in fortschrittlichen Unternehmen Rating: 0 out of 5 stars0 ratings
Internet & Web For You
30 Minuten Metaverse Rating: 0 out of 5 stars0 ratingsEinfach Verschlüsseln Rating: 0 out of 5 stars0 ratingsMarketing für Selbständige: Schwerpunkt Social Media Rating: 0 out of 5 stars0 ratingsChatGPT Plus: Durchstarten in eine neue Welt: Entdecken Sie Künstliche Intelligenz mit ChatGPT Plus und GPT-4 Rating: 0 out of 5 stars0 ratingsDas Prezi-Buch für spannende Präsentationen Rating: 0 out of 5 stars0 ratingsJoomla 4.0 logisch!: Einfache Webseitenerstellung ohne Programmierkenntnisse Rating: 0 out of 5 stars0 ratingsEinführung ins Darknet: Darknet ABC Rating: 0 out of 5 stars0 ratingsWir machen dieses Social Media Rating: 0 out of 5 stars0 ratingsWordPress-Tricks und -Tweaks: Bohren Sie WordPress mit selbst programmierten Funktionen auf! Rating: 0 out of 5 stars0 ratingsAndroid Security: Von Fake-Apps, Trojanern und Spy Phones Rating: 0 out of 5 stars0 ratingsJavaScript kinderleicht!: Einfach programmieren lernen mit der Sprache des Web Rating: 0 out of 5 stars0 ratingsBug Bounty Hunting mit Kali-Linux oder Parrot Security OS: Hacking als Hautberuf oder Nebenjob Rating: 3 out of 5 stars3/5PHP 7 und MySQL: Ihr praktischer Einstieg in die Programmierung dynamischer Websites Rating: 0 out of 5 stars0 ratingsReact lernen und verstehen Rating: 0 out of 5 stars0 ratingsDas kleine Hypnose Einmaleins - Alles was Sie schon immer über die Hypnose wissen wollten von Ewald Pipper vom Hypnoseinstitut Rating: 0 out of 5 stars0 ratingsPR im Social Web: Das Handbuch für Kommunikationsprofis Rating: 0 out of 5 stars0 ratingsWordPress-Themes entwickeln: HTML5, CSS3, JavaScript und PHP: Praxiswissen und Quellcodes zum Entwurf von WordPress-Themes Rating: 0 out of 5 stars0 ratingsUX-Missverständnisse: Was sich User wirklich wünschen Rating: 0 out of 5 stars0 ratingsDer Content Faktor: Schreiben Sie Texte, die gefunden und gelesen werden Rating: 0 out of 5 stars0 ratingsSchnelleinstieg WordPress SEO: Einstellungen, Keywords, Plug-ins und Strategien für optimales SEO Rating: 0 out of 5 stars0 ratingsDas Facebook-Marketing-Buch Rating: 4 out of 5 stars4/5Programmieren lernen mit Python 3: Schnelleinstieg für Beginner Rating: 0 out of 5 stars0 ratingsShopware 6 Handbuch Rating: 0 out of 5 stars0 ratingsPraxisbuch WordPress Themes Rating: 0 out of 5 stars0 ratingsopenHAB: Automatisiertes Heim - Teil 1 Rating: 4 out of 5 stars4/5Einstieg in WordPress Rating: 0 out of 5 stars0 ratingsPHP für WordPress: Themes und Templates selbst entwickeln Rating: 0 out of 5 stars0 ratingsUX Design - Definition und Grundlagen: Definition und Grundlagen Rating: 4 out of 5 stars4/5SEO & WordPress Schnelleinstieg: Plugins, Keywords-entscheidend für die SEO Optimierung Rating: 0 out of 5 stars0 ratings
Reviews for Cross-Plattform
0 ratings0 reviews
Book preview
Cross-Plattform - Manuel Rauber
GmbH
1 Moderne Cross-Plattform-Applikationen mit Angular
Der Begriff „Cross-Plattform" ist seit Längerem in aller Munde. Jede Software soll unabhängig von der Plattform oder dem Endgerät verfügbar sein und funktionieren. Der Traum, aus einer Codebasis alle Plattformen und Geräte zu bedienen, besteht schon lange: write once, run anywhere – ein von Java geprägter Slogan. Es zeichnet sich ab, dass Webtechnologien wie HTML5 und JavaScript diesen Traum tatsächlich Realität werden lassen. Doch welche Hindernisse müssen hierbei überwunden werden? Welche Softwarearchitekturen werden benötigt? Und wann müssen wir dennoch plattformabhängigen Code schreiben?
Single-Plattform, Multi-Plattform oder doch Cross-Plattform? Drei Begriffe, die man aus der Softwareentwicklung kennt und oft hört – gerade wenn eine neue Software entwickelt werden soll. Oftmals wird der Begriff „Multi-Plattform" auch als Synonym von Cross-Plattform verstanden. Allerdings stecken hinter diesen zwei Begriffen unterschiedliche Ansichten. Daher wollen wir eingangs klären, was sich hinter diesen drei Begriffen verbirgt und wie sie voneinander abzugrenzen sind. Abbildung 1.1 zeigt eine grafische Übersicht.
Abbildung 1.1: Schematische Darstellung der Begriffsabgrenzung
Der Begriff „Single-Plattform" lässt sich sicherlich am einfachsten erläutern. Wird eine Software nach diesem Ansatz entwickelt, ist sie auf nur genau einer Plattform lauffähig. Möchte man die Software auf einer anderen Plattform nutzen, muss sie oftmals gänzlich neu entwickelt werden. Das ist oft bei Software im Embedded-Bereich der Fall, da die Software sehr stark mit ihrer Hardwareumgebung interagieren muss. Bei typischer Konsumentensoftware ist die Welt allerdings oftmals eine andere. Hier stehen uns ähnliche Systeme zur Verfügung, auf denen unsere Anwendung laufen soll. Sind wir im typischen App-Bereich unterwegs, soll unsere App die drei Großen bedienen: Android, iOS und Windows UWP. Im Fall von Single-Plattform würde man die App daher dreimal vollständig für jede Plattform entwickeln – nicht gerade zeit- und ressourcenfreundlich.
Bei diesen Anforderungen setzt man gerne auf den Multi-Plattform-Ansatz. Im Fall der drei Großen (also Android, iOS und Windows UWP) ist hier Xamarin [1] als Option für die Entwicklung zu nennen. Xamarin – mittlerweile aus dem Hause Microsoft – ermöglicht es, sowohl für die drei genannten mobilen Plattformen als auch macOS-Apps auf einer einzigen Codebasis zu entwickeln. Die Codebasis selbst wird in C# entwickelt. Dadurch lassen sich vor allem Services, Geschäftslogik und Modelle über alle von Xamarin unterstützten Plattformen teilen. Xamarin überlässt es dem Entwickler, ob er für jede Plattform ein eigenes UI entwickeln möchte, um ein hundertprozentiges natives Look and Feel zu erreichen, oder ob er die Abstraktion Xamarin.Forms einsetzen möchte. Xamarin.Forms abstrahiert dabei den Plattform-UI-Layer hinter einer gemeinsamen Menge von Komponenten. Damit kann das UI einmal entwickelt werden und Xamarin kümmert sich um die korrekte Darstellung auf der jeweiligen Zielplattform. Hierbei können natürlich nur Komponenten eingesetzt werden, die auf allen Plattformen gleichermaßen, wenn auch in einer anderen Darstellungsform, existieren. Möchte man spezielle Darstellungsformen und Komponenten einer spezifischen Plattform einsetzen, muss der Entwickler selbst Hand anlegen. Mit Xamarin können wir aber bereits eine große Menge an Plattformen mit einem hohen Anteil an geteiltem Code erreichen.
Allerdings haben wir bisher die wohl größte Plattform überhaupt vernachlässigt: den Browser. Jedes Gerät, egal ob Smartphone, Tablet, TV, Computer oder sogar moderne Kühlschränke und exotischere Geräte wie eine HoloLens, verfügt über einen Browser oder über die Möglichkeit der Darstellung von HTML5 und CSS3 und die Ausführung von JavaScript. Das bedeutet für uns Entwickler, dass unsere in HTML5, CSS3 und JavaScript entwickelte Codebasis auf all diesen Geräten und Plattformen lauffähig ist. Der Benutzer ist dadurch in der Lage, einen ganz normalen Webbrowser für unsere Anwendung zu nutzen. Besser noch: Wir haben die Möglichkeit, unsere Anwendung auch als echte mobile App oder Desktopapplikation zu verpacken. Dadurch können wir sie z. B. durch die verschiedenen App Stores vertreiben und Zugriff auf native Plattform-APIs via JavaScript erhalten.
In dieser Welt hört man einen Satz allerdings ziemlich oft: „Das sieht aber gar nicht wie eine native Anwendung aus! Genau! Das ist ein „Feature
, und einige Anwendungen machen es seit Jahren vor: Spotify oder Google. Egal auf welcher Plattform eine der beiden Anwendungen läuft, sie schaut immer gleich aus – und das seit dem Jahr 2014! Der Wiedererkennungswert ist enorm hoch. Und ganz gleich, auf welcher Plattform die Anwendung bedient wird: Einmal gelernt, kann man sie überall benutzen. Das ist ein Feature, das Sie sich auch für Ihre Anwendung zunutze machen können: Ihre Corporate Identity auf allen Plattformen. Der Anwender erkennt Ihre Anwendung sofort und kann Sie unabhängig von der Plattform bedienen. Ihre Anwendung wird zugänglicher und kann viel mehr potenzielle Anwender erreichen.
Die Plattform
Damit wir all dies unter einen Hut bekommen, brauchen wir ein Anwendungsframework, das uns bei unserem Vorhaben unterstützt. Aus unserer schönen .NET-Welt sind wir bereits gewisse Konzepte gewohnt: Komponenten, Services, Dependency Injection und viele weitere. Unter diesen Aspekten kristallisiert sich ein Anwendungsframework heraus, das wir uns im Rahmen dieses shortcuts genauer anschauen wollen: Angular [2].
Angular ist der Nachfolger von AngularJS und stammt aus dem Hause Google. Es bringt genau jene und weitere angesprochenen Konzepte mit, die wir aus der .NET-Welt kennen. Man fühlt sich als .NET-Entwickler sehr schnell wie zu Hause. Unterstützt wird dieses Gefühl dadurch, dass Angular mit TypeScript [3] von Microsoft entwickelt wird. Die Sprache wurde von Anders Hejlsberg designt, der auch schon die Sprachen Delphi und C# konzipiert hat. Viele C#-Konstrukte finden wir daher in TypeScript wieder. TypeScript ist ein Superset von JavaScript. Das bedeutet, dass es JavaScript um weitere optionale Features anreichert, wie z. B. Typen, das async/await-Pattern, getter/setter-Methoden oder Sichtbarkeitsmodifizierer wie private, protected und public. Speziell die Erweiterung um Typen sind für unser tägliches Tooling enorm hilfreich. Sei es die IDE, die uns eine bessere IntelliSense anbieten kann, oder Tools für statische Codeanalyse oder Refactoring. Da TypeScript nicht direkt vom Browser interpretiert werden kann, sorgt der TypeScript-Compiler dafür, dass TypeScript nach JavaScript transpiliert wird. Neben den bereits erwähnten Konzepten, bringt Angular noch viele weitere mit sich: Datenbindung, Routing, HTTP-Services und ein Animationsframework.
Via Datenbindungen können wir zum einen unsere View aktualisieren, wenn sich das Modell dahinter geändert hat. Zum anderen können wir unser Modell aktualisieren, wenn z. B. auf der View eine Benutzereingabe in einem Textfeld erfolgt.
Per Routing haben wir die Möglichkeit, je nach angezeigtem URL im Browser, eine andere Komponente anzuzeigen. Beispielsweise können wir via http://example.de/#/liste eine Liste anzeigen, während unter http://example.de/#/details/1 die Detailseite eines Modells mit der ID 1 angezeigt wird. Das Routing lässt sich beliebig tief schachteln, um auch komplexe Zusammenstellungen