# Eclipse RPC, Netbeans, RPC



## mvitz (6. Mrz 2009)

Hallo zusammen,

für meine Bachelorarbeit habe ich die Aufgabe verschiedene Clienttechnologien in Java zu evaluieren.

Neben dein "reinen" Techniken Swing und SWT möchte ich auch noch Eclipse RPC, Netbeans RPC und evtl. weitere in den Bestand aufnehmen um anschließend auf 2-4 genauer einzugehen.

Da ich bisher aber lediglich mit Swing gearbeitet habe, ist es bisher für mich sehr befremdlich und deswegen möchte ich hier einige Fragen loswerden.

1) Gibt es noch weitere Techniken/Frameworks für GUI Client Anwendungen unter Java?
2) Eclipse RPC Tutorials/Bücher. Was könnt ihr hier empfehlen? Ich habe zwar schon 2-3 gute Eclipse RPC Tutorials gefunden, aber die bieten dann doch nur sehr grundlegendes und erklären häufiger mehr wo ich in welcher GUI welche Wizzard bedienen soll, als mir zu erklären, was ich denn da mache.
3) Entwickelt man Eclipse RPC Anwendungen dann tatsächlich nur mit Eclipse und inklusive der Wizzards oder hat man da auch andere Möglichkeiten

Das wars erstmal, danke schon mal im voraus für eure mühe

Mfg
Michael


----------



## Wildcard (6. Mrz 2009)

1)Zwar bietet es dir keine Hilfe bei der GUI, aber OSGi (wie auch von Eclipse verwendet) ist ein tolles Framework für jede Art Anwendung.
2)
Eclipse: Building Commercial-Quality Plug-ins (Eclipse (Addison-Wesley)): Eric Clayberg, Dan Rubel: Amazon.de: Englische Bücher
Eclipse erweitern: Eric Gamma, Kent Beck: Amazon.de: Bücher

Die Eclipse Hilfe, das Eclipse Wiki und die Newsgroups sind aber prinzipiell schon alles was du brauchst.

3)Eclipse ist eine tolle Plattform und IDE und Eclipse PlugIns entwickelt man am besten in Eclipse, aber auch IntelliJ bietet support dafür. Natürlich geht es auch mit einem Texteditor, aber das ist eher für Masochisten.
Anders gefragt, warum sollte man Eclipse PlugIns nicht mit Eclipse entwickeln wollen?


----------



## Gast2 (9. Mrz 2009)

Und wenn du darüber eine Bachelorarbeit schreibst dann schreib RCP(Rich Client Platform) anstatt RPC(Remote Procedure Call) ...


----------



## KSG9|sebastian (9. Mrz 2009)

Zumal RCP nicht mit Swing vergleichbar ist. Swing sind lediglich UI-Komponenten, (Eclipse-)RCP ist ein komplettes Framework für Anwendungen


----------



## mvitz (9. Mrz 2009)

Danke erstmal WildCard, das hilft mir schon weiter.

Jo, das mit RCP und RPC war halt nurn Vertipper und ist mir durchaus bewusst. Genau wie das Swing da nur schwer zu vergleichen ist. Aber es geht halt auch um so Sachen wie, vorhandenes KnowHow, etc. und da kann es ja durchaus sein, dass es in der Firma in der ich die Bachelorarbeit absolviere günstiger ist, ein eigenes kleines Swing Framework zu erstellen, als eine so große und durchaus auch komplexe Lösung wie RCP ist.


----------



## Wildcard (9. Mrz 2009)

Eclipse RCP ist so viel, oder so wenig Eclipse wie man möchte, daher ist es falsch grundsätzlich von groß und komplex zu sprechen.
Weiterhin kann Eclipse RCP genausogut auch ein Swing Framework darstellen, den der grafische Teil der Workbench ist auch nur ein PlugIn im RCP, wer das nicht möchte, verzichtet auf die Features und nimmt Swing.


----------



## Gast2 (10. Mrz 2009)

Okay gibt es dann für Swing auch ein PlugIn oder wie funktioniert das dann?
Und wenn man die ganzen GUI Sachen (Workbench usw.) nicht mehr hat, was hat man von dem Framework dann noch??? Oder hat man die gleichen Sachen nur dann in Swing??


----------



## Wildcard (10. Mrz 2009)

Dann hat man immer noch die mächtige OSGi Plattform, immer noch das Adapter Handling, immer noch optional das Resource und Workbench Konzept, die Plugin Registry, Eclipse Jobs, Builders, alle Eclipse PlugIns die keine SWT/JFace Abhängigkeiten haben lassen sich verwenden.
Das sind wesentlich mehr als man meinen sollte, denn die meisten PlugIns spalten sich in einen Core und einen UI Teil auf und auf den UI Teil kann man dan entweder verzichten, oder ihn in Swing,Qt,... schreiben.


----------



## foobar (11. Mrz 2009)

Wenn man wirklich Swing in Eclipse RCP verwenden will/muß gibts auch noch SWTSwing oder direkt Eclipse on Swing: SWTSwing und Eclipse on Swing
Wobei ich mich frage wofür das gut ein soll? Eclipse RCP mit SWT/JFace ist Swing um Welten vorraus.


----------



## Wildcard (11. Mrz 2009)

Ausserdem gibt kann man mit der Klasse SWT_AWT oder Eclipse Albireo Swing in SWT embedden.


----------



## foobar (11. Mrz 2009)

Jo, und das klappt richtig gut. Ich habe mit der SWT_AWT Bridge den OpenstreetMapViewer von SwingX in ein Plugin integriert. Die Performance von dem Ding ist echt geilomat. Da kann der native SWT-Viewer noch nicht mithalten.


----------



## Wildcard (11. Mrz 2009)

foobar hat gesagt.:


> Jo, und das klappt richtig gut.


Bedingt. Es ist möglich und es ist gut, das es diese Möglichkeit gibt. Hat man jedoch die Wahl, sollte man keinesfalls die Swing Bridge verwenden.
Wir integrieren sehr viel aufwendigen Swing Code, aber seamlessly wird das niemals. Zu viele Ecken und Kanten in Bezug auf Threading Issues, Focus Handling, KeyBindings, modale Dialoge, unterschiedliches Font Rendering,...


----------



## foobar (12. Mrz 2009)

Bei dem Swingviewer sieht man überhaupt nicht, dass es sich um Swing handelt. Ansonsten würde ich das auch nicht machen.


----------



## johnwayne_83 (22. Mai 2009)

@ foobar: 
Hast du ein Kurzes Beispiel für deine OpenstreetMapViewer integration in ein plug-in?
Ich kriege da immer eine Exception, wenn ich das mit der SWT_AWT Bridge versuche.


----------



## foobar (24. Mai 2009)

```
import java.awt.Frame;

import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.jdesktop.swingx.JXMapViewer;
import org.jdesktop.swingx.mapviewer.DefaultTileFactory;
import org.jdesktop.swingx.mapviewer.GeoPosition;
import org.jdesktop.swingx.mapviewer.TileFactory;
import org.jdesktop.swingx.mapviewer.TileFactoryInfo;

public class SwtMap
{
    private final Composite parent;
    private JXMapViewer viewer;

    public SwtMap(Composite parent)
    {
        this.parent = parent;
        init();
    }
    
    private void init()
    {
        viewer              = new JXMapViewer();
        viewer.setTileFactory(getTileFactory());
        viewer.setZoom(11);
        viewer.setAddressLocation(new GeoPosition(51.5,0));
    }
    
    private TileFactory getTileFactory()
    {
        final int max = 17;
        TileFactoryInfo info = new TileFactoryInfo(1,max-2,max, 256, true, true, // tile size is 256 and x/y orientation is normal
                                                   "http://tile.openstreetmap.org", //5/15/10.png",
                                                   "x","y","z") 
        {
            @Override
            public String getTileUrl(int x, int y, int zoom) 
            {
                return this.baseURL +"/"+(max-zoom)+"/"+x+"/"+y+".png";
            }
        };
        
        return new DefaultTileFactory(info);
    }
    
    
    public Composite createMap()
    {
        Composite composite = new Composite(parent, SWT.EMBEDDED | SWT.NO_BACKGROUND);
        Frame frame         = SWT_AWT.new_Frame(composite);
        frame.add(viewer);
        return composite;
    }
```

Die View sieht dann so aus:

```
public class MapView extends ViewPart
{
    public final static String ID = "de.sksdev.tetracom.ui.views.MapView"; //$NON-NLS-1$
    private Composite map;
    
    public MapView()
    {
    }

    @Override
    public void createPartControl(Composite parent)
    {
        map = new SwtMap(parent).createMap();
    }

    @Override
    public void setFocus()
    {
        map.setFocus();
    }
}
```


----------



## johnwayne_83 (25. Mai 2009)

Danke für das Beispiel.
Ich habe wohl die swingx jars falsch eingebunden, weil ich beim Ausführen eine ClassNotFound Exception bekomme.


----------



## foobar (29. Mai 2009)

Du mußt aus den Jars ein Bundle erstellen. Dafür gibt es in Eclipse einen Wizard 'Create new Plugin from existing Jars' oder so ähnlich. Das Bundle fügst du dann deinem Plugin als Dependencie hinzu.


----------



## johnwayne_83 (29. Mai 2009)

Jop, hab das auch rausgefunden. Ich hatte die Jars nur im Build Path gesetzt (Eclipse meckert da nicht beim Editieren, nur beim Ausführen gibts dann Probleme). Hab jetzt aus den Jars ein Plug-in gemacht und es eingebunden.


----------

