# Warum eigentlich JAVA?



## Michi1985 (2. Feb 2013)

Hallo zusammen,

konnte bereits einige Erfahrung mit Visual C# und ASP.NET machen. Nachteil des ganzen ist natürlich, dass dies nur unter Windows funktioniert (Mono Implementierung unter Linux mal abgesehen). Mit JAVA konnte ich auch schon ein paar Erfahrungen sammeln.

Interessant finde ich eh den Gedanken aufgrund von Plattformunabhängigkeit Applikationen Richtung Webserver zu verlagern. In dem Zusammenhang möchte ich mich in Java EE etwas einarbeiten. Bei Java kann man generell Applikationen plattformunabhängig schreiben.

Meine Frage ist, bevor ich mich Java etwas weiter widme, rentiert sich denn das überhaupt? Es heißt zwar immer plattformunabhängig, aber braucht man das wirklich? Java-Applikationen haben eher den Touch, sie laufen überall aber nirgends richtig gut... . Habt ihr Praxisbeispiele, wo eine Plattformunabhängigkeit absolut sinnvoll war? Mir fällt da nichts ein... .

Grüße
Michael


----------



## tröööt (2. Feb 2013)

die plattform-unabhängigkeit von java ist halt eine der größten stärken ... auch wenn es sich nur darauf bezieht das java-bytecode auf einer VM läuft ...
an sich ist nämlich nur die sprache und der byte-code plattformunabhängig ... aber die VM selbst eben nicht ...
diese muss für jedes ziel-system neu entwickelt werden ...

der vorteil liegt dann allerdings eher in die richtung das man EINMAL die VM für eine ziel-plattform entwickelt ... und dan auf dieser JEDEN byte-code laufen lassen kann ...

man spart also am ende daran das man eine anwendung nicht für jede ziel-plattform neu entwickeln muss ... sondern nur einmal speziell für die java-plattform ...

es gibt natürlich vergleichbares wie z.b. PHP ... an sich macht es für PHP keinen unterschied ob es auf windows oder linux läuft ... so lange die PHP-engine die das ganze ausführt für die ziel-plattform vorhanden ist ...

das ist halt der vorteil an den sog. interpretierten sprachen ... auch wenn java schon ein ganzes ende weiter ist ...


zum anderen ist Java eine wie ich persönlich finde rechte einfache sprache ...
es gibt zwar eingie regeln an die man sich halten muss ... aber es gibt auch nur sehr wenig stolpersteine ... wie z.b. das es keine C-pointer gibt ... sondern nur eine sog. objekt-referenz ...
oder auch das man in java nicht wirklich an einen programmier-stil gebunden ist ... man kann es prozedual wie normales C schreiben ... man kann objekt-orientiert arbeiten ... und teilweise sind noch einige kleinere exotische wege möglich ...

das alles geht natürlich auf kosten der funktionalität ... java ist relativ eingeschränkt in den möglichkeiten was man überhaupt machen kann ...

z.b. sind viele "low-level" sachen nicht möglich da java zu abstrakt ist ...
auch performance-mäßig wird java trotz JIT immer hinter einem nativen programm bleiben ... egal wie gut optimiert ...
und hardware-zugriffe oder nutzen von speiziellen OS-funktionen ist auch nicht drin ...

man kann mit java nicht alles machen ... aber doch recht vieles ... und ich denke spätestens seit dem letzten java-hype (ich verkneife mir mal eine namentliche nennung) ist es wieder groß in mode ...


----------



## gst (2. Feb 2013)

Wie wäre es, wenn du erst mal Google bemühst, und mit sinnvollen Fragen wiederkommst? Bis jetzt lese ich aus deinen "Fragen" nur Unwissen, fehlende Lernbereitschaft und billige Trollversuche ...


----------



## tröööt (2. Feb 2013)

@gst
stimmt ... jetzt wo du es sagst kommt mir der nick auch irgendwie bekannt vor ...
allerdings würde ich deiner aussage so nicht ganz zustimmen ... da ja ledilich die frage war was so vorteile an java sind und ob es sich für TO lohnt es zu lernen ...
ich hab lediglich meine persönliche denkweise gepostet ... und versucht ein paar objektive punkte einzubringen


----------



## KSG9|sebastian (2. Feb 2013)

Da könnte wieder so ein 5-Seiten-Trauma-Thread werden.
Jemandem ist langweilig, er ist zu faul zu lesen und dann entsteht wieder so ein Müll-Thread der niemand hilft.
Entweder du nimmst Java weil du es willst und weil du dir Vorzüge kennst/es auf deine Anforderungen passt, oder du lässt es eben sein.
Java hat hundererte weitere Vorteile, die Platformunabhängigkeit ist nur ein kleiner Teil davon.
C hat wieder andere Vorzügen C++ ebenfalls, ObjectiveC auch.


----------



## ARadauer (2. Feb 2013)

Ich finde es angenehm mit Java zu arbeiten und die Berufsaussichten sind natürlich enorm... Ich bin mir sicher, dass man als EE Entwickler im Raum Wien adhoc 10 Stellenangebote bekommt...


----------



## Phash (2. Feb 2013)

easy to learn, hard to master 

ich finde den Einstieg in Java ziemlich einfach, es gibt unglaublich viel Doku, aber auch unglaublich viel Mist zu diesem Thema...

Mich ärgert teilweise die extrem schnelle Iteration vieler Frameworks im Java Umfeld.

Allerdings ist das auch ein Vorteil von Java - es lebt. Laufend kommen neue Tools, Frameworks, Ideen auf und verändern das Ganze.

Java ist ja quasi nur der Kern, das Umfeld macht es zu einem unschlagbaren Tool für viele Bereiche.


----------



## Spacerat (2. Feb 2013)

Im Übrigen ist Plattformunabhängig das falsche Wort für Portabilität. Plattformunabhängig ist C/C++ oder jede andere Sprache auch, nur lassen sich die Kompilate nicht überall verwenden ohne neu kompiliert zu werden. Von C# erwartete man eigentlich das gleiche, aber irgendwie kommt das nicht so recht in Gang. Java ist halt offener als C#. Windows mag zwar das am weitesten verbreitete System sein, trotzdem schlägt Java C# um Längen, weil es halt nicht nur auf 1,5 (Mono zählt nur halb, weils ständig hinterher hinkt) Plattformen beschränkt ist.


----------



## Michi1985 (3. Feb 2013)

Erstmal Danke für die ausführlichen und schnellen Antworten. Ihr habt natürlich alle vollkommen recht. Die Sprache Java mit all ihren Tools und Frameworks und und und... hat natürlich ihre eigenen Vor- und Nachteile gegenüber anderen Sprachen. 

Die Berufssausichten sind sicher nicht schlecht, das spiegelt sich auch in den aktuellen Stellenanzeigen nieder. Ich sträube mich auch sicher nicht dagegen, sonst hätte ich das Thema nicht aufgemacht. Mich interessiert, ob es sich überhaupt rentiert auf JAVA weiter aufzuspringen. Die Microsoft-Ecke ist ja auch nicht ganz ohne. C# ist ebenfalls einfach und angenehm zu programmieren. Klar, das Framework ist für Windows-Rechner nur vorgesehen und funktioniert auch nur hier gut.

Andersherum liebt Linux und co. nur C und Shell-Programmierung. Was ich bei Bedarf auch hin und wieder realisiere. Mich interessiet auch, ob jemand von euch schon in der Praxis den Spagat mit den Multi-Plattformen springen hat müssen und wie gut das natürlich auch gelungen ist.


----------



## Spacerat (3. Feb 2013)

Michi1985 hat gesagt.:


> Andersherum liebt Linux und co. nur C und Shell-Programmierung. Was ich bei Bedarf auch hin und wieder realisiere. Mich interessiet auch, ob jemand von euch schon in der Praxis den Spagat mit den Multi-Plattformen springen hat müssen und wie gut das natürlich auch gelungen ist.


...ist vllt. weit ab von jedweder Realität, aber auch die müssen irgendwann einem Trend folgen und dieser geht in Richtung Bytecode. Siehe hier -> http://www.java-forum.org/allgemeine-java-themen/147482-java-c-2.html#post987221 (ab dem Post weiter lesen)


----------



## Bernd Hohmann (3. Feb 2013)

Phash hat gesagt.:


> Mich ärgert teilweise die extrem schnelle Iteration vieler Frameworks im Java Umfeld



Ja, empfinde ich auch so. Und die meisstgenutzten Frameworks und Tools sind nicht wirklich "gut" weil ihre API eher akademisch als praxisnah gestaltet wurde. Ich kanns leider nicht so recht begründen weil ich mich damit abgefunden habe, in anderen Programmierumgebungen mein Problem einfach in eine Toolbox "einzutüten" wärend in Java eher eine Abfolge von API-Aufrufen stattfindet.

Java nutze ich um Programme unter Linux zu entwickeln die dann auch unter Windows laufen.

Mein Geld verdiene ich aber eher mit der Pflege und Erweiterungen von Legacy-Applikationen unter Windows/DOS.

Bernd


----------



## Timothy Truckle (3. Feb 2013)

> Habt ihr Praxisbeispiele, wo eine Plattformunabhängigkeit absolut sinnvoll war?


Ich habe eine Anwendung, die vor 10 Jahren unter Oracle-Light auf einem Windows-Server entwickelt wurde. Dazu muss man wissen, das Oracle dieser DB-Version das PL/SQL explantiert hatte. Serverseitige Logik musste also in einer anderen Programmiersprache statt finden, in meinem Fall war es Java. Eine weitere Hürde war, dass Auszüge der DB auf die Anwender-Clients übertragen wurden und die DB-Programme auch dort laufen mussten, damit die Anwender auch ohne Netzwerkverbindung mit den Daten arbeiten konnten. 

Nach 5 Jahren wurde der Server auf ein Solaris-System und nach weiteren 3 Jahren auf ein Linux umgezugen. Die Clients blieben aber  auf Windows(erst 9x, dann über NT und XP zu derzeit 7). Aufwand für das Anpassen der DB-Logik: 0h.

Achja, vorhergesehen hat den Plattformwechsel bei Projektstart niemand.

Möglicher Weise wäre dass mit reinem C auch so gewesen, wenn man sich strikt an den POSIX-Standard gehalten hätte. Das bleibt aber eine Vermutung....

bye
TT


----------



## Phash (4. Feb 2013)

ich entwickle nur Java-Web Anwendungen. Gelegentlich mal ne Webstartgeschichte mit Swing, aber eher selten.

Das schöne: 
egal welches System unsere Partnerunternehmen (wir entwickeln im Verbund für alle Unternehmen, also jeder entwickelt für jeden (nicht alles, aber einiges)) einsetzt, mein war File läuft.
braucht halt nen Container (Tomcat o.ä.) läuft dann aber überall wo das eingesetzt wird.
Ist das plattformunabhängig?

ansonsten haben wir hier einige Entwickler, die Linux einsetzen, und einige, die auf Windows entwickeln, und die selbstgestrickten Tools gehen halt auf jedem Rechner, was schon praktisch ist


----------



## Spacerat (4. Feb 2013)

Tomcat ist in dieser Beziehung wie PHP. Auf allen Umgebungen, wo PHP zum Einsatz kommt, ist auch dafür 'ne Laufzeitumgebung erforderlich.


----------



## Kr0e (4. Feb 2013)

Oh gott, schon wieder so ein Thread 



Spacerat hat gesagt.:


> Windows mag zwar das am weitesten verbreitete System sein, trotzdem schlägt Java C# um Längen, weil es halt nicht nur auf 1,5 (Mono zählt nur halb, weils ständig hinterher hinkt) Plattformen beschränkt ist.




C# & Mono hat mehr supportete Plattformen als Java. MonoTouch bringt C# auf Android, iOS. Windows Phone ist ja sowieso supported. Dann gehts weiter mit XBox360, Ps3 und Wii (interessant für Spieleentwickler. Unity3D ist hier ein klares Stichwort. Die setzen auf Mono & C# für zahlreiche Plattformen)


Mono hängt .NET hinterher, aber nicht viel. Mono als 0.5 zu zählen ist daher nicht gerechtfertigt. Java mag Plattformunabhängigkeit etwas besser unterstützen, aber gut.


Wenn man im Business ist, zählt eh nur noch das Ecosystem. In welcher sprache kann man diese ganzen aufgeblähten Web-Apps mit zichtausend Frameworks schreiben ? Naja, Java ist hier wirklich sehr mächtig.

Ich persönlich beurteile eine Sprache auch oft aufgrund der Syntax. Und hier muss ich sagen... Ich glaube Java hat die langweiligste Syntax aller modernen Hochsprachen. Hier schlägt C# Java UM LÄNGEN, von Python ganz zu schweigen. Klar Java ist keine funktionale Sprache, aber diese Elemente fehlen einem einfach, wenn man einmal was anderes als Java benutzt hat. Java ist halt sehr einfach und daher vermutlich auch so beliebt. Ich weiß es gibt Dinge wie Scala, Groovy. Aber hier war ja von Java die Rede. Mit anderen Worten: Java kam mir immer als unheimlich ausdrucksschwache Sprache vor.


Solang du also nicht auf Business angewiesen bist und for Fun oder für die Uni programmierst/entwickelst, wähle die Sprache, die dir am besten gefällt und womit du am besten zurecht kommst.



Achso, zur Hauptfrage:

Ja, Java rentiert sich auf jeden Fall. In der Industrie wird Java sehr oft verwendet.


----------



## Spacerat (4. Feb 2013)

Kr0e hat gesagt.:


> Oh gott, schon wieder so ein Thread


Der wird nur zu einem solchen, wenn man es extrem auswalzt... auf all den genannten Systemen läuft auch Java. Demzufolge zählt nur das Hinterherhinken von Mono und das auch nur auf einer beschränkten Anzahl an Plattformen, denn z.B. bei Android gehts Java nicht anders - Dalvik ist immernoch bei Java6.
Eigentlich beschränkt sich die Einschränkung von C# nur auf jene Geräte, wo Mono statt dotNet als Laufzeitumgebung dient, gleichzeitig aber Oracles Java7 unterstützt wird und da dürften dann afaik nur Solaris, Mac und *n*x übrig bleiben.
0.5 ist dabei nur 'ne Zahl, die das "Problem" beschreibt. Ich selber habe nichts gegen C#, denn es ist prinzipiell die selbe Technologie wie Java (Bytecode). Man kann sagen, solange Mono der dotNet-VM hinterherhinkt, ist Java immer ein klein wenig portabler. MS kann das ändern, indem es dotNet nicht zur "Geheimsache" macht. Eines ist jedoch sicher... die Zukunft liegt im Bytecode.


----------



## Kr0e (4. Feb 2013)

Spacerat hat gesagt.:


> MS kann das ändern, indem es dotNet nicht zur "Geheimsache" macht. Eines ist jedoch sicher... die Zukunft liegt im Bytecode.



Das wäre ein wirklich guter Schritt von MS, ich hoffe drauf!


----------



## Spacerat (4. Feb 2013)

Kr0e hat gesagt.:


> Das wäre ein wirklich guter Schritt von MS, ich hoffe drauf!


Da bist du wohl nicht der einzige. Aber ich denke, da können wir sehr lange drauf warten, denn es steht im Konflikt mit Microsofts Geschäftspolitik, gleichzeitig ihr Windows loszuwerden.
Mal 'ne kleine Zukunftsvision...
Ernstzunehmende Anwendungen liegen nur noch in C# vor. Die Laufzeitumgebung dotNet ist frei zugänglich und wird überall unterstützt.
Frage: Was geschieht mit Windows, wenn dotNet-Anwendungen überall ohne Einsränkungen laufen? Würden die, die das ermöglicht haben nicht finanziell ins Gras beissen? Es wäre äussert stupide, wenn MS ihren zweiten grossen Zweig (Office-Anwendungen) nicht auch in dotNet veröffentlichen würde, womit es auch überall läuft. Nur leider nutzt es keiner mehr, weil man auf Windows nicht mehr angewiesen ist und sich deswegen andere Office-Anwendungen (z.B. Open-Office) etabliert haben.


----------



## Kr0e (4. Feb 2013)

Da ist was dran. Allerdings sollte man erwähnen, dass Microsoft von Anfang an vor hatte, dass C# bzw. generell die CLR überall laufen sollen. Sie entwickeln die Referenzimpl. für Windows, leider als closed source weitgehend. C# und CLR sind ja auch standardisierte Technologien, wobei C# nochmal eine Auffrischung dieses Standards vertragen könnte.

Aber das Mono Projekt wurde von Microsoft aktiv unterstützt, sonst wäre das Projekt auch nicht soweit wie es jetzt ist. Ich hab nochmal geschaut, es hinkt nur in 3 Punkten zurück:

- WPF wird nicht unterstützt (Ein GUI Framework,)
- WCF nur partiell (Eine sehr mächtige Netzwerk Library)
- WWF wird nicht unterstützt (Bin mir nicht genau sicher, was das war. Glaube es ging um Business Workflow)

Interessant ist, das ASP.NET vollkommen implementiert ist, man benötigt auch keinen IIS Server.

Insofern könnte man zumindest hoffen, dass das Mono Projekt, welches ja bereits sehr aktuell ist (es unterstützt sogar die neusten Async/Await patterns, welche einfach hammer sind) einfach auf diesem Level bleibt und nicht iwann eingestellt wird. Allerdings ist das ja immer die Gefahr von OpenSource Produkten.


----------

