# Allgemeine frage bzg. Android



## Papuerus (30. Mai 2011)

Ja ich dachte da es nicht Android spezifisch ist, also direkt etwas mit Programmierung für Android zu tun hat packe ich es hier hinein, ich hoffe es ist "passend".

Es geht um folgendes, ich würde gerne irgendwann (lerne mich gerade so erst in Java ein)
für Android geräte unter anderem APPS schreiben ect.....

Jetzt gibt es für mich allgemeine Verständnisprobleme, was man dafür am besten benutzt, denn es gibt ja z.B. das Android SDK was ganz offensichtlich dafür bestimmt ist

Dann tauchen aber auch dinge wie J2ME auf, was anscheinend auch bzw. grundlegend für mobile Geräte gedacht ist, an dieser Stelle wäre meine Frage: ist das allgemein für mobile Geräte und wenn ja hat es überhaupt noch eine Bewandtnis für Android Geräte, speziell für Smartphones und wenn ja, in wie weit kann man was genau damit realisieren, bzw. in welchen Bereichen ist es geeigneter als das SDK

Eine andere Frage wäre, ist es besser sich vollkommen auf die Android SDK '(oder eben J2ME) zu konzentrieren, die ja Java spezifisch funktioniert, oder sich lieber das NDK anzuschauen bzw. es sich auch anzuschauen, was als nächstes "auftaucht"
Also wäre die "native" Programmierung eher zu empfehlen?
Und wenn nein oder ja, wann ist was geeigneter...

lg
Papuerus


----------



## Marco13 (30. Mai 2011)

Ein bißchen Halbwissen: 

Android und J2ME haben nichts miteinander zu tun, außer, dass sie primär für Mobile Geräte sind. J2ME war AFAIR Sun's versuch, auf mobilen Geräten Fuß zu fassen, hat aber nicht den gewünschten Impact gehabt... Soweit ich weiß ist J2ME am sterben (zuckt noch manchmal, aber ist nichts im Vergleich zu Android)

Ein bißchen Dreiviertelwissen:

Das NDK braucht ein "normaler" Programmierer wohl nie. Es kann spezielle Situationen geben, wo man aus Gründen der Performance oder Hardwarenähe (und damit auch Hardwarespezifsichkeit) das NDK verwenden will, aber es ist üblicherweise nicht das erste, womit man anfängt - und wenn, dann ist es letztendlich "normales" C/C++, mit ein paar Einschränkungen der Funktionalität. Die API von Android an sich ist da schon ein dickeres Brett, wo man mehr Zeit investieren kann.


----------



## Papuerus (31. Mai 2011)

Vielen dank für die schnelle Antwort

was ist denn hardwarespezifisch, also kann ich darunter verstehen wenn ich jetzt ein Spiel oder etwas in der Art programmieren will?

Ich werde mich dann auch mal auf das SDK konzentrieren


----------



## Marco13 (31. Mai 2011)

Mit "Hardwarespezifisch" meinte ich bestimmte Funktionen, die vielleicht durch das SDK nicht angeboten werden. Das bezieht sich notwendigerweise auf Spiele, auch wenn dort zumindest potentiell einige Anwendungsmöglichkeiten bestehen. Wirklich spezifisch wird sowas wie What is the NDK? | Android Developers auch nicht, aber wenn man Zeitkritisch "viele" Daten verarbeiten muss, ist es vielleicht mal einen Blick wert.


----------



## Papuerus (31. Mai 2011)

Und wenn ich dann in C oder C++ programmiere, was sollte man sich denn eher ansehen, c oder c++, was hat mehr Umfang oder was ist für welche Zwecke nützlicher, bzw. was bedarf mehr Aufwand zum lernen oder ist das schon wieder eher eine andere Diskussion? *g*


----------



## Papuerus (31. Mai 2011)

Ok ich denke C oder C++ lernen?
das ist ganz nett um das zu klären, oder was meint ihr?^^

lg


----------



## maki (31. Mai 2011)

*verschoben*


----------



## Papuerus (31. Mai 2011)

Ah ok, danke, wie gesagt ich war mir nicht sicher ob solche Grundsatzfragen schon hier hinein gehören, hat sich ja dann auch geklärt 

lg


----------



## mjdv (31. Mai 2011)

Wieso willst du denn jetzt c++ lernen, wenn du dich gerade erst in Java einarbeitest?

Android programiert man in der Regel in Java, nur bei speziellen Ausnahmefällen nutzt man das NDK und somit c++, die dich aber als Anfänger in Android eher nicht interessieren brauchen.

J2ME brauchst du bei Android nicht, theoretisch könntest du auch einfach mal die viele Tutorials auf der Seite machen ^^


----------



## Spacerat (31. Mai 2011)

Also auf jeden Fall ist sogar das Java von Android her ein anderes, da Android die Dalvik-VM verwendet und von vielen Sun (bzw. Oracle) spezifischen Klassen der Standard API abweicht. So gibt es bei Dalvik z.B. kein awt, dafür aber gleich eine GL-Laufzeitumgebung ähnlich wie LWJGL (oder war's doch mehr JOGL?).
Das NDK wirst du brauchen, wenn du entweder wie gesagt hardwarespezifisch was coden willst oder in den diversen Versionen der Dalvik-VM noch nicht implementierte Systemfunktionen wie z.B. einige GL Funktionen verwenden möchtest.
Aber es auf jeden Fall beachtlich, was alles geht... Wenn man es schafft, seine Klassen für seine Apps so zu Kapseln, dass sie Dalvik- und Oracle-Gemeinsamkeiten halt gemeinsam verwenden und den Rest dann wieder plattformabhängig implementiert kann man sehr sehr viele Dinge auf eben so vielen Plattformen wieder verwenden. Spart sehr viel Programmierarbeit.


----------



## Papuerus (31. Mai 2011)

@mjdv
Die Arbeit an einem Videoeditor würde mich zum Beispiel in weiter Ferne interessieren, oder an einem Audiosequenzerprogramm für Android Geräte

Aber das liegt halt in weiter ferne, aber warum sollte ich mir nicht paralel zu Java C anschauen können?


----------

