Gute Java-Links

  • Hio,

    bin auf der Suche nach Links zu richtig geilen, aufwändigen und umfangreichen Java-Applets und Applikationen. Kann mir das jemand was empfehlen? Besonders gern würde ich mal so ein richtig umfangreiches Java-Game betrachten, das NUR mit Java arbeitet, evtll. unter Einbezug von Datenbanken. Nach Möglichkeit möchte ich keine dieser Demo-Programme oder verpixelten Arcade-Shooter.

    Habe gehört, dass echte Profis ausschließlich mit Java aufwendigere und bessere Anwendungen, wie Spiele, Animationen und Programme auf Niveau von Windows-/Unix-Anwendungen erstellen, wie mit properitären Entwicklungsumgebungen, wie Flash, Swish und co. Kann das jemand bestätigen? Wenn ja, wäre ein Link zu einem Beispiel geil. Bis jetzt habe ich nur ein paar recht dürftige Handy Games und Demo-Charakter-Shooter gefunden und evtll. noch kleine Physik-Animationen. Aber, wenn das, was so über Java erzählt wird stimmt, müsste man doch mit der Sprache sogar dazu in der Lage sein, wirklich aufwendige Spiele, wie COD4, BF, CS (nur als Beispiel gedacht) zu programmieren, wenn man entsprechende (3D-)Engines hat. Und wie, sieht es mit umfangreichen Programmen aus, die Daten speichern, übergeben, verarbeiten etc. müsste doch mit Servlets gehen? Und was ist mir Anwendungen für Windows und andere Betriebssysteme? Java ist ja plattformsunabhängig gehalten, d.h. man braucht nur entspechende Entwicklungsumgebungen und Compiler usw. Müsste doch dann auch machbar sein, nicht?

    Ich weiß, viele Fragen auf einmal von einem blutigen Anfänger. Eventuell kennt ja jemand ein paar gute Seiten oder Berichte darüber und kann mir einige meiner Fragen beantworten.

    Vielen Dank vorab!

    MfG Alienx

  • Naj, Javaprogramme sind meistens etwas langsamer.
    Ich würde wirklich zu C++ raten, damit kannst du einfach mehr machen und die Syyntax finde ich deutlich schöner.
    Auch C++ lässt sich übrigens platformunabhängig halten, indem du gute, OpenSource und plattformübergreifende Bibliotheken verwendest, sprich OpenGL, SDL, SFML, wxWidgets und/oder Qt.

    Ich schau gleich mal in den Repositories nach, da hab ich meine ich mal ein Paar Java-Spiele gefunden.

    Wenn du ein komplexes (OSS) C++ Spiel kennen willst:
    Wesnoth
    Tuxracer ist nicht so komplex, hat aber mehr 3D-Effekte.

    Viele liebe Grüße
    The User

  • Hi,

    vielen Dank für die Inof und den Link!

    Ich weiß und glaube dir auch, dass C++ was ebenso sehr feines ist. Aber ich möchte mich nunmal erst mit Java befassen. Für die relative Verlangsamung kann man ja aber auch Abhilfe durch verschiedene Software finden. Meine Fragen bezogen sich jetzt eben erstmal auf Java, da -wenn das stimmt, was ich gehört habe- die Sprache sehr, sehr leistungsfähig ist und im Prinzip PHP (Webapplikation) mit C++ (lokale Programme) vereint, symbolischzu verstehen natürlich. Das ist das ,was ich an Java so schätze. Daher würde ich mich über ein paar Demos, was Spiele us. angeht sehr freuen.

    Thx und

    MfG Alienx

  • Hmm, eigentlich ist doch Java auch immer lokal?
    Wie gut kennst du dich eigentlich mit PHP aus, benutzst du Objektorientierung in PHP?
    Also gerade das sollte Java- und C++-lernen sehr viel einfacher machen.

  • also mit spielen kann ich dir akut nicht viel weiterhelfen.. ein bekannter hat mir http://robocode.sourceforge.net/ empfohlen, um mich mal ein wenig auszutoben und etwas spielerisch mein wissen in bezug zu java zu erweitern... werd mich der dsache auch demnächst annhemen ;)
    ansonsten zu den webtechniken kann ich dir nur sagen: es stimmt, java ist ein sicheres, starkes und leistungsfähiges pendent zu der kellersprache php.
    java ist eben eine hochsprache und in der heutigen zeit ist es auch nicht mehr so wie früher, daß java-applets oder ähnliches lange brauchen, bis sie laufen..
    zum einen wurde java stark verbessert und zum anderen sind die maschinen auch stärker geworden....!!
    unsere agentur arbeitet zum beispiel sehr viel mit java (fast ausschlisslich)
    http://www.web-arts.com

  • Ich denke der wichtigste Grund, warum Java kaum noch langsamer als C/C++ ist, liegt im JIT Compiling. Die Sprache wird nicht, wie in ihren frühen Tagen interpretiert, sondern Just-In-Time Compiliert.

    Dadurch kann sich der Start zwar etwas verzögern, aber da der Compiler die Maschine kennt auf der das Programm läuft, hat man super Optimierungsmöglichkeiten (z.B. können die Befehlserweiterungen der neuen Prozessoren genutzt werden).

    Welche Sprache man am Anfang lernt ist doch eine sehr subjektive Entscheidung. Aber eines kann man doch sagen: der Umstieg von C++ auf Java fällt sicherlich einfacher als andersrum, aber dafür ist für den Einstieg Java sicherlich leichter zu lernen.

  • Hi,

    vielen Dank für eure Antworten!

    The User: Also das Prinzip, der Aufbau und die grundlegende Syntax von PHP sind mir relativ geläufig, d.h. ich kenne den Umgang mit Variablen, Funktionen, Objekten und Methoden. Außerdem habe ich mir, um mich etwas auf Java vorzubereiten, JavaScript zu einem große nTeil erlernt, was mir erstaunlicherweise sehr, sehr leichter viel, als gedacht.

    Bei Java habe ich mit dem rundlegenden Einsatz von Variablen, Ausgaben, Eingaben und Methoden beschäftigt. Aber das ist im Prinzip noch sogut, wie nichts. Ich will mich viel weiter in die Materie einarbeiten und auch Applikationen für Handies, Handcomputer und andere Plattformen, als den heimischen PC erstellen. Viele Modelle von Nokia und co. bieten ja inzwischen Java-unterstützung an, ebenso, wie der Modelle des Palm OS.

    Und eigene, grafische Gestaltung, bzw. Animationen sollen sich ja durch Swing im Gegensatz zur alten Variante, in der nur das AWT zur Verfügung stand, auch plattformasübergreifender gestalten lassen. D.h. es sind zum Beispiel auch Fenster, Dialoge, Boxen, Buttons, Interfaces, Animationen und weitere Elemente im eigenen Layout möglich? Ein Bekannter hat mir erzählt, dass viele Agenturen und Fernsehsender bereits mit Java arbeiten, wenn es an das Verarbeiten von Algorithmen (z.B. in den Nachrichten) oder Animationen geht. Kann das jemand bestätigen? In Japan soll das Betriebssystem eines kompletten Androiden in Java implementiert sein. Nicht, dass ich vorhätte, soetwas nachzubauen (könnte ich ohnehin nicht), aber mich würde interessieren, ob sich Java selbst für solche Anwendungen eignet.

    Wie gesagt, wenn ich im Web suche, bekomme ich immer nur so lausige Applets mit ein paar Spielereien geboten, aber ein ordentlich geschriebenes Programm finde ich nie.


    An dieser Stelle schonmal thx für dies bisherigen und kommenden Antworten!

    MfG Alienx

  • Du kannst mir Java zum Beispiel kein Betriebssystem schaffen.
    Das ist einfach unmöglich.
    Die Handyargumentation ist natürlich klar, Java wird von ziemlich allen aktuellen Handies und auch von den nicht aktuellen z. B. von Sony unterstützt.

    Mittlerweile gibt es aber auch Handies, auf denen richtige Programme (C++ und so) auch laufen, iPhone (Was ja nur MacOSX ist) und Android (Was nur Linux ist) machen sowas halt.

    http://www.bolzplatz2006.de/de/ ist mit Java und SDL gemacht.

  • Hi,

    thx für den Link! Kommt dem, was ich gesucht habe, schon sehr nah.

    Hm, zu deiner Bemerkung wegen den C-progs, sind Java-progs denn keine "richtigen" Programme? *gg*

    Versteh mich nicht falsch, Java ist toll, C (C++) aber natürlich ebenso, das will ich nicht bezweifeln.

    Was mich jetzt wundert, ist die Anführung, dass sich in Java kein Betriebssystem implementieren ließe...hm, widerspricht das dann nicht eine umfassend plattformasunabhängigen Programmiersprache? So, wie ich das jetzt verstanden habe, ist Java nicht an eine gewisse Soft- sondern nur an eine Hardware und die JRE und das JDK gebunden. Aber das ist interessant. Wusste ich jetzt zum Beispiel nicht.

    Bzw. in C++ lassen sich aber, soviel ich weiß nur sehr eingeschränkt Webapplikationen schreiben, oder? Da bietet Java einen Vorteil für den Webdesigner, wie ich finde. Wie sieht das dann eigentlich mit den Weckern, Kaffeemaschinen, Mixern etc. aus, das sind ja auch sehr viele mit Java programmiert, wie wird das dann geregelt, dass Java unter solchen Systemen läuft?

    EDIT:

    Vllt. poste ich jetzt Mist, aber hier hat wohl doch jemand ein Betriebssystem in Java entwickelt.

    MfG Alienx

  • Man hat bei Java schon richtige, binäre und kompilierte Programme, sie sind jedoch nicht nativ, sind nicht direkt ausführbar und können kaum mit dem Betriebssystem sondern nur mit der Virtual Machine kommunizieren.
    Ein Betriebssystem oder ein Compiler oder ein Treiber oder so gehen somit garnicht.

    Wenn du wirklich größere Programme in Websites oder Handies einbinden willst, ist Java natürlich die bessere Wahl.
    Du kannst C++ immerhin auf dem Webserver aufrufen, zum Beispiel auch mit PHP - fals safemode auf off ist.

    Der Link mit dem Blackberry:
    Da wird ja wirklich geschrieben, dass das System sicher in einer JRE läuft.
    Ich bin mir sehr sehr sicher, dass der direkte Hardwarezugriff, die JRE und vielleicht noch File- und Prozessmanagement auch bei RIM nicht in Java implementiert worden sind.
    Java übernimmt dann wohl nur das gesamte Interface und die ganzen Abläufe, die nicht direkt mit dem System zu tun haben, sondern höchstens etwas systemnahes aufrufen müssen. Aus der JRE kommt ein Java-Programm nicht heraus.

    C++ bietet keine Vorteile für den Webdesigner (außer er will auf dem Server komplizierte Sachen ablaufen lassen), dafür aber um so mehr für den (nicht Web-)Programmierer.
    C++ kann durch die Entfesselung von einer JRE mehr Performance bieten, mit dem System bzw. anderen Anwendungen kommunizieren sowie bis ins Detail alle Abläufe genau Kontrollieren.
    Java bietet die meisten Teile der Low-Level-Programmierung nicht, und erlaubt weniger Kontrolle und Optimierung. Zugegeben macht Java es einem in vielen Teilen leicht, zum Beispiel was Speicheroptimierung angeht, aber C++ bietet solche Features eigentlich auch sehr gut - wenn man sich mit der Standardbibliothek auseinandersetzt.
    Viele Leute halten sich dann immer an der Low-Level-Programmierung auf und lassen die Bibliothek zum Beispiel heraus. Man sollte den Low-Level-Kram eher als mächtiges Mittel zur Optimierung ansehen, die Bibliothek macht es einem aber oft einfacher.

    Viele liebe Grüße
    The User

    Edit:
    Ich lerne Java übrigens in der Schule, komme auch gut mit zu Recht, entdecke aber immer wieder Stellen, wo C++ es deutlich kürzer, schneller, einfacher oder weniger komplex gestaltet.
    In der Freizeit halt C++ und PHP.

  • ich glaub mit betriebssysteme meinte the user, nen OS für nen richtigen PC...
    sun microsystems ein eigenes OS entwickelt, nämlich solaris
    http://de.wikipedia.org/wiki/Solaris_(Betriebssystem)
    jedoch ist dieses OS ein unix-system ...
    ergo: man bräuchte auch hier wieder ne jre und nen jdk

    und ich muss wirklich betonen, daß java eine vernünftige hochsprache ist und mit c mithalten kann, letztlich haben java und die c-varianten ja stets von einander profitiert und sich diverse sachen zu nutze gemacht.
    naja ich seh halt in jave mehr vor- als nachteile.
    und irgendwann denke ich kann ich java fliessend "sprechen" läuft bisher alles recht gut in der ausbildung.
    hab am sonntag nen directorychecker programmiert, der ne xml-file für die config frisst und ne txt-file, um ne liste mit domains entgegen zu nehmen, das einzige was an dem ding lange dauert ist die verbindungsprüfung der einzelnen urls ;)
    naja evtl werd ich des ganze prüfen noch als eigenen thread machen, dann sieht es nicht so aus, als würd das programm hängen, nur weils rechnet wie bekloppt ;)

  • Hab grad gelesen, dass die Prozessverwaltung in RIM tatsächlich über Java geht, dennoch:
    Hardwarezugang und JVM sind ohne Java gemacht worden.

    Was siehst du denn als Hauptnachteile in C++?
    C ist eine andere Sache.

  • naja also ich find es benötigt schon etwas mehr um vernünftig die C-schiene fahren zu können..
    referenzen wieder entfernen und dann die dazugehörigen speicherstellen freigeben, direktes addressieren von speicherplöätzen kann auch gefährliche probleme bringen, java is da einfacher gestrickt und hat den prima garbage-collector...
    das ist jetzt nur eine kleinigkeit, die anderen aspekte würden jetzt des posting sprengen ;)
    alles in allem ist java halt pflegeleicher und einfacher- nimmt dem entwickler einiges an arbeit ab.

    ach und beim link oeben muss des in klammern mitkopiert werden, irgendwie seh ich grad der link is irgendwie nich ganz übernommen worden

  • Hi,

    hehe ^^ also dass soll jetzt keine Diskussione im Sinne von "Mac ist besser als Win - Win ist besser als Mac" geben. Wir sind uns sicher einig, dass beide Sprachen ihre Vor- und Nachteile haben. Java wurde ja gerade entwickelt, um das Essentielle von C++ zur Verfügung zu stellen und dabei noch mehr Wert auf Komfortabilität und Sicherheit zu legen. Inzwischen hat man nachgeogen und auch C++ optimiert. So geht das immer weiter. Letztendlich sind es ja beides im Prinzip die am häufigsten genutzen Programmiersprachen und beide sind sehr zu empfehlen.

    Aber - ich habe mich zuerst für Java entschieden. Habe inzwischen herausgefunden, dass Java selbst zwar plattformsunabhängig ist, aber die JRE selbst an eine gewisse, softwareechnische grundlage gebunden ist. Ich habe Verwandte in Kanada, von denen ein Onkel eine Softwareentwicklungsfirma in Toronto besitzt. Dort werden wohl auch viele Handhelds, also Handies, Handcomputer, tragbare Konsolen, aber auch DVD Player und Navigationssysteme mit Java programmiert. Wie sieht so eine softwaretechnische Grundlage aus, die das JRE auf alle Fälle benötigt? Theoretisch ließe sich dann in Java doch auch ein Betriebssystem schreiben odr? Oder warum genau ist das nicht möglich, wenn die JRE selbst kein komplettes OS benötigt?

    EDIT: Klingt jetzt vielleicht doof: Aber, kann ich mit Java zum Beispiel auch direkt auf einem Radiowecker o.ä. proggen? Also jetzt keinen virtuellen, sondern schon so, einen, den man sich auf den Nachttisch stellt, ihr wisst scha. ;) Dafür war Java doch ursprünglich gedacht, um Kaffemaschinen usw. zu programmieren. Was brauche ich alles, damit ich Java-Programme auf ein elektronischen Gerät überspielen kann, die auf diesem auch laufen? Wie funktioniert die Verbindung von Java mit Hardware im Groben und Ganzen?

    MfG Alienx

  • Sorry, die JRE ist ein ganz normaler Prozess, der zumindest Grundlagen eines Betriebssystems braucht. Ob ein komplettes OS gebraucht wird, ist eine Definitionsfrage.
    Die ganzen Applikationen können dann auch in Java geschrieben sein, bzw. können die Applikationen auch mit Java verwaltet werden.
    Aber die Treiber, das ansprechen der Hardware und die Versorgung der JRE müssen außerhalb von Java laufen.

    synaptic
    Gerade das meinte ich auch damit, dass man sich über komplizierte Sachen nicht wundern soll, wenn man die Bibliothek nicht verwendet.
    C++ ist etwas anderes als C, zum Beispiel die Klasse auto_ptr sorgt dafür, dass dynamisch erzeugte Objekte automatisch gelöscht werden.
    Für Referenzen, Objekte, Zeiger und itegrierte Datentypen gilt das sowieso nicht, dass sie nicht automatisch gelöscht werden.
    C++ bietet einem einfach alle Möglichkeiten, aber wenn man gerade als Anfänger nur die Low-Level-Sachen aus C sieht, plus ein ganz wenig Objektorientierung, verstrickt man sich natürlich in solchen Problemen, vorallem mit Zeigern.
    Ich finde das in C++ gerade konsequent, dass der Basisteil vorallem Low-Level-Sachen bietet und der Rest von der Standardbibliothek gestellt wird, bei Java dagegen finde ich die String zum Beispiel inkonsequent, es ist eine echte, richtige Klasse, wird aber unmittelbar vom Basisteil aufgenommen und hat sogar ihre Literale; das passt nicht zur sonst so strikten Objektorientierung.
    C++ bietet einem außerdem auch einfach mal eine ganz normale FunktionFalls, die man dann vielleicht einfach in einen Nammmensbereich packt, und gut ist, da muss maan als Anfänger nicht an jeder Stelle die Objektorientierung lostreten.


    Übrigens ist das keine "Mac ist besser als Win"-Diskussion, das wäre so Java vs. Cobol. ;) Ich würde vorschlagen Linux gegen Mac oder Solaris oder so. :D
    In einem anderen Forum habe ich neulich eine ähnliche Diskussion geführt, die bezog sich aber weniger auf den Einstieg.

  • joa ich hab mich mit der c-schiene nicht so sehr befasst, weil ich eben erst eine sache wirklich können will..
    aber alienX, ich hab mal im java-forum nachgefragt wie ich mit java sensoren des pcs auslesen kann.. letztlich brauch ich dafür wieder c-treiber die ich aber in meine java-app einbinden kann.....

    das problem für java ist halt, daß es nicht so nah an der hardware arbeitet wie zum beispiel die c-appz
    ich denke mal das is das generelle problemchen ;)

  • Hio synaptic,

    ah, vielen Dank für die Info! Werde mich erst mal an einem einfachen Lego-Roboter versuchen, dazu habe ich mir schon ein Tut gesucht, das zeigt, wie man so einen nur mit Java programmieren kann. Wenn ich Java einigermaßen beherrsche, werde ich mich an C/C++ versuchen. Aber vorerst gehen einfach Anwendungen, wie der o.g. Wecker oder eine digitale Uhr auch nur mit Java?

    MfG Alienx

  • also ich hab sowas wie du es da machen willst noch nie probiert...
    ich hab mich bisher auf spezielle rechenprogramme konzentriert, um den umgang mit java wieder zu festigen...
    und eben um das back-end mit dem GUI zu verknüpfen.
    war bisher nicht wirklich weltbewegendes... ich frag mich sowieso, wieso du mit so einer "grossen sache" anfangen willst statt dich erstmal in kleinen schritten an java heran zu wagen...

  • Zitat von The User


    Aber die Treiber, das ansprechen der Hardware und die Versorgung der JRE müssen außerhalb von Java laufen.

    Dir ist aber klar das es auch Prozessoren gibt, die Java Bytecode ausführen können?!

    Zitat von The User


    C++ bietet einem außerdem auch einfach mal eine ganz normale Funktion. Falls, die man dann vielleicht einfach in einen Nammmensbereich packt, und gut ist, da muss maan als Anfänger nicht an jeder Stelle die Objektorientierung lostreten.

    Wo liegt bitte der Unterschied zwischen einer Funktion in einem Namensbereich, und einer statischen Methode in einer Klasse?

    Versteh mich nicht falsch, ich ziehe C++ auch eher Java vor, aber trotzdem gibt es viele Aspekte die in anderen Sprachen (wie z.B. Java) schöner gemacht sind.