Warum ist java modern?

warum zur hoelle ist java zur zeit so modern.

eine sprache, die fuer embedded systeme entwickelt wurde, und deren hauptmekrmal die plattformunabhaengigkeit sein soll, wird fuer alles moegliche eingesetzt, was man eigentlich unter klassischer anwendungsentwciklung versteht.

aber java wird doch immer lahm sein.
und wenn ich eine echte anwendung damit entwickle ist die portierbarkeit genauso schlecht, wie bei einer klassischen sprache oder?

gibt es irgendwo betrachtungen darueber, welche entwicklung in der naechsten zeit kommen wird?

Auf deine Frage, welche Sprachen kommen werden, kann ich dir auch nicht antworten. Dass Java so beliebt ist, liegt sicher daran, dass es zwar nicht write-once-run-everywhere ist, aber zumindest write-once-test-everywhere. Und dabei müssen fast nur systemspezifische Dinge, insbesondere dsa UI, überall neu getestet werden. Außerdem ist es zwar keine ideale Sprache, aber als Sprache recht sauber. Zudem gab es von Anfang an eine recht brauchbare Bibliothek, die auch gleich überall zur Verfügung stand.

Soviel zum Positiven, doch es gibt auch Negatives.

Vor allem stört mich, dass Sun Java als DIE Interface-Definition-Sprache schlechthin positioniert. Dabei ist das ein Bereich, in dem Java grottenschlecht ist. Will man nämlich von anderen Sprachen diese Interfaces implementieren oder drauf zugreifen, dann ist man auf Deutsch gesagt am Arsch. Dann wird es richtig langsam und umständlich - und Deadlocks baut man auch zu leicht ein, da man meist mit mehreren Threads hantieren muss. Hätte Sun wenigtens an den Schnittstellen auf Klassen verzichtet, wäre das schon besser gewesen.

Ein anderer Riesen-Nachteil ist, dass sich die virtuellen Maschinen Java-Code (eigentlich VM-Code) nicht sharen können. Sobald man also mehrer Instazen (z.B. unter verschiedenen Usern auf einem Multiuser-System) laufen hat, oder einfach den Speicherschutz vom Betriebssystem nutzen möchte, sind alle Bibliotheken mehrfach im Speicher. Dadurch wird Java in solchen Umgebungen sehr ineffizient.

Soweit meine bescheide Meinung zum Thema.

Alles Gute wünscht
Michael

Stimme Dir voll zu!
JAVA ist sicher nicht schlecht, aber bei der positiven Beurteilung wird maßlos übertrieben, insbesondere was die Systemunabhängigkeit und Geschwindigkeit angeht. Wirklich mächtige und komplexe Anwendersoftware wird und wurde meines Wissens nie ausschließlich in JAVA entwickelt. Da empfiehlt sich immer noch C, C++, Visual Basic, Pascal oder DELPHI. Kleinere Applikationen in JAVA sind o.k.

Unter JAVA-Entwicklern gibt es schon lange folgenden Witz:

Das Tolle an JAVA ist, es läuft auf allen Systemen - aber überall anders!

Gruß, Andreas

warum zur hoelle ist java zur zeit so modern.

Nachdem hier eher negatives Feedback kam, möchte ich mal eine Lanze für Java brechen. :o)

* Java ist eine „saubere“ Sprache, einfacher zu programmieren als C++, aber nicht weniger mächtig. Ich denke die Palette der Features die Java als Sprache von C++ abhebt ist weithin bekannt. Resultat ist auf jeden Fall, dass Programme mit ähnlichen Aufgabenstellungen in Java schneller und fehlerfreier entwickelt werden können als in C++. Hier spreche ich aus leidvoller Erfahrung, ich arbeite mit beiden Sprachen parallel.

* Die schon angesprochene Klassenbibliothek in Kombination mit den unzähligen APIs die es von Sun gibt ist einzigartig. Von simplen Dingen wie Datenbankzugriff oder XML-Parsern bis zu Mail-Clients und Middlewarezugriff findet sich alles. In keiner anderen Sprache gibt es eine solche Sammlung mit vergleichbaren Grad an Standardisierung und Verfügbarkeit über alle Plattformgrenzen hinweg.

* Auch die schon angesprochene Plattformunabhängigkeit ist Gold wert. Wie schon angemerkt, natürlich write-once-test-everywhere, aber das ist schon mehr als andre Sprachen bieten. Den Vorteil würde ich aber nicht nur so sehen, dass sich Anwendungen portieren lassen, sondern vor allem auch, dass sich Know-How portieren läßt. Kentnisse der im vorherigen Punkt angeführten APIs und der Klassenbibliothek kann ich überall hin mitnehmen. Und das nicht nur unabhängig von der Plattform sondern meist auch unabhängig von den eingesetzten Produkten (siehe oben, wiederum z. B. Datenbank oder Middleware).

* Ein Bereich wo sich die Mächtigkeit von Java zeigt sind Webanwendungen. PHP, ASP & Co sind ja alle nett, aber in Sachen Skalierbarkeit, Wiederverwendbarkeit, etc., alles was sich halt aus sauberem Anwendungsdesign ableiten läßt kann nichts mit nach JSP-Model-2 konzeptionierten Anwendungen oder J2EE-Anwendungen mithalten. Dafür gibt es auch sehr hilfreiche Open-Source-Frameworks. Überhaupt läßt sich Beobachten, dass Java sich zunehmend im Open-Source-Umfeld verbreitet. Natürlich kann es noch nicht mit den vielen althergebrachten Anwendungen die aus dem Unix/C-Umfeld kommen mithalten, aber es gibt schon sehr viel.

aber java wird doch immer lahm sein.
und wenn ich eine echte anwendung damit entwickle ist die
portierbarkeit genauso schlecht, wie bei einer klassischen
sprache oder?

Nein, Swing zur GUI-Programmierung ist genauso plattformunabhängig. Allerdings habe ich persönlich keine Erfahrung mit GUI-Anwendungen in Java, deswegen traue ich mich da kaum was sagen, kürzlich hat es da aber im „Programmierung Allgemein“-Forum eine Diskussion gegeben wo u. a. die Meinung geäußert wurde, dass sich auch mit Java performante GUI-Applikationen realisieren lassen, wenn man sich nur ein bißchen reinhängt. :o)

gibt es irgendwo betrachtungen darueber, welche entwicklung in
der naechsten zeit kommen wird?

An Visionen mangelt es Sun natürlich nie, wie ernst man das nimmt muß man natürlich immer selbst entscheiden, interessant ist z. B. Sun ONE (Open Net Enviroment), Infos findest du unter http://www.sun.com/software/sunone. Überhaupt findet sich auf der Website von Sun viel Prosa in Sachen zukünftige Entwicklungen. :smile:

Grüße, Robert

hi !
Während andere Programmiersprachen abhängig von der verwendeten Hardware sind, ist Java völlig unabhängig davon.
Bei C, Pasqual und allen anderen müssen verwendete Register,
spezielle Befehle usw.des Prozessors im Compiler berücksichtigt werden.
Java benutzt nur einen Stack Speicher für alle Aktionen und
kann ohne viel Arbeit eingerichtet werden.
Ein Beispiel:
Wenn man ein C Programm auf einen PC schreibt und erstellt,
kann dies nicht auf einer Sun oder IBM oder anderen Hardware laufen.
Man muß das Programm wieder auf der anderen Hardware neu erstellen.
Diese Probleme sind bei Java nicht vorhanden.
Daher wird Java plattformübergreifend eingesetzt.
Durch die fehlende Optimiereung ist es allerdings etwas
langsamer.
Gruß
Lothar

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]