[APPs] Java (Android) oder C# (Windows)?

Teiby

Lt. Commander
Registriert
Sep. 2008
Beiträge
1.734
Ich habe momentan relativ viel Freizeit und möchte die Zeit zum lernen einer neuen Programmiersprache verbringen. Ziel soll es sein, eine "App" für Smartphones/Tablets zu programmieren. Nur bei der Plattform bin ich mir noch unsicher.

Stehe also zwischen der Wahl: Java für Android oder C# für Windows (WP8).

Ich habe schon etwas Erfahrung mit C++ (nur hobbymäßig aber bald auch schulisch) was für Windows spricht. Aber anderseits hab ich ein Android Smartphone und Tablet. Mit WP kenn ich mich gar nicht aus.

Was für Android spricht:
+ meistgenutzte Betriebssystem für Smartphones und Tablets
+ viel Erfahrung mit Betriebssystem und Testmöglichkeiten vorhanden

Gegen Android:
- schon viele Apps vorhanden
- wenig Bezahloptionen für Apps
- Java ist langsamer als C# oder C++

Für Windows:
+ noch relativ wenig Apps
+ mehr Bezahloptionen als Android
+ etwas Erfahrung in C++

Gegen Windows:
- kein Smartphone/Tablet vorhanden und daher keine Erfahrung
- wenig verbreitet
- zukunft unsicher


Eigentlich hab ich mich schon für Java entschieden, da es viel mehr Androidgeräte gibt und mir schon ein dickes Buch für Java gekauft. Anderseits hab ich auch noch ein Buch über C# da und zwei dicke über C++ - also genug Stoff um süchtig zu werden :freaky:

Ich möcht mir hier noch eine letzte Meinung einholen. Was meint ihr dazu? Was sagt ihr zu den Pro und Contras?
 
Zuletzt bearbeitet:
Ein paar Sachen, die vielleicht nicht ganz klar sind:
  • C# ist im Grunde ähnlicher zu Java, als zu C++
  • Mit dem Android NDK lassen sich Apps in C/C++ für Android schreiben.
  • Es ist in diesem Fall wenig sinnvoll, Anwendungen für Systeme zu entwickeln, zu denen man keinen Zugang hat.
 
Oder man nimmt was plattformunabhängiges wie PhoneGap oder SenchaTouch.
Es hängt aber auch davon ab, was die App können soll. Für einfach nur was anzeigen, reichen die beiden Frameworks locker aus. Sollen 's Spiele werden, dann muss man allerdings auf Plattformunabhängigkeit verzichten.
 
Also ich persönlich arbeite ja mit C# (Windows Phone) und finde die Entwicklungsumgebung dort sehr angenehm. Auch finde ich die Kombination mit Blend, wo du dir dein Interface quasi zusammen klickst sehr gut gelöst :)

Außerdem lernst du dann allgemein mit .NET zu arbeiten was vllt. mal bei "großen" Programmen für Windows (8) hilfreich sein kann. Zudem ist die Windows Phone Community sehr hilfreich und nett. Zu erwähnen wäre hier www.wparea.de

Zudem hast du bei Windows Phone auch die Möglichkeit HTML5 und JavaScript zu nutzen.
 
Zuletzt bearbeitet:
Stehe also zwischen der Wahl: Java für Android oder C# für Windows (WP8).

Ich habe schon etwas Erfahrung mit C++ (nur hobbymäßig aber bald auch schulisch) was für Windows spricht.

Gibt sich nicht viel. Java stammt von C ab. Im Detail sind ein paar Sachen anders, prinzipiell verstehst du das eine kannst auch das andere. Natürlich ist es erforderlich auch die Unterschiede zu kennen, Java ist eigentlich etwas einfacher weil man sich z.B. nicht um den Garbage Collector kümmern muss.

Gegen Android:
(...)
- wenig Bezahloptionen für Apps
Inwiefern? Kreditkarte, Telefonrechnung, seit kurzem auch mit GooglePlay-Guthabenkarten - die Karten sind neu und habe ich auch schon im Supermarkt gesichtet. Das Argument solltest du vielleicht noch mal überdenken, ohne die Guthabenkarten würde ich dir aber recht geben. Kreditkarte ist vor allem bei uns nicht so sehr verbreitet, was natürlich von Nachteil ist wenn du dich regional bewegen willst.
 
Wenn du kein WP8 (oder zumindest 7.1+) Gerät hast, solltest du nicht dafür entwickeln. Der Simulator ist ganz toll, hat aber manchmal so seine Eigenarten. Ohne Hardware sehe ich das eher kritisch. Für Android gilt natürlich das gleiche - sogar noch viel mehr dank diesem unglaublich langsamen Emulator ;)

Da du eh weder Erfahrungen mit Java noch C# hast, sollte es auch relativ egal sein, für was du dich entscheidest. Mir persönlich missfallen so einige Konzepte von Java und fühle mich dann immer ins tiefste Mittelalter zurückversetzt. Auf der anderen Seite hast du alle Freiheiten der Welt, was man von der WP8 API nicht behaupten kann.
Btw. kannst du für alle gängigen Systeme auch in C++ entwickeln.

Ich rate dir zu Android. Seit IntelliJ ein brauchbares Android-Plugin hat, gibt es auch eine gescheite IDE (steinigt mich ihr Eclipse-Fetischisten). Schau dir auch direkt von Anfang an RoboGuice an - minimiert den Frust auf ein Minimum :)

Solltest du dich trotzdem für Windows Phone entscheiden, tu dir selber den Gefallen und konkretisiere deine App-Idee und studier die Dokumentation bevor du anfängst. Die API ist sowas von restriktiv, dass man manchmal schon kotzen könnte. Andererseits, hast du erstmal eine fertig App, ist es ein leichtes daraus eine Windows 8 App zu bauen.

e-Laurin schrieb:
Oder man nimmt was plattformunabhängiges wie PhoneGap oder SenchaTouch.
Hast du damit mal gearbeitet?
Ich überlege derzeit mich einfach mal in so ein Framework einzuarbeiten, schrecke aber immer noch vor meinem persönlichen Vorurteil zurück, dass die nix taugen ;) Und bevor ich die Zeit verschwende lasse ich es lieber :D
 
e-Funktion schrieb:
Java stammt von C ab. Im Detail sind ein paar Sachen anders

Eine eigenartige Aussage. C hat nicht mal Klassen. Dafür hat Java keinen Präprozessor.

C ist eine nicht-objektorientierte, hardwarenahe Lowlevel Sprache mit manueller Speicherverwaltung, Java dagegen bietet nicht mal Pointer an und verwaltet den Speicher selbst.

Es sind also "im Detail ein paar Sachen anders"? Ich würde mal sagen, das sind deutliche Unterschiede.

Außer du bist der Meinung, dass zwischen einer Kartoffel und einer Banane im Prinzip auch keine Unterschiede bestehen.
 
@F_GXdx
Auf der einen Seite hat er ja recht, Java stammt wirklich von C ab bzw. hält sich an viele der Paradigmen von C.
Auf der anderen Seite...der Threadersteller sagt er hätte etwas Erfahrung mit C++ und es scheint als hätten einige leute immer noch nicht begriffen das C != C++ ist. Auch wenn ich C Libs in C++ nutzen kann, sieht ein BestPractice in C meist vollkommen anders aus als in C++(unabhängig von der ObjektOrientierung!)
Man sieht C++ Code auch direkt an wenn jemand vorher hauptsächlich mit C gearbeitet hat, meist bei so dingen wie wie Casts((int) statt static_cast<int>()) oder Typdefinitionen(#define statt typedef)

EDIT:;)
@Teiby
Wenn du ein wenig erfahrung mit C++ hast, dann könntest du dir auch mal Qt 5.1 anschauen. Dort gibt es nun Unterstützung für Android. iOS, Tizen, Jolla OS sollen folgen, Windows Phone glaube ich auch, außerdem setzt Ubuntu Phone auch auf Qt. Außerdem kannst du damit auch sonst für Windows, Linux und OS X Anwedungen schreiben.
Für Plattformunabhängige Entwicklung wird es bald(Wenn man sieht wie die aktuell Gas geben rechne ich so mit etwa einem Jahr bis iOS, Tizen, Jolla OS und Windows Phone voll unterstützt werden) vermutlich nichts besseres geben. ;)

qt-project.org
 
Zuletzt bearbeitet: (Was vergessen)
Ein Beispiel, was sich jetzt mit Java7 geändert hat, wäre z.B. switch.
Hier hatte man von C übernommen, das switch nur auf Werte andewendet werden darf welchen durch einen Integer Wert dargestellt werden können.
Mit Java7 hat man hier nun auch Strings zugelassen.
 
Man sieht auch in Java wer vorher mit C gearbeitet hat (so wie es bei mir der Fall war :D). Das mit der Objektorientierung ist ja nun nicht so der große Stress und Java macht's einem schon einfacher als C.

Wenn dir, F_GXdx, meine Aussage zu ungenau war kannst du gerne genauer differenzieren. Ich hab hauptsächlich meine Erfahrungen in C, ein bisschen CPP und danach mit Java gemacht - wobei C jetzt schon eine ganze weile zurück liegt. Mit den Pointern das Fällt mir z.B. erst jetzt auf - da hast du nicht mal so unrecht :D Den Wechsel von C zu Java fand ich relativ simpel - ich denke nicht, dass man mit CPP mehr Probleme haben wird. Allerdings hat man mit C wie du richtig bemerkt hast im Grunde mehr die Finger im Spiel.
 
holy schrieb:
Hast du damit mal gearbeitet?
Ich überlege derzeit mich einfach mal in so ein Framework einzuarbeiten, schrecke aber immer noch vor meinem persönlichen Vorurteil zurück, dass die nix taugen ;) Und bevor ich die Zeit verschwende lasse ich es lieber :D
Ich persönlich nicht, meine Kommilitonen haben sich aber damit beschäftigt. Einer von ihnen hat in seiner Bachelor-Arbeit beide Frameworks miteinander verglichen. Fazit der Arbeit damals: Sencha Touch kann mehr als PhoneGap
Beide machen aber im Prinzip dasselbe. Man schreibt eine Webanwendung in JavaScript, die auf eine Handy lokal ausgeführt wird. Die Sache ist allerdings, wenn man schon eine Webanwendung schreibt, dann kann man sie eigentlich gleich auf einem Webserver laufen lassen. Da braucht es keine App dafür, da reicht ein Browser aus.
 
e-Funktion schrieb:
Wenn dir, F_GXdx, meine Aussage zu ungenau war kannst du gerne genauer differenzieren.

Ja, wie gesagt. Kartoffel und Banane :schaf:
 
Fonce schrieb:
Ein Beispiel, was sich jetzt mit Java7 geändert hat, wäre z.B. switch.
Hier hatte man von C übernommen, das switch nur auf Werte andewendet werden darf welchen durch einen Integer Wert dargestellt werden können.
Mit Java7 hat man hier nun auch Strings zugelassen.

Die technischen Details der switch-Implementierung der jeweiligen Sprache haben nicht besonders viel mit Paradigmen zu tun, und so weit es Paradigmen betrifft, hat Java definitiv nicht viel mit C tun, noch stammt es von C ab. Das Java Ähnlichkeiten mit C++ hat, kann man schon eher behaupten. Aber C? Im Ernst?
 
Hab nun etwas gewartet und mir immer wieder die Beiträge hier durchgelesen. So ein Zwischending mit C++ hört sich ganz nett an, aber irgendwie hab ich das Gefühl, das es für ein Anfänger in der Appprogrammierung nicht so passend ist.

holy schrieb:
Ich rate dir zu Android. Seit IntelliJ ein brauchbares Android-Plugin hat, gibt es auch eine gescheite IDE (steinigt mich ihr Eclipse-Fetischisten). Schau dir auch direkt von Anfang an RoboGuice an - minimiert den Frust auf ein Minimum :)

Ich habe mich nun für Java (Android) entscheiden und auch schon Eclipse angeschaut (mein Lehrbuch gibt keine Vorgaben) und eigentlich ist Eclipse ganz nett (auf den ersten Blick im Vergleich zu Visual Studio). Sollte ich besser mit IntelliJ weitermachen, wenn ich Apps programmieren will? Welche Unterschiede gibt es?

Edit: Die Hilfe zeigt IntelliJ schonmal nicht an obwohl ich ihm den Link gegeben hab...
 
Zuletzt bearbeitet:
Die ADT sind für Eclipse gemacht. Wenn du eine andere IDE einsetzen möchtest, brauchst du auch mehr Erfahrung, da du dann sehr viel mehr manuell machen musst.

Das Android Studio, das irgendwann mal die Standard-IDE für Android werden soll (momentan noch Alpha), baut dagegen auf IntelliJ IDEA auf. Das könntest du natürlich auch verwenden, aber wie gesagt, noch ist es nicht fertig und enthält Bugs etc.
Dein verlinktes Buch empfiehlt übrigens EJE.
 
Zurück
Oben