Braucht man wirklich Java für die Android-Entwicklung?

hotwert

hotwert

Fortgeschrittenes Mitglied
198
Ich habe immer wieder gelesen das ich Java brauche um apps für Android zu entwickeln. Diese Sprache interessiert mich allerdings absolut nicht.

Da Android einen Linux Kern hat kann ich dann den meine Programme nicht in C schreiben?
Ich bin gerade übern C lernen und C läuft ja eig. auch überall.
 
da android programme in einer java virtual machine laufen, wirds wohl ohne java nicht gehen

das einzige was du machen kannst ist einfach direkt das native sdk aufzurufen und dort kannst du dann C schreiben.

warum man aber das komplizierte C nehmen soll, wenn man das komfortable und einfach zu lernende java haben kann ( außer bei zeitkritischen sachen ) ist mir schleierhaft.
 
Du wirst für gewöhnliche Android-Applikationen nicht um Java rumkommen.
Kurz und knapp.
 
Ja ich will eig. keine Apps schreiben sonden erstmal ein bisschen rumprobieren mit C.

So gut sind meine C Kenntnisse ja noch nicht aber ich will erstmal c lernen und dann c++ und später vll. mal Java.

Also kann mir mal jemand erklären wie ich C ausführen kann bzw. wie ich es compilieren kann das es auf Android läuft? Was brauch ich den nun und wo gibts das?
 
hotwert schrieb:
Ja ich will eig. keine Apps schreiben sonden erstmal ein bisschen rumprobieren mit C.

So gut sind meine C Kenntnisse ja noch nicht aber ich will erstmal c lernen und dann c++ und später vll. mal Java.

Also kann mir mal jemand erklären wie ich C ausführen kann bzw. wie ich es compilieren kann das es auf Android läuft? Was brauch ich den nun und wo gibts das?

Android NDK | Android Developers <- mit dem NDK kannst du Apps mit C schreiben - jedoch ist das eher für Geschichten wie OpenGL gedacht.

An deiner Stelle ich würde ich ganz einfach Java lernen.
 
SeraphimSerapis schrieb:
Android NDK | Android Developers <- mit dem NDK kannst du Apps mit C schreiben - jedoch ist das eher für Geschichten wie OpenGL gedacht.

An deiner Stelle ich würde ich ganz einfach Java lernen.

Würd ich auch sagen. Und nur in C schreiben kann man mit dem NDK ohnehin nicht.

Was man allerdings machen kann ist, Konsolen-Anwendungen für ARM-EABI cross-compilen. Da hab ich auf die Schnelle aber keinen vernünftigen Link zu und weiß nur, dass es prinzipiell geht (irgendwie sind bash und busybox schließlich für Android zustandegekommen), aber dafür gibts Google.
 
wenn du c lernen willst, dann brauchst du kein android telefon.

dafür reicht ein einfacher compiler und passt. das hat aber gar nichts mit android zu tun
 
  • Danke
Reaktionen: hotwert
swordi schrieb:
wenn du c lernen willst, dann brauchst du kein android telefon.

dafür reicht ein einfacher compiler und passt. das hat aber gar nichts mit android zu tun

Ja ich weis das ich für C kein Android brauche. Im moment hab ich auch nur nen normalen c++ compiler. Trotzdem will ich mal C auf meinen Milestone probieren.

Ich verstehe auch nicht warum ihr alle so dagegen seit. Ich will doch nur C auf meinen Milestone ausführen. Richtige Programme werde ich anfangs eh nicht schreiben.

Aber generell ist es unmöglich apps mit C zu schreiben? Aber ausführen kann mans?
 
Zuletzt bearbeitet:
hotwert schrieb:
Aber generell ist es unmöglich apps mit C zu schreiben? Aber ausführen kann mans?

Nicht unmöglich, eher umständlich. Die Programmentwicklung ist auf das deutlich einfachere und weniger mächtigere Java ausgelegt, was auch in Ordnung so ist. C in der Android-Programmentwicklung als Anfänger einzusetzen wäre in etwa so, wie wenn du mit einem Rennrad einen steinigen Berg überqueren willst: Funktionieren tut es, es ist aber bei weitem nicht so komfortabel, wie mit einem Mountainbike.
Wenn du C lernen willst, dann tu dies der Einfachheit halber erst einmal auf deinem heimischen Computer. Dort hast du die Libraries und gute, optimierte Compiler zur Verfügung, welche du auf einem Embedded-Device, wie einem Android-Smartphone, eben nicht hast. Wenn du dann deine ersten, kleinen Programme geschrieben hast, steht dem Sprung auf Android (zumindest in Bezug auf Consolenanwendungen) auch nichts mehr im Wege. Wahrscheinlich wird dir dann der Übergang wesentlich leichter fallen, da du schon auf etwas Erfahrung aufbauen und damit viele Linux/Android-Eigenheiten und -Probleme schneller überwinden kannst.
 
Zuletzt bearbeitet:
hotwert schrieb:
Ich bin gerade übern C lernen und C läuft ja eig. auch überall.
Hängt von den zur Verfügung stehenden Bibliotheken ab. Es ist ein weit verbreiteter Irrglaube, dass ein C-Programm so ohne weiteres auf jeder Maschine unter jedem OS läuft. Und genau weil das eben nicht so ohne weiteres funktioniert, hat sich James Gosling Java ausgedacht. Da braucht sich der Entwickler dann tatsächlich nur noch ganz wenige Gedanken zu machen, sein Programm auf verschiedenen Systemen ans Rennen zu bringen. Die Syntax ist übrigens die von C, d.h. wenn du die C-Syntax kannst, kannst du direkt in Java auf der Konsole loslegen.
 
naja - java ist auch weit weg von plattformunabhängigkeit.

und die c syntax ist die gleiche wie java? wie kommst du dadrauf?
 
swordi schrieb:
naja - java ist auch weit weg von plattformunabhängigkeit.
Jein. Java an sich kannst du auf den Plattformen einsetzen, auf denen du JVMs zur Verfügung stehen hast. Und genau diese JVMs bieten dir in aller Regel eine weitaus größer Funktionalität, als dies z.b. bei C der Fall ist. Somit kannst du ganze Programme ohne Probleme auf andere Plattformen portieren, ohne deren Sourcecode an die Gegebenheiten anpassen zu müssen.
Dazu kommt, dass C diese extra VM-"Schicht" nicht kennt und daher die Bibliotheken direkt aussen um den Sprachkern herum nachinstalliert werden müssen. D.h. jede einzelne Bibliothek muss auf das jeweilige System portiert werden. Hier ist der Aufwand und die Schwierigkeit meistens so hoch, dass man besser auf andere, schon vorgefertigte Bibliotheken zurückgreifen wird, was eine Anpassung des Sourcecodes des Programms mit sich zieht und man somit nicht mehr von Plattformunabhängigkeit sprechen kann. Im Grundkern würde ich C jedoch plattformunabhängig bezeichnen, auch, wenn die Anwendungsmöglichkeiten für Anfänger stark beschränkt sind.

und die c syntax ist die gleiche wie java? wie kommst du dadrauf?
Das ist falsch. Sie ist ähnlich, jedoch besitzt C viele Sprachkonstrukte, die Java nicht besitzt und umgekehrt. Besser sollte man sagen, dass man von C viel auf Java übertragen kann.
Das "Aussehen" des Codes (while/for/function/...) ist bei den hauptsächlich genutzten imperativen Sprachen ähnlich, im Gegensatz z.b. zu deklerativen Programmiersprachen. Eine kleine Umgewöhnung wird die Objektorientierung darstellen, die es bei C nicht gibt.
 
Zuletzt bearbeitet:
eben genau wegen der objektorientierung ist da wohl schon viel anders. mag sein, dass sie den gleichen ursprung haben, aber das is klar ;)

klar ist java mehr plattformunabhängig. das meinte ich auch nicht. aber die unabhängigkeit ist bei weitem nicht diese, die es sein hätte sollen :)
 
Leute, nehmt mir doch nicht den ganzen Spaß. Ich wollte dass hotwert sich mal Java anschaut und mir dann erklärt was da alles anders gegenüber C ist. Aber so... :rolleyes:

@swordi: Für normale Anwendungsprogramme ist Java (seit der 5) so etwas von plattformunabhängig, dass es eine wahre Freude ist.

@fetzner: Plattformunabhängigkeit bedeutet eigentlich, ein Programm nicht auf jeder Plattform neu kompilieren zu müssen. Dass das neuerdings mit C möglich sein soll, wage ich doch sehr zu bezweifeln.
 
garak schrieb:
@swordi: Für normale Anwendungsprogramme ist Java (seit der 5) so etwas von plattformunabhängig, dass es eine wahre Freude ist.
Wenn man einigermaßen hübsche und einfach programmierbare Oberflächen will, ist man aber auch schnell wieder bei Erweiterungen, die nicht überall laufen... (JNI)

@fetzner: Plattformunabhängigkeit bedeutet eigentlich, ein Programm nicht auf jeder Plattform neu kompilieren zu müssen. Dass das neuerdings mit C möglich sein soll, wage ich doch sehr zu bezweifeln.
Prinzipiell sollte es durchaus möglich sein, einen entsprechenden Bytecode auch aus C(++) zu zaubern. Man braucht dann halt entsprechende Libraries und Compiler. Bei .NET ist man ja auch nicht auf C# festgelegt. Wobei das bei C aber wahrscheinlich schon ein echter Krampf mit irgendwelchen Makros oder so wäre, um die Klassenstruktur nachzubilden.
Ob's den ganzen Aufwand wert ist, nur weil man lieber an struct, * und & verzweifelt als an Klassen und Reflection, ist wieder eine andere Frage... ;)
Außerdem hängt der Lernaufwand ja meist doch eher an den Libraries als an der Sprachsyntax.
 
Mort schrieb:
Wenn man einigermaßen hübsche und einfach programmierbare Oberflächen will, ist man aber auch schnell wieder bei Erweiterungen, die nicht überall laufen... (JNI)
Deswegen habe ich extra auf Version 5 hingewiesen. Da wurden nämlich zum ersten Mal die ganzen Erweiterungen, wie z.B. Systray direkt in den Standard aufgenommen. Und mit einem vernünftigen Layout (mein Favorit ist MigLayout) bekommst du so gnadenlos gute Swing-Oberflächen hin, dass du sie nicht mehr von nativen unterscheiden kannst. Und zwar wirklich plattformübergreifend!
 
  • Danke
Reaktionen: DieGoldeneMitte

Ähnliche Themen

D
Antworten
23
Aufrufe
2.312
Data2006
D
Y
Antworten
4
Aufrufe
1.171
swa00
swa00
5
Antworten
0
Aufrufe
1.104
586920
5
Zurück
Oben Unten