Java-Quellcode

jkas83

Mitglied
Hallo zusammen,

da ich noch Einsteiger in der Javaprogrammierung bin, empfinde ich es als hilfreich mir die Codezeilen eines Programms anschauen zu können, um mir die Funktionsweisen eines Programms zu verdeutlichen. Leider habe ich nicht zu jedem Thema ein Beispielprogramm (in Code-Form) gefunden. Aber ich habe manchmal ein kleines Programm gefunden, welches die Dinge tut, mit denen ich mich gerade beschäftigt habe.

Ist es möglich sich die Codezeilen anzeigen zu lassen, wenn ich nur eine .exe-Datei habe?

Vielen Dank.
 
Guten Tag,

ich würde dir erst einmal vorschlagen dich über die Sprache Java zu informieren, um dann überhaupt zu verstehen, warum es Java gibt (Plattformunabhängig, somit kein .exe Kompilat) und womit du dich überhaupt in Zukunft beschäftigen wirst.
Wenn du in Sachen Programmierung ganz neu bist, empfehle ich dir zuerst mit Pascal oder Basic anzufangen, da man mit diesen Sprachen eigentlich ganz gut lernen kann.

MfG
 
Nein, du brauchst den Sourcecode des Programms.
Nö, Eike, da täuschst du dich. Der Bytecode von Java lässt sich meistens relativ einfach wieder in Quellcode übersetzen. Einfach nach "java decompiler" googeln.

Gilt, wie gesagt, nur für Java-Bytecode. Mit einer exe wirst du nicht weit kommen.
 
Nö, Eike, da täuschst du dich. Der Bytecode von Java lässt sich meistens relativ einfach wieder in Quellcode übersetzen. Einfach nach "java decompiler" googeln.

Irrtum vom Irrtum.
Du kannst zwar theoretisch decompilieren,
aber das Ergebnis ist kaum lesbar,
oft sogar nicht wieder compilierbar.
und hat mit "dem Quellcode" schon gar nichts zu tun.

Und daraus gar Java zu lernen, oder wenigstens Strukturen und Algorithmen kennenlernen zu wollen, ist ne' Masochisten-Aufgabe.

(Ich glaube die Möglichkeit zu decompilieren ist Eike nicht unbekannt. lol)
 
Nur als Frage: Bei dem Videospiel Minecraft bekomm ich zum Beispiel eine .exe. Wenn ich diese aber ausführe hab ich in meinem %appdata% Ordner ja alle .jars, wie zum Beispiel die des Clients. Ich glauber der Threadstarter spricht von soetwas.
 
Um an Codebeispiele zu kommen nutze ich persönlich gerne Github, Google Code usw.
Man gibt dort dann z.b. Calculator ein, sucht in der Kategorie Java und hat (nach ein bisschen suchen) auch ein recht gutes Codebeispiel.
Oder du nimnst direkt Google.
Musst halt mal gucken wie gut du die verstehst, aber damit sich fremde Codes angucken, überhaupt was bringt, sollte man zumindest die Javagrundlagen recht gut beherrschen (meiner Meinung nach). 😉

Hoffe ich konnte dir helfen.
Devil0s
 
Nur als Frage: Bei dem Videospiel Minecraft bekomm ich zum Beispiel eine .exe. Wenn ich diese aber ausführe hab ich in meinem %appdata% Ordner ja alle .jars, wie zum Beispiel die des Clients. Ich glauber der Threadstarter spricht von soetwas.

Diese "EXE" ist lediglich ein gewrapptes JAR. Wurde mit Launch4J gemacht (ist mit einem Hex-Editor lesbar). Folglich kann man dieses (immer noch) JAR auch öffnen z.B. mit WinRAR das den PE-Header auslässt und nur das JAR aufmacht. Bringt aber auch nichts weil gerade Minecraft stark obfuscated ist.
 
Irrtum vom Irrtum.
Du kannst zwar theoretisch decompilieren,
aber das Ergebnis ist kaum lesbar,
oft sogar nicht wieder compilierbar.
und hat mit "dem Quellcode" schon gar nichts zu tun.
Irrtum vom Irrtum vom Irrtum.
Bevor du uns wieder einmal mit deinem Halbwissen belehrst, würde ich vorschlagen, das einfach einmal auszuprobieren. Bei 95% aller von Hobby-Programmierern erstellen Java-Programme funktioniert das und liefert relativ sauberen Quellcode. Viele Anfänger scheinen das leider nicht zu wissen, denken bei Decompilern sofort an Assembler o. Ä. und beginnen dann leichtsinnig Passwörter hart in ihren Quellcode zu codieren.

Bei (semi-)professionellen Anwendungen stößen Decompiler jedoch an ihre Grenzen. Nicht, weil es theoretisch nicht möglich wäre (die leichte Decompilierbarkeit liegt in der Architektur des Java-Bytecodes!), sondern weil ein Obfuscator eingesetzt wird.

Dass der Quellcode fremder Programme gut zum Lernen geeignet sei, habe ich nie behauptet. Ich würde auch eher zu einem Buch raten - die Insel enthält zum Beispiel genug Codefragmente -, aber das muss jeder selbst wissen.
 
Es gibt Sachen die du einfach nicht decompilieren kannst, beispielsweise Generics. Die fliegen beim Kompilieren komplett raus.
 
@Kaschik oO Als nichtangelemdeter Nutzer unserem immerhin schon 4500 beiträge schwerem EikeB vozuwerfen, er würde hier mit Halbwissen um sich werfen, halte ich für sehr gewagt. Aus dem vom TO Geschrieben lässt sich leider nicht wirklich erkennen, ob der Code überhaupt mit JAVA erstellt wurde (schließlich erstellt man in JAVA nicht unbedingt .exe-Dateien, auch wenn das möglich ist) folglich auch mit ´nem JAVA-Dekompiler rückübersetzt werden kann.
Dass du aber wenigstens noch über genügend Wissen verfügst, den Obfuscator anzubringen, spricht für dich, auch wenn es irgendwie deinen ersten Beitrag - sagen wir mal großzügig - ein wenig relativiert.

Lange Rede, gar kein Sinn: um ein JAVA-Programm zu dekompilieren, brauchst du ´nen Dekompiler, klar. Ob du das Resultat allerdings lesen kannst und v.a. ob es dir was bringt, um JAVA zu lernen, halte ich für sehr unwahrscheinlich. Lern lieber JAVA mittels eines Buches (gerne auch die online und kostenlos erhältliche Insel, die hier bereits erwähnt wurde), das erklärt dir durch kurze aber verständliche Codezeilen, was du da tatsächlich machen musst.
 
Zuletzt bearbeitet:
@Kaschik oO Als nichtangemeldeter Nutzer unserem immerhin schon 4500 beiträge schwerem EikeB vozuwerfen, er würde hier mit Halbwissen um sich werfen, halte ich für sehr gewagt.

Naja, er hat es ja MIR vorgewurfen, so wie ich das lese.
Ist zwar auch gewagt und zumindest fraglich im Umgangston, aber ich werde nicht darauf eingehen.
Grundsätzlich nehm ich mir Beiträge von NichtAngemeldeten nicht so zu Herzen, und mit allen anderen kann ich ja reden.

Ich wollte ja auch niemandem zu nahe treten, aber vielleicht hat er sich angegriffen gefühlt, weil ich die Methode in einem Thread, wo's um
Code:
Java-lernen aus CodeBeispielen
geht, als Hilfsmittel in Frage gestellt habe.
 

Zurück
Oben