Event Feedback‎ > ‎

Eclipse e4 Tutorial Day feedback

Tak for en rigtig hyggelig aften og de mange gode evalueringsskemaer i afleverede.
Håber alle kom godt hjem.

Ja det var så nogle af de nye spændende ting som e4 byder på.

For lige at summere på hvad vi lavede:
  • En simpel wizard applikation
  • En TODO applikation
  • Et TODO model interface og Todo implementation
  • En TODO mock model, via OSGi Component Service (content provider)

Var der nogle af jer der lagde mærke til at e4 Todo plugin'sne ikke har de typiske version 3.x RCP klasser?
  • Application.java
  • ApplicationActionBarAdvisor.java
  • ApplicationWorkbenchAdvisor.java
  • ApplicationWorkbenchWindowAdvisor.java
  • osv.
De er elimineret...perfekt, mindre kode!

Udover data model- og injection delen, kan Todo applikationen skifte look and feel dynamisk, via CSS styling. Se Theme -> Toogle menu punktet.


Vi nåede ikke at kigge den endelige kode igennem, så her er en opsummering ifbm. dependency
injection delen.

de.vogella.e4.todo.handler.ExitHandler.java

Denne handler benytter sig af annotationen @Execute, hvilket indikerer at metoden nedenfor er
execute metoden der skal kaldes når handleren aktiveres. Handleren afslutter programmet.

de.vogella.e4.todo.handler.ThemeSwitchHandler.java

Denne handler benytter sig også af annotationen @Execute.
Handleren skifter dynamisk applikationens CSS style, fra lyseblå til rød.

de.vogella.e4.todo.parts.TodoOverview.java

Denne viewpart får injected sin parent composite, via sin constructor.

Metoden buildUI bliver kaldt når en ny TodoOverview instans er klar, altså efter konstruktøren er færdig og alt er injected, via annotationen @PostConstruct, som kort sagt fungerer som en initialiserings metode.

de.vogella.e4.todo.parts.TodoDetails.java

Denne viewpart får også injected sin parent composite, via sin constructor. Derudover bliver en selection service, logger og model injected.

I setTodo() metoden, bliver argumentet todo injected, hvis der findes en Todo instans i det aktuelle kontekst. Man kan også se i metoden at der testes på om todo argumentet er null, hvilket sikre understøttelse af at todo kan være null.

de.vogella.e4.todo.provider.TodoContentProvider.java

Denne klasse er bare en simpel content provider til en tree viewer kontrol.

de.vogella.e4.todo.model.ITodoModel.java

Dette interface deklarerer getTodos() metoden, og interfacet er kontrakten mellem
ITodoModel injection delen i TodoOverview.java og den Todo OSGi component service (TodoMockModel.java) vi også lavede.

Sagt på en anden måde, servicen udstiller den ITodoModel model som bliver injected ind i  TodoOverview.java

de.vogella.e4.todo.model.servicemock.TodoMockModel.java

Denne klasse fungerer som provider af todo's via implementation af ITodoModel interfacet og klassen er associeret til at være en OSGi komponent (via component.xml i OSGi-INF folderen).
En instans af denne klasse bliver injected in i TodoOverview.java.

Konklusion

Jeg er positiv overrasket over hvor lidt kode der egentlig er. Det, i sig selv, kan sagtens blive en motivator for at fremme en hurtigere adaption til e4 platformen.

Spændende elementer

  • Meget færre kodelinier og Java klasser
  • Workbench EMF modellen er tilgængelig og live (ændre titel i modellen og vupti du ser det straks i den kørende applikation)
  • Plugin.xml er blevet trimmet, alt UI deklaration er flyttet til Application.e4xmi
  • DI - Dependency Injection giver mulighed for
    • Mere loosly-coupled kode
    • Nemmere UI testing (mocks). Vi kan nu nemmere injecte mocks contexts for det vi vil teste

Udfordrende elementer

Mindset

  • En hurdle for mange vil nok være at skifte mindset og lære den nye arkitektur at kende.
  • Men når man så er on-track, får man en meget mere enkel og fleksibel platform / løsning

Tooling

  • Workbench editoren er pt. primitiv, både brugergrænseflade- og produktivitetsmæssigt
    • Men er nu en "open" og live ressource, hvilket giver nye muligheder for nemmere integration UI mæssigt ( mht. UI design værktøjer o. lign.)
    • Der medfølger en e4 Visual Designer (åbn Application.e4xmi via Open With -> e4 Visual Designer) der gør UI elementerne mere visuelle, men der mangler stadig en del produktivitets tooling som type-ahead i input felterne der forventer input i relation til typer / klasser o.lign.
  • Da man har minimeret brugen af de klassiske arvehierarkier (med dependency injection) mister man umiddelbart eksisterende værdifulde shortcuts / keybindings som:
    • Type Hierarchy [CTRL-T] - uden arv (extends) er der ikke noget type hierarki, man kan ikke se hvem der arver fra f.eks ViewPart

Præsentationen og koden, som virker fint, er vedlagt nedenfor. Alle plug-ins'ne er i Zip-filen.

Afslutningsvis siger foreningen tak for det store fremmøde og for en rigtig god aften. Husk vi er på igen med Eclipse RCP Under the hood, Onsdag d. 10 November 2010.

Ses vi?....det tror jeg nok vi gør ;)

ċ
code.zip
(39k)
Ronni Kahalani,
1. okt. 2010 10.53
ą
Ronni Kahalani,
1. okt. 2010 11.53
ć
Ronni Kahalani,
1. okt. 2010 10.54