# Migration einer bestehenden Applikation nach e4



## dzim (23. Jun 2011)

Hallo zusammen,

ich hätte sicher tausend Sachen, die ich noch gern machen würde, wie z.B. EMF, xText, und neue Appkikationen auf Basis von e4 erstellen, aber zunächst einmal möchte ich mich daran versuchen eine bestehende Anwendung auf e4 Laufen zu bringen.

Ich habe mir einen älteren Blogeintrag (11.2010) herausgesucht, der das zum Thema hatte und es einmal ausprobiert:

1) Kopieren der Legacy.e4xmi in meine Anwendung.

2) Anpassen dieser Datei, so dass sie das Menü und die Toolbar enthält. Sowie den Perspective Stack natürlich.

```
<?xml version="1.0" encoding="ASCII"?>
<application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:advanced="http://www.eclipse.org/ui/2010/UIModel/application/ui/advanced" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="org.eclipse.e4.legacy.ide.application" elementId="org.eclipse.e4.legacy.ide.application" bindingContexts="_SeXUHO8EEd6BC9cDb6iV7y">
  <children xsi:type="basic:TrimmedWindow" xmi:id="_xXmqQJ1-EeCU_Zqrapwoxg" elementId="PCPWindow" label="PFS Customer Platform" iconURI="platform:/plugin/com.ipoque.p2p.tracker.rcp.pfs.ssdtool/icons/ipqlogo_16.gif" width="1024" height="768">
    <children xsi:type="advanced:PerspectiveStack" xmi:id="_foJJcJ1_EeCU_Zqrapwoxg">
      <children xsi:type="advanced:Perspective" xmi:id="_wVcQYJ2DEeCU_Zqrapwoxg" elementId="com.ipoque.p2p.tracker.rcp.pfs.ssdtool.ui.reportConfigurationPerspective" label="PFS Customer Perspective" iconURI="platform:/plugin/com.ipoque.p2p.tracker.rcp.pfs.ssdtool/icons/ipqlogo_16.gif"/>
    </children>
    <mainMenu xmi:id="_3qoukJ1-EeCU_Zqrapwoxg" elementId="menu:org.eclipse.ui.main.menu"/>
    <trimBars xmi:id="_JqHy8J1_EeCU_Zqrapwoxg">
      <children xsi:type="menu:ToolBar" xmi:id="_OpDyIJ1_EeCU_Zqrapwoxg" elementId="toolbar:org.eclipse.ui.main.toolbar"/>
    </trimBars>
  </children>
  <handlers xmi:id="_UW9TY_r3Ed6gmo7caOxU9g" elementId="_UW9TY_r3Ed6gmo7caOxU9g" contributionURI="platform:/plugin/org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.ExitHandler" command="e4.exit"/>
  <handlers xmi:id="_BESTZfr3Ed6gmo7caOxU04" elementId="_BESTZfr3Ed6gmo7caOxU04" contributionURI="platform:/plugin/org.eclipse.e4.ui.workbench.swt/org.eclipse.e4.ui.internal.workbench.swt.handlers.ShowViewHandler" command="e4.show.view"/>
  <handlers xmi:id="_eTBRgAFSEd-Z8rQksLwRYw" elementId="org.eclipse.e4.ui.saveHandler" contributionURI="platform:/plugin/org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.handlers.SaveHandler" command="_jR5mUAFSEd-Z8rQksLwRYw"/>
  <handlers xmi:id="_eTBRgAFSEd-Z8rQksLwRYx" elementId="org.eclipse.e4.ui.saveAllHandler" contributionURI="platform:/plugin/org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.handlers.SaveAllHandler" command="_jR5mUAFSEd-Z8rQksLwRYx"/>
  <bindingTables xmi:id="_SeXUEO8EEd6FC9cDb6iV7x" bindingContext="_SeXUHO8EEd6BC9cDb6iV7y">
    <bindings xmi:id="_UW9TZfr3Ed6gmo7caOxU9g" elementId="_UW9TZfr3Ed6gmo7caOxU9g" keySequence="CTRL+Q" command="e4.exit"/>
    <bindings xmi:id="_oRr6EAFSEd-Z8rQksLwRYw" elementId="_oRr6EAFSEd-Z8rQksLwRYw" keySequence="CTRL+S" command="_jR5mUAFSEd-Z8rQksLwRYw"/>
    <bindings xmi:id="_oRr6EAFSEd-Z8rQksLwRYx" keySequence="CTRL+SHIFT+S" command="_jR5mUAFSEd-Z8rQksLwRYx"/>
  </bindingTables>
  <rootContext xmi:id="_SeXUHO8EEd6BC9cDb6iV7y" elementId="org.eclipse.ui.contexts.dialogAndWindow" name="In Dialog and Windows">
    <children xmi:id="_SeXUEO8EEd6FC9cDb6iV7w" elementId="org.eclipse.ui.contexts.window" name="In Windows">
      <children xmi:id="_SeXUEO8EEd6FC9cDb6yV7x" elementId="org.eclipse.e4.ui.contexts.views" name="In Binding View"/>
    </children>
    <children xmi:id="_SeXUEO8EEd6FC9cDb6iV7x" elementId="org.eclipse.ui.contexts.dialog" name="In Dialogs"/>
  </rootContext>
  <commands xmi:id="e4.exit" elementId="e4.exit" commandName="Exit" description=""/>
  <commands xmi:id="e4.show.view" elementId="e4.show.view" commandName="Show View">
    <parameters xmi:id="_oRr6EAFSEd-Z8rQksLwRYz" elementId="org.eclipse.ui.views.showView.viewId" name="View"/>
  </commands>
  <commands xmi:id="_jR5mUAFSEd-Z8rQksLwRYw" elementId="org.eclipse.e4.ui.saveCommands" commandName="Save"/>
  <commands xmi:id="_jR5mUAFSEd-Z8rQksLwRYx" elementId="org.eclipse.e4.ui.saveAllCommands" commandName="Save All"/>
  <addons xmi:id="_XGB3wPZlEd-XstlTZ6nTXg" elementId="org.eclipse.e4.core.commands.service" contributionURI="platform:/plugin/org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/>
  <addons xmi:id="_XGB3wPZlEd-XstlTZ6nTXh" elementId="org.eclipse.e4.ui.contexts.service" contributionURI="platform:/plugin/org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/>
  <addons xmi:id="_XGB3wPZlEd-XstlTZ6nTXi" elementId="org.eclipse.e4.ui.bindings.service" contributionURI="platform:/plugin/org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon"/>
  <addons xmi:id="_LK0NgPZmEd-XstlTZ6nTXj" elementId="org.eclipse.e4.ui.workbench.commands.model" contributionURI="platform:/plugin/org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.CommandProcessingAddon"/>
  <addons xmi:id="_LK0NgPZmEd-XstlTZ6nTXk" elementId="org.eclipse.e4.ui.workbench.contexts.model" contributionURI="platform:/plugin/org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.ContextProcessingAddon"/>
  <addons xmi:id="_LK0NgPZmEd-XstlTZ6nTXl" elementId="org.eclipse.e4.ui.workbench.bindings.model" contributionURI="platform:/plugin/org.eclipse.e4.ui.workbench.swt/org.eclipse.e4.ui.workbench.swt.util.BindingProcessingAddon"/>
  <addons xmi:id="_XwQYkE2EEd-DfN2vYY4Lew" elementId="Cleanup Addon" contributionURI="platform:/plugin/org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.cleanupaddon.CleanupAddon"/>
  <addons xmi:id="_bqcWME2EEd-DfN2vYY4Lew" elementId="DnD Addon" contributionURI="platform:/plugin/org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.dndaddon.DnDAddon"/>
  <addons xmi:id="_7GC6sGp-Ed-QyNZjH9g15Q" elementId="MinMax Addon" contributionURI="platform:/plugin/org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon"/>
</application:Application>
```
3) CSS und images spassenshalber kopiert.

4) plugin.xml angepasst, um die CSS zu registrieren und das Produkt anzupassen

```
...
   <extension
         id="product"
         point="org.eclipse.core.runtime.products">
      <product
            application="myrcp.application"
            name="My RCP">
         <property
               name="windowImages"
               value="icons/ipqlogo_16.gif,icons/ipqlogo_32.gif,icons/ipqlogo_64.gif,icons/ipqlogo_128.gif">
         </property>
         <property
               name="appName"
               value="My RCP">
         </property>
         <property
               name="preferenceCustomization"
               value="plugin_customization.ini">
         </property>
         <property
               name="startupForegroundColor"
               value="000000">
         </property>
         <property
               name="startupMessageRect"
               value="100,20,350,20">
         </property>
         <property
               name="startupProgressRect"
               value="100,40,350,15">
         </property>
         <property
               name="aboutImage"
               value="icons/ipqlogo_128.gif">
         </property>
         <property
               name="applicationXMI"
               value="org.eclipse.platform/LegacyIDE.e4xmi">
         </property>
         <property
               name="cssTheme"
               value="org.eclipse.e4.ui.css.theme.e4_default">
         </property>
         <property
               name="applicationCSSResources"
               value="platform:/plugin/myrcp.pfs.ssdtool/images/">
         </property>
      </product>
   </extension>
...
   <extension
         point="org.eclipse.e4.ui.css.swt.theme">
      <theme
            basestylesheeturi="css/e4_default.css"
            id="org.eclipse.e4.ui.css.theme.e4_default.noos"
            label="Default Theme">
      </theme>
      <theme
            basestylesheeturi="css/e4_classic_winxp.css"
            id="org.eclipse.e4.ui.css.theme.e4_classic"
            label="Classic">
      </theme>
      <theme
            basestylesheeturi="css/e4_default_gtk.css"
            id="org.eclipse.e4.ui.css.theme.e4_default"
            label="GTK"
            os="linux">
      </theme>
      <theme
            basestylesheeturi="css/e4_default_mac.css"
            id="org.eclipse.e4.ui.css.theme.e4_default"
            label="Mac"
            os="macosx">
      </theme>
      <theme
            basestylesheeturi="css/e4_default_win7.css"
            id="org.eclipse.e4.ui.css.theme.e4_default"
            label="Win7"
            os="win32"
            os_version="6.1">
      </theme>
      <theme
            basestylesheeturi="css/e4_default_winxp_blu.css"
            id="org.eclipse.e4.ui.css.theme.e4_default"
            label="Win XP Blue"
            os="win32">
      </theme>
      <theme
            basestylesheeturi="css/e4_default_winxp_olv.css"
            id="org.eclipse.e4.ui.css.theme.e4_default.xpolive"
            label="Win XP Olive"
            os="win32">
      </theme>
      <theme
            basestylesheeturi="css/e4_classic_win7.css"
            id="org.eclipse.e4.ui.css.theme.e4_classic"
            label="Win 7 Classic"
            os="win32"
            os_version="6.1">
      </theme>
      <theme
            basestylesheeturi="css/e4_default_gtk.css"
            id="org.eclipse.e4.ui.css.theme.e4_default"
            label="Solaris"
            os="solaris">
      </theme>
      <theme
            basestylesheeturi="css/e4_default_gtk.css"
            id="org.eclipse.e4.ui.css.theme.e4_default"
            label="AIX"
            os="aix">
      </theme>
      <theme
            basestylesheeturi="css/e4_classic_winxp.css"
            id="org.eclipse.e4.ui.css.theme.e4_default"
            label="HPUX"
            os="hpux">
      </theme>
   </extension>
...
```
5) neues product angelegt und IMHO alle dependencies hinzugefügt (also wenn ich jetzt "add required plugins" drücke, kommt nichts neues mehr hinzu).

6) Programm gestartet............... _*CRASH!?*_

Das Programm zeigt kurz den Splash-Screen, ich sehe auch eine der Log-Meldungen des Activators, dann aber beendet sich das Programm ohne weitere Meldungen. Keine Exceptions. Nichts. Ich kann auch nicht verifizieren, ob die JVM abgestürzt ist, da keine der typischen Files im meinem Home-Verzeichnis liegen.

Das ist nicht sehr hilfreich. Weder für mich, noch für euch, aber vielleicht habt ihr das ja schon mal hin bekommen und könnt mir Tips geben. Ansonsten - mal sehen, vielleicht antwortet ja der Blogger noch mal - ich hab da auch schon einen Kommentar hinterlassen ;-)

Wie auch immer: Danke im voraus!
Daniel


----------



## krazun (24. Jun 2011)

Was nutzt du denn als TargetPlatform?

Falls du deine 3.x TargetPlatform nutzt, musst du die "Eclipse e4 Tools Bridge for 3.x" der TargetPlatform hinzufügen.

Vielleicht hilft dir dieser Blogpost von Tom Schindl weiter:

How to apply the e4 programming model to 3.x | Tomsondev Blog

mfg,
krazun


----------



## dzim (24. Jun 2011)

Hi krazun,

ich möchte nicht in 3.x die Möglichkeiten des e4 Modells benutzen.
Ich möchte umgekehrt meine bestehende 3.x Anwendung in 4.1 laufen lassen.
Den Artikel kannte ich schon.

Ich habe bislang herausgefunden, dass ich och diverse Abhängigkeiten erfüllen muss:
1) equinox.ds
2) equinox.event
und noch ein paar weitere.

Aber, nachdem meine Anwendung grob lief, nur die Toolbar/PerspectiveStack mehrfach vorhanden war, bekomme ich jetzt folgenden Fehler:


```
!ENTRY org.eclipse.e4.ui.workbench 4 0 2011-06-24 15:50:46.507
!MESSAGE Unable to create class 'org.eclipse.ui.internal.StandardTrim' from bundle '55'
!STACK 0
org.eclipse.e4.core.di.InjectionException: java.lang.NullPointerException
        at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:63)
        at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:828)
        at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:108)
        at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:310)
        at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:250)
        at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:177)
        at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:93)
        at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:64)
        at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:49)
        at org.eclipse.e4.ui.workbench.renderers.swt.ToolControlRenderer.createWidget(ToolControlRenderer.java:58)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:858)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:612)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:714)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$2(PartRenderingEngine.java:685)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$7.run(PartRenderingEngine.java:679)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:664)
        at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:59)
        at org.eclipse.e4.ui.workbench.renderers.swt.TrimBarRenderer.processContents(TrimBarRenderer.java:151)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:624)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$6.run(PartRenderingEngine.java:501)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:486)
        at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.processContents(WBWRenderer.java:572)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:624)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:714)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$2(PartRenderingEngine.java:685)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$7.run(PartRenderingEngine.java:679)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:664)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:930)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:885)
        at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:87)
        at org.eclipse.ui.internal.Workbench$3.run(Workbench.java:539)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:519)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
        at com.mycompany.rcp.pfs.ssdtool.SSDToolApplication.start(SSDToolApplication.java:123)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
        at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
Caused by: java.lang.NullPointerException
        at org.eclipse.ui.internal.StandardTrim.createStatusLine(StandardTrim.java:81)
        at org.eclipse.ui.internal.StandardTrim.createWidget(StandardTrim.java:39)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
        ... 51 more
```

Ich davon mal abgesehen, dass ich den PerspectiveStack eigentlich nicht sehen will, sträubt sich die Legacy-Anwendung noch.


----------



## dzim (24. Jun 2011)

Ich hab vorher den PerspectiveStack auf invisible gesetzt. Warum auch immer, aber dadurch werden die Toolbar-Items nicht ausgelöst. Der Perspective-Switcher bleibt aber.

Ich habe auch noch beispielhaft eines meiner Plugins hinzugefügt, dass ich in dem View, der dafür zuständig ist, ein paar Aktionen triggern kann. Jetzt öffnen sich aber keine Editoren. Woran das nun schon wieder liegt...


----------



## tomsontom (24. Jun 2011)

Es gibt bei Eclipse 4.x auch Dependencies welche NICHT über Requires aufgelöst werden können (z.b. equinox.ds, renderers.swt) welche durch das Design der Eclipse 4.x Application Platform zu stande kommen.

Bitte stell deine Frage auf der Eclipse Newsgroup (Eclipse Community Forums: Welcome to the forum), dann helfen wir dir gerne weiter deine Anwendung zum Laufen zu bringen!

Tom Schindl


----------



## vogella (29. Jan 2012)

Eine Zusammenfassung der benötigten Plug-ins und der Vorgehensweise findest Du hier: Eclipse 4 and the Compatibility Layer - Tutorial

Ansonsten ist ev. auch mein (überarbeitetes) Eclipse 4 Tutorial interessant für Dich: Eclipse 4 RCP - Tutorial


----------



## dzim (1. Feb 2012)

Etwas verspätet, aber ich möchte euch zweien danken!

Ich les' immer schön regelmäßig eure Blog-Einträge und freu mich immer wieder, wenn auch nur irgend eine Kleinigkeit bei mir Hängen bleibt!

@Tom: Ich bin gerade (wieder einmal) sehr versucht, mich mit deinem e(fx)clipse näher zu beschäftigen! Jedenfalls denke ich, dass man bei dem ein oder anderen ausgewählten Anwendungsfall mal JFX in die SWT-Anwendung integrieren könnte (ok, dann aber wahrscheinlich ohne e(fx)clipse - ich denke nicht, dass man die FXMLs einfach so an der Stelle, wo man sie im SWT brauchen könnte, nachladen kann - oder doch?)
Es freut mich jedenfalls, dass es das Ganze jetzt endlich auch für Linux gibt!
Mac hab (und will ;-) ) ich nicht und mein Windows Vista ist mir zu lahm und mir fehlen dann meine virtuellen Arbeitsflächen...

@Lars: Was mich hier interessieren würde ist, ob man beides vermischen kann - also Compatibility und neuen Ansatz?
Hintergrund der Frage ist, dass ich fast alleine die bisherige Anwendung und alle (Extension-Point-basierten) Plugins geschrieben habe - der Aufwand, um das alles nach e4 zu portieren - nicht abzuschätzen (ca. 100000 Zeilen möchte ich nicht durchgehen - zumal hier einige Teile sehr unorthodox/unsauber/etc. geschrieben sind...).
Ich würde nur gerne wissen, wenn ich jetzt ein Plugin in der neuen e4-Weise schreibe (über die Fragmente, oder wie die Beschreibung der UI dann heißt), ob ich die immer noch wie gewohnt über Extension-Points in meiner Anwendung integrieren kann, zumal die Anwendung ja eben noch Old-Fashion e3.x ist und nur über das default-Application-Model geladen wird.


----------



## vogella (1. Feb 2012)

Du kannst auf jeden Fall das Comp-Layer nutzen, dann geht aber DI nicht automatisch. Tom hat das das Forward Layer entwickelt, das müßtest Du Dir mal anschauen. Was im Comp-Layer standard mässig geht, ist das CSS Styling.

Ich persönlich würde nicht mischen, hoffentlich hast Du Core und UI sowieso in getrennten Plug-ins dann sollte der Grad der Wiederverwendung relativ hoch sein. Toll an Eclipse 4 ist, daß Du jetzt Funktionalität als OSGi Service injecten kannst, d.h. Du kannst Deine Applikaton noch besser modularisieren.


----------



## dzim (1. Feb 2012)

Also ich wollte auf keinen Fall in alten Plugins jetzt anfangen, auch DI reinzubringen - entweder ganz, oder gar nicht.
Der Gedanke, den ich dabei schon einmal gesponnen hatte, war, dass ich die Kernanwendung (das Ding, das den Extension-Point bereit stellt), auf e4 portiere. die bestehenden Plugins bleiben dann erst einmal wie sie sind und laufen im Kompatibilitätsmodus, neue dagegen werden von Grund auf mit e4-Mitteln geschrieben.

Mit vermischen meinte ich hier also vielmehr, dass ich gleichzeitig Plugins verwende, die noch in e3.x geschrieben sind und aber auch daneben neue auf e4-Basis betreibe. (Etwas doppelt gemoppelt geschrieben, aber ich hoffe, du verstehst, worauf ich hinaus will.)

Daniel


----------



## Gast2 (2. Feb 2012)

vogella hat gesagt.:


> Du kannst auf jeden Fall das Comp-Layer nutzen, dann geht aber DI nicht automatisch. Tom hat das das Forward Layer entwickelt, das müßtest Du Dir mal anschauen. Was im Comp-Layer standard mässig geht, ist das CSS Styling.
> 
> Ich persönlich würde nicht mischen, hoffentlich hast Du Core und UI sowieso in getrennten Plug-ins dann sollte der Grad der Wiederverwendung relativ hoch sein. Toll an Eclipse 4 ist, daß Du jetzt Funktionalität als OSGi Service injecten kannst, d.h. Du kannst Deine Applikaton noch besser modularisieren.



Hi Lars,

ist das e4 überhaupt schon soweit ausgereift, dass es für Produktionsanwendungen eingesetzt werden kann?


----------



## vogella (15. Feb 2012)

@SirWayne: Siehe hier: The End of Eclipse 3.x


----------



## vogella (15. Feb 2012)

@dzim sollte gehen, so funktioniert ja im Prinzip auch der Comp Layer. Kannst Du ja mal ausprobieren. Wie habe ich angefangen hier zu beschreiben: 

Eclipse 4 Modularity - Tutorial


----------

