Autor Thema: Code Generation für JSF  (Gelesen 2401 mal)

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Code Generation für JSF
« am: 10.03.12 - 01:26:45 »
Hallo,

hab grad eine Super-Baustelle für mich gefunden. Bin in einem Projekt, in der eine Menge ähnlicher Anwendungen mit JSF erstellt werden sollen. Zumindest wie die das machen, ist das super-repetitiv. Man trägt in die facelets die Expression Language Aufrufe für die Managed Beans ein. Dann wird für jedes Managed Bean / facelet Paar jeweils zwei sehr ähnliche Einträge in der faces-config eingetragen und dann gibts da noch eine Navigations-Managed Bean, die die anderen Managed Beans initialisiert und mit Klassen aus dem drunterliegenden JPA 2 Modell verpointert. Der entsprechende Initialisierungs-Code ist natürlich auch repetitiv.

Schreibt man das facelet zuerst, läßt sich der Rest zu einem nicht geringen Teil generieren. Mach ich mit einem selbstgeschriebenen Eclipse Plug-in. Hab allerdings grad erst angefangen. Denke Ende nächster Woche was demofähig zu haben.

1 Frage und 1 Aufforderung:
Frage: Gibt es sowas schon?
Aufforderung: Falls jemand an sowas Interesse hat (auch für xpages), kann er sich gerne bei mir melden. Bin an ähnlichen Anwendungsfällen interessiert.

Java ist das Cobol des 21. Jahrhunderts. Von Cobol lernen, heißt siegen lernen. Die werkeln ja schon seit Jahrzehnten mit Code-Generatoren rum und hatten noch nicht mal Eclipse.

Liebe Grüße

Axel  
« Letzte Änderung: 10.03.12 - 01:35:25 von Pitiyankee »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re: Code Generation für JSF
« Antwort #1 am: 11.03.12 - 18:19:14 »
Zum Thema Codegeneratoren (und ganz allgemein) empfehle ich "The Pragmatic Programmer"

Was ist denn Dein Anwendungsfall? Sind das einfach Formulare, die erstellt werden müssen, dynamische Formulare, gar keine Formulare sondern XXX?

Und wie definierst Du das, was mit den Generatoren erzeugt werden soll? Rechnest Du das aus dem JSF-XML?
Kannst Du nicht vielleicht schon die Facelets per Generator erzeugen lassen? z.B. aus DTL-Files? Das fände ich interessant...
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Code Generation für JSF
« Antwort #2 am: 14.03.12 - 22:01:56 »
Das ist ein wenig niedriger aufgehängt. Die haben eine Linie von sehr ähnlichen Anwendungen, welche die Preise der Produkte und Produktkombinationen verschiedener Versicherungssparten ausrechnen. Und da kann man sehr wohl eine Menge generieren. Der Fokus ist dafür eng genug. Definitiv. Der Fokus wird natürlich auch dadurch verengt, dass nicht überall die neuesten Frameworks verwendet werden. Nicht mal JSF 2.0. Und als Entwickler ärger ich mich natürlich immer, wenn ich genau weiss, dass die repitive Aufgabe x in neueren Frameworks eben schon gelöst ist. An der und anderer Stelle kann man aber statt Rumjammern Codegenerierung einsetzen und so erstaunliche Produktivitätsgewinne erzielen.

Die für mich vielleicht interessanteste deutsche Stimme Lars Vogel betonte immer wieder Code Generierung.
Natürlich nicht für Romantik a la aus Notes Anwendungen automatisch JEE5 Anwendungen generieren, eines der lustigsten Projekte, die je in meiner Nähe angegangen wurden (falls das jemand liest, der weiss worüber ich spreche: DAS IST NICHT BÖSE GEMEINT. Sag das mit Sympathie).

Kriterien für Kosten/Nutzen sind etwa:
- Gruppe ähnlicher Anwendungen
- keine brilliante Architektur -> also die Regel und Architektur ist schwierig
- Trägheit in den benutzten Frameworks -> Trägheit ist da die Regel, weil kaum ein Team so gut ist, dass es alles so gut im Griff hat, dass man stets auf die neuesten Frameworks wechseln können. 

Das ganze generiert natürlich nicht die Anwendung auf Knopfdruck. Es leistet vielmehr eine Menge hilfreicher Vorarbeit, auf dem aufbauend sich Entwickler wie ich sich auf die wirklichen Tücken der spezifischen Anwendungsfälle fokussieren können.

In diesem Fall ist es keine Raketen-Wissenschaft, eher Fleißarbeit, die einmal gemacht noch mehr Fleißarbeit einspart.

my intentions are good

Axel
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re: Code Generation für JSF
« Antwort #3 am: 15.03.12 - 12:16:09 »
Zitat
welche die Preise der Produkte und Produktkombinationen verschiedener Versicherungssparten ausrechnen

Heißt das, dass Du die Logik per Generator zusammenbaust?
Das hört sich interessant an.
Unterscheiden sich da nur Parameterwerte oder auch Parameter oder gar Berechnungsmethoden?
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Code Generation für JSF
« Antwort #4 am: 15.03.12 - 18:13:44 »
Nein. Das macht der Jörg.  ;D Ohne Generator.
Ich mach die JSF gui, die rationale Einbindung zwischen Fachlichkeit und GUI, die Whitebox/Blackbox-Teststrategie Konzeptionierung, Architekturberatung und halt Code-Generierung von GUI Komponenten.

Ein Facelet ist eine xml Datei, in der die GUIs deklariert weren und Methoden der Backing-Beans (Java Klassen) mittels JSF-Expression Language angesprochen werden.
Die einzelnen GUIs werden von den Fachabteilungen im ersten Schritt gemalt. Wenn ich das nun zuerst schreibe und das dann nach diesen Expression-Language Attributen durchscanne, weiss ich welche Methoden das Backing Bean benötigt. Damit kann ich das Backing Bean als .java Klasse schon mal generieren mit den benötigten Methoden und brauch die nicht selbst abzutippen. Ich kann das Backing Bean in die facelet-config (weitere xml Datei) per code ergänzen und auch die Navigations-Einträge dort, weil die immer gleich sind.
Dann kann ich mich auf die vielen Sonder-Details der GUI konzentrieren. Das soll weder roundtrip sein noch den gesamten Code generieren.  
Letztlich weißt die Geschäftslogik sowie deren über Jahre gewachsenen Backend-Datenstrukturen deutlich mehr Spezialfälle auf als die GUIs.

Gruß Axel  
« Letzte Änderung: 15.03.12 - 19:01:59 von Pitiyankee »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz