JDT Embraces Lambda Expressions - EclipseCon North America 2014

1,126 views

Published on

Java 8 is coming. It is happening right here. Developers of your favorite Java IDE are participating in shaping this long awaited milestone for the Java ecosystem: On time with the GA of Java 8, JDT will ship its first release with support for developing in Java 8.

If you have a basic understanding of the new features in Java 8, come here and learn how the JDT team mastered the challenges of lifting the Eclipse Java IDE to the next language version.

The main focus of this talk will be on lambda expressions, touching also some changes in the libraries that leverage lambda expressions. We will expose some examples demonstrating the complexity of the language and mention some caveats which should help you avoid some unpleasent surprises.

We will demo how to get started using Java 8 in Eclipse and show the latest tool features for working with lambda expressions including new quick assists etc.

Finally, we'll give a retrospective discussion of the situation of the JDT team, in terms of team changes, contributors, deadlines, interaction with expert groups, with the Eclipse community, and more.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,126
On SlideShare
0
From Embeds
0
Number of Embeds
237
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

JDT Embraces Lambda Expressions - EclipseCon North America 2014

  1. 1. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 1 Srikanth Sankaran IBM India Stephan Herrmann GK Software Noopur Gupta IBM India
  2. 2. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 2 Java 8 features: JSR335 - Project Lambda  Lambda Expressions & Method References  Extensions to Overload resolution & Type inference  Support for “code carrying” interface methods. JSR308 - Type Annotations JEP120 - Repeating Annotations JEP118 - Method Parameter Reflection JSR269 - Pluggable Annotation Processor API & javax.lang.model API enhancements for Java 8
  3. 3. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 3
  4. 4. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 4
  5. 5. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 5
  6. 6. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 6
  7. 7. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 7
  8. 8. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 8
  9. 9. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 9
  10. 10. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 10 LambdaExpression ::= LambdaParameters '->' LambdaBody LambdaParameters -> BeginLambda LambdaParameterList LambdaParameterList -> '(' FormalParameterListopt ')„ LambdaBody -> Expression LambdaBody -> Block I i = BeginLambda (x) -> { };
  11. 11. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 11
  12. 12. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 12
  13. 13. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 13
  14. 14. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 14
  15. 15. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 15 Scanning + Parsing => Parse tree + Resolution => Resolved parse tree + Data/control flow analysis => Flow analyzed parse tree + Code generation => Class files. () -> { throw new Exception(); } is void and value compatible.
  16. 16. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 16
  17. 17. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 17 o Changes the very notion of a type. o Some subsystems should view @NonNull String != @ReadOnly String o while others should view them as being the same. o Abstractions need to support either world view efficiently. String is a String is a String
  18. 18. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 18
  19. 19. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 19
  20. 20. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 20
  21. 21. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 21 Collectors.<Person,String,Integer>toMap(..) Collectors.toMap(..) Collector<String,Integer> coll = new MyCollector<>();
  22. 22. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 22
  23. 23. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 23
  24. 24. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 24
  25. 25. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 25
  26. 26. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 26
  27. 27. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 27
  28. 28. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 28
  29. 29. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 29  Recipe for disaster: ● implement java.util.List → compile against JRE 7 → OK ● upgrade to JRE 8 but compile as 1.7  Undefined compiler behavior ● 1.7 compiler cannot handle default methods (from .class) ● exact answer depends on compiler implementation details ● there is no specification ● ecj and javac differ ● assimilation is difficult
  30. 30. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 30
  31. 31. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 31
  32. 32. EclipseCon NA 2014 | JDT Embraces Lambda Expressions Enter +Ctrl 1 32
  33. 33. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 33 Enter +Ctrl 1
  34. 34. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 34 Enter +Ctrl 1
  35. 35. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 35 Enter +Ctrl 1
  36. 36. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 36
  37. 37. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 37 Lambda Expression: Method Reference:
  38. 38. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 38 Demo Examples:
  39. 39. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 39
  40. 40. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 40
  41. 41. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 41
  42. 42. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 42
  43. 43. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 43
  44. 44. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 44
  45. 45. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 45
  46. 46. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 46
  47. 47. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 47
  48. 48. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 48 Far too risky to cram late into 8 (Nov 2013)
  49. 49. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 49 List <: List<String> ? Raw types
  50. 50. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 50 “Problem detected during type inference: ...”
  51. 51. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 51
  52. 52. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 52
  53. 53. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 53
  54. 54. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 54
  55. 55. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 55
  56. 56. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 56
  57. 57. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 57
  58. 58. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 58
  59. 59. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 59
  60. 60. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 60 Dramatis personæ - The usual suspects Jay Arthanareeswaran Deepak Azad Shankha Banerjee Anirban Chakarborty Vikas Chandra Noopur Gupta Ayushman Jain Manju Mathew Manoj Palat Srikanth Sankaran Sarika Sinha Jesper S. Møller Stephan Herrmann Markus Keller Dani Megert Andy Clement Steve Francisco Michael Rennie Olivier Thomann Curtis Windatt Walter Harley David Williams
  61. 61. EclipseCon NA 2014 | JDT Embraces Lambda Expressions 61
  62. 62. EVALUATE THIS SESSION Sign-in: www.eclipsecon.org Select session from schedule Evaluate: 1 2 3

×