# Theoretische Frage - In Java Java-Programme schreiben



## Airwolf89 (31. Jul 2011)

Hallo Leute,

bin mal wieder ein wenig am nachdenken. Ist wie gesagt nur auf theoretischer Basis. 

Wie würde man es anstellen, wenn man vorhätte mittels Java-Code ein Java-Programm zu erzeugen. Ich rede nicht nur von Kompilierung aus Java heraus, sondern wirklich die Erstellung von Java-Klassen, mit Feldern, Methoden und allem was dazu gehört aus Java heraus.

Ich sage mal, ein ganz pragmatischer Ansatz wäre ja eine .java Datei zu erzeugen, dort, wie in einem Textfile, den eigenen Code reinzuschreiben und das ganze danach durch den Compiler zu jagen und anschließend das Programm auszuführen. (Wäre ja theoretisch möglich, oder?)
Allerdings glaube ich nicht dass das noch einigermaßen performant wäre.

Wie würde man sowas angehen? Hat jemand von euch sowas schonmal gemacht? Bzw. geht sowas überhaupt? Habe versucht im Netz dazu mal was zu finden, allerdings hab ich nicht wirklich was gefunden. 
Sinn und Unsinn oder Anwendungsfälle des ganzen mal außer Acht gelassen, habe halt schon ab und an solche Schlagworte wie "Programme die Programme schreiben" gehört. Würde mich mal interessieren.

Danke im voraus.


----------



## Airwolf89 (1. Aug 2011)

Habe da gerade was gefunden. BCEL scheint da doch ein Ansatz zu sein, hört sich zumindest so an, oder?


----------



## Marco13 (1. Aug 2011)

Sicher, BCEL wäre auch das erste, was ich genannt hätte. Es gibt aber auch noch ähnliche, ASM - Home Page ist recht bekannt (hab' ich aber noch nicht verwendet), und andere...


----------



## Dow Jones (3. Aug 2011)

Dachtest du dabei an ein bestimmtes Programm, das erzeugt werden soll? "Programme die Programme schreiben" sind eigentlich nichts ungewöhnliches. Solange man dem Programm, welches ein Programm erzeugen soll, eine Spezifikation des zu erzeugenden Programms übergibt sollte es dabei auch keine Probleme geben, die nicht schon längst bekannt und behandelt wurden. Ein Programm aufgrund einer Beschreibung (in welcher Form auch immer) zu erzeugen, sowas macht doch jeder GUI-Builder. Oder Compiler. Oder Hibernate & Konsorten.
Ob es performant ist - naja, an und für sich kann das sogar sehr performant sein, wenn die Klasse keine eierlegende Wollmilchsau sein muss sondern jeweils auf deinen konkreten Anwendungsfall automatisch maßgeschneidert wird. 
An was für Programme dachtest du denn?


----------



## Noctarius (3. Aug 2011)

Ich würde generell zu ASM raten, die API ist etwas hübscher. Für Anfänger empfiehlt sich allerdings eher sogar noch Javassist.


----------



## Wildcard (3. Aug 2011)

Um tatsächlich Java Source Files zu erzeugen würde ich eine Template Sprache verwenden. Xpand zum Beispiel:
Help - Eclipse SDK


----------

