Welches WebFramework

Foermchen82

Top Contributor
Hi zusammen,

ich habe bisher hauptsächlich Rich-Clients, Server und Datenbank-Anbindungen programmiert. Jetzt möchte ich auch mal etwas Web-Luft schnuppern.

Hierfür gibt es von Java nativ JSP und JSF daneben gibt es noch diverse Open-Source Frameworks. Welches eignet sich für den Anfang am besten? Gibt es eine Art, die am häufigsten verwendet wird? So wie Swing bei Rich-Clients?
Daneben gibt es ja noch Applets, aber das ist ja wieder was eigenes und quasi eine Mischung aus Webanwendung mit RC-Technologie.

Gibt es nativ von Java auch eine AJAX-Lib oder muss man da auf externe Libs zugreifen?

Danke für die Starthilfe!!
 

MrWhite

Bekanntes Mitglied
Es gibt bestimmt bereits fast hundert Threads die sich dieser Fragestellung widmen, kannst ja mal die Forensuche bemühen.

Ich sage:

Kannst fast alles nehmen, aber Hände weg von JSF. Das ist ein overengineerter Scheissdreck, der für die Benutzung viel zu komplex ist. Würde zu Wicket raten.

Kennst ja sicher die geflügelten Worte: Complexity kills und Keep IT simple.

JSF sucks Incremental Operations
 
M

maki

Gast
Hey MrWhite,

bei JSF 1.1 stimme ich dir zu, beziehen sich deine Erfahrungen auch auf JSF 2.0 mit facelets?
Diese habe ich noch nicht genutzt, sollen aber besser sein, wobei das nciht schwer ist ;)
 

MrWhite

Bekanntes Mitglied
Hey MrWhite,

bei JSF 1.1 stimme ich dir zu, beziehen sich deine Erfahrungen auch auf JSF 2.0 mit facelets?
Diese habe ich noch nicht genutzt, sollen aber besser sein, wobei das nciht schwer ist ;)

JSF 1.1 kannte ich nie. Persönlich muss ich hier mit JSF 2.0, Richfaces, Facelets und JBoss SEAM arbeiten.

SEAM ist prinzipiell keine schlechte Technologie, aber leider stellenweise noch recht unausgereift. Einige Komponenten musste ich komplett überschreiben, weil sie schlecht designed waren (Erben nicht möglich etc.).

JSF 2.0: Facelets vereinfacht zwar die Entwicklung von "Komposit-GUI-Elementen" und ermöglicht es bessere, wiederverwendbare GUI-Strukturen nach dem DRY-Prinzip aufzubauen, trotzdem ist es weiterhin viel zu umständlich, eigene JSF-Komponenten zu schreiben (z.B. DataTable mit eigener Funktionalität, na Prost Mahlzeit). Das ist ein absolutes KO-Kriterium für mich.

Richfaces:
Ruft einfach mal die offizielle Doku auf. 100% CPU Auslastung im seit dem jeweils aktuellen Firefox. Seit Monaten jetzt schon. Noch Fragen?

Nachtrag:
Ganz zu schweigen von den Problemen, die man mit JSF bekommt, wenn man clientseitig noch Javascripts nutzen will. Durch das JSF-eigene ID-Vergabe verfahren braucht man hier erstmal dynamische Javascripts auf jeder Seite, um den Gebrauch von JS-Frameworks erst zu ermöglichen! Ich möchte JQuery nunmal nicht über Richfaces nutzen oder gaenzlich andere Frameworks einbinden!
 
Zuletzt bearbeitet:
M

maki

Gast
Danke, alles beantwortet.

Tipp: Wenn du denkst JSF 2.0 wäre Schrott, versuche es mal mit JSF 1.1 :D

... und ich dachte es wäre besser geworden... naja, zumindest scheint das Marketing genauso gut zu sein wie früher..
 

MrWhite

Bekanntes Mitglied
Um noch ein wenig zu polemisieren (bin gerade in Stimmung):

Das ist wie im Dritten Reich:

Die Partei (Sun) gibt einen offiziellen Weg vor, den jeder klar denkende Mensch (guter Developer) niemals gehen würde. Aber trotzdem gibt es genug Idioten die mitmachen und wenn man es dann selbst nicht mitmacht, wird man "irgendwohin" abtransportiert (ist arbeitslos).
 

Foermchen82

Top Contributor
es ist ja schön und gut, wenn es viele gute Wege gibt und auch bessere als den von Sun. Meine Frage zielt aber weniger auf Geschmack sonder eher auf Standards in der Wirtschaft ab. Da sehe ich halt bei Stellenanzeigen hauptsächlich JSF.
 

ARadauer

Top Contributor
es ist ja schön und gut, wenn es viele gute Wege gibt und auch bessere als den von Sun. Meine Frage zielt aber weniger auf Geschmack sonder eher auf Standards in der Wirtschaft ab. Da sehe ich halt bei Stellenanzeigen hauptsächlich JSF.

Es gibt eignetlich keinen wirklich industrie Standard... das ist einwenig schade... wir Java Entwickler werden eigentlich nicht 100%ig glücklich mit dem was wir haben. Ich würde persönlich JSF wählen, da es der Standard von Sun ist, muss aber ehrlich sagen, dass ich noch nie damit gearbeitet habe... könnte auch totaler Mist sein...

Es gibt eine Vielzahl von Frameworks aber es setzt sich keines richtig als "Das Framework" durch...

Ein Vorschlag: Such dir einen Standard Use Case deiner App zb Kunden darstellund und bearbeiten und nimm dir die Zeit das mit 3-5 Frameworks umzusetzen... vielleicht siehst du dann was dir am besten liegt...
 

homer65

Top Contributor
[Persönliche Meinung]
Ein Framework für Webanwendungen braucht man nicht.
Man kommt auch ohne ganz gut aus.
Für sinnvoll erachte ich jedoch das MVC Prinzip.
Das macht eine Webanwendung weniger komplex und erspart einem eine Menge "Denkarbeit".
[/Persönliche Meinung]
 

Foermchen82

Top Contributor
Ok ersetzen wir das Wort "Framework" durch "Technologie".

Ich möchte halt nicht den ganzen HTML und css code per Hand schreiben sondern lieber in Java Tabellen und Buttons erstellen und die werden dann "auf magische Weise" in HTML übersetzt.
 

Niki

Top Contributor
wenn du sowas willst kannst du dir zum Beispiel GWT anschauen. Ich hab mir das mal vor etwas längerer Zeit angeschaut und es hat recht brauchbar gewirkt. Wenn du viele Informationen vom Server brauchst könnte dir auch zk gefallen (ZK - Direct RIA).
 

Foermchen82

Top Contributor
Wenn ich das bis jetzt richtig sehe, ist JSF ja auch nichts weiter als TAG-basiertes schreiben von HTML-Seiten. Halt mit Zusatzfeatures. Gibt es von Java direkt eine Möglichkeit in Java eine HTML Seite zu erstellen so etwas wie bei ASP.NET mit den C# Komponenten? Oder muss man dafür dann doch auf Drittanbieter zugreifen??
 

kidsos

Aktives Mitglied
Gibt es von Java direkt eine Möglichkeit in Java eine HTML Seite zu erstellen so etwas wie bei ASP.NET mit den C# Komponenten? Oder muss man dafür dann doch auf Drittanbieter zugreifen??
JSF ist das Pendant zu ASP.NET. Insofern holst du dir da nichts von einem Drittanbieter, kommt direkt von Sun bzw. Oracle. Natürlich gibts weitere Komponentenbibliotheken, z.B. Richfaces, Icefaces, usw. Das sind dann nur Erweiterungen, die auf JSF aufbauen.

ja GWT kenn ich, ist halt eine externe lib
JSF ist auch nichts weiter als eine externe Bibliothek
 

ARadauer

Top Contributor
ich würde gwt nicht als externe lib bezeichnen...

wenn es nach dem geht ist alles eine externe lib das nicht in der api vorkommt.. hibernate, spring, log4j usw...
 

MrWhite

Bekanntes Mitglied
ich hab mir jetzt mal den jsf sucks link genauer angesehen...

gut argumentiert nenn ich was anderes...
An Analysis of Peter Thomas's JSF Critical Rant | Java.net

Gut argumentiert oder nicht sei mal so dahin gestellt. Der Punkt ist, dass Peter Thomas als JSF-Architekt sowieso befangen ist (und meiner Ansicht nach dafuer auch gelyncht gehoert) und der andere vielleicht mehr schlecht als Recht die Wahrheit auspricht. Wer von den beiden die Disputation gewinnt ist doch egal, reine Rhetorik und Auslegungssache.

Nutze mal JSF fuer eine richtige RIA und dann reden wir weiter, dann wirst du dich dem Lynchmob sicher bald anschliessen wollen.

Gut findet man JSF nur, wenn man absolut nichts anderes kennt.
 
Zuletzt bearbeitet:

MrWhite

Bekanntes Mitglied
~Beispiel~

Peter Thomas stellt indirekt klar:

You missed this, "If you would have talked 30 years ago to people programming in assembler, not everyone was happy seeing C come up,"

Das ist doch der blanke Hohn! Wenn man mit JSF eigene Komponenten bauen will kommt man sich vor, als solle man mit einem Zahnstocher ein Einfamilienhaus errichten.
 

MrWhite

Bekanntes Mitglied
Wie meinst du das? Bei ASP.Net habe ich die Möglichkeit in einer C# Klasse die ganze Webseite inkl der Tables usw in C# zu schreiben. Bei JFS hab ich bisher nur Tag-Strukturen gefunden und nichts wo ich in einer Java Klasse Oberflächenelemente ein die Webseite einfügen kann.

Doch, das geht auch mit JSF.

Sie z.B. die Website von BalusC, der hat mehr als genug Beispiele.

Aber wenn du dir eher was in die Richtung von Swing wünschst, dann ist Apache Wicket wirklich das Framework der Wahl für das Web.

Wie oft muss ichs dir eigentlich noch sagen, bis du mir mal glaubst.
 

Foermchen82

Top Contributor
Ich hab mir grad nochmal ein wenig JSF, Apache Wicket und GWT angeschaut. Gehe ich also richtig in der Annahme, dass wenn ich in JAVA die Kontrolle über das Layout und die Anordnung von Oberflächenelementen der Webseite haben will, bleibt mir nur das GWT? Bei allen anderen erfolgt die Anordnung immer irgendwie über eine HTML-Seite. Order sehe ich da was falsch?

Wenn ich da was falsch sehe, kann mir dann mal bitte jemand ein Beispiel zeigen wie ich z.b. ein Eingabeformular mit TextFeldern, Labels und Buttons in Java für JFS oder Wicket schreibe (order auch ein anderes Framework)?

Danke!
 
M

maki

Gast
Wenn ich da was falsch sehe, kann mir dann mal bitte jemand ein Beispiel zeigen wie ich z.b. ein Eingabeformular mit TextFeldern, Labels und Buttons in Java für JFS oder Wicket schreibe (order auch ein anderes Framework)?
Google?
 

Foermchen82

Top Contributor
Google hab ich auch schon befragt. Aber scheinbar nicht so , dass ich die richtigen Antworten bekomme. Ich lande immer bei einfachen Beispielen, die aber grade sowas wie ich haben möchte nicht zeigen.
 
M

maki

Gast
Du willst doch einfache Beispiele, oder?

Die sollen doch zu finden sein, wie man Textfelder, Labels & Buttons in JSF macht, und dasselbe nochmal für Wicket.

Aber helfen würde dir das nicht wirklich imho, diese Frameworks unterscheiden sich noch in vielen weiteren Punkten, nud bevor du ein JSF Projekt am laufen hast, brauchst du keine Beispiele imho, denn das ist schon aufwendig genug.
 

Foermchen82

Top Contributor
mir geht es ja nicht einfach um die Beispiele. Einige Frameworks können diese Elemente ja in Java schreiben und zur Page hinzufügen und das Layout definieren. Genau dafür such ich Beispiele. Ich möchte halt HTML weitestgehend umgehen!
 
M

maki

Gast
Dann meinst du GWT.

JSF nutzt XML, EL und Java Klassen, Wicket nutzt eine Mischung aus HTML und Java Klassen.
Das solltest du aber per Google schon rausgefunden haben ;)
 

Foermchen82

Top Contributor
Das ist richtig. Aber MrWhite meinte, dass JFS das Pendant zu ASP.Net und C# sein, als ich sagte, dass man damit ganze Webseiten in C# schreiben kann. Jedoch hab ich da bei den Beispielen nichts gefunden. Kennst du da was?
 
M

maki

Gast
Das ist richtig. Aber MrWhite meinte, dass JFS das Pendant zu ASP.Net und C# sein, als ich sagte, dass man damit ganze Webseiten in C# schreiben kann. Jedoch hab ich da bei den Beispielen nichts gefunden. Kennst du da was?
Na gut...

JSPs sind Servlets, nur aus einer anderen Sicht ;)
Jede JSP wird zu einem Servlet übersetzt und dann kompiliert.

Früher, als es noch keine JSPs gab, musste ich den dynamischen Teil der Seite im Servlet erzeugen, (out.write(...)), also HTML, JavaScript & CSS, glaub mir, das willst du nicht :)
Eigentlich sollten alle Bespiele für sowas getilgt sein, aber das Netz vergisst ja nie wirklich, jedenfalls kannst du dir das imho gleich sparen.
 

Foermchen82

Top Contributor
Ok. Naja GWT geht mir an der Stelle etwas zu weit, und scheint sehr Browserlastig zu sein. Wicket sehe ich da mal als Mittelweg. Ich werde mal Wicket und GWT in kleineren Projekten ausprobieren und mal schaun in welche richtung ich dann tendiere.

Danke für die Infos!
 

Foermchen82

Top Contributor
Ja aber genau das ist doch meine Frage: Wie geht das mit JSF? Bei den Beispielen bin ich nicht durchgestiegen! Wie kann ich z.b. in Java ein Komplettes EingabeFormular schreiben und dann in der Websseite quasi nur das ganze Formular einfügen?
 

FormEngine

Neues Mitglied
Wie kann ich z.b. in Java ein Komplettes EingabeFormular schreiben und dann in der Websseite quasi nur das ganze Formular einfügen?

Das beantwortet zwar nicht Deine Frage, wie man das in JSF macht, aber ein Formular definieren und einfach in der Seite einfügen kann man sehr gut mit der FormEngine (FormEngine - Java Framework für dynamische Web-Formulare).

Neben der Definition per XML kann man die Formular-Definition auch programmatisch über die Java-API zusammenfügen. Daraus wird dann das XHTML-Fragment für ein ausführbares (inkl. Validierungen und Berechnungen) Formular generiert, das man an beliebiger Stelle in den eigenen Code einfügt. Für die Funktionalität und die Anordnung der Elemente reichen also Java-Kenntnisse. Von Javascript bleibt man als Formularentwickler verschont. Lediglich den optischen Feinschliff am Layout (Farben, Abstände der Elemente, bei Bedarf eigene Icons usw.) muss man dann noch per CSS machen.
 

JimPanse

Bekanntes Mitglied
eine simple Form:
Java:
<f:view>
<h:form>
<h:inputText value="#{bean.name}"/>
<h:commandButton value="absenden"/>
<h:outputText value="#{bean.name}" rendered="#{not empty bean.name}"/>
</h:form>
</f:view>

//JSF 2.0
@ManagedBean
//Jsf1.2 + Apache Shale
@Bean
class Bean {
private String name;
//...getter und setter
}

fertig!

@MrWhite Du hast Anschein, das „HelloWorld“-Beispiel mit JSF nicht hinbekommen d.h. dein Frust auf JSF?
Naja für dich gibt es ja noch SELFHTML 8.1.2 (HTML-Dateien selbst erstellen) -> Schuster bleibt bei deinen Leisten!

Zu deiner Frage was JSF ist:

JSF ist eine Standard API, die durch den JCP (Mitglieder sind SUN, Oracle, IBM, etc. : The Java Community Process(SM) Program) spezifiziert wurde – wie auch JSP, Servlets, EJB etc. Damit hast du den großen Vorteil, das Tool-Anbieter (Eclipse) und Plattformen (bsp. JBoss, Liferay, etc.) die Technologie unterstützen. In der Referenz- Implementierung von SUN sind einige Standardkomponenten bereits vorhanden. Wie mit Servlets, kommt keiner auf die Idee nur die pure „API“ zu verwenden sondern bedient sich einige Erweiterungen. Sicherlich löst JSF nicht alle Probleme aber "DAS" Web-Framework, dass alle Probleme löst gibt es nicht.

Falls du Interesse an einem "richtigen" RIA mit JSF zu erstellen (was immer das für MrWhite sein soll)

dann:

JSF + Ajax + JChart + Google Map API
http://www.primefaces.org/showcase/ui/home.jsf
OpenFaces Online Demo ? See Components in action

JSF + Flex
jsf-flex - Project Hosting on Google Code


bzw. Richfaces, Trinidad, Icefaces, FlexFaces, etc... (sind einfach zu viele)

Eingene Komponente programmiert man eigentlich nicht mehr selber mit JSF sondern man Komponiert sie: http://www.tutorialized.com/tutorial/JSF-2-Templating-and-composite-components/45277

Grüße
 

blabla

Neues Mitglied
Wer nutzt JSF? Und noch wichtiger was noch dazu?
Spring+ Hibernate?

Ich weiß nicht, aber mir scheinen die Java Webframeworks ein bissl überkompliziert und overhead zu sein.(Alleine das deployen, xml dateien, properties etc.) Ich kann mir gar nicht vorstellen, dass ein einzelne Entwickler ein CMS programmieren kann (Beispiel im Gegensatz zu PHP oder RoR).

Was haltet ihr eigentlich vom Play Framework oder JRuby? (für den Threadstarter)
 
J

JohannisderKaeufer

Gast
Der Thread ist zwar schon etwas älter, aber trotzdem.

Ein Webframework das die Anforderungen erfüllt, den Großteil in Java erstellen zu können ist Apache Click.

Ein einfaches Beispiel von der Beispielseite

Java:
public class SimpleForm extends BorderPage {

    private static final long serialVersionUID = 1L;

    @Bindable protected Form form = new Form();
    @Bindable protected String msg;

    // Constructor ------------------------------------------------------------

    public SimpleForm() {
        form.add(new TextField("name", true));
        form.add(new Submit("OK"));

        form.setListener(this, "onSubmit");
    }

    // Event Handlers ---------------------------------------------------------

    /**
     * Handle the form submit event.
     */
    public boolean onSubmit() {
        if (form.isValid()) {
            msg = "Your name is " + form.getFieldValue("name");
        }
        return true;
    }

}

Das zugehörige Template wird mit Velocity umgesetzt.

Code:
$form

#if ($msg)
  <div id="msgDiv"> $msg </div>
#end

Ein weiteres interessantes Beispiel einer Tabelle die Sortierbar ist und eine Seitenverwaltung mitbringt

Table Paging : Click Examples

Den Java code findet man rechts oben.

Und im Template muß lediglich ein $table stehen.
 
I

IchRasteAus

Gast
"...Das ist wie im Dritten Reich:

Die Partei (Sun) gibt einen offiziellen Weg vor, den jeder klar denkende Mensch (guter Developer) niemals gehen würde. Aber trotzdem gibt es genug Idioten die mitmachen und wenn man es dann selbst nicht mitmacht, wird man "irgendwohin" abtransportiert (ist arbeitslos). ..."

HOHO was bist du denn für ein Freak? EJB wurde auch von SUN rausgegeben und nun? Sollen wir alle deiner Meinung nach wieder mit Connection + ResultSets arbeiten?

"...Ich weiß nicht, aber mir scheinen die Java Webframeworks ein bissl überkompliziert und overhead zu sein.(Alleine das deployen, xml dateien, properties etc.) Ich kann mir gar nicht vorstellen, dass ein einzelne Entwickler ein CMS programmieren kann (Beispiel im Gegensatz zu PHP oder RoR)...".

Dafür sind Java Webframeworks auch nicht gedacht gewesen sondern um die Verbindung zwischen der Weboberfläche und der dahinter liegenden Programmlogik zu realisieren d.h. Trennung von Logik und Design. Für eine einfache Webseite würde ich jetzt auch nicht unbedingt zu einem Java Webframework greifen -> dann klein und schmutzig mit PHP, CSS, JavaScript + Html.


Ich finde zurzeit Groovy/Grails ziemlich einfach und dynamisch! Grails - The search is over.
Obwohl ich JSF/Facelets vom Konzept her auch ganz gut finde!
 

bronks

Top Contributor
Ok ersetzen wir das Wort "Framework" durch "Technologie".

Ich möchte halt nicht den ganzen HTML und css code per Hand schreiben sondern lieber in Java Tabellen und Buttons erstellen und die werden dann "auf magische Weise" in HTML übersetzt.
Schau Dir mal auf netbeans.org unter Docs&Support das NetBeans E-commerce Tutorial an. Da wird KIS nach akutellem technischen Stand schrittweise, sehr gut und ausführlich demonstriert.
 

z-mon

Bekanntes Mitglied
Ok ersetzen wir das Wort "Framework" durch "Technologie".

Ich möchte halt nicht den ganzen HTML und css code per Hand schreiben sondern lieber in Java Tabellen und Buttons erstellen und die werden dann "auf magische Weise" in HTML übersetzt.

Warum habe ich hier eigentlich noch nichts von der Rich Ajax Platform (RAP) gehört? Mit Hilfe von RAP wirst du nie eine Zeile HTML schreiben müssen ...!

Eclipse RAP

Rich Ajax Platform – Einführung und Geschichte

Rich Ajax Platform Architektur

Einen weiteren Vorteil den du mit der RAP Technologie hast ... mit Hilfe des Single Sourcing kannst du Problemlos eine RCP UND eine RAP Anwendung bauen, basierend auf dem nahezu dem selben Code.

Grüße
 

Ähnliche Java Themen

Neue Themen


Oben