SlideShare una empresa de Scribd logo
1 de 48
 
To Java SE 8, and Beyond! Simon Ritter Technology Evangelist
8 9 2020? 2012
Priorities for the Java Platforms Grow Developer Base Grow Adoption Increase Competitiveness Adapt to change
Evolving the Language From  “ Evolving the Java Language ”  - JavaOne 2005 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],also “Growing a Language” - Guy Steele 1999   “The Feel of Java” - James Gosling 1997
How Java Evolves and Adapts Of the community, by the community, for the community JSR-348: JCP.next
JCP Reforms ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Java SE 7 Release Contents ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
JVM Convergence
The (Performance) Free Lunch Is Over Image courtesy of Herb Sutter
SPARC T1  (2005) 8 x 4 = 32 SPARC T2  (2007) 8 x 8 = 64 SPARC T3 (2011) 16 x 8 = 128
Multi-core Clients 2002 2004 2006 2008 2010 2  ...  4  .....  8  ..... Phone ... Tablet ... Desktop 2012
Big  Disclaimer The syntax used in the following slides may change Caveat emptor
class Student {  String name;  int gradYear;  double score; } Collection<Student> students = ...;
Collection<Student> students = ...; double max = Double.MIN_VALUE; for (Student s : students) { if (s.gradYear == 2011) max = Math.max(max, s.score); }
Collection<Student> students = ...; double max = Double.MIN_VALUE; for (Student s :  students ) { if ( s.gradYear == 2011 ) max =  Math.max (max,  s.score ); }
Collection<Student> students = ...; max = students. filter (new Predicate<Student>() { public boolean op(Student s) { return  s.gradYear == 2010 ; } }). map (new Extractor<Student, Double>() { public Double extract(Student s) { return  s.score ; } }). reduce (0.0, new Reducer<Double, Double>() { public Double reduce(Double max, Double score) { return  Math.max (max,  score ); } });
Inner Classes Are Imperfect Closures ,[object Object],[object Object],[object Object],[object Object],[object Object]
Single Abstract Method (SAM) Types  ,[object Object],[object Object],[object Object],[object Object],foo.doSomething(new CallbackHandler() {  public void callback(Context c) {  System.out.println(c.v()); } } );
Collection<Student> students = ...; max = students. filter ((Student s)  ->   s.gradYear == 2011 ) . map ((Student s)  ->   s.score ) . reduce (0.0,  (Double max, Double score)  -> Math.max (max, score)); max = students. filter (s  ->   s.gradYear == 2011 ) . map (s  ->   s.score ) . reduce (0.0,  Math # max ); max = students. parallel () . filter (s  ->   s.gradYear == 2011 ) . map (s  ->   s.score ) . reduce (0.0,  Math # max );
Lambda Expression Examples (Context c) -> System.out.println(c.v()); c -> System.out.println(c.v());  // Inferred int x -> x + 1
Target Types ,[object Object],CallBackHandler cb =  (Context c) -> System.out.println(c.v()); x -> x + 1; Runnable r = () -> System.out.println(&quot;Running”); executor.submit(() -> System.out.println(&quot;Running”)); Object o = () -> 42;  // Illegal, not a SAM type
Lambda Bodies ,[object Object],[object Object],[object Object]
Collection<Student> students = ...; double max =  // Lambda expressions students .filter (Students s  ->   s.gradYear == 2010 })   .map (Students s  ->   s.score   }) .reduce (0.0,  Math # max ); interface Collection<T> { int add(T t); int size(); void clear(); ... }
How to extend an interface in Java SE 8 public interface Set<T> extends Collection<T> { public int size(); ...  // The rest of the existing Set methods public  extension  T reduce(Reducer<T> r) default  Collections.<T>setReducer; } tells us this method extends the interface Implementation to use if none exists for the implementing class
Collection<Student> students = ...; double max =  // Lambda expressions students .filter (Students s ->  s.gradYear == 2010 )   .map (Students s ->  s.score   ) . reduce (0.0,  Math # max ); interface Collection<T> {  // Default methods extension  Collection<E>  filter (Predicate<T> p) default  Collections.<T> filter ; extension  <V> Collection<V>  map (Extractor<T,V> e) default  Collections.<T> map ; extension  <V> V  reduce () default  Collections.<V> reduce ; }
$ java org.planetjdk.aggregator.Main
$ java -cp $APPHOME/lib/ jdom-1.0.jar: $APPHOME/lib/jaxen-1.0.jar: $APPHOME/lib/saxpath-1.0.jar: $APPHOME/lib/rome.jar-1.0.jar: $APPHOME/lib/rome-fetcher-1.0.jar: $APPHOME/lib/joda-time-1.6.jar: $APPHOME/lib/tagsoup-1.2.jar: org.planetjdk.aggregator.Main
$  java   -cp $APPHOME/lib/ jdom-1.0.jar : $APPHOME/lib/ jaxen-1.0.jar : $APPHOME/lib/ saxpath-1.0.jar : $APPHOME/lib/ rome.jar-1.0.jar : $APPHOME/lib/ rome-fetcher-1.0.jar : $APPHOME/lib/ joda-time-1.6.jar : $APPHOME/lib/ tagsoup-1.2.jar : org.planetjdk.aggregator.Main
module-info.java module org.planetjdk.aggregator @ 1.0 { requires jdom @ 1.0; requires tagsoup @ 1.2; requires rome @ 1.0; requires rome-fetcher @ 1.0; requires joda-time @ 1.6; requires jaxp @ 1.4.4; class org.openjdk.aggregator.Main; }
jdom-1.0 jaxen-1.0 saxpath-1.0 rome-1.0 joda-time-1.6 tagsoup-1.2 jaxp-1.4.4 org.planetjdk.aggregator rome-fetcher-1.0
classpath
deb rpm jar jmod mvn // module-info.java module org.planetjdk.aggregator @ 1.0 { requires jdom @ 1.0; requires tagsoup @ 1.2; requires rome @ 1.0; requires rome-fetcher @ 1.0; requires joda-time @ 1.6; requires jaxp @ 1.4.4; class org.openjdk.aggregator.Main; }
classpath http://www.flickr.com/photos/thatguyfromcchs08/2300190277 h ttp://www.flickr.com/photos/viagallery/2290654438
Java SE Profiles and Modules ,[object Object],[object Object],[object Object],[object Object]
JDK 8 – Proposed Content
Additional Disclaimers ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Java SE 9 (and beyond…)
Vision: Interoperability ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Vision: Cloud ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Vision: Language Features ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Vision: Integration ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
The Path Forward ,[object Object],[object Object],[object Object],[object Object],[object Object]
Java SE 2012 to Java 12 2011 2015 2019 2014 JDK 7 2013 2021 JDK 12 2017 JDK 8 JDK 9 JDK 10 JDK 11 2012 JVM convergence Mac OS X
Conclusions ,[object Object],[object Object],[object Object],[object Object]
Further Information ,[object Object],[object Object],[object Object],[object Object]
The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle ’s products remains at the sole discretion of Oracle.
 

Más contenido relacionado

Destacado

The Numinous Place at Off The Page
The Numinous Place at Off The PageThe Numinous Place at Off The Page
The Numinous Place at Off The PageDean Johnson
 
TAFE 2017 - Sponsors & Social: The Art of Partnership Promotion
TAFE 2017 - Sponsors & Social: The Art of Partnership PromotionTAFE 2017 - Sponsors & Social: The Art of Partnership Promotion
TAFE 2017 - Sponsors & Social: The Art of Partnership PromotionSaffire
 
Anonymity & Privacy in the digital, public sphere.
Anonymity & Privacy in the digital, public sphere.Anonymity & Privacy in the digital, public sphere.
Anonymity & Privacy in the digital, public sphere.Christopher Grayson
 
Ambiente virtual de aprendizagem
Ambiente virtual de aprendizagemAmbiente virtual de aprendizagem
Ambiente virtual de aprendizagemAdrielle Souza
 
Java 8, lambdas, generics: How to survive? - NYC Java Meetup Group
Java 8, lambdas, generics: How to survive? - NYC Java Meetup GroupJava 8, lambdas, generics: How to survive? - NYC Java Meetup Group
Java 8, lambdas, generics: How to survive? - NYC Java Meetup GroupHenri Tremblay
 
Corporate venture capital 事例
Corporate venture capital 事例Corporate venture capital 事例
Corporate venture capital 事例Takayuki Yamazaki
 
WFA 2017 - Marketing to Millennials
WFA 2017 - Marketing to MillennialsWFA 2017 - Marketing to Millennials
WFA 2017 - Marketing to MillennialsSaffire
 

Destacado (10)

The Numinous Place at Off The Page
The Numinous Place at Off The PageThe Numinous Place at Off The Page
The Numinous Place at Off The Page
 
Impacto De Las Ti Cs
Impacto De Las Ti CsImpacto De Las Ti Cs
Impacto De Las Ti Cs
 
TAFE 2017 - Sponsors & Social: The Art of Partnership Promotion
TAFE 2017 - Sponsors & Social: The Art of Partnership PromotionTAFE 2017 - Sponsors & Social: The Art of Partnership Promotion
TAFE 2017 - Sponsors & Social: The Art of Partnership Promotion
 
Opinen pitch deck_v1.2
Opinen pitch deck_v1.2Opinen pitch deck_v1.2
Opinen pitch deck_v1.2
 
Anonymity & Privacy in the digital, public sphere.
Anonymity & Privacy in the digital, public sphere.Anonymity & Privacy in the digital, public sphere.
Anonymity & Privacy in the digital, public sphere.
 
Ambiente virtual de aprendizagem
Ambiente virtual de aprendizagemAmbiente virtual de aprendizagem
Ambiente virtual de aprendizagem
 
Java 8, lambdas, generics: How to survive? - NYC Java Meetup Group
Java 8, lambdas, generics: How to survive? - NYC Java Meetup GroupJava 8, lambdas, generics: How to survive? - NYC Java Meetup Group
Java 8, lambdas, generics: How to survive? - NYC Java Meetup Group
 
Constructing ovals, ovoids and spirals
Constructing ovals, ovoids and spiralsConstructing ovals, ovoids and spirals
Constructing ovals, ovoids and spirals
 
Corporate venture capital 事例
Corporate venture capital 事例Corporate venture capital 事例
Corporate venture capital 事例
 
WFA 2017 - Marketing to Millennials
WFA 2017 - Marketing to MillennialsWFA 2017 - Marketing to Millennials
WFA 2017 - Marketing to Millennials
 

Más de JAX London

Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...
Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...
Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...JAX London
 
Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...
Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...
Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...JAX London
 
Keynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark Little
Keynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark LittleKeynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark Little
Keynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark LittleJAX London
 
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...JAX London
 
Spring Day | Behind the Scenes at Spring Batch | Dave Syer
Spring Day | Behind the Scenes at Spring Batch | Dave SyerSpring Day | Behind the Scenes at Spring Batch | Dave Syer
Spring Day | Behind the Scenes at Spring Batch | Dave SyerJAX London
 
Spring Day | Spring 3.1 in a Nutshell | Sam Brannen
Spring Day | Spring 3.1 in a Nutshell | Sam BrannenSpring Day | Spring 3.1 in a Nutshell | Sam Brannen
Spring Day | Spring 3.1 in a Nutshell | Sam BrannenJAX London
 
Spring Day | Identity Management with Spring Security | Dave Syer
Spring Day | Identity Management with Spring Security | Dave SyerSpring Day | Identity Management with Spring Security | Dave Syer
Spring Day | Identity Management with Spring Security | Dave SyerJAX London
 
Spring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard WolffSpring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard WolffJAX London
 
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver GierkeSpring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver GierkeJAX London
 
Keynote | The Rise and Fall and Rise of Java | James Governor
Keynote | The Rise and Fall and Rise of Java | James GovernorKeynote | The Rise and Fall and Rise of Java | James Governor
Keynote | The Rise and Fall and Rise of Java | James GovernorJAX London
 
Java Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily JiangJava Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily JiangJAX London
 
Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...
Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...
Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...JAX London
 
Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...
Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...
Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...JAX London
 
Java Tech & Tools | Social Media in Programming in Java | Khanderao Kand
Java Tech & Tools | Social Media in Programming in Java | Khanderao KandJava Tech & Tools | Social Media in Programming in Java | Khanderao Kand
Java Tech & Tools | Social Media in Programming in Java | Khanderao KandJAX London
 
Java Tech & Tools | Just Keep Passing the Message | Russel Winder
Java Tech & Tools | Just Keep Passing the Message | Russel WinderJava Tech & Tools | Just Keep Passing the Message | Russel Winder
Java Tech & Tools | Just Keep Passing the Message | Russel WinderJAX London
 
Java Tech & Tools | Grails in the Java Enterprise | Peter Ledbrook
Java Tech & Tools | Grails in the Java Enterprise | Peter LedbrookJava Tech & Tools | Grails in the Java Enterprise | Peter Ledbrook
Java Tech & Tools | Grails in the Java Enterprise | Peter LedbrookJAX London
 
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...JAX London
 
Java EE | Modular EJBs for Enterprise OSGi | Tim Ward
Java EE | Modular EJBs for Enterprise OSGi | Tim WardJava EE | Modular EJBs for Enterprise OSGi | Tim Ward
Java EE | Modular EJBs for Enterprise OSGi | Tim WardJAX London
 
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan GallimoreJava EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan GallimoreJAX London
 
Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...
Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...
Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...JAX London
 

Más de JAX London (20)

Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...
Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...
Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...
 
Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...
Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...
Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...
 
Keynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark Little
Keynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark LittleKeynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark Little
Keynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark Little
 
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
 
Spring Day | Behind the Scenes at Spring Batch | Dave Syer
Spring Day | Behind the Scenes at Spring Batch | Dave SyerSpring Day | Behind the Scenes at Spring Batch | Dave Syer
Spring Day | Behind the Scenes at Spring Batch | Dave Syer
 
Spring Day | Spring 3.1 in a Nutshell | Sam Brannen
Spring Day | Spring 3.1 in a Nutshell | Sam BrannenSpring Day | Spring 3.1 in a Nutshell | Sam Brannen
Spring Day | Spring 3.1 in a Nutshell | Sam Brannen
 
Spring Day | Identity Management with Spring Security | Dave Syer
Spring Day | Identity Management with Spring Security | Dave SyerSpring Day | Identity Management with Spring Security | Dave Syer
Spring Day | Identity Management with Spring Security | Dave Syer
 
Spring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard WolffSpring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard Wolff
 
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver GierkeSpring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
 
Keynote | The Rise and Fall and Rise of Java | James Governor
Keynote | The Rise and Fall and Rise of Java | James GovernorKeynote | The Rise and Fall and Rise of Java | James Governor
Keynote | The Rise and Fall and Rise of Java | James Governor
 
Java Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily JiangJava Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily Jiang
 
Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...
Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...
Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...
 
Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...
Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...
Java Tech & Tools | Big Blobs: Moving Big Data In and Out of the Cloud | Adri...
 
Java Tech & Tools | Social Media in Programming in Java | Khanderao Kand
Java Tech & Tools | Social Media in Programming in Java | Khanderao KandJava Tech & Tools | Social Media in Programming in Java | Khanderao Kand
Java Tech & Tools | Social Media in Programming in Java | Khanderao Kand
 
Java Tech & Tools | Just Keep Passing the Message | Russel Winder
Java Tech & Tools | Just Keep Passing the Message | Russel WinderJava Tech & Tools | Just Keep Passing the Message | Russel Winder
Java Tech & Tools | Just Keep Passing the Message | Russel Winder
 
Java Tech & Tools | Grails in the Java Enterprise | Peter Ledbrook
Java Tech & Tools | Grails in the Java Enterprise | Peter LedbrookJava Tech & Tools | Grails in the Java Enterprise | Peter Ledbrook
Java Tech & Tools | Grails in the Java Enterprise | Peter Ledbrook
 
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
 
Java EE | Modular EJBs for Enterprise OSGi | Tim Ward
Java EE | Modular EJBs for Enterprise OSGi | Tim WardJava EE | Modular EJBs for Enterprise OSGi | Tim Ward
Java EE | Modular EJBs for Enterprise OSGi | Tim Ward
 
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan GallimoreJava EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
 
Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...
Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...
Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...
 

Último

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 

Último (20)

SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 

Keynote | To Java SE 8 and Beyond! | Simon Ritter

  • 1.  
  • 2. To Java SE 8, and Beyond! Simon Ritter Technology Evangelist
  • 3. 8 9 2020? 2012
  • 4. Priorities for the Java Platforms Grow Developer Base Grow Adoption Increase Competitiveness Adapt to change
  • 5.
  • 6. How Java Evolves and Adapts Of the community, by the community, for the community JSR-348: JCP.next
  • 7.
  • 8.
  • 10. The (Performance) Free Lunch Is Over Image courtesy of Herb Sutter
  • 11. SPARC T1 (2005) 8 x 4 = 32 SPARC T2 (2007) 8 x 8 = 64 SPARC T3 (2011) 16 x 8 = 128
  • 12. Multi-core Clients 2002 2004 2006 2008 2010 2 ... 4 ..... 8 ..... Phone ... Tablet ... Desktop 2012
  • 13. Big Disclaimer The syntax used in the following slides may change Caveat emptor
  • 14. class Student { String name; int gradYear; double score; } Collection<Student> students = ...;
  • 15. Collection<Student> students = ...; double max = Double.MIN_VALUE; for (Student s : students) { if (s.gradYear == 2011) max = Math.max(max, s.score); }
  • 16. Collection<Student> students = ...; double max = Double.MIN_VALUE; for (Student s : students ) { if ( s.gradYear == 2011 ) max = Math.max (max, s.score ); }
  • 17. Collection<Student> students = ...; max = students. filter (new Predicate<Student>() { public boolean op(Student s) { return s.gradYear == 2010 ; } }). map (new Extractor<Student, Double>() { public Double extract(Student s) { return s.score ; } }). reduce (0.0, new Reducer<Double, Double>() { public Double reduce(Double max, Double score) { return Math.max (max, score ); } });
  • 18.
  • 19.
  • 20. Collection<Student> students = ...; max = students. filter ((Student s) -> s.gradYear == 2011 ) . map ((Student s) -> s.score ) . reduce (0.0, (Double max, Double score) -> Math.max (max, score)); max = students. filter (s -> s.gradYear == 2011 ) . map (s -> s.score ) . reduce (0.0, Math # max ); max = students. parallel () . filter (s -> s.gradYear == 2011 ) . map (s -> s.score ) . reduce (0.0, Math # max );
  • 21. Lambda Expression Examples (Context c) -> System.out.println(c.v()); c -> System.out.println(c.v()); // Inferred int x -> x + 1
  • 22.
  • 23.
  • 24. Collection<Student> students = ...; double max = // Lambda expressions students .filter (Students s -> s.gradYear == 2010 }) .map (Students s -> s.score }) .reduce (0.0, Math # max ); interface Collection<T> { int add(T t); int size(); void clear(); ... }
  • 25. How to extend an interface in Java SE 8 public interface Set<T> extends Collection<T> { public int size(); ... // The rest of the existing Set methods public extension T reduce(Reducer<T> r) default Collections.<T>setReducer; } tells us this method extends the interface Implementation to use if none exists for the implementing class
  • 26. Collection<Student> students = ...; double max = // Lambda expressions students .filter (Students s -> s.gradYear == 2010 ) .map (Students s -> s.score ) . reduce (0.0, Math # max ); interface Collection<T> { // Default methods extension Collection<E> filter (Predicate<T> p) default Collections.<T> filter ; extension <V> Collection<V> map (Extractor<T,V> e) default Collections.<T> map ; extension <V> V reduce () default Collections.<V> reduce ; }
  • 28. $ java -cp $APPHOME/lib/ jdom-1.0.jar: $APPHOME/lib/jaxen-1.0.jar: $APPHOME/lib/saxpath-1.0.jar: $APPHOME/lib/rome.jar-1.0.jar: $APPHOME/lib/rome-fetcher-1.0.jar: $APPHOME/lib/joda-time-1.6.jar: $APPHOME/lib/tagsoup-1.2.jar: org.planetjdk.aggregator.Main
  • 29. $ java -cp $APPHOME/lib/ jdom-1.0.jar : $APPHOME/lib/ jaxen-1.0.jar : $APPHOME/lib/ saxpath-1.0.jar : $APPHOME/lib/ rome.jar-1.0.jar : $APPHOME/lib/ rome-fetcher-1.0.jar : $APPHOME/lib/ joda-time-1.6.jar : $APPHOME/lib/ tagsoup-1.2.jar : org.planetjdk.aggregator.Main
  • 30. module-info.java module org.planetjdk.aggregator @ 1.0 { requires jdom @ 1.0; requires tagsoup @ 1.2; requires rome @ 1.0; requires rome-fetcher @ 1.0; requires joda-time @ 1.6; requires jaxp @ 1.4.4; class org.openjdk.aggregator.Main; }
  • 31. jdom-1.0 jaxen-1.0 saxpath-1.0 rome-1.0 joda-time-1.6 tagsoup-1.2 jaxp-1.4.4 org.planetjdk.aggregator rome-fetcher-1.0
  • 33. deb rpm jar jmod mvn // module-info.java module org.planetjdk.aggregator @ 1.0 { requires jdom @ 1.0; requires tagsoup @ 1.2; requires rome @ 1.0; requires rome-fetcher @ 1.0; requires joda-time @ 1.6; requires jaxp @ 1.4.4; class org.openjdk.aggregator.Main; }
  • 34. classpath http://www.flickr.com/photos/thatguyfromcchs08/2300190277 h ttp://www.flickr.com/photos/viagallery/2290654438
  • 35.
  • 36. JDK 8 – Proposed Content
  • 37.
  • 38. Java SE 9 (and beyond…)
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44. Java SE 2012 to Java 12 2011 2015 2019 2014 JDK 7 2013 2021 JDK 12 2017 JDK 8 JDK 9 JDK 10 JDK 11 2012 JVM convergence Mac OS X
  • 45.
  • 46.
  • 47. The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle ’s products remains at the sole discretion of Oracle.
  • 48.  

Notas del editor

  1. Since acquiring Sun Micrososystems, Oracle have determined a set of priorities for Java. Java is the most populsar programming language in the workd today (based on reports from people like IDC as well as more anecdotal evidence like the TIOBE programming community index – Java is still number one as of June 2011). The goal is to continue to increase the number of developers who’s primary development language is Java. Having more developers should hopefully lead to greater adoption of Java for applications. Just as important are the competitiveness of Java in terms of performance and ROI compared to other languages. For these top three things to happen Java cannot stay static and so it is important that Java adapts to changes in both the types of applications being developed as well as how they are deployed (the fork-join framework is a good example of how Java is adapting to the greater prevalence of multi-core and multi-CPU machines). 6/27/11
  2. 6/27/11 What is really important to note here is that we are using a slide from JavaOne 2005, this means that from the beginning we have been following the same principles and we are committed to continue to follow these principles as we evolve the language. - We want the code to be easy to read. - The language won&apos;t hide anything, and it should do what it seems to do - Even if there are great ideas and features, we are very careful deciding if that feature should be included in the language, some good features add so much weight, it&apos;s actually better to leave it out of the language. Again, we are committed to evolved the language, but very cautiously, we want java to be around for very long time.
  3. Oracle is commited to the JCP and has successfully made changes that have now alllowed new JSRs to be filed and to start moving forward in a timely manner. The idea of the JCP is to involve companies and individuals who have investment in Java technology in how the platform evolves. 6/27/11
  4. To reform the JCP a number of changes have started taking place. Firstly new members have been elected to the Executive committee SouJava, the largest Java User Group in Brazil, Goldman Sachs to help represent the financial community who are very large users of Java, The London Java Community and Alex Terrazas who is filling the empty space on the Java ME executive committee JSR348 will define how the JCP will make improvements in areas of transparency (all discussions through publically accessible mailing lists), participation, agility and governance. 6/27/11
  5. This slide show the contents for Java SE 7, and we will go through each of this topics on a separate section, so here is just the list. JSR-336 is called an umbrella JSR and provides the complete set of features that are included in Java SE 7, even though several components have their own JSR 6/27/11
  6. Now lets say we want to know the highest scoring student for the 2010 graduation year. Easy just write a for...loop But this only allows the JVM to use only one thread. Only one core gets used in the underlying system and all the other lanes are useless. So a better way to do this is to use a parallel collection that can break down these process into multiple threads. And so we get something like this where, map, filter max are methods on the collection. That is parallelized. And we can use inner classes to expose the functions. filter, map (getting the score), and obtaining the maxmimum. Great, especially if there are hundreds of millions of students - like all the students in a country. But this is kinda ugly. So wouldn ’ t it be nice if we could just extract those functions - into blocks of code that can easiy be reused,and say exactly what they do. These are lambda expressions, and are scheduled for Java SE 8. But you may be wondering how we can add methods to collections
  7. Now lets say we want to know the highest scoring student for the 2010 graduation year. Easy just write a for...loop But this only allows the JVM to use only one thread. Only one core gets used in the underlying system and all the other lanes are useless. So a better way to do this is to use a parallel collection that can break down these process into multiple threads. And so we get something like this where, map, filter max are methods on the collection. That is parallelized. And we can use inner classes to expose the functions. filter, map (getting the score), and obtaining the maxmimum. Great, especially if there are hundreds of millions of students - like all the students in a country. But this is kinda ugly. So wouldn ’ t it be nice if we could just extract those functions - into blocks of code that can easiy be reused,and say exactly what they do. These are lambda expressions, and are scheduled for Java SE 8. But you may be wondering how we can add methods to collections
  8. Informally, a lambda expression e is convertible-to a SAM type S if an anonymous inner class that is a subtype of S and that declares a method with the same name as S&apos;s abstract method and a signature and return type corresponding to the lambda expressions signature and return type would be considered assignment-compatible with S. The return type and exception types of a lambda expression are inferred by the compiler; the parameter types may be explicitly specified or they may be inferred from the assignment context (see Target Typing , below.) When a lambda expression is converted to a SAM type, invoking the single abstract method of the SAM instance causes the body of the lambda expression to be invoked. For example, SAM conversion will happen in the context of assignment: CallbackHandler cb = #{ Context c -&gt; System.out.println(&amp;quot;pippo&amp;quot;) }; In this case, the lambda expression has a single Context parameter, has void return type, and throws no checked exceptions, and is therefore compatible with the SAM type CallbackHandler.
  9. Lambda expressions can only appear in context where it will be converted to a variable of SAM type. These include assignment context, cast target context, and method invocation context.
  10. The addition of closures to the Java language in JDK 8 place additional stress on the aging Collection interfaces; one of the most significant benefits of closures is that it enables the development of more powerful libraries. It would be disappointing to add a language feature that enables better libraries while at the same time not extending the core libraries to take advantage of that feature 1 . Runtime dispatch of extension methods is slightly different from that of ordinary interface method invocation. With an ordinary interface method invocation on a receiver of type D, first D is searched for a method implementation, then its superclass, and so on until we reach Object, and if an implementation is not found, a linkage exception is thrown. For an extension method, the search path is more complicated; first we search for actual implementations in D and its superclasses just as before, and if we do not find an implementation of the method in the implementation hierarchy, then we must search for the most specific default implementation among D ’ s interfaces (which is not a linear search), failing if we cannot find a unique most specific default. Method resolution for extension methods is as follows: 1. First perform the standard search, from receiver class proceeding upward through superclasses to Object. If an implementation is found, the search is resolved successfully. 2. Construct the list of interfaces implemented by D, directly or indirectly, which provide a default for the method in question. 3. Remove all interfaces from this list which is a superinterface of any other interface on the list (e.g., if D implements both Set and Collection, and both provide a default for this method, remove Collection from the list.) 4. Construct the set of distinct default methods corresponding to the list of interfaces arrived at in step (2). If the result has a single item (either because there was only one default or multiple interfaces provided the same default), the search is resolved successfully. If the resulting set has multiple items, then throw a linkage exception indicating conflicting extension methods. Resolution need be performed only once per extension method per implementing class. (This makes it an ideal candidate for dynamic linkage with invokedynamic.)
  11. This is a picture of this module and its dependencies.
  12. Rules for creating Profiles of the Java SE Platform, which may contain subsets of Java SE, additional JCP technologies not part of the Java SE Platform, or both; A Java SE Base Profile, which contains the foundational APIs upon which the rest of the platform and applications depend; A Java SE Base Module, which implements the Base Profile; and A set of component modules for separable technologies such as the AWT and Swing GUI APIs, CORBA, naming, monitoring and management APIs, web services, and the various XML technologi
  13. Key points: Expanded Jigsaw and Lambda Oracle JVM convergence, bringing Flight Recorder to more users JavaFX 3.0 included, more on this later Javascript on JVM Support for modern devices such as Multi-Touch and Location Much more
  14. Bring up on stage two customers to tell the audience about their experiences. Manpower Associates is a $14.9B global company with 27,000 employees in the temporary staffing business. Manpower runs a combined PeopleSoft Enterprise and JD Edwards EnterpriseOne shop. These experts in human resources use Enterprise HCM for their own staffing and EnterpriseOne Payroll and Service Billing for handling the large volumes of US-based temporary staff. Manpower is very happy with Oracle ’ s support since purchasing PeopleSoft and is looking forward to a long relationship with Oracle. Spokesperson will be Jay Schaudies, Vice President, Global eCommerce. Welch Foods is the food processing and marketing arm of National Grape Cooperative Association. Organized in 1945, National Grape is a grower-owned agricultural cooperative with 1,461 members. The company, headquartered in Concord, Massachusetts, operates six plants located in Michigan, New York, Pennsylvania and Washington. The company was running a mix of legacy, home grown, and manual systems that failed to provide senior management with accurate and timely cost and production information. Welch ’ s required a centralized manufacturing and financial information system to improve management decision making. The solution had to be hot-pluggable with existing technologies, for example, Welch ’ s Plumtree portal. Welch Foods chose Oracle over SAP for this business-critical application. The key to the customer ’ s business problem was their ability to manage costs. The company ’ s costs are driven by fruit solid content in each of their products, and they use a specialized technique called BRIX for measuring and calculating the cost of materials. Welch ’ s compared SAP and Oracle SAP ’ s software was too rigid and, therefore, unable to include the BRIX calculation in their manufacturing solution. Only Oracle ’ s OPM could bind this custom cost method into the Quality Management Process. Technology customer yet to be determined. Current possibilities include eBay and FTD Florists.