Welche Programmiersprache ist plattformübergreifend und was muss ich sonst noch alles wissen für die eigene App? Welche Programmierumgebung ist zu empfehlen?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Da ihr bereits überlegt, die Applikation auch über das Web verfügbar zu machen, solltet ihr auch eine Webapplikation entwickeln. Diese ist dann auch plattformunabhängig.

Für eine Webseite müsst ihr euch mit sehr vielen Themen beschäftigen:

  • HTML, CSS, JavaScript (zusammen mit Bibliotheken wie jQuery)
  • CSS/JavaScript kann durch verschiedene Libraries etc. noch um einiges erweitert werden, wie LESS/SASS, TypeScript, CoffeeScript, usw.
  • spez. Webtechniken wie responsive Design
  • Datenbanken (MySQL, SQL)
  • serverseitige Programmierungevt. CMS

Hinzu kommen noch einige spezielle Themen wie Serverkonfiguration, UI-Design, o.ä.. 

Bezüglich der Programmiersprache, die auf dem Server läuft, gibt es mehrere Möglichkeiten, die aber auch vom verfügbaren Webserver und seiner Konfiguration abhängig sind. So könntet ihr z.B. mit diesen Sprachen entwickeln (in Klammern stehen mögliche Server, wobei diese nicht die einzige Option für eine Sprache darstellen sollen):

  • PHP (mit Apache Webserver oder IIS)
  • Java (+ JavaEE oder Java Spring; mit Glassfish Server oder Apache Tomcat)
  • C# / VB.NET (+ ASP.NET-Framework; mit IIS)
  • nodejs (zusammen mit dem expressjs-Framework)
  • Ruby (mit Raptor oder Puma)
  • Google Dart (zusammen mit dem Redstone-Framework oder Apache)
  • Perl (mit Apache Webserver)

Die Programmierumgebung, die man nutzen kann, ist dann natürlich ebenso abhängig von der Wahl der Sprache.

  • Visual Studio (C#, VB.NET, JavaScript, PHP)
  • PHPStorm (PHP, Google Dart)
  • WebStorm (JavaScript)
  • NetBeans (Java, PHP, JavaScript, nodejs, Ruby)
  • Eclipse (Java, PHP, Ruby, Perl, usw.)

Markupsprachen und Stylesheets werden meist ebenso durch Syntax-Highlighting etc. unterstützt.

Um die Seite auf dem eigenen Rechner zu testen, macht es Sinn, einen lokalen Webserver zu installieren. Das Softwarepaket XAMPP beinhaltet bspw. phpMyAdmin, eine MySQL-Datenbank und einen Apache Webserver.

In Visual Studio ist der IIS Express integriert, ansonsten könnte man sich über Windows ebenso den IIS als Modul zusätzlich installieren.

Bei NetBeans kann man mit der Instalation ebenso eine Apache Derby Datenbank sowie einen Glassfish Server auf das eigene System bringen.

Bezogen auf die Wartbarkeit der Applikation solltet ihr euch ebenso überlegen, ob ein CMS (wie Umbraco, Wordpress, typo3, Drupal, Sitecore, Joomla, HippoCMS, usw.) nicht eine gute Wahl wäre. Mit diesem würde die Verwaltung von den einzelnen Seiten einfacher fallen.

Wie läuft das mit Servern, mietet man da einfach einen auf dem dann das Programm ab läuft?

Ja, das wäre die einfachste Wahl. Was für Server zur Verfügung stehen, hängt vom Webhoster ab. Vielleicht eignet sich auch Microsoft Azure für die Webapplikation, doch dass müsst ihr einfach mal selbst bewerten.

Und habt ihr eventuelle Buchvorschläge um das ganze zu lernen?

Es gibt eine Reihe an Open Books vom Rheinwerk Verlag (https://www.rheinwerk-verlag.de/openbook/), ansonsten einfach mal selbst auf Amazon / ... schauen. Des Weiteren gibt es genügend Webseiten, die Tutorials zu bestimmten Themen bieten oder Referenzseiten zum generellen nachschlagen.

Eine Umgebungskarte muss vorhanden sein wo man wenn möglich auch andere Benutzer sehen kann.

Hierfür gibt es bereits genügend APIs wie die von Google Maps. Auf diese sollte zurückgegriffen werden. Egal, ob es eine Webapplikation wird oder eine native App.

Nun einmal angenommen, eine Webapplikation sollte doch nicht euren Vorstellungen entsprechen, könntet ihr eine native oder eine hybride App entwickeln. Bei letzterem gibt es Frameworks wie Adobe PhoneGap, zu ersterem möchte ich nochmal ausführlicher Methoden vorstellen:

Entweder ihr entwickelt je OS eine App. Für Android bräuchtet ihr Java oder C++, für iOS bräuchtet ihr Objective-C, Swift oder C++. Sollte noch das Windows Phone mit in die Liste kommen, wäre zusätzlich eine .NET-Applikation vonnöten.

Alternativ könntet ihr nur mit dem Qt-Framework für Android, iOS und Windows Phone eine App kreieren. Dazu müsstet ihr euch die Programmiersprachen C++ und evt. auch QML (basiert auf JS) aneignen.

Eine Datenbank könnte entweder auf einem externen Webserver liegen oder eine weitere Alternative wäre eine SQLite-Datenbank, sofern die App keine hoch erwartete Nutzeranzahl haben sollte.

Als Entwicklerwerkzeuge sind empfehlenswert:

  • Android Studio (für Java)
  • XCode (daran kommt ihr bei iOS-Entwicklung kaum vorbei)
  • NetBeans (für Java / C++)
  • QtCreator (für C++/ Qt / JS / QML)
  • Visual Studio (für C# / C++ / Qt)

Mit Hilfe der Seite https://www.browserstack.com/ könnt ihr im Übrigen eure Applikation ganz gut für verschiedene Geräte und Browser testen.

Zusammenfassend kann man sagen, dass, bis ihr überhaupt mit der Entwicklung beginnen könnt, noch sehr viel Zeit vergehen wird und Lernarbeit geleistet werden muss. Bereits mit dem Erlernen der Grundlagen für nur eine Sprache werdet ihr einige Monate beschäftigt sein.

Noch ein paar Tipps zu dem Projekt:

  • Legt von Anfang an klar fest, was ihr für Features integrieren wollt und wie genau sie funktionieren / welches Verhalten sie aufweisen.
  • Konzentriert euch auf die Kernfunktion, andere Features haben Zeit > andernfalls überfordert ihr euch schnell
  • Nutzt eine Software zur verteilten Versionsverwaltung (Mercurial, Git, SVN). So könnt ihr gleichzeitig an dem Projekt arbeiten, ohne euch schädigend in die Quere zu kommen. Außerdem können Änderungen/Fehler einfacher zurückverfolgt und rückgängig gemacht werden.
  • Einigt euch im Vorfeld auf bestimmte Konventionen, um den Quellcode einheitlich zu halten. Würde dein Partner bspw. alle Variablennamen in Großbuchstaben schreiben und du alle in Kleinbuchstaben, würde der Code schnell nicht mehr so toll lesbar sein. Die meisten Sprachen definieren bestimmte Konventionen bereits von Haus aus. Zusätzliche Regeln kann man in direkter Kommunikation miteinander abstimmen oder man lässt externe Tools darüber entscheiden (z.B. StyleCop).
  • Programmiert nicht einfach darauf los, sondern macht euch im Vorfeld immer erst Gedanken, wie ihr dies und jenes am besten umsetzen könnt. Im Vordergrund steht der Gedanke, Lösungen einfach aber auch flexibel und wartbar zu halten.
  • Bezüglich der grafischen Oberfläche solltet ihr euch zuerst ein Design skizzieren (meinetwegen mit Paint), dieses auf seine Benutzerfreundlichkeit prüfen, Comic Sans-Schriftarten entfernen und dann Stück für Stück umsetzen.
  • Nutzt Design Patterns wie das MVC für eure Applikation. Entwickelt objektorientiert. Auf beide Begriffe werdet ihr früher oder später noch treffen, während ihr eine Sprache lernt. Design Patterns gehen dabei schon etwas über die Grundlagen hinaus.  
dannyotti  29.03.2017, 18:23

Vielleicht als Tipp noch:

Wenn ihr Webseite und APP schreiben wollt, ist Js und HTML als Design das beste. Mit Phonegab bekommt man eine gute native App hin. Als Server wäre ein normaler HTTP Server oder ein Telnetserver eine gute Wahl. Zum Datenladen reicht meist ein POST Request auf einen Webserver mit PHP-Logik.

Zur Frage allgemein finde ich die beste Plattformunabhängige Sprache Python. Python ist besonders im Linuxbereich sehr verbreitet. Auch ist es möglich Python Code direkt in C zu kompilieren und eine Exe draus zu machen.

1
DataJockey  30.03.2017, 11:08

sehr gute ausführliche Antwort, obwohl ich nicht zu einer webapp raten würde. Aber das ist Ansichtssache.

...bei "Comic Sans-Schriftarten entfernen" musste ich schmunzeln. =)




0
Flo721 
Fragesteller
 05.04.2017, 15:33

Vielen Dank für die riesen Hilfe!! Wir haben schon mit viel gerechnet aber das sprengt auch unsere Vorstellungen. Wir werden das ganze trotzdem durch ziehen und früher oder später unsere App auf den Markt schmeißen.
Also danke nochmal!!

0

Wenn du es ausbauen willst, kannst du eine html App machen. Dann hättest du schon mal App und Webseite zusammen

Wenn ihre eine App bauen wollte die Plattformübergreifend ist habt ihr eigentlich nur die Möglichkeit ein sogenanntes WebApp zu bauen oder auf eine Plattform wie React oder Ionic zurückzugreifen. Oder eben alles nativ zu programmieren also mit Java (Android) und Swift oder Objective-C (iOS). Bei einem Web App und zum Teil auch React/Ionic müsst ihr euch darüber klar sein dass so ein App nie ganz das Look und Feel einer Nativ programmierten App hat. D.h. es wird mehr oder weniger den Look und Feel einer Website haben wobei moderne WebApps mit HTML5 ja schon sehr fancy sein können. Ja, um eine Web App zu programmieren braucht man mindestens HTML5/CSS und Javascript. Dazu noch so etwas wie Cordova/Phonegap um das ganze im App Container zu verpacken.

Die Server auf denen eure API läuft müsst ihr separat anmieten. Für die Serveranwendung braucht ihr wieder eine eigene Sprache wie Phyton, PHP oder auch Javacript mit Node.js.

Es ist auf jeden Fall ein weiter Weg bis zur eigenen App ohne Vorkenntnisse. Aber er lohnt sich.

Woher ich das weiß:Berufserfahrung – 20 Jahre Berufserfahrung

TL;DR Visual Studio, Xamarin, C#, php, mySQL, Mac, REST, MVC, (HTML, CSS)

Für ein App, welche auf Android und iOS laufen soll, kann man Xamarin mit Visual Studio verwenden. Die Programmiersprache wäre hier C#.

Dazu brauchst man auf jeden Fall einen Mac, mindestens zum kompilieren. Wir haben hier aber die Erfahrung gemacht, dass man besser gleich auf dem Mac entwickelt. Da läuft auch Visual Studio.

Benutzerinteraktion setzt immer eine Serverfunktionalität vorraus. Wir verwenden php7 als Serversprache und mySQL als Datenbank. Auf ein Web-Frontend kann man verzichten, sonst wäre hier noch HTML und CSS zu erlernen.

Der Server sollte, wie hier schon erwähnt, mit dem MVC Pattern einen REST Service bereitstellen. Keine Angst, dass sind nur ein paar Richtlinien, wie man sowas richtig aufzieht. =)

viel Erfolg!

Ihr werdet nicht "eine" Programmiersprache brauchen, ihr werdet für euere Idee ein dutzend an Programmiersprachen und Toolchains meistern müssen. Würde mit paar Trockenübungen in Java und Swift anfangen, dass sind schon mal die ersten Züge für Andoird und iOS programmierung. Die Linux und Web-Server Frage wird dann bei der nächsten Frage in 5 Jahren beantwortet. Gutes Gelingen!