# Allgemeine Fragen



## thor_norsk (28. Dez 2022)

Guten Morgen,

kann man mit Java gute Android Apps entwickeln wie Whatsapp, Telegram, bzw. Chat-Programme? Oder sollte man sich lieber Kotlin aneignen?
Ich möchte mir ein Buch kaufen und hätte gerne gewusst, ob Sinn macht, da im Internet wird viel erzählt, dass die mit Java viele Probleme 
hatten, daher sind die auf Kotlin umgestiegen???

Danke!


----------



## Robert Zenz (28. Dez 2022)

thor_norsk hat gesagt.:


> kann man mit Java gute Android Apps entwickeln wie Whatsapp, Telegram, bzw. Chat-Programme? Oder sollte man sich lieber Kotlin aneignen?


Ufff...



thor_norsk hat gesagt.:


> ...da im Internet wird viel erzählt, dass die mit Java viele Probleme
> hatten, daher sind die auf Kotlin umgestiegen???


Tu dir selbst einen Gefallen, verzichte auf die "fertigen Meinungen des Internets" zum groeszten Teil und mach' dir selbst ein Bild. Waehrend es viele valide Kritiken an Java (der Sprache) gibt, sind die im Internet meistens "wieso muss ich int final schreiben ich will nur val tippen lol" und "Typen weisz ich, die muss ich nicht hinschreiben". Ich persoenlich liebe Java _weil_ es so einfach und direkt zum lesen ist und keine Abkuerzungen in der Syntax hat. Zumindest in den Projekten die ich hatte war weder die Syntax noch die Tipparbeit derer noch das lesen von Code irgendwie ein Flaschenhals.

Um zu deiner ersten Fragen zurueck zu kehren, in Java werden Anwendungen fuer allen Plattformen geschrieben, Spiele, Datenbanken, High-Frequency-Trading Anwendungen, Server-Systeme welche _wirklich_ Leistung bringen muessen, ERP Systeme in Groeszen die einem den Kopf verdrehen und ich wette es gibt sogar irgendwo ein Projekt um die Sache auf Echtzeit-Betriebssysteme (harte) zu bringen. Also ich denke, Java (und die JVM) sind dafuer geeignet, ja.

Ich glaube @KonradN war zuletzt von Kotlin begeistert und hat es probiert im Vergleich, er kann dir da sicher eine kurze Meinung geben. Einen Vergleich kannst du dir ja selbst heraussuchen, also wo die Unterschiede zwischen den Sprachen liegen.


----------



## KonradN (28. Dez 2022)

Robert Zenz hat gesagt.:


> Ich glaube @KonradN war zuletzt von Kotlin begeistert


Nee, da täuschst Du Dich. Aber ich habe es auch schon ausprobiert. War vor einiger Zeit mal der Meinung, dass es die bessere Variante sei. Aber es kam dann sehr schnell eine Ernüchterung. Auch dort wird nur mit Wasser gekocht.

Die Probleme mit Java waren in erster Linie juristischer Natur. Oracle steckt da halt dahinter (da sie Sun übernommen haben) und Oracle ist bekannt für seine Anwälte. (Davon können auch Kunden viel erzählen!). Und Google hatte die Wahl: Will man weiter mit Oracle Produkten was machen oder will man da mit einer Firma zusammen arbeiten, deren KnowHow man für Android Studio genutzt hat und die halt eine Sprache entwickelt haben, die halt einige Neuerungen hat gegenüber Java. (Wobei Java sich dann auch weiter entwickelt. Man muss nur nicht jeden Scheiß mitmachen  )

Das generelle Problem ist, dass Java und Kotlin nicht wirklich so Multiplatform sind (geht auch, aber das muss man sich im Detail ansehen. Das wäre dann explizit nicht developer.android.com!). Und Google hat da auch ein eigenes "Pferd im Stall": Flutter mit der Programmiersprache dart.

Wenn es um das Thema Sprache geht: Da sehe ich deutlich bessere Ansätze. Der Pfad der klassischen reinen OO Entwicklung wie in Java ist verlassen. Vererbung gibt es, aber das ist Sache der Entwickler. Du kannst eien Klasse richtig erben, nur das Interface der Klasse nehmen oder einfach den "Inhalt der Klasse Dir aneignen". Das sind ganz interessante Ansätze. Und das ziel ist Multiplatform - also egal was: Mobile Geräte (iOS, Android), Desktops (Windows, Mac, Linux) oder einfach im Browser. Sowas kann man sich ansehen und das nutzen.

Aber wenn man in den Bereich geht: Muss es so eine Nische sein wie Flutter? Sowas gibt es von vielen Seiten. Xamarin wäre da im .Net Umfeld zu nennen. Aber der große Platzhirsch ist und belibt HTML mit Javascript und CSS. JavaScript kann man noch mit Typescript ersetzen und dann ist man extrem gut aufgestellt. Das ist aus meiner Sicht derzeit der Hauptweg für Frontends.
Auf die Mobilen Geräte kann man das mit Wrappern bekommen. Apache Cordova fällt mir da direkt ein.
Auf Desktops wären Wrapper wie Electron zu nennen (Produkte wie Visual Studio Code nutzen es!)
Und im Web ist es eh zuhause.

Und ganz wichtig: Die Wrapper können entfallen - dazu gibt es PWA (progresisve web application) und Webassembly die da sehr interessant sind. Es braucht also keinen AppStore und Co. Lediglich ein Browser, mit dem man auf die Webseite geht und da muss der Anwender nur sagen: "Hey - das hätte ich gerne als App." (Hat aber Einschränkungen was die Nutzung des Devices angeht!)

Das wären so ein paar Dinge, die mir so auf Anhieb einfallen.

Generell würde ich empfehlen, die Anzahl der Sprachen erst einmal gering zu halten und diese dafür zu meistern. Wenn Du java schon kannst und Du nur Android willst: Nutze es um eine Android App zu schreiben. Kein Grund, da alles neu zu lernen!


----------



## Jw456 (28. Dez 2022)

Hallo
Was sagt denn der Meister zum Thema Coroutins in Kotlin?

Da Asynctask ja in Android deprecated ist wird Coroutins empfohlen. Ja es gibt die kaschieren alternativen in Java und Kotlin.
Aber etwas Vergleichbares in Java zu Coroutine kenne ich nicht.


Auch finde ich die Anwendung von Lambdas in Kontlin genialer als in Java.
Daten Klasse ist auch genialer als Record in Java.


Ich finde es gibt schon ein paar Verbesserungen in Kotlin im Vergleich zu Java mit Android. Augenmerk ist hier Kotlin Android.
Auch wird es immer mehr das neue Tutorial nur noch in Kotlin angeboten werden.


Ob man aber jetzt umsteigen sollte um mal eine App zu schreiben das muss jeder selbst entscheiden.
Große dauerhafte Projekte vielleicht ja.


----------



## KonradN (28. Dez 2022)

Jw456 hat gesagt.:


> Aber etwas Vergleichbares in Java zu Coroutine kenne ich nicht.


Mit Java 19 sind da jetzt endlich auch die virtuellen Threads gekommen. Ob man das braucht oder nicht muss jeder für sich überlegen. 



Jw456 hat gesagt.:


> Auch finde ich die Anwendung von Lambdas in Kontlin genialer als in Java.


Da wüsste ich jetzt nicht auf Anhieb, was Du da genau meinst. Was genau ist da besser als in Java?



Jw456 hat gesagt.:


> Daten Klasse ist auch genialer als Record in Java.


Ich bin hier weiter ein Fan von Lombok. Das schlägt alles. Da hat man halt das genau bekannte Schema und hat die volle Kontrolle so notwendig.



Jw456 hat gesagt.:


> Ich finde es gibt schon ein paar Verbesserungen in Kotlin im Vergleich zu Java mit Android.


Also auch ohne das Android - es gibt ganz klare Verbesserungen. Das ist auch eigentlich normal, da es einfach eine neuere Sprache ist. Wäre es nur ein "Abklatsch", dann wäre es ja auch sinnlos. Da bitte meine Kritik nicht missverstehen!

Und bei den ganzen Dingen, die Kotlin bietet: Java zieht da langsam teilweise nach oder es gibt Alternativen umd sowas auch in Java (halbwegs) komfortabel zu erreichen. Die Frage ist also schlicht: Ist der Vorteil so hoch, dass ein Wechsel Sinn macht? Und da geht es halt nicht um reine Sprachfeatures sondern da kommen auch so Dinge wie: Wie sieht es auf dem Markt aus? Also ganz platt ein: "Was nützt mir eine Expertise in Kotlin, wenn ich dann kein Projekt habe?"

Ich sehe also auch einige Dinge. Operator Overloading! Das alleine ist schon wichtig. Dann wäre der ganze Scheiß hier im Forum von wegen "Strings vergleicht man mit equals" obsolet!  BigDecimal Berechnungen - wem streuben sich da nicht die Nackenhaare?

Was etwa sumstritten ist: Extension Methods. Ich finde es einfach genial. Diese ganzen StringUtils und so nerven. Man braucht ein zusätzliches Verhalten von String, dann soll man es doch String geben!

Achtung: Das hilt NICHT bei Libraries wie Apache Commons. StringUtils gibt es ja bei einigen Libraries. Da kommt es zu Konflikten. Aber in Teams ist das einfach genial. Man hat ein Team Framework und da ist dann so Kleinkram mit drin. Dann hat String in eigenen Projekten gewisse Methoden mehr. Das ist deutlich besser lesbar. Also ja - wenn man damit bewusst umgeht, dann ist das auch genial!

Also ganz klar: Kotlin ist alles andere als Schlecht. Und Kotlin Native und so geht auch den richtigen Weg. Da auf keinen Fall missverstehen, wenn ich da teilweise kritische Worte finde. Es ist halt kein Allheilmittel. Es mag Dinge bezüglich null vereinfachen (man braucht halt kein SpotBugs mit Annotations für Meldungen zu NPEs) aber das Problem ist: Die, denen dieses Feature dann ach so wichtig ist und die das als Argument gegen Java sehen, die haben dann in Ihren Projekten keine statische Codeanalyse? Da fühle ich mich dann ehrlich gesagt etwas verarscht.

Da erzählt mir jemand, dass mein Türschloss unsicher ist. Zeigt mir seine tolle sichere Tür ... Nur direkt neben der Tür ist ein riesen Loch in der Wand. Ja, durch seine Tür kommt kein Einbrecher so einfach ... aber wozu auch - der geht ja durch das Loch neben der Tür ....

Das vielleicht einfach zur Verdeutlichung. Es geht also immer um deutlich mehr als reine Sprachfeatures.


----------



## thor_norsk (28. Dez 2022)

Ich war gestern so heiss auf das Buch, habe mir ein gebrauchtes Buch in sehr gutem Zustand bestellt (App-Entwicklung  mit Java). Ich möchte Alles mit Java umsetzen, und werde wenn Zeit übrig bleibt Kotlin lernen, einfach zum vergleichen. Ihr habt Recht! Ein Beispiel wäre für mich persönlich die Sprache Python, Klammern werden durch Einrückungen ersetzt, ich finde Java mit Klammern 100 x besser als Python.
Ich hatte paar Mal Einrückungen vergessen und permanent Fehler angezeigt, hat irgendwie genervt.
Da Kotlin JVM verwendet und Codes etwas schlanker sind als  bei Java, vor Allem haben die angeblich Null-Pointer-Exception Fehler behoben, bzw weg gelassen. 

Ich wünsche euch einen guten Rutsch ins neue Jahr.


----------



## Jw456 (28. Dez 2022)

thor_norsk hat gesagt.:


> Allem haben die angeblich Null-Pointer-Exception Fehler behoben, bzw weg gelassen.


Weg gelassen haben sie es nicht vermindert würde ich sagen.
Denn du kannst eine Variable auch Nullable erstellen.
val a: Int? = ...


----------



## Jw456 (28. Dez 2022)

KonradN hat gesagt.:


> Mit Java 19 sind da jetzt endlich auch die virtuellen Threads gekommen. Ob man das braucht oder nicht muss jeder für sich überlegen.


Ja das ist Richtig aber leider arbeitet Android Studio noch mit OpenJDK 16.


----------



## yfons123 (28. Dez 2022)

thor_norsk hat gesagt.:


> Da Kotlin JVM verwendet und Codes etwas schlanker sind als bei Java,


es gibt viele sprachen die sich in java byte code kompilieren lassen
kotlin und java sind nur 2 davon


----------



## thor_norsk (28. Dez 2022)

Eigentlich JavaFX kann Alles. Man kann CSS einbinden, JSON , und SceneBuilder Alles spielerich zusammenstellen (Label, Button, ...) und später in dem FXMLController Alles steuern.  Java hat bisschen scheisse gebaut. Swing Support bis mindestens 2026 deutet auf das Ende oder ??? 
Ich denke ca. 2028-2030 ist mit Swing vorbei.
Vor Allem Firma Gluon verwaltet JavaFX , bzw. JavaFX von Oracle abgekauft.  Die Firma Oracle hätte lieber ein eigenes IDE mit Swing & FX entwickeln sollen, wie z.B. TurboSwingFX oder JetSwingFX IDE .🤣


----------



## thor_norsk (28. Dez 2022)

Was sind virtuellen Threads? Bitte einfach erklären. Danke


----------



## yfons123 (28. Dez 2022)

thor_norsk hat gesagt.:


> Swing & FX


oder man nennt es uhmmm lass mich raten uhhh... "Scenebuilder" das wäre doch was 

es gibt das schon nur mit dem unterschied dass es nicht in der IDE ist wie bei Visual Studio sondern ein extra programm


thor_norsk hat gesagt.:


> JSON


jede sprache hat in der standard bibliothek einen json parser, was du wohl meintest ist eine Javascript engine die Javafx hat, das war ja auch der "GROSSE SINN" von javafx "rich internet applications" zu bauen, also websiten einzubinden...also quasi einen browser ... joaaa


----------



## Jw456 (28. Dez 2022)

thor_norsk hat gesagt.:


> Was sind virtuellen Threads? Bitte einfach erklären. Danke


mit etwas suche
https://www.happycoders.eu/de/java/virtual-threads/








						Java 19: Das sind die neuen Features!
					

Java 19 ist da! Das neue JDK-Release bietet spannende Features, etwa Structured Concurrency und Virtual Threads aus Project Loom.




					entwickler.de


----------



## KonradN (28. Dez 2022)

thor_norsk hat gesagt.:


> Swing Support bis mindestens 2026 deutet auf das Ende oder ???


Nein, das wäre ja nur kritisch, wenn man den Support benötigen würde. Wenn Oracle den Support einstellt, dann wäre meine Vermutung, dass Swing auch abgegeben wird und dass dann die gleiche Scheiße abgeht wie mit Java EE. Dann ändert sich halt der Namespace weil Oracle Java ans Marke betrachtet, die man nicht verwenden darf. (Ja, Java EE wurde abgegeben, aber java als namespace durfte nicht weiter verwendet werden. Daher wurde alles umbenannt zu jakarta ... Evtl. sollte eine Foundation ein OpenJDK nehmen und als Jakarta Development Kit weiter betreiben. Also einfach Oracle komplett den Rücken zukehren. Guten Support für Firmen kann auch von anderen Firmen geleistet werden. Dann wird das hier halt das Jakarta Forum ...)



thor_norsk hat gesagt.:


> Vor Allem Firma Gluon verwaltet JavaFX , bzw. JavaFX von Oracle abgekauft.


Nein, das habe ich anders verstanden. JavafX wird offiziell immer noch von Oracle verwaltet. Gluon hat da aber sein eigenes Repository das auch automatisch synchronisiert mit dem OpenFX Repository. Da ist also nichts mit abgekauft oder so. Gluon ist halt nur am open source Teil dran halt ähnlich wie z.B, die Eclipse Foundation mit irgendwelchen Erweiterungen (wie z.B. J9 das da von IBM beigesteuert wurde).



thor_norsk hat gesagt.:


> Was sind virtuellen Threads?





			https://blogs.oracle.com/javamagazine/post/java-loom-virtual-threads-platform-threads
		


Es wurde schon viele Jahre beim Project Loom an eine Art leichtgewichtigen Threads gearbeitet. Dies ermöglicht durch leichteres und schnelleres Umschalten, dass es auch tausende Threads geben kann ohne dass die Performance einbricht.


----------



## mihe7 (28. Dez 2022)

thor_norsk hat gesagt.:


> Swing Support bis mindestens 2026 deutet auf das Ende oder ???
> Ich denke ca. 2028-2030 ist mit Swing vorbei.


Totgeglaubte leben länger. JavaFX wird seit zig Jahren als Swing-Nachfolger propagiert, so heißt es in den FAQs zu JavaFX:



			
				https://www.oracle.com/java/technologies/javafx/faq-javafx.html#6 hat gesagt.:
			
		

> 6. Is JavaFX replacing Swing as the new client UI library for Java SE?​
> Yes. However, Swing will remain part of the Java SE specification for the foreseeable future, and therefore included in the JRE. While we recommend developers to leverage JavaFX APIs as much as possible when building new applications, it is possible to extend a Swing application with JavaFX, allowing for a smoother transition.



Oracle hat "Oracle Java 8" sogar schon inkl. JavaFX ausgeliefert und es sah so aus, als sollte dieser Weg weitergehen: JavaFX als fester Bestandteil von Java, AWT/Swing raus.

Problem an der Sache:


			
				https://www.oracle.com/technetwork/java/javase/javaclientroadmapupdate2018mar-4414431.pdf hat gesagt.:
			
		

> Both toolkits are part of the Java SE Specification and core to many other toolkits and applications that build on top of them.



Im gleichen Papier aus dem Jahre 2018 hat Oracle verlautbaren lassen: 


			
				https://www.oracle.com/technetwork/java/javase/javaclientroadmapupdate2018mar-4414431.pdf hat gesagt.:
			
		

> Oracle will continue developing Swing and AWT in Java SE 8 and Java SE 11 (18.9 LTS).
> This means they will be supported by Oracle through at least 2026."



2020 liest sich das nun so:


			
				https://www.oracle.com/technetwork/java/javase/javaclientroadmapupdatev2020may-6548840.pdf hat gesagt.:
			
		

> Oracle will continue developing Swing and AWT across all supported releases as a core Java SE
> technology.



Grundsätzlich gilt aber: GUIs mit Java sind praktisch tot. Wenn es nicht wirklich sein muss, schreibt niemand mehr eine Desktop-Anwendung, der Browser wird immer mehr zum Client für alles.


----------



## thor_norsk (28. Dez 2022)

Ich musste lachen. Java ist besser als die andere Sprachen und ist auf Platz 5, obwohl Alles umsetzen kann, was JavaScript und vor Allem Python nicht besser kann🤣 Sogar Apps lassen sich schneller komplieren unter Java als Kotlin.
Quelle: https://blog.back4app.com/de/backend-sprachen/

Also: GUI-Entwicklung bietet JavaFx viel für mich als Anfänger. Ich weiss nicht, ob juristisch in Ordnung wäre, was ich sage . aber wir könnten Java fordern und die andere Programmiersprachen raus kicken, z.B . Jemand von euch, der besser argumentieren kann als ich , könnte Firma Oracle anschreiben und in Forschung von Java investieren, z.B. ich würde gerne jeden Monat Oracle 5,-Euro spenden, damit Java auf Platz 1 landet.
🤣🤣🤣🤣


----------



## yfons123 (28. Dez 2022)

thor_norsk hat gesagt.:


> könnte Firma Oracle anschreiben und in Forschung von Java investieren, z.B. ich würde gerne jeden Monat Oracle 5,-Euro spenden


bei den 5€ hattest du oracle schon, das reicht schon


----------



## thor_norsk (28. Dez 2022)

🤣🤣🤣


----------



## mihe7 (28. Dez 2022)

thor_norsk hat gesagt.:


> Ich musste lachen.


Ich auch - was ist das denn bitte für eine Quelle?!?

"Die Programmiersprache Java ist zeitaufwändig." 

Was ist denn eine zeitaufwändige Sprache? 

Aber noch besser finde ich

"Java ist eine Sprache, die besser auf teuren oder High-End-Systemen läuft. Das macht die Java-Entwicklung sehr teuer."  

Gut, dass viele Programmiersprachen nicht einfach "laufen" sondern übersetzt werden, muss man ja nicht so eng sehen. Dass eine Anwendung auf High-End-Systemen besser läuft... wer hätte das auch nur im entferntesten ahnen können? Endlich weiß ich, warum die Java-Programme auf meinem Kurbelrechner so langsam sind. Wirklich neu ist aber, dass die Hardwareanforderungen die Java-Entwicklung sehr teuer machen.

"Wir hoffen, dass es Ihnen jetzt mit Hilfe unserer Forschungsarbeit leichter fällt, eine Sprache auszuwählen"

Ganz bestimmt.


----------



## yfons123 (29. Dez 2022)

> Ein Beispiel dafür ist, dass die virtuelle Maschine von Java zuerst den Bytecode überprüft, um sicherzustellen, dass keine Viren vorhanden sind, und dann wird der Prozess fortgesetzt.


----------



## mihe7 (29. Dez 2022)

@yfons123, jetzt mach Dich mal nicht über die Forschungsarbeit lustig


----------



## thor_norsk (29. Dez 2022)

Ich wollte was gutes tuen. Ich denke nicht nur an mich, Java gibt es seit 1995, ich dachte wenn jeder z.B. 5,-Euro in Forschung investiert, dann könnte man Java helfen "NUMBER 1" zu werden. 🤣 Am besten wir vergessen was ich geschrieben habe.


----------

