# JBOSS vs ZK



## hacpro (24. Okt 2008)

hallo liebe gemeinde.. 
ich habe ne frage.. kan mich nicht zwischen zk oder jboss entscheiden.. 
für welches tendiert ihr eher??lege grossen wert auf euere meinung 

danke danke viel mals schon im voraus!!


----------



## byte (24. Okt 2008)

zk ist ein framework, jboss ne firma. was soll also diese frage?


----------



## hacpro (24. Okt 2008)

richfaces vs zk


----------



## robertpic71 (24. Okt 2008)

Der Hauptunterschied besteht da wohl in der Komplexität. Richfaces ist ein Zusatz, welcher das ohnehin schon komplexe JSF noch etwas komplexer macht. Wenn man Ajax-Funktionalität will, geht das mit ZK etwas direkter.
Ich fasse mal zusammen:

*JSF + Richfaces
*
- gewisse Grundkomplexität durch JSF
- Mix Actions für JSF, Events für Ajax-Zusätze
- XML Hell (mehrere Namesspaces...)
+ JSF praktisch schon Industriestandard
- für Ajaxzusätze von JSF ist das Rennen auch noch offen
+ breitere Unterstützung anderer Hersteller/Frameworks
+ freie Lizenz

*ZK*
+ einfach, versteckt die Komplexität vor dem Programmierer (Ajax-Kommunikation)
+ viele und teilweise sehr mächtige Komponenten (FCKEditor, Paging mit einem Schlüsselwort..)
+ nicht zwingend ein Html/JSP Aufsatz, XML-Beschreibung dadurch einfacher/kürzer wie JSF+Ajax
+ XML-GUI Beschreibung = Java-API (<Textbox value="x" > = textbox.setValue("x")) 
+ auch XML-lose GUI-Programmierung, ganz im Stil von Swing/SWT/GWT möglich
+ Desktop Programmiermodel
+ integriert auch viele andere Libs (z.B. Comet für Serverpush)
+ ScriptVariante (zscript) --> GUI-Änderung + Java in zscript ohne Serverrestart (Prototyping!)
- Dual Licence wie MySQL: 1xGPL 1xKommerziell
- fremde Frameworks machen von sich aus keine ZK-Anbindung (muss immer von ZK-Team/Community) erstellt werden (derzeit Hibernate, EJB, Seam, Spring)

Für mich persönlich hat der Mix aus XML-Gui-Beschreibung und Desktopprogrammiermodell das Original (Swing) überholt. So kann ich Events im Controller/Composer allein durch die Namensvergabe holen:

```
<window>
Inputtext:
<textbox id="input"/>
Ausgabe der Ajaxrespone
<label id="repeater"/>
<button id="home" label="Index"/>
</window>
```


```
public void onChange$input() {    // Event $ ComponentId = autowired Events
  // wenn die Textbox input geändert wurde
..
public void onClick$home() { // mit Event
  // wenn auf den Button home gedruckt wurde
```

Ich könnte natürlich auch im klassischen Swingstil ein Event beim Button registrieren oder auch auf eine Methode im zscript verweisen, welche  dann interpretiert wird (d.h. testen ohne Restart, Speichern + Browser aktualisieren).


```
<textbox onChange="change()"/>
..
<zscript>
void change() {
    repeater.value = input.value;
}
</zscript>
```

/Robert

PS. Ich habe Vor- und Nachteile welche beide Frameworks gleich betreffen weggelassen (z.B. Serverlast..)


----------



## hacpro (30. Okt 2008)

hey danke für die detailierte antwort.. hat mir sehr geholfen


----------

