1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

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

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von hotwert, 17.04.2010.

  1. hotwert, 17.04.2010 #1
    hotwert

    hotwert Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    66
    Erhaltene Danke:
    2
    Registriert seit:
    17.04.2010
    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.
     
  2. swordi, 17.04.2010 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    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.
     
  3. SeraphimSerapis, 17.04.2010 #3
    SeraphimSerapis

    SeraphimSerapis Android-Guru

    Beiträge:
    3,072
    Erhaltene Danke:
    1,138
    Registriert seit:
    27.02.2009
    Du wirst für gewöhnliche Android-Applikationen nicht um Java rumkommen.
    Kurz und knapp.
     
  4. hotwert, 17.04.2010 #4
    hotwert

    hotwert Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    66
    Erhaltene Danke:
    2
    Registriert seit:
    17.04.2010
    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?
     
  5. SeraphimSerapis, 17.04.2010 #5
    SeraphimSerapis

    SeraphimSerapis Android-Guru

    Beiträge:
    3,072
    Erhaltene Danke:
    1,138
    Registriert seit:
    27.02.2009
    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.
     
  6. Kranki, 17.04.2010 #6
    Kranki

    Kranki Ehrenmitglied

    Beiträge:
    3,831
    Erhaltene Danke:
    814
    Registriert seit:
    19.07.2009
    Tablet:
    Samsung Galaxy Tab 3 7.0 Lite
    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.
     
  7. swordi, 17.04.2010 #7
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    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
     
    hotwert bedankt sich.
  8. hotwert, 18.04.2010 #8
    hotwert

    hotwert Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    66
    Erhaltene Danke:
    2
    Registriert seit:
    17.04.2010
    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: 18.04.2010
  9. fetzer, 18.04.2010 #9
    fetzer

    fetzer Junior Mitglied

    Beiträge:
    37
    Erhaltene Danke:
    3
    Registriert seit:
    19.03.2010
    Phone:
    HTC Magic
    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: 18.04.2010
  10. garak, 18.04.2010 #10
    garak

    garak Ehrenmitglied

    Beiträge:
    8,270
    Erhaltene Danke:
    4,794
    Registriert seit:
    12.12.2009
    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.
     
  11. swordi, 18.04.2010 #11
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    naja - java ist auch weit weg von plattformunabhängigkeit.

    und die c syntax ist die gleiche wie java? wie kommst du dadrauf?
     
  12. fetzer, 18.04.2010 #12
    fetzer

    fetzer Junior Mitglied

    Beiträge:
    37
    Erhaltene Danke:
    3
    Registriert seit:
    19.03.2010
    Phone:
    HTC Magic
    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.

    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: 18.04.2010
  13. swordi, 18.04.2010 #13
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    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 :)
     
  14. garak, 18.04.2010 #14
    garak

    garak Ehrenmitglied

    Beiträge:
    8,270
    Erhaltene Danke:
    4,794
    Registriert seit:
    12.12.2009
    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.
     
  15. Mort, 19.04.2010 #15
    Mort

    Mort Android-Lexikon

    Beiträge:
    960
    Erhaltene Danke:
    262
    Registriert seit:
    16.11.2009
    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)

    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.
     
  16. garak, 19.04.2010 #16
    garak

    garak Ehrenmitglied

    Beiträge:
    8,270
    Erhaltene Danke:
    4,794
    Registriert seit:
    12.12.2009
    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!
     
    DieGoldeneMitte bedankt sich.

Diese Seite empfehlen