Java oder Kotlin?

Always start with Java if you are a beginner in android development.
Reason is that large community support is available for java but not for kotlin. Most of the third party libraries are also available in java but not in kotlin.
So it wants to help a lot to use Java in the initial phase.
Once you are familiar with core concepts then then you can start your journey with Kotlin.
 
Hello Ashely,

welcome in our community and thank you for your answer.
Pls note : We are a native speaken german community and pls write in german .



Thx a lot
 
@markus.tullius
In deinen Ausführungen steht jetzt aber nirgendwo etwas davon, dass es auf dem Device einen Unterschied macht, dass die App usprünglich mit Java oder Kotlin geschrieben wurde.
Natürlich ist die Sprache für einen Compiler nicht egal, Java braucht einen Java Compiler, Kotlin einen Kotlin Compiler. Aber das passiert ja schon auf dem Rechner.
Dem dex ist es völlig egal ob es vorher Kotlin oder Java war. Davon ist nichts mehr übrig (mal abgeshen davon, dass die verschiedenen Hochsprachen-Compiler vielleicht verschieden optimieren)
D.h. der JIT oder OAT Compiler auf dem Gerät hat keine Ahnung mehr von Kotlin oder Java.

(wie oben allerdings erwähnt wird bei Kotlin noch eine zusätzliche lib mit eincompiliert, die bestimmte kotlin Funktionen umsetzt, die nicht im Standard SDK vorhanden sind. Eventuell meintest du auch das mit den Schnittstellen, die auf Java ausgelegt sind. Diese zusätzlichen APIs liegen aber ganz normal im dex vor, als wären sie dein Code oder eine von dir genutzte lib.)
 
Hi Deek,

es gibt keine Kotlin Apps. Aktuell gibt es Java und Hyprid Apps (Kotlin und Java). Android hat eine Laufzeitumgebung (Runtime) und die ist in Java geschrieben (ASOP).

Aktuell stellt sich nur die Frage, ob du eine App programmieren willst, die eine oder zwei Hochsprochen benutzt. Der Bytecode ist auch kein Maschinencode, sondern nur eine Vorstufe davon. Der Dex Code muss noch in Maschinensprache übersetzt werden. Und selbst dann spielt Java die erste Geige. Der GC zum Beispiel für Java optimiert worden.

Android komplett auf Kotlin umzustellen wird Google viel Zeit und Geld kosten. Und warum sollte Google ein Kind von JetBrain fördern. Da ist es wahrscheinlicher, dass Google auf ein Projekt setzt, dass nichts mit Java zu tun hat - z.B. Fuchsia. Und Fuchsia unterstützt Sprachen mit moderneren Konzepte als Kotlin (Go, Dart, Swift usw).

Ich freue mich schon auf meine erste App in GO. Endlich kann ich dann dieses langweilige und starre Klassenkonzept von Java und ver in die Tonne kloppen.
 
:lol::lol::lol:

Und du glaubst wirklich, das die Klasse Activity, ActivityThread oder ZygoteInit in Kotlin vorliegt? Schau mal in den Code der AOSP.


Das Konzept der Kapselung und der Vererbung ist doch nicht so schwer. Zu den Thema gibt es gute Bücher für Anfänger.
 
Wie viele Android-Apps hast du schon selbst entwickelt?

In welcher Sprache das Framework geschrieben ist, interessiert hier erst mal nur am Rande. Das von Windows wird auch mehr und mehr in C# entwickelt und ich kann trotzdem mit Delphi darauf zugreifen. Anscheinend liegen Interfaces sprachunabhängig vor. Das wüsstest du, wenn du dich mit Code auch nur annähernd so gut auskenntest wie mit dem Einfügen von Lachbildchen. Ebenso ist es selbstverständlich möglich, eine komplexe Androidapp zu entwickeln, ohne eine einzige Zeile Javacode schreiben zu müssen.
 
@Rosa Elefant

Wie viele Android-Apps hast du schon selbst entwickelt?

Ich glaube jetzt fast, du hast dich ein wenig zu weit aus dem Fenster gelehnt :)
Eines kann ich Dir versichern : @markus.tullius entwickelt hauptberuflich schon seit vielen vielen Jahren und ist einer unserer wenigen Spezialisten hier.

Dein Vergleich mit c# und delphi hinkt und ist so nicht auf das Thema hier anzuwenden , da gibt es grosse Unterschiede.
Es sind lediglich standardisierte Schnittstellen die da verwendet werden. Ob es Pipes, Interrupts, exported Funktions oder Events sind - spielt überhaupt keine Rolle.
Unter Android dann halt eben Intents, Events oder Broadcasts und auch Libraries.


Und bevor du diese Aussage auch in Zeifel ziehst :
Auch ich entwickle schon seit einigen Jahrzehnten hauptberuflich - und das in der Hauptsache C/C++.auf Desktops/Servern
und natürlich auch zu diesem Thema.


Kotlin ist nur ein Interpreter/Bytecode , der letztendlich für eine JVM - also eine Java-Virtuelle Maschine umgesetzt wird.
Ergo : Viele Kotlin Funktionen/Syntaxe sind (vereinfacht gesprochen) lediglich Wrapper/Schnittstellen für eine Ur-Java Funktion.
Wir können jetzt weiterspinnen : Von dort aus geht es wieder in C und von dort aus in Assembler und Linux erfreut sich.
 
  • Danke
Reaktionen: jogimuc und markus.tullius
Ah, daher seine souveräne Reaktion. Ich könnte ja jetzt einen Rüsselvergleich anstellen, wer von uns Dreien mit mehr Sprachen seit mehr Jahren programmiert, aber das ist vermutlich eher ein Thema für eine private Unterhaltung. Ich kann dir aber versichern, dass ich auch weiß, wovon ich rede - und wenn mir einer mit GeROFLe statt einer argumentativen Auseinandersetzung kommt, kann ich ihn von vornherein schon nicht leiden. Naja, Netiquette halt.

Fakt bleibt, dass der Fachprofi Dünnpfiff redet, wenn er impliziert, man könne keine Kotlinapps programmieren, ohne explizit Java nutzen zu müssen, und genau das gibt seine Formulierung (wahrscheinlich absichtlich) her. Natürlich kann man das. Worauf das intern runtergebrochen wird, ist dem Entwickler erst mal vollkommen egal. Ich habe schon Apps geschrieben, für die ich keine Zeile Java können musste, denn außer dem (außer in Delphi ;)) unvermeidlichen XML waren da nur Kotlindateien drin.

Wir sind doch hier ein Hilfeforum. Der Fragesteller wollte wissen, ob er Java oder Kotlin lernen soll. Ich sage: Kotlin, Java wird er vermutlich nie brauchen - auch, weil er Javaklassen aus Kotlin heraus benutzen kann, ohne dafür die Syntax zu wechseln. Dass das der JVM zu verdanken ist: Geschenkt. Die ethischen Auseinandersetzungen zu den Interna sind möglicherweise in einem anderen Thema besser aufgehoben, die helfen ihm nicht. :)
 
Fakt bleibt, dass der Fachprofi Dünnpfiff redet, wenn er impliziert, man könne keine Kotlinapps programmieren, ohne explizit Java nutzen zu müssen, und genau das gibt seine Formulierung (wahrscheinlich absichtlich) her. Natürlich kann man das. Worauf das intern runtergebrochen wird, ist dem Entwickler erst mal vollkommen egal.

Na jetzt kommen wir aber langsam an einen Punkt heran, bei dem ich dich bitten möchte , deine Worte ein wenig zu wählen .
Dies bitte ich dich als Mod - das geht weitaus höflicher und respektvoller.
 
Ich finde " :lol: :lol: :lol: " jetzt auch nicht besonders höflich und respektvoll, aber ich bin hier auch kein anerkannter Fachelefant und muss mir das daher anscheinend gefallen lassen.
 
Bau den Beitrag mal um - wegen unpassender Kommentare.

---

Usinn - Ohne Kommentare ist jetzt westlich höflicher? Und du beschwerst dich dann über die Reaktion?

Die größte App an der ich mit entwickelt habe, haben aktuell 5.000.000+ User im Play Store heruntergeladen. :)
Ich weiß nicht, wie viele Android Apps du entwickelt hast. Es interessiert mich auch nicht, weil es nichts über deine oder meine Fähigkeiten aussagt. Ich kann mir jetzt hundert App durch Android Studio erzeugen lassen, bin ich dann ein besserer Programmierer? Ein guter Entwickler wird man nicht nur aus Erfahrung. Man wird nur besser, wenn man mal nach schaut, wie es funktioniert. In der IT ist immer alles neue die Krönung der Schöpfung. Und die meisten wiederholen den FooBar, ohne mal nach zu gucken, ob es auch wirklich stimmt.

--

Jede Android hat eine main() Methode. Die Klasse mit der Methode befindet sich im AOSP. Der ASOP ist aktuell in Java geschrieben.

Das heißt, egal ob Framework oder nicht, der Kotlin -Teil der App wird von Java Code aufgerufen. Auch viele Klassen, wie Activity usw, von denen du ableitest, liegen in Java vor..

Das ganze Grundgerüst jeder aktuellen Android Apps, (die auch in Play Store veröffentlicht werden kann) ist aktuell in Java geschrieben. Er gibt zur Zeit keine App ohne Java.

Weshalb hat Google doch so viel Ärger mit Oracle. Mit der Einführung von Kotlin werden sie nicht die Java API los. :)
 
Zuletzt bearbeitet:
markus.tullius schrieb:
Usinn - Ohne Kommentare ist jetzt westlich höflicher? Und du beschwerst dich dann über die Reaktion?

Die Moderation scheint ein unhöfliches Auslachen durch dich eher zu dulden als einen fachlichen Widerspruch durch mich.

markus.tullius schrieb:
Die größte App an der ich mit entwickelt habe, haben aktuell 5.000.000+ User im Play Store heruntergeladen. :)
Ich weiß nicht, wie viele Android Apps du entwickelt hast. Es interessiert mich auch nicht, weil es nichts über deine oder meine Fähigkeiten aussagt.

Und dein Verweis auf die fünf Millionen Nutzer soll also was bezwecken? Mir ist das wurscht, Code von mir steckt in deinem Kernel, deinem Texteditor und wahrscheinlich auch auf deinem Server. Habe ich das Rüsselfechten diesbezüglich jetzt gewonnen? Gut, dann wieder zum Thema zurück:

markus.tullius schrieb:
Ein guter Entwickler wird man nicht nur aus Erfahrung. Man wird nur besser, wenn man mal nach schaut, wie es funktioniert.

Da gehe ich mit. Der OP wollte aber wissen, in welcher Sprache er eine App am besten programmieren kann, nicht, welche Sprache er können muss, um zu verstehen, was unten drunter passiert. Da lautete die Antwort nämlich weder Java noch Kotlin. Ein gutes Android-Hilfe-Mitglied behält immer die Frage im Auge ... :)

markus.tullius schrieb:
Das heißt, egal ob Framework oder nicht, der Kotlin -Teil der App wird von Java Code aufgerufen. Auch viele Klassen, wie Activity usw, von denen du ableitest, liegen in Java vor..

... und du kannst sie nutzen, ohne Javacode zu verstehen oder gar schreiben zu können, was dafür spricht, dass es völlig ausreichend ist, als Androidneuling mit Kotlin anzufangen.

markus.tullius schrieb:
Das ganze Grundgerüst jeder aktuellen Android Apps, (die auch in Play Store veröffentlicht werden kann) ist aktuell in Java geschrieben. Er gibt zur Zeit keine App ohne Java.

Und damit auch keine ohne C, denn Java ist ja nicht in Java geschrieben. Aber dem Entwickler einer App, der die Frameworks erst mal nur nutzen will, ist das in der Theorie vollkommen egal - und das ist auch völlig in Ordnung so.

markus.tullius schrieb:
Weshalb hat Google doch so viel Ärger mit Oracle. Mit der Einführung von Kotlin werden sie nicht die Java API los. :)

Das habe ich auch nicht behauptet.
 
swa00 schrieb:
@Rosa Elefant
Ergo : Viele Kotlin Funktionen/Syntaxe sind (vereinfacht gesprochen) lediglich Wrapper/Schnittstellen für eine Ur-Java Funktion.
Wir können jetzt weiterspinnen : Von dort aus geht es wieder in C und von dort aus in Assembler und Linux erfreut sich.

Du hast noch den Schritt von Assembler nach Maschinencode vergessen ;) Langsam wird es hier mal richtig interessant. ;)


@Rosa Elefant - ich muss hier nicht schreiben oder antworten. Es macht mir Spaß, und es ist ein guter Anlass sich durch die aktuelle Doku zu wühlen. Man lernt nie aus. Daneben zu liegen, gehört zum Entwicklerleben (manche nennen es auch Bug). Etwas als Unsinn abzutun, impliziert das man es besser weiß. Entweder man ist so gut, oder man lässt es. Ist auch höflicher.
 
markus.tullius schrieb:
Etwas als Unsinn abzutun, impliziert das man es besser weiß.

Je nachdem, wie engstirnig man halt an die Sache herangeht.

Aus technischer Sicht ist es unmöglich, eine App ohne Java, C und Assemblercode zu schreiben.
Aus Entwickler-Sicht - angenommen, man möchte eine App schreiben und nicht gleich einen ganzen Kernel ... - kann man mittlerweile ein erfolgreicher Entwickler guter Apps werden, ohne jemals eine Zeile Javacode geschrieben zu haben und ohne einen Appbaukasten nutzen zu müssen.

Wir haben somit beide Recht. Ich habe allerdings die Frage des Themenerstellers beantwortet und du nicht. :D
Ich gehe jetzt dennoch mal ein Nickerchen halten. Wäre nett, wenn du nächstes Mal nicht alles änderst, wenn ich gerade geantwortet habe. Da stehe ich doch da wie ein Idiotofant... :rolleyes2:

Törö.
 
Rosa Elefant schrieb:
Und damit auch keine ohne C, denn Java ist ja nicht in Java geschrieben. Aber dem Entwickler einer App, der die Frameworks erst mal nur nutzen will, ist das in der Theorie vollkommen egal - und das ist auch völlig in Ordnung so.

Dem würde ich nicht widersprechen.Ist ja auch kein Unsinn. :).

---

Mein Interesse für die AOSP und Compiler (eher Decompiler) kommt von der Vorliebe meiner Arbeitgeber für ungewöhnliche Projekte. Teilweise musste ich kaputte Apps fixen, deren Sourcecode teilweise in jar vorlagen. Bei einer anderen Apps lag die komplette App nur als apk vorlag. Neuprogrammierung war leider keine Option. Dabei lernt man Dinge über Android und andere Entwickler, die man nie wissen wollte. Es waren medizinische Apps, und sie werden aktuell in der ambulante Pflege eingesetzt.
[doublepost=1535671086,1535670154][/doublepost]
Rosa Elefant schrieb:
Wir haben somit beide Recht. Ich habe allerdings die Frage des Themenerstellers beantwortet und du nicht. :D
Ich gehe jetzt dennoch mal ein Nickerchen halten. Wäre nett, wenn du nächstes Mal nicht alles änderst, wenn ich gerade geantwortet habe. Da stehe ich doch da wie ein Idiotofant... :rolleyes2:
.

Für das eine möchte ich mich entschuldigen. Es hat mir zwar Spaß gemacht es zu schreiben, aber es war nicht wirklich zielführend. Und das man eine App in Kotlin entwickeln kann war klar. Ob es Sinn macht, mag ich nicht beantworten. Den Teil über den du gestolpert bist, ging es mehr um Compiler. Ist wie immer ausgeartet. Finde ich aber nicht sinnlos, weil viel zu wenig App - Entwickler Android unter seiner Haube kennen.
 
  • Danke
Reaktionen: Rosa Elefant
markus.tullius schrieb:
Jede Android hat eine main() Methode. Die Klasse mit der Methode befindet sich im AOSP. Der ASOP ist aktuell in Java geschrieben.
Kannst du mir einen Link zum AOSP geben wo eine main Methode existiert? Das ist ernsthaftes Interesse.

Das heißt, egal ob Framework oder nicht, der Kotlin -Teil der App wird von Java Code aufgerufen. Auch viele Klassen, wie Activity usw, von denen du ableitest, liegen in Java vor..

Das ganze Grundgerüst jeder aktuellen Android Apps, (die auch in Play Store veröffentlicht werden kann) ist aktuell in Java geschrieben. Er gibt zur Zeit keine App ohne Java.

Und das sehe ich immer noch anders als du. Vielleicht ist das Wortklauberei.
AOSP ist in Java geschrieben, CHECK.
Auf dem Gerät (und davon rede ich die ganze Zeit) ist aber nach wie vor nichts von Java zu sehen, noch nichtmal der Bytecode. Das ist alles schon dex.
Und um weiter nitpicking zu betreiben: Wenn ich meine App in Kotlin schreibe, aber keinerlei libs verwende (auch keine Support lib), sondern rein die Android Activity/Fragment Klassen, dann ist in meiner APK keine Zeile Code, die vorher als Hochsprache mal Java war. Die Framework Klassen sind ja nicht mit einkompiliert. D.h. ich hätte eine App die vor dex keine Zeile Java Code gesehen hat.

Ich denke unsere Diskussion rührt daher, dass wir das von verschiedenen Standpunkten aus betrachten. Ich bin auch in einem Bereich tätig in dem ich fast täglich am decompilen bin und mir den AOSP Source zu Gemüte führe, daher denke ich eigentlich, dass unser Wissen hier ziemlich ähnlich ist. Deswegen kann ich mir nur vorstellen, dass wir konzeptionell gerade aneinander vorbei reden.

Weshalb hat Google doch so viel Ärger mit Oracle. Mit der Einführung von Kotlin werden sie nicht die Java API los. :)
Nein, aber die Java APIs haben erstmal nichts mit der Sprache zu tun. Sie hätten auch die Java APIs kopieren können und als Hauptsprache Scala verwenden können.
 
  • Danke
Reaktionen: Rosa Elefant

Ähnliche Themen

D
Antworten
17
Aufrufe
409
datNeMo
D
O
  • ortech
Antworten
7
Aufrufe
696
jogimuc
J
Helmut1A
  • Helmut1A
Antworten
7
Aufrufe
1.128
Helmut1A
Helmut1A
Zurück
Oben Unten