Your SlideShare is downloading. ×
  • Like
  • Save
iPOJO 2.x - a tale about dynamism
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

iPOJO 2.x - a tale about dynamism

  • 433 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
433
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Clement Escoffier,Pierre Bourret
  • 2. OSGi™&Dynamic Systems
  • 3. Module LayerLifecycle LayerService LayerModular, Static applicationsExtender-based approach(coarse grain dynamism)Dynamic applications(fine-grain dynamism)
  • 4. Why choosing the harder case ?
  • 5. Adaptability
  • 6. SomethingSomewhereSomehow
  • 7. iPOJO2005 - 2012
  • 8. iPOJO 0.x2005 - 2008
  • 9. A simple model to developdynamic applications
  • 10. Plain Old Java Object
  • 11. Just the business logic
  • 12. @Component@Instantiatepublic class Host {@Requiresprivate Shape[] shapes;public Host() {// Create the frame...}//...}
  • 13. @Component@Provides@Instantiatepublic class Circle implements Shape {@ServiceProperty(name=Shape.NAME_PROPERTY)private String name;@Validatepublic void start() {name = "Circle";}public void draw(Graphics2D g2, Point p) {// Draw a circle}}
  • 14. iPOJO 1.x2008 - 2012
  • 15. Extension of thedependency modeltemporal, proxies, graceperiods, consistency, caching…
  • 16. Reacheda level of maturity
  • 17. 5000downloads / month
  • 18. Used inlarge-scale project(>1 000 000 LOC)
  • 19. Where did it failed ?
  • 20. 70 projects using iPOJO
  • 21. From 20 000 LOCTo > 1 000 000 LOC
  • 22. How developers are using iPOJO?
  • 23. The most wanted features
  • 24. Death by <xml/>
  • 25. XML required to create complexinstances
  • 26. @Configurationpublic class MyConfiguration {Instance myInstance = instance().of(MyComponent.class).with("message").setto("foo").with("list").setto(list(1, 2, 3));}1.10
  • 27. Death by (LDAP)
  • 28. LDAP has a simple syntax….for simple filters
  • 29. No variability
  • 30. Very very time-consumingdebugging
  • 31. @Requires(filter=“(property=${value})”private Service service;1.10
  • 32. Values from:System propertiesInstance configurationContext sources
  • 33. Service dependencyinterceptors2.0
  • 34. TrackerinterceptorRankinginterceptor
  • 35. TrackerinterceptorRefuse servicesTransform servicesFiltering
  • 36. Sophisticated selectionamong a set of providerAdvanced RankingRankinginterceptor
  • 37. Online manipulation
  • 38. Offline manipulationnot required anymore2.0
  • 39. Inheritance2.0
  • 40. Better testability and debugging
  • 41. Unclear errorsDying instances
  • 42. WTF !All my fields are null
  • 43. Declaration services:Is your declaration bound ?What was the error ?1.10
  • 44. Architecture of stopped instances1.10
  • 45. Injected values cached in fields2.0
  • 46. Easier extensibility
  • 47. New injection machine:Injection chains2.0
  • 48. Annotation-basedconfiguration2.0
  • 49. @Handlerpublic class MyHandler extends PrimitiveHandler<MyAnnotation> {public void configure(MyAnnotation configuration, ...){//…}}
  • 50. Intra-bundle injection
  • 51. @Instance(component=MyClass.class)private MyClass instance;@Instance(component=MyClass.class, name=“name”)private MyClass name;2.0
  • 52. Conclusion
  • 53. 1.10 -> Soonish2.0 -> End of June
  • 54. End of file