what s next for e4
play

Whats next for e4 Tom Schindl <tom.schindl@bestsolution.at> - PowerPoint PPT Presentation

Whats next for e4 Tom Schindl <tom.schindl@bestsolution.at> Twitter: @tomsontom Website: http://www.bestsolution.at About Tom CTO BestSolution.at Systemhaus GmbH Eclipse Committer e4 Platform EMF Project lead


  1. Logging the efxclipse way private void processJPAResultList(List<Person> list) {// slf4j/log4j/efxclipse private void processJPAResultList(List<Person> list) {// slf4j/log4j/efxclipse for ( int i = 0; i < list.size(); i++ ) { for ( int i = 0; i < list.size(); i++ ) { Person p = list.get(i); Person p = list.get(i); if ( logger.isEnabled(Level.DEBUG) ) { logger.debug("Processing " + p.getName() + " - " + p.getAddress().getStreet()); logger.debug("Processing " + p.getName() + " - " + p.getAddress().getStreet()); } } } } } private void processJPAResultList(List<Person> list) {// log4j-2.x/efxclipse for ( int i = 0; i < list.size(); i++ ) { Person p = list.get(i); // Logger#debug(Supplier<String>): void logger.debug(() -> "Processing " + p.getName() + " - " + p.getAddress().getStreet()); } } private void processJPAResultList(List<Person> list) {// efxclipse for ( int i = 0; i < list.size(); i++ ) { // Logger#<T>debug(T value Function<T,String>): T logger.debug(list.get(i), (p) -> "Processing " + p.getName() + " - " + p.getAddress().getStreet()); } }

  2. Logging the efxclipse way private void processJPAResultList(List<Person> list) {// slf4j/log4j/efxclipse private void processJPAResultList(List<Person> list) {// slf4j/log4j/efxclipse for ( int i = 0; i < list.size(); i++ ) { for ( int i = 0; i < list.size(); i++ ) { Person p = list.get(i); Person p = list.get(i); if ( logger.isEnabled(Level.DEBUG) ) { logger.debug("Processing " + p.getName() + " - " + p.getAddress().getStreet()); logger.debug("Processing " + p.getName() + " - " + p.getAddress().getStreet()); } } } } } private void processJPAResultList(List<Person> list) {// log4j-2.x/efxclipse for ( int i = 0; i < list.size(); i++ ) { Person p = list.get(i); // Logger#debug(Supplier<String>): void logger.debug(() -> "Processing " + p.getName() + " - " + p.getAddress().getStreet()); } } private void processJPAResultList(List<Person> list) {// efxclipse BAD IDEA for ( int i = 0; i < list.size(); i++ ) { // Logger#<T>debug(T value Function<T,String>): T logger.debug(list.get(i), (p) -> "Processing " + p.getName() + " - " + p.getAddress().getStreet()); } }

  3. Logging the efxclipse way private void processJPAResultList(List<Person> list) {// log4j-2.x/efxclipse for ( int i = 0; i < list.size(); i++ ) { Person p = list.get(i); logger.debug(() -> "Processing " + p.getName() + " - " + p.getAddress().getStreet()); } }

  4. Logging the efxclipse way private void processJPAResultList(List<Person> list) {// log4j-2.x/efxclipse for ( int i = 0; i < list.size(); i++ ) { Person p = list.get(i); logger.debug(() -> "Processing " + p.getName() + " - " + p.getAddress().getStreet()); } } static class Supplier1234 implements Supplier<String> { private Person p; Supplier1234(Person p) { this .p = p; } public void String get() { return "Processing " + p.getName() + " - " + p.getAddress().getStreet()); } } private void processJPAResultList(List<Person> list) {// log4j-2.x/efxclipse for ( int i = 0; i < list.size(); i++ ) { Person p = list.get(i); logger.debug( new Supplier(p)); } }

  5. Logging the efxclipse way private void processJPAResultList(List<Person> list) {// efxclipse for ( int i = 0; i < list.size(); i++ ) { logger.debug(list.get(i), (p) -> "Processing " + p.getName() + " - " + p.getAddress().getStreet()); } }

  6. Logging the efxclipse way private void processJPAResultList(List<Person> list) {// efxclipse for ( int i = 0; i < list.size(); i++ ) { logger.debug(list.get(i), (p) -> "Processing " + p.getName() + " - " + p.getAddress().getStreet()); } } static class Function1234 implements Function<Person,String> { public void String apply(Person p) { return "Processing " + p.getName() + " - " + p.getAddress().getStreet()); } } private static Function1234 INSTANCE = new Function1234(); private void processJPAResultList(List<Person> list) {// efxclipse for ( int i = 0; i < list.size(); i++ ) { logger.debug(list.get(i), INSTANCE); } list.stream() .map( p -> logger.debug(list.get(i), INSTANCE) ) .filter(…) }

  7. Servicelookup the efx way

  8. Servicelookup the efx way e4 built-in - single value

  9. Servicelookup the efx way e4 built-in - single value public class DiComponent { @Inject GreetService greetService; }

  10. Servicelookup the efx way e4 built-in - single value public class DiComponent { @Inject GreetService greetService; } NO e4 built-in - multi value

  11. Servicelookup the efx way e4 built-in - single value public class DiComponent { @Inject GreetService greetService; } NO e4 built-in - multi value public class DiComponent { @Inject List<GreetService> greetService; }

  12. Servicelookup the efx way e4 built-in - single value public class DiComponent { public class DiComponent { @Inject @Inject @Service GreetService greetService; GreetService greetService; } } NO e4 built-in - multi value public class DiComponent { @Inject List<GreetService> greetService; }

  13. Servicelookup the efx way e4 built-in - single value public class DiComponent { public class DiComponent { @Inject @Inject @Service GreetService greetService; GreetService greetService; } } NO e4 built-in - multi value public class DiComponent { public class DiComponent { @Inject @Inject @Service List<GreetService> greetService; List<GreetService> greetService; } }

  14. Servicelookup the efx way

  15. Servicelookup the efx way e4 static lookup single value

  16. Servicelookup the efx way e4 static lookup single value public class Component { public void m(IEclipseContext c) { A g = c.get(A. class ); } }

  17. Servicelookup the efx way e4 static lookup single value public class Component { public void m(IEclipseContext c) { A g = c.get(A. class ); } } NO e4 static lookup multi value

  18. Servicelookup the efx way e4 static lookup single value public class Component { public void m(IEclipseContext c) { A g = c.get(A. class ); } } NO e4 static lookup multi value public class Component { public void m(IEclipseContext c) { List<A> s = c.get(/*NO EXPRESSION*/); } }

  19. Servicelookup the efx way e4 static lookup single value import static o.e.f.c.ServiceUtils.*; public class Component { public class Component { public void m(IEclipseContext c) { public void m() { A g = c.get(A. class ); Optional<A> g = getService (A. class ); } } } } NO e4 static lookup multi value public class Component { public void m(IEclipseContext c) { List<A> s = c.get(/*NO EXPRESSION*/); } }

  20. Servicelookup the efx way e4 static lookup single value import static o.e.f.c.ServiceUtils.*; public class Component { public class Component { public void m(IEclipseContext c) { public void m() { A g = c.get(A. class ); Optional<A> g = getService (A. class ); } } } } NO e4 static lookup multi value import static o.e.f.c.ServiceUtils.*; public class Component { public class Component { public void m(IEclipseContext c) { public void m() { List<A> s = List<A> g = c.get(/*NO EXPRESSION*/); getServiceList (A. class ); } } } }

  21. Q: Dude. You showed IEclipseContext usage? Really?

  22. IEclipseContext retrieving & publishing to information in e4

  23. IEclipseContext retrieving & publishing to information in e4 EclipseContext@1

  24. IEclipseContext retrieving & publishing to information in e4 EclipseContext@1 EclipseContext@2

  25. IEclipseContext retrieving & publishing to information in e4 EclipseContext@1 my.Person: Person@1 MWindow: MWindowImpl@1 … EclipseContext@2

  26. IEclipseContext retrieving & publishing to information in e4 EclipseContext@1 my.Person: Person@1 MWindow: MWindowImpl@1 … EclipseContext@2 MPart: MPartImpl@1 …

  27. IEclipseContext retrieving & publishing to information in e4 EclipseContext@1 public class A { @Inject Person p; my.Person: Person@1 } MWindow: MWindowImpl@1 … EclipseContext@2 MPart: MPartImpl@1 …

  28. IEclipseContext retrieving & publishing to information in e4 EclipseContext@1 public class A { @Inject Person p; my.Person: Person@1 } MWindow: MWindowImpl@1 … EclipseContext@2 public class B { @Inject MPart: MPartImpl@1 private IEclipseContext c; … public void m() { c.getParent().set(Person. class ,p); } }

  29. IEclipseContext retrieving & publishing to information in e4 EclipseContext@1 public class A { @Inject Person p; my.Person: Person@1 } MWindow: MWindowImpl@1 … EclipseContext@2 public class B { @Inject MPart: MPartImpl@1 private IEclipseContext c; … public void m() { c.getParent().set(Person. class ,p); } }

  30. IEclipseContext retrieving & publishing to information in e4 EclipseContext@1 public class A { @Inject Person p; my.Person: Person@1 
 } MWindow: MWindowImpl@1 
 … EclipseContext@2 public class B { @Inject MPart: MPartImpl@1 
 private IEclipseContext c; … public void m() { c.getParent().set(Person. class ,p); } }

  31. IEclipseContext retrieving & publishing to information in efxclipse EclipseContext@1 public class A { @Inject Person p; my.Person: Person@1 
 } MWindow: MWindowImpl@1 
 … EclipseContext@2 public class B { @Inject MPart: MPartImpl@1 
 @ContextValue( "my.Person" ) … private Consumer<Person> c; public void m() { c.accept(p); } }

  32. Q:So you have your JavaFX renderer is it production ready?

  33. Success story ‣ forumSTAR (new) ‣ Expected development time: 5 years ‣ Number of users: > 100,000 ‣ Number of developers: > 100 ‣ Total volume: > 100 Million € Source: http://modernisierung.site/summary/

  34. Q: Let’s talk about the future? What’s cooking?

  35. e4 editor story There is NONE

  36. e4 editor story

  37. efxclipse-editor story

  38. efxclipse-editor story Eclipse 4 Application Platform

  39. efxclipse-editor story Eclipse 4 Application Platform Core-API (eg resource-abstraction, auto-complete,…)

  40. efxclipse-editor story Eclipse 4 Application Platform Core-API Presentation API (eg resource-abstraction, auto-complete,…)

  41. efxclipse-editor story Eclipse 4 Application Platform Core-API Presentation API (eg resource-abstraction, auto-complete,…) Core-EFS Core-NIO (use IProject, IFile,..) (use java.nio.file.Path, …)

  42. efxclipse-editor story Eclipse 4 Application Platform Core-API Presentation API (eg resource-abstraction, auto-complete,…) Core-EFS Core-NIO JavaFX SWT* (use IProject, IFile,..) (use java.nio.file.Path, …) * does not exist

  43. Q: Tom. Do I really need to use OSGi (and the Eclipse IDE) in future?

  44. NO!

  45. NO! (at least not for e4 on JavaFX)

  46. Platform of the future

  47. Platform of the future JVM

  48. Platform of the future OSGi JVM

  49. Platform of the future Eclipse 4 efx-core App Platform OSGi JVM

  50. Platform of the future efx-platform Eclipse 4 efx-core App Platform OSGi JVM

  51. Platform of the future efx-platform Eclipse 4 efx-core App Platform OSGi JVM

  52. Platform of the future efx-platform Eclipse 4 efx-core App Platform JVM

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend