# Framework zur Erstellung Java-Desktop-Anwendungen



## R2D2 (20. Mai 2010)

Hallo,

ich bin auf der Suche nach einem guten freien/kommerziellen Java-Framework zur Erstellung von Standalone-Java-Applikations. Es sollte wenn möglich, bereits viele Anwendungs-Bausteine
von Hause aus mitbringen wie z.Bsp: Benutzer-/ Rollen- Konzept, Tree, Logging, etc.

Kann mir jemand hierzu gute Frameworks nennen?

Danke für Eure Mühe.

R2D2


----------



## maki (20. Mai 2010)

Eclipse RCP

k.A. ob es ein Benutzerkonzept gibt, ansonsten gibt es eigentlich alles und viel mehr 
Bin kein Fan vom Eclipse Logging, hab mir dafür einen Log4J Appender geschreiben, weil die Standard log view von Eclipse RCP doch alles hat was ich brauche.

Allerdings hat das alles eine steile Lernkurve, OSGi musst du verstanden haben, dazu die Eclipse Erweiterungen, SWT/JFace, usw.

Kann dir dieses Tutorial empfehlen: Eclipse RCP Tutorial


----------



## Wildcard (20. Mai 2010)

maki hat gesagt.:


> k.A. ob es ein Benutzerkonzept gibt


Mit equinox security sollte da schon einiges vorhanden sein. Hängt halt auch etwas davon ab was man sich darunter vorstellt.


----------



## Gast2 (21. Mai 2010)

maki hat gesagt.:


> Eclipse RCP
> Bin kein Fan vom Eclipse Logging, hab mir dafür einen Log4J Appender geschreiben, weil die Standard log view von Eclipse RCP doch alles hat was ich brauche.
> [/url]



Darf ich fragen warum??? Hab mir das Eclipse Logging auch schon mal angeschaut und war nicht sicher,welches von beiden besser ist???


----------



## maki (21. Mai 2010)

Mit Eclipse Logging bist du abhängig vom RCP, und die schnittstelle des Loggers ist anders als in allen anderen Log Frameworks in Java,  mit log4j kann ich auch in normalen OSGi Bundles loggen (oder EJBs, oder Servlets, oder Swing Apps, etc. pp.), also logge ich überall, auch in der RCP mit log4j, und mein Appender sorgt dafür, dass die RCP die log Einträge auch anzeigen kann(Standard error log view), konfiguriert wird das ganze ausschliesslich über log4j, hab ein eigenes fragment mit der log4j.properties und dem Appender.


----------



## Gast2 (21. Mai 2010)

okay was musstest du noch machen damit der error log view die sachen anzeigt?


----------



## R2D2 (21. Mai 2010)

Hallo,

danke erstmal für die bisherigen Anworten. Das Eclipse RCP wird bereits von einem Kollegen untersucht. 

Wie sieht es Eurer Meinung nach mit dem Netbeans RCP aus. 
Hat hier jemand Erfahrungen mit Netbeans? 
Wie ist dessen Marktdurchdringung und vorallem wie sieht es mit der zukünftigen Weiterentwicklung aus? Was geschieht mit Netbeans nach der Übernahme Oracales von SUN?
Gibt es irgendwelche großen Nachteile zum Eclipse RCP, oder sind beide bzgl. ihrer Leistungsfähigkeit ungefähr vergleichbar?

???:L???:L???:L


----------



## maki (21. Mai 2010)

SirWayne hat gesagt.:


> okay was musstest du noch machen damit der error log view die sachen anzeigt?


Nix 

Ausser ihn in die Perspektive einzubinden natürlich 


```
package dein.package;

import org.apache.log4j.AppenderSkeleton;
import org.apache.log4j.Level;
import org.apache.log4j.spi.LoggingEvent;
import org.eclipse.core.runtime.ILog;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;


public class EclipseLoggingServiceAppender extends AppenderSkeleton {

	// TODO replace hardcoded plugin id
	private static final String PLUGIN_ID = "deine.plugin.id";

	private ILog loggingService;

	@Override
	public void activateOptions() {
		this.loggingService = Platform.getLog(Platform.getBundle(PLUGIN_ID));
	}

	@Override
	protected void append(LoggingEvent event) {
		IStatus status = null;

		if (hasTrowable(event)) {
			Throwable throwable = event.getThrowableInformation().getThrowable();
			status = new Status(getSeverity(event), PLUGIN_ID, event.getMessage().toString(),
					throwable);
		} else {
			if (hasMessage(event)) {
				status = new Status(getSeverity(event), PLUGIN_ID, event.getMessage().toString());
			} else {
				status = new Status(getSeverity(event), PLUGIN_ID, "");
			}
		}

		loggingService.log(status);
	}

	private boolean hasMessage(LoggingEvent event) {
		return null != event.getMessage();
	}

	private boolean hasTrowable(LoggingEvent event) {
		return null != event.getThrowableInformation();
	}

	private int getSeverity(LoggingEvent event) {
		Level level = event.getLevel();
		if (level == Level.FATAL || level == Level.ERROR)
			return IStatus.ERROR;
		else if (level == Level.WARN)
			return IStatus.WARNING;
		else if (level == Level.INFO)
			return IStatus.INFO;
		else
			// debug, trace and custom levels
			return IStatus.OK;
	}

	@Override
	public void close() {
	}

	/**
	 * Return always false, we have our own layout.
	 */
	@Override
	public boolean requiresLayout() {
		return false;
	}

}
```
Muss natürlich in ein eigenes Fragment, fand die log4j Konfig schwieriger unter OSGi als den Appender & Eclipse Error Log View.

Hier einer der Atikel die ich als Vorlage verwendet habe: EclipseZone - Universal Logger Plug-ins

Verstehe nciht warum es den Appender nciht schon fertig runterzuladen gibt, sonst hat log4j doch alle möglichen & unmöglichen Appender von haus aus dabei.


----------



## Gast2 (21. Mai 2010)

Danke muss ich mal testen wenn ich mal Zeit habe...


----------



## Wildcard (21. Mai 2010)

R2D2 hat gesagt.:


> Wie sieht es Eurer Meinung nach mit dem Netbeans RCP aus.
> Hat hier jemand Erfahrungen mit Netbeans?
> Wie ist dessen Marktdurchdringung und vorallem wie sieht es mit der zukünftigen Weiterentwicklung aus? Was geschieht mit Netbeans nach der Übernahme Oracales von SUN?
> Gibt es irgendwelche großen Nachteile zum Eclipse RCP, oder sind beide bzgl. ihrer Leistungsfähigkeit ungefähr vergleichbar?


Netbeans RCP ist schonmal nicht OSGi basiert was ich als großen Nachteil betrachten würde. Netbeans RCP hat bei weitem nicht die Verbreitung von Eclipse RCP was bedeutet das es wesentlich weniger Literatur und auch wesentlich weniger Module gibt die du in deinen RCP einbinden kannst.
Eclipse ist mittlerweile ein riesiges Ökosystem an Software. Nicht nur klassische Desktop Anwendungen, sondern auch Runtime Componenten, Modelling Technologie,...
Eclipse RCP Anwendungen lassen sich auch sehr einfach Webanwendung deployen, ab e4 lässt sich die Workbench mit CSS stylen und vieles mehr.
Also ganz ehrlich, als IDEs mögen Netbeans und Eclipse in etwa gleich auf sein, aber als Anwendungsframework ist Eclipse der Platzhirsch.


----------



## Daniel_L (21. Mai 2010)

In der kommenden Version 6.9 von NetBeans tut sich was in Sachen OSGi: OSGiAndNetBeans - NetBeans Wiki

Es sind in den letzten Monaten zunehmend mehr Bücher über NetBeans als RCP erschienen.

NetBeans basiert auf Swing als Standard-UI-Toolkit, Eclipse verwendet SWT (siehe auch Geertjan's Blog : Weblog).

Persönlich gefällt mir NetBeans wesentlich besser, weil übersichtlicher und intuitiver als Eclipse.


----------



## maki (21. Mai 2010)

Daniel_L hat gesagt.:


> In der kommenden Version 6.9 von NetBeans tut sich was in Sachen OSGi: OSGiAndNetBeans - NetBeans Wiki


Super! Wieviel Jahre zu spät?  ca. 7?



Daniel_L hat gesagt.:


> Persönlich gefällt mir NetBeans wesentlich besser, weil übersichtlicher und intuitiver als Eclipse.


Es geht doch nicht um die IDE


----------



## Wildcard (21. Mai 2010)

SWT + JFace + Eclipse UI bietet einfach mehr als Swing, also würde ich es nicht unbedingt als Positivmerkmal sehen das Netbeans Swing basiert ist. Eclipse kann schon heute mit unterschiedlichen Toolkits betrieben werden. SWT ist Default, aber auch Swing, QT und Webanwendung ist möglich.
Mit Eclipse 4 wird das Toolkit dann einfacher austauschbar da die Workbench mit EMF modelliert wird und das Tookit nur noch das Workbench Model renderen muss, damit kann SWT dann einfacher gegen alternative Toolkits ausgetauscht werden als es heute der Fall ist.
Ausserdem hat Netbeans nichts vergleichbares zu Eclipse Modelling (EMF, Xtext, CDO, GMF,...) und schon alleine deshalb ist es wesentlich günstiger auf Eclipse als Framework zu setzen.
In meinem aktuellen Projekt sind beispielsweise nur noch ca. 10% des Codes handgeschrieben, ohne die Modellingtechnologien wäre ein Projekt dieser Größenordnung nur von einem wesentlich größeren Team umsetzbar.


----------



## Gast2 (21. Mai 2010)

Wildcard hat gesagt.:


> SWT + JFace + Eclipse UI bietet einfach mehr als Swing, also würde ich es nicht unbedingt als Positivmerkmal sehen das Netbeans Swing basiert ist. Eclipse kann schon heute mit unterschiedlichen Toolkits betrieben werden. SWT ist Default, aber auch Swing, QT und Webanwendung ist möglich.


Jop finde ich auch vor allem wenn ab e4 die css geschichte wirklich gut funktioniert. dann kann man SWT auch schön einfach designen. 



Wildcard hat gesagt.:


> In meinem aktuellen Projekt sind beispielsweise nur noch ca. 10% des Codes handgeschrieben, ohne die Modellingtechnologien wäre ein Projekt dieser Größenordnung nur von einem wesentlich größeren Team umsetzbar.


nice !!!


----------



## R2D2 (21. Mai 2010)

Hallo,

vielen Dank erstmal für die zahlreichen Antworten, diese haben mir schon sehr geholfen einen groben Überblick zu bekommen.
Ich werde den Thread deshalb als erledigt kennzeichnen, und bei neuen Fragen einen neuen öffnen.

Wünsche allen ein schönes Pfingstwochenende


----------

