SlideShare a Scribd company logo
1

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
55 New Features in
Java SE 8
(Part 2 of Plan B)
Simon Ritter
Head of Java Evangelism
Oracle Corporation

Twitter: @speakjava
2

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
The following 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.

3

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Big Disclaimer
The Java SE 8 Specification is not final
Some features may be subject to change

4

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Java SE 8 (JSR 337)
Component JSRs
 New functionality
– JSR 308: Annotations on types

– JSR 310: Date and Time API
– JSR 335: Lambda expressions

 Updated functionality
– JSR 114: JDBC Rowsets
– JSR 160: JMX Remote API
– JSR 199: Java Compiler API
– JSR 173: Streaming API for XML

– JSR 206: Java API for XML Processing
– JSR 221: JDBC 4.0
– JSR 269: Pluggable Annotation-Processing API
5

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
JDK Enhancement Proposals (JEPs)
 Regularly updated list of proposals
– Serve as the long-term roadmap for JDK release projects
– Roadmap extends for at least three years

 Uniform format and a central archive for enhancement proposals
– Interested parties can find, read, comment, and contribute

 Process is open to every OpenJDK Committer
 Enhancement is a non-trivial change to the JDK code base
– Two or more weeks of engineering effort
– significant change to JDK or development processes and infrastructure
– High demand from developers or customers
6

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Language

7

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Lambda Expressions
Closures and Functional Programming
 Lambda expressions provide anonymous function types to Java
– Replace use of anonymous inner classes
– Provide more functional style of programming in Java

doSomething(new DoStuff() {
public boolean isGood(int value) {
return value == 42;
}
});
Simplified to
doSomething(answer -> answer == 42);
8

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Extension Methods
Bringing Multiple Inheritance (of Functionality) to Java
 Provide a mechanism to add new methods to existing interfaces
– Without breaking backwards compatability
– Gives Java multiple inheritance of behaviour, as well as types (but not state!)

public interface Set<T> extends Collection<T> {
public int size();
... // The rest of the existing Set methods
public T reduce(Reducer<T> r)
default Collections.<T>setReducer;
}
9

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Annotations On Java Types
 Annotations can currently only be used on type declarations
– Classes, methods, variable definitions

 Extension for places where types are used
– e.g. parameters

 Permits error detection by pluggable type checkers
– e.g. null pointer errors, race conditions, etc

public void process(@notnull List data) {…}

10

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Generalised Target-Type Inference
Improved usability of generics
class List<E>
static <Z>
static <Z>
E head() {
}

{
List<Z> nil() { ... };
List<Z> cons(Z head, List<Z> tail) { ... };
... }

List<String> ls = List.nil();

// Inferred correctly

error: expected List<Integer>, found List<Object>

List.cons(42, List.nil());

11

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Access To Parameter Names At Runtime
 Mechanism to retrieve parameter names of methods and constructors
– At runtime via core reflection

 Improved code readability
– Eliminate redundant annotations

 Improve IDE capabilities
– Auto-generate template code

 Method and Constructor now inherit from new Executable class
– getParameters() returns array of Parameter objects
– Name, type, annotations for each parameter
12

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Small Things
 Repeating annotations

Multiple annotations with the same type applied to a single program element
 No more apt tool and associated API
– Complete the transition to the JSR 269 implementation

 DocTree API
– Provide access to the syntactic elements of a javadoc comment

 DocLint tool
– Use DocTree API to identify basic errors in javadoc comments

 Javadoc support in javax.tools
– Invoke javadoc tools from API as well as command line/exec
13

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Core Libraries

14

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Enhance Core Libraries With Lambdas
 No small task!
– Java SE 7 has 4024 standard classes

 Modernise general library APIs
 Improve performance
– Gains from use of invokedynamic to implement Lambdas

 Demonstrate best practices for extension methods

15

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Concurrency Updates
 Scalable update variables
– DoubleAccumulator, DoubleAdder, etc
– Multiple variables avoid update contention
– Good for frequent updates, infrequent reads

 ConcurrentHashMap updates
– Improved scanning support, key computation

 ForkJoinPool improvements
– Completion based design for IO bound applications
– Thread that is blocked hands work to thread that is running
16

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Bulk Data Operations For Collections
Filter, Map, Reduce for Java
 java.util.function package
– Function, Predicate, Consumer, Supplier interfaces

 java.util.stream package
– Stream, Collector interfaces

 Serial and parallel implementations
– Generally expressed with Lambda statements

 Parallel implementation builds on Fork-Join framework

 Lazy evaluation
– Things like getFirst() terminate stream
17

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Parallel Array Sorting
 Additional utility methods in java.util.Arrays
– parallelSort (multiple signatures for different primitives)

 Anticipated minimum improvement of 30% over sequential sort
– For dual core system with appropriate sized data set

 Built on top of the fork-join framework
– Uses Doug Lea’s ParallelArray implementation
– Requires working space the same size as the array being sorted

18

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Date And Time APIs
 A new date, time, and calendar API for the Java SE platform

 Supports standard time concepts
– Partial, duration, period, intervals
– date, time, instant, and time-zone

 Provides a limited set of calendar systems and be extensible to others
 Uses relevant standards, including ISO-8601, CLDR, and BCP47
 Based on an explicit time-scale with a connection to UTC

19

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
JDBC 4.2
Minor enhancements for usability and portability
 Add setter/update methods
– ResultSet, PreparedStatement, and CallableStatement
– Support new data types such as those being defined in JSR 310

 REF_CURSOR support for CallableStatement

 DatabaseMetaData.getIndexInfo extended
– new columns for CARDINALITY and PAGES which return a long value

 New DatabaseMetaData method
– getMaxLogicalLobSize
– Return the logical maximum size for a LOB
20

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Base64 Encoding and Decoding
 Currently developers are forced to use non-public APIs
– sun.misc.BASE64Encoder
– sun.misc.BASE64Decoder

 Java SE 8 now has a standard way
– java.util.Base64.Encoder
– java.util.Base64.Decoder
– encode, encodeToString, decode, wrap methods

21

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Small Things
 javax.lang.model implementation backed by core reflection
– Uniform annotation API to view compile-time and runtime reflective

information
 Charset implementation improvements
– Reduced size of charsets, improved performance of encoding/decoding

 Reduced core-library memory usage
– Reduced object size, disable reflection compiler, internal table sizes, etc

22

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Small Things
 Optimize java.text.DecimalFormat.format
– Improve performance, multiply by 100.0 or 1000.0 (2 or 3 DP only)

 Statically Linked JNI Libraries
– Needed for embedded applications
– Currently only dynamically linked supported

 Handle frequent HashMap collisions with balanced trees
– Hash bucket switches from linked list to balanced tree at certain threshold

23

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Internationalisation
(I18N)

24

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Locale Data Packing
 Tool to generate locale data files
– From LDML format

 Unicode Common Locale Data Repository (CLDR) support
 Locale elements supported from underlying platform

25

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
BCP 47 Locale Mapping
 Language tags to indicate the language used for an information object
– RFC-5646 (Language range)
– RFC-5456 (Language priority, preference)

 Language range Collection<String>

 Language priority List <String>
 Three operations added to Locale class
– filterBasic

– filterExtended
– lookup
26

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Unicode 6.2
 Java SE 7 support Unicode 6.0

 Changes in Unicode 6.1 (February, 2012)
– Add 11 new blocks to java.lang.Character.UnicodeBlock
– Add 7 new scripts to java.lang.Character.UnicodeScript
– Support over 700 new characters in

java.lang.Character, String, and other classes
 Changes in Unicode 6.2 (September, 2012)
– Support a new Turkish currency sign (U+20BA)

27

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Security

28

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Configurable Secure Random Number Generator
 Better implementation of SecureRandom

 Currently applications can hang on Linux
– JVM uses /dev/random
– This will block if the system entropy pool is not large enough

29

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Enhanced Certificate Revocation-Checking API
 Current java.security.cert API is all-or-nothing
– Failure to contact server is a fatal error

 New interfaces
– CertPathChecker
– CertPathParameters

 New command line debug option
– -Djava.security.debug=certpath

30

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
HTTP URL Permissions
 New type of network permission
– Grant access in terms of URLs, rather than IP addresses

 Current way to specify network permissions
– java.net.SocketPermission
– Not restricted to just HTTP
– Operates in terms of IP addresses only

 New, higher level capabilities
– Support HTTP operations (POST, GET, etc)
– Build on limited doPrivileged feature
31

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Small Items
 Limited doPrivileged
– Execute Lambda expression with privileges enabled

 NSA Suite B cryptographic algorithms
– Conform to standards to meet U.S. government, banking requirements

 AEAD CipherSuite support
– Conform to standards to meet U.S. government, banking requirements

 SHA-224 message digests
– Required due to known flaw in SHA-1

 Leverage CPU instructions for AES cryptography
– Improve encryption/decryption performance
32

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Small Changes
 Microsoft Services For UNIX (MS-SFU) Kerberos 5 extensions
– Enhanced Microsoft interoperability

 TLS Server Name Indication (SNI) extension
– More flexible secure virtual hosting, virtual-machine infrastructure

 PKCS#11 crypto provider for 64-bit Windows
– Allow use of widely available native libraries

 Stronger algorithms for password-based encryption
– Researchers and hackers move on

 Overhaul JKS-JCEKS-PKCS12 keystores
– Simplify interacting with Java SE keystores for cryptographic applications
33

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
The Platform

34

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Launch JavaFX Applications
 Support the direct launching of JavaFX applications

 Enhancement to the java command line launcher

35

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Compact Profiles
Approximate static footprint goals
Compact1 Profile
Compact2 Profile

10Mb
17Mb

Compact3 Profile
Full JRE

36

24Mb
140Mb

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Modularisation Preparation
Getting Ready For Jigsaw
 Fix some assumptions about classloaders

 Use ServiceLoader rather than proprietary SPI code
 JDK tool to analyse application code dependencies
 Deprecate APIs that will impede modularisation
– e.g. java.util.logging.LogManager.addPropertyChangeListener

 Review and possibly change $JAVA_HOME normative references
– Relative v. absolute pathnames

37

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Stripped Implementations
 Applications that ship bundled with a JRE don’t need to include all the

class libraries
 This does not break ‘Write once, run anywhere’
 Only applicable for bundled JRE
– JRE cannot be used by other applications

38

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Virtual Machine

39

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Lambda-Form Representation For Method Handles
Assembly language code re-written in Java
 Improve performance, quality, and portability of method handles and

invokedynamic
 Reduce the amount of assembly code in the JVM
 Reduce native calls during method handle processing
 Better reference implementation of JSR 292 (invokedynamic)

40

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Nashorn JavaScript Engine
 Lightweight, high-performance JavaScript engine
– Integrated into JRE

 Use existing javax.script API
 ECMAScript-262 Edition 5.1 language specification compliance

 New command-line tool, jjs to run JavaScript
 Internationalised error messages and documentation

41

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Retire Rarely-Used GC Combinations
 Rarely used
– DefNew + CMS
– ParNew + SerialOld
– Incremental CMS

 Large testing effort for little return
 Will generate deprecated option messages
– Won’t disappear just yet

42

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Remove The Permanent Generation
Permanently
 No more need to tune the size of it

 Current objects moved to Java heap or native memory
– Interned strings
– Class metadata
– Class static variables

 Part of the HotSpot, JRockit convergence

43

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Fence Intrinsics
 Three new methods in sun.misc.Unsafe class
– loadFence
– storeFence
– ringFence

 Required by library code
– Ensure memory access operations do not get reordered

 Not intended to be used by application developers
– May be exposed as public API in JDK9

44

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Mechanical Checking of Caller-Sensitive Methods
 Improve security of JDK method-handle implementation

 New @CallerSensitive annotation
 SecurityManager.checkMemberAccess deprecated
– In future may throw an unconditional exception

 java.util.logging.Logger revised
– Remove stack walk in search of resource bundle
– Related to modularisation preparation

45

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Small Things
 Enhanced verification errors
– Additional contextual information on bytecode verification errors

 Reduce cache contention on specified fields
– Pad variables to avoid sharing cache lines

 Reduce class metadata footprint
– Use techniques from CVM of Java ME CDC

 Small VM
– libjvm.so <3MB by compiling for size over speed

46

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
The JDK
Increased Build Speed, Simplified Setup
 Autoconf based build system
– ./configure style build setup

 Enhance javac to improve build speed
– Run on all available cores
– Track package and class dependences between builds
– Automatically generate header files for native methods
– Clean up class and header files that are no longer needed

47

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Conclusions
 Java SE 8 will add plenty of new features (and remove a few)
– Language
– Libraries
– JVM

 Java continues to evolve!
– jdk8.java.net
– www.jcp.org
– openjdk.java.net/jeps

48

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
49

Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

More Related Content

What's hot

Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
Matt Raible
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introduction
Rasheed Waraich
 
The Path Towards Spring Boot Native Applications
The Path Towards Spring Boot Native ApplicationsThe Path Towards Spring Boot Native Applications
The Path Towards Spring Boot Native Applications
VMware Tanzu
 
DevOps Meetup ansible
DevOps Meetup   ansibleDevOps Meetup   ansible
DevOps Meetup ansible
sriram_rajan
 
Spring Boot
Spring BootSpring Boot
Spring Boot
HongSeong Jeon
 
Maven Introduction
Maven IntroductionMaven Introduction
Maven Introduction
Sandeep Chawla
 
Testing Spring Boot Applications
Testing Spring Boot ApplicationsTesting Spring Boot Applications
Testing Spring Boot Applications
VMware Tanzu
 
Monitoring in CloudStack
Monitoring in CloudStackMonitoring in CloudStack
Monitoring in CloudStack
ShapeBlue
 
Spring Boot
Spring BootSpring Boot
Spring Boot
Jaran Flaath
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introduction
Jonathan Holloway
 
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[오픈소스컨설팅] EFK Stack 소개와 설치 방법[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
Open Source Consulting
 
What's new in Java 11
What's new in Java 11What's new in Java 11
What's new in Java 11
Michel Schudel
 
Spring Boot Tutorial
Spring Boot TutorialSpring Boot Tutorial
Spring Boot Tutorial
Naphachara Rattanawilai
 
JUnit & Mockito, first steps
JUnit & Mockito, first stepsJUnit & Mockito, first steps
JUnit & Mockito, first steps
Renato Primavera
 
Maven
MavenMaven
Maven
Emprovise
 
Terraform 101: What's infrastructure as code?
Terraform 101: What's infrastructure as code?Terraform 101: What's infrastructure as code?
Terraform 101: What's infrastructure as code?
GDX Wu
 
Automate DBA Tasks With Ansible
Automate DBA Tasks With AnsibleAutomate DBA Tasks With Ansible
Automate DBA Tasks With Ansible
Ivica Arsov
 
IT Automation with Ansible
IT Automation with AnsibleIT Automation with Ansible
IT Automation with Ansible
Rayed Alrashed
 
Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans
Hitesh-Java
 
Spring Boot—Production Boost
Spring Boot—Production BoostSpring Boot—Production Boost
Spring Boot—Production Boost
VMware Tanzu
 

What's hot (20)

Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introduction
 
The Path Towards Spring Boot Native Applications
The Path Towards Spring Boot Native ApplicationsThe Path Towards Spring Boot Native Applications
The Path Towards Spring Boot Native Applications
 
DevOps Meetup ansible
DevOps Meetup   ansibleDevOps Meetup   ansible
DevOps Meetup ansible
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Maven Introduction
Maven IntroductionMaven Introduction
Maven Introduction
 
Testing Spring Boot Applications
Testing Spring Boot ApplicationsTesting Spring Boot Applications
Testing Spring Boot Applications
 
Monitoring in CloudStack
Monitoring in CloudStackMonitoring in CloudStack
Monitoring in CloudStack
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introduction
 
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[오픈소스컨설팅] EFK Stack 소개와 설치 방법[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
 
What's new in Java 11
What's new in Java 11What's new in Java 11
What's new in Java 11
 
Spring Boot Tutorial
Spring Boot TutorialSpring Boot Tutorial
Spring Boot Tutorial
 
JUnit & Mockito, first steps
JUnit & Mockito, first stepsJUnit & Mockito, first steps
JUnit & Mockito, first steps
 
Maven
MavenMaven
Maven
 
Terraform 101: What's infrastructure as code?
Terraform 101: What's infrastructure as code?Terraform 101: What's infrastructure as code?
Terraform 101: What's infrastructure as code?
 
Automate DBA Tasks With Ansible
Automate DBA Tasks With AnsibleAutomate DBA Tasks With Ansible
Automate DBA Tasks With Ansible
 
IT Automation with Ansible
IT Automation with AnsibleIT Automation with Ansible
IT Automation with Ansible
 
Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans
 
Spring Boot—Production Boost
Spring Boot—Production BoostSpring Boot—Production Boost
Spring Boot—Production Boost
 

Viewers also liked

Java 8 presentation
Java 8 presentationJava 8 presentation
Java 8 presentation
Van Huong
 
Java 8 - Features Overview
Java 8 - Features OverviewJava 8 - Features Overview
Java 8 - Features Overview
Sergii Stets
 
New Features in JDK 8
New Features in JDK 8New Features in JDK 8
New Features in JDK 8
Martin Toshev
 
Cracking OCA and OCP Java 8 Exams
Cracking OCA and OCP Java 8 ExamsCracking OCA and OCP Java 8 Exams
Cracking OCA and OCP Java 8 Exams
Ganesh Samarthyam
 
OCP Java (OCPJP) 8 Exam Quick Reference Card
OCP Java (OCPJP) 8 Exam Quick Reference CardOCP Java (OCPJP) 8 Exam Quick Reference Card
OCP Java (OCPJP) 8 Exam Quick Reference Card
Hari kiran G
 
Functional Thinking - Programming with Lambdas in Java 8
Functional Thinking - Programming with Lambdas in Java 8Functional Thinking - Programming with Lambdas in Java 8
Functional Thinking - Programming with Lambdas in Java 8
Ganesh Samarthyam
 
Sailing with Java 8 Streams
Sailing with Java 8 StreamsSailing with Java 8 Streams
Sailing with Java 8 Streams
Ganesh Samarthyam
 
Supercharged java 8 : with cyclops-react
Supercharged java 8 : with cyclops-reactSupercharged java 8 : with cyclops-react
Supercharged java 8 : with cyclops-react
John McClean
 

Viewers also liked (8)

Java 8 presentation
Java 8 presentationJava 8 presentation
Java 8 presentation
 
Java 8 - Features Overview
Java 8 - Features OverviewJava 8 - Features Overview
Java 8 - Features Overview
 
New Features in JDK 8
New Features in JDK 8New Features in JDK 8
New Features in JDK 8
 
Cracking OCA and OCP Java 8 Exams
Cracking OCA and OCP Java 8 ExamsCracking OCA and OCP Java 8 Exams
Cracking OCA and OCP Java 8 Exams
 
OCP Java (OCPJP) 8 Exam Quick Reference Card
OCP Java (OCPJP) 8 Exam Quick Reference CardOCP Java (OCPJP) 8 Exam Quick Reference Card
OCP Java (OCPJP) 8 Exam Quick Reference Card
 
Functional Thinking - Programming with Lambdas in Java 8
Functional Thinking - Programming with Lambdas in Java 8Functional Thinking - Programming with Lambdas in Java 8
Functional Thinking - Programming with Lambdas in Java 8
 
Sailing with Java 8 Streams
Sailing with Java 8 StreamsSailing with Java 8 Streams
Sailing with Java 8 Streams
 
Supercharged java 8 : with cyclops-react
Supercharged java 8 : with cyclops-reactSupercharged java 8 : with cyclops-react
Supercharged java 8 : with cyclops-react
 

Similar to 55 New Features in Java SE 8

Java SE 8
Java SE 8Java SE 8
Java SE 8
Simon Ritter
 
JavaOne - 10 Tips for Java EE 7 with PrimeFaces
JavaOne - 10 Tips for Java EE 7 with PrimeFacesJavaOne - 10 Tips for Java EE 7 with PrimeFaces
JavaOne - 10 Tips for Java EE 7 with PrimeFaces
Mert Çalışkan
 
Java SE 8 & EE 7 Launch
Java SE 8 & EE 7 LaunchJava SE 8 & EE 7 Launch
Java SE 8 & EE 7 Launch
Digicomp Academy AG
 
10 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
10 Tips for Java EE 7 with PrimeFaces - JavaOne 201310 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
10 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
Martin Fousek
 
JDK 10 Java Module System
JDK 10 Java Module SystemJDK 10 Java Module System
JDK 10 Java Module System
Wolfgang Weigend
 
What's new in Java 8
What's new in Java 8What's new in Java 8
What's new in Java 8
jclingan
 
Java 8
Java 8Java 8
Java 8
jclingan
 
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...
jaxLondonConference
 
Lambdas and-streams-s ritter-v3
Lambdas and-streams-s ritter-v3Lambdas and-streams-s ritter-v3
Lambdas and-streams-s ritter-v3
Simon Ritter
 
Functional Programming With Lambdas and Streams in JDK8
 Functional Programming With Lambdas and Streams in JDK8 Functional Programming With Lambdas and Streams in JDK8
Functional Programming With Lambdas and Streams in JDK8
IndicThreads
 
Functional programming with_jdk8-s_ritter
Functional programming with_jdk8-s_ritterFunctional programming with_jdk8-s_ritter
Functional programming with_jdk8-s_ritter
Simon Ritter
 
Improved Developer Productivity In JDK8
Improved Developer Productivity In JDK8Improved Developer Productivity In JDK8
Improved Developer Productivity In JDK8
Simon Ritter
 
Whats Next for JCA?
Whats Next for JCA?Whats Next for JCA?
Whats Next for JCA?
Fred Rowe
 
Rollin onj Rubyv3
Rollin onj Rubyv3Rollin onj Rubyv3
Rollin onj Rubyv3
Oracle
 
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
GlobalLogic Ukraine
 
Interactive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and ArchitectureInteractive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and Architecture
JavaDayUA
 
Silicon Valley JUG meetup July 18, 2018
Silicon Valley JUG meetup July 18, 2018Silicon Valley JUG meetup July 18, 2018
Silicon Valley JUG meetup July 18, 2018
Oracle Developers
 
Java ee7 1hour
Java ee7 1hourJava ee7 1hour
Java ee7 1hour
Frank Rodriguez
 
ADBA (Asynchronous Database Access)
ADBA (Asynchronous Database Access)ADBA (Asynchronous Database Access)
ADBA (Asynchronous Database Access)
Logico
 
Java 8 Overview
Java 8 OverviewJava 8 Overview
Java 8 Overview
Nicola Pedot
 

Similar to 55 New Features in Java SE 8 (20)

Java SE 8
Java SE 8Java SE 8
Java SE 8
 
JavaOne - 10 Tips for Java EE 7 with PrimeFaces
JavaOne - 10 Tips for Java EE 7 with PrimeFacesJavaOne - 10 Tips for Java EE 7 with PrimeFaces
JavaOne - 10 Tips for Java EE 7 with PrimeFaces
 
Java SE 8 & EE 7 Launch
Java SE 8 & EE 7 LaunchJava SE 8 & EE 7 Launch
Java SE 8 & EE 7 Launch
 
10 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
10 Tips for Java EE 7 with PrimeFaces - JavaOne 201310 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
10 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
 
JDK 10 Java Module System
JDK 10 Java Module SystemJDK 10 Java Module System
JDK 10 Java Module System
 
What's new in Java 8
What's new in Java 8What's new in Java 8
What's new in Java 8
 
Java 8
Java 8Java 8
Java 8
 
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...
 
Lambdas and-streams-s ritter-v3
Lambdas and-streams-s ritter-v3Lambdas and-streams-s ritter-v3
Lambdas and-streams-s ritter-v3
 
Functional Programming With Lambdas and Streams in JDK8
 Functional Programming With Lambdas and Streams in JDK8 Functional Programming With Lambdas and Streams in JDK8
Functional Programming With Lambdas and Streams in JDK8
 
Functional programming with_jdk8-s_ritter
Functional programming with_jdk8-s_ritterFunctional programming with_jdk8-s_ritter
Functional programming with_jdk8-s_ritter
 
Improved Developer Productivity In JDK8
Improved Developer Productivity In JDK8Improved Developer Productivity In JDK8
Improved Developer Productivity In JDK8
 
Whats Next for JCA?
Whats Next for JCA?Whats Next for JCA?
Whats Next for JCA?
 
Rollin onj Rubyv3
Rollin onj Rubyv3Rollin onj Rubyv3
Rollin onj Rubyv3
 
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
 
Interactive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and ArchitectureInteractive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and Architecture
 
Silicon Valley JUG meetup July 18, 2018
Silicon Valley JUG meetup July 18, 2018Silicon Valley JUG meetup July 18, 2018
Silicon Valley JUG meetup July 18, 2018
 
Java ee7 1hour
Java ee7 1hourJava ee7 1hour
Java ee7 1hour
 
ADBA (Asynchronous Database Access)
ADBA (Asynchronous Database Access)ADBA (Asynchronous Database Access)
ADBA (Asynchronous Database Access)
 
Java 8 Overview
Java 8 OverviewJava 8 Overview
Java 8 Overview
 

More from Simon Ritter

Cloud Native Compiler
Cloud Native CompilerCloud Native Compiler
Cloud Native Compiler
Simon Ritter
 
Java On CRaC
Java On CRaCJava On CRaC
Java On CRaC
Simon Ritter
 
The Art of Java Type Patterns
The Art of Java Type PatternsThe Art of Java Type Patterns
The Art of Java Type Patterns
Simon Ritter
 
Modern Java Workshop
Modern Java WorkshopModern Java Workshop
Modern Java Workshop
Simon Ritter
 
Java performance monitoring
Java performance monitoringJava performance monitoring
Java performance monitoring
Simon Ritter
 
Getting the Most From Modern Java
Getting the Most From Modern JavaGetting the Most From Modern Java
Getting the Most From Modern Java
Simon Ritter
 
Building a Better JVM
Building a Better JVMBuilding a Better JVM
Building a Better JVM
Simon Ritter
 
JDK 14 Lots of New Features
JDK 14 Lots of New FeaturesJDK 14 Lots of New Features
JDK 14 Lots of New Features
Simon Ritter
 
Java after 8
Java after 8Java after 8
Java after 8
Simon Ritter
 
How to Choose a JDK
How to Choose a JDKHow to Choose a JDK
How to Choose a JDK
Simon Ritter
 
Java Programming
Java ProgrammingJava Programming
Java Programming
Simon Ritter
 
The Latest in Enterprise JavaBeans Technology
The Latest in Enterprise JavaBeans TechnologyThe Latest in Enterprise JavaBeans Technology
The Latest in Enterprise JavaBeans Technology
Simon Ritter
 
Developing Enterprise Applications Using Java Technology
Developing Enterprise Applications Using Java TechnologyDeveloping Enterprise Applications Using Java Technology
Developing Enterprise Applications Using Java Technology
Simon Ritter
 
Is Java Still Free?
Is Java Still Free?Is Java Still Free?
Is Java Still Free?
Simon Ritter
 
Moving Towards JDK 12
Moving Towards JDK 12Moving Towards JDK 12
Moving Towards JDK 12
Simon Ritter
 
JDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and BeyondJDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and Beyond
Simon Ritter
 
Java Is Still Free
Java Is Still FreeJava Is Still Free
Java Is Still Free
Simon Ritter
 
JDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and BeyondJDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and Beyond
Simon Ritter
 
JDK 9 and JDK 10 Deep Dive
JDK 9 and JDK 10 Deep DiveJDK 9 and JDK 10 Deep Dive
JDK 9 and JDK 10 Deep Dive
Simon Ritter
 
JDK 9 Deep Dive
JDK 9 Deep DiveJDK 9 Deep Dive
JDK 9 Deep Dive
Simon Ritter
 

More from Simon Ritter (20)

Cloud Native Compiler
Cloud Native CompilerCloud Native Compiler
Cloud Native Compiler
 
Java On CRaC
Java On CRaCJava On CRaC
Java On CRaC
 
The Art of Java Type Patterns
The Art of Java Type PatternsThe Art of Java Type Patterns
The Art of Java Type Patterns
 
Modern Java Workshop
Modern Java WorkshopModern Java Workshop
Modern Java Workshop
 
Java performance monitoring
Java performance monitoringJava performance monitoring
Java performance monitoring
 
Getting the Most From Modern Java
Getting the Most From Modern JavaGetting the Most From Modern Java
Getting the Most From Modern Java
 
Building a Better JVM
Building a Better JVMBuilding a Better JVM
Building a Better JVM
 
JDK 14 Lots of New Features
JDK 14 Lots of New FeaturesJDK 14 Lots of New Features
JDK 14 Lots of New Features
 
Java after 8
Java after 8Java after 8
Java after 8
 
How to Choose a JDK
How to Choose a JDKHow to Choose a JDK
How to Choose a JDK
 
Java Programming
Java ProgrammingJava Programming
Java Programming
 
The Latest in Enterprise JavaBeans Technology
The Latest in Enterprise JavaBeans TechnologyThe Latest in Enterprise JavaBeans Technology
The Latest in Enterprise JavaBeans Technology
 
Developing Enterprise Applications Using Java Technology
Developing Enterprise Applications Using Java TechnologyDeveloping Enterprise Applications Using Java Technology
Developing Enterprise Applications Using Java Technology
 
Is Java Still Free?
Is Java Still Free?Is Java Still Free?
Is Java Still Free?
 
Moving Towards JDK 12
Moving Towards JDK 12Moving Towards JDK 12
Moving Towards JDK 12
 
JDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and BeyondJDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and Beyond
 
Java Is Still Free
Java Is Still FreeJava Is Still Free
Java Is Still Free
 
JDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and BeyondJDK 9, 10, 11 and Beyond
JDK 9, 10, 11 and Beyond
 
JDK 9 and JDK 10 Deep Dive
JDK 9 and JDK 10 Deep DiveJDK 9 and JDK 10 Deep Dive
JDK 9 and JDK 10 Deep Dive
 
JDK 9 Deep Dive
JDK 9 Deep DiveJDK 9 Deep Dive
JDK 9 Deep Dive
 

Recently uploaded

Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
saastr
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
Hiike
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
HarisZaheer8
 
Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!
GDSC PJATK
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdfNunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
flufftailshop
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
SitimaJohn
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
Shinana2
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Tatiana Kojar
 
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Jeffrey Haguewood
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
Intelisync
 

Recently uploaded (20)

Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
 
Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdfNunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
Skybuffer AI: Advanced Conversational and Generative AI Solution on SAP Busin...
 
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
 

55 New Features in Java SE 8

  • 1. 1 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 2. 55 New Features in Java SE 8 (Part 2 of Plan B) Simon Ritter Head of Java Evangelism Oracle Corporation Twitter: @speakjava 2 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 3. The following 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. 3 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 4. Big Disclaimer The Java SE 8 Specification is not final Some features may be subject to change 4 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 5. Java SE 8 (JSR 337) Component JSRs  New functionality – JSR 308: Annotations on types – JSR 310: Date and Time API – JSR 335: Lambda expressions  Updated functionality – JSR 114: JDBC Rowsets – JSR 160: JMX Remote API – JSR 199: Java Compiler API – JSR 173: Streaming API for XML – JSR 206: Java API for XML Processing – JSR 221: JDBC 4.0 – JSR 269: Pluggable Annotation-Processing API 5 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 6. JDK Enhancement Proposals (JEPs)  Regularly updated list of proposals – Serve as the long-term roadmap for JDK release projects – Roadmap extends for at least three years  Uniform format and a central archive for enhancement proposals – Interested parties can find, read, comment, and contribute  Process is open to every OpenJDK Committer  Enhancement is a non-trivial change to the JDK code base – Two or more weeks of engineering effort – significant change to JDK or development processes and infrastructure – High demand from developers or customers 6 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 7. Language 7 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 8. Lambda Expressions Closures and Functional Programming  Lambda expressions provide anonymous function types to Java – Replace use of anonymous inner classes – Provide more functional style of programming in Java doSomething(new DoStuff() { public boolean isGood(int value) { return value == 42; } }); Simplified to doSomething(answer -> answer == 42); 8 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 9. Extension Methods Bringing Multiple Inheritance (of Functionality) to Java  Provide a mechanism to add new methods to existing interfaces – Without breaking backwards compatability – Gives Java multiple inheritance of behaviour, as well as types (but not state!) public interface Set<T> extends Collection<T> { public int size(); ... // The rest of the existing Set methods public T reduce(Reducer<T> r) default Collections.<T>setReducer; } 9 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 10. Annotations On Java Types  Annotations can currently only be used on type declarations – Classes, methods, variable definitions  Extension for places where types are used – e.g. parameters  Permits error detection by pluggable type checkers – e.g. null pointer errors, race conditions, etc public void process(@notnull List data) {…} 10 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 11. Generalised Target-Type Inference Improved usability of generics class List<E> static <Z> static <Z> E head() { } { List<Z> nil() { ... }; List<Z> cons(Z head, List<Z> tail) { ... }; ... } List<String> ls = List.nil(); // Inferred correctly error: expected List<Integer>, found List<Object> List.cons(42, List.nil()); 11 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 12. Access To Parameter Names At Runtime  Mechanism to retrieve parameter names of methods and constructors – At runtime via core reflection  Improved code readability – Eliminate redundant annotations  Improve IDE capabilities – Auto-generate template code  Method and Constructor now inherit from new Executable class – getParameters() returns array of Parameter objects – Name, type, annotations for each parameter 12 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 13. Small Things  Repeating annotations Multiple annotations with the same type applied to a single program element  No more apt tool and associated API – Complete the transition to the JSR 269 implementation  DocTree API – Provide access to the syntactic elements of a javadoc comment  DocLint tool – Use DocTree API to identify basic errors in javadoc comments  Javadoc support in javax.tools – Invoke javadoc tools from API as well as command line/exec 13 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 14. Core Libraries 14 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 15. Enhance Core Libraries With Lambdas  No small task! – Java SE 7 has 4024 standard classes  Modernise general library APIs  Improve performance – Gains from use of invokedynamic to implement Lambdas  Demonstrate best practices for extension methods 15 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 16. Concurrency Updates  Scalable update variables – DoubleAccumulator, DoubleAdder, etc – Multiple variables avoid update contention – Good for frequent updates, infrequent reads  ConcurrentHashMap updates – Improved scanning support, key computation  ForkJoinPool improvements – Completion based design for IO bound applications – Thread that is blocked hands work to thread that is running 16 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 17. Bulk Data Operations For Collections Filter, Map, Reduce for Java  java.util.function package – Function, Predicate, Consumer, Supplier interfaces  java.util.stream package – Stream, Collector interfaces  Serial and parallel implementations – Generally expressed with Lambda statements  Parallel implementation builds on Fork-Join framework  Lazy evaluation – Things like getFirst() terminate stream 17 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 18. Parallel Array Sorting  Additional utility methods in java.util.Arrays – parallelSort (multiple signatures for different primitives)  Anticipated minimum improvement of 30% over sequential sort – For dual core system with appropriate sized data set  Built on top of the fork-join framework – Uses Doug Lea’s ParallelArray implementation – Requires working space the same size as the array being sorted 18 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 19. Date And Time APIs  A new date, time, and calendar API for the Java SE platform  Supports standard time concepts – Partial, duration, period, intervals – date, time, instant, and time-zone  Provides a limited set of calendar systems and be extensible to others  Uses relevant standards, including ISO-8601, CLDR, and BCP47  Based on an explicit time-scale with a connection to UTC 19 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 20. JDBC 4.2 Minor enhancements for usability and portability  Add setter/update methods – ResultSet, PreparedStatement, and CallableStatement – Support new data types such as those being defined in JSR 310  REF_CURSOR support for CallableStatement  DatabaseMetaData.getIndexInfo extended – new columns for CARDINALITY and PAGES which return a long value  New DatabaseMetaData method – getMaxLogicalLobSize – Return the logical maximum size for a LOB 20 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 21. Base64 Encoding and Decoding  Currently developers are forced to use non-public APIs – sun.misc.BASE64Encoder – sun.misc.BASE64Decoder  Java SE 8 now has a standard way – java.util.Base64.Encoder – java.util.Base64.Decoder – encode, encodeToString, decode, wrap methods 21 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 22. Small Things  javax.lang.model implementation backed by core reflection – Uniform annotation API to view compile-time and runtime reflective information  Charset implementation improvements – Reduced size of charsets, improved performance of encoding/decoding  Reduced core-library memory usage – Reduced object size, disable reflection compiler, internal table sizes, etc 22 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 23. Small Things  Optimize java.text.DecimalFormat.format – Improve performance, multiply by 100.0 or 1000.0 (2 or 3 DP only)  Statically Linked JNI Libraries – Needed for embedded applications – Currently only dynamically linked supported  Handle frequent HashMap collisions with balanced trees – Hash bucket switches from linked list to balanced tree at certain threshold 23 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 24. Internationalisation (I18N) 24 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 25. Locale Data Packing  Tool to generate locale data files – From LDML format  Unicode Common Locale Data Repository (CLDR) support  Locale elements supported from underlying platform 25 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 26. BCP 47 Locale Mapping  Language tags to indicate the language used for an information object – RFC-5646 (Language range) – RFC-5456 (Language priority, preference)  Language range Collection<String>  Language priority List <String>  Three operations added to Locale class – filterBasic – filterExtended – lookup 26 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 27. Unicode 6.2  Java SE 7 support Unicode 6.0  Changes in Unicode 6.1 (February, 2012) – Add 11 new blocks to java.lang.Character.UnicodeBlock – Add 7 new scripts to java.lang.Character.UnicodeScript – Support over 700 new characters in java.lang.Character, String, and other classes  Changes in Unicode 6.2 (September, 2012) – Support a new Turkish currency sign (U+20BA) 27 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 28. Security 28 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 29. Configurable Secure Random Number Generator  Better implementation of SecureRandom  Currently applications can hang on Linux – JVM uses /dev/random – This will block if the system entropy pool is not large enough 29 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 30. Enhanced Certificate Revocation-Checking API  Current java.security.cert API is all-or-nothing – Failure to contact server is a fatal error  New interfaces – CertPathChecker – CertPathParameters  New command line debug option – -Djava.security.debug=certpath 30 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 31. HTTP URL Permissions  New type of network permission – Grant access in terms of URLs, rather than IP addresses  Current way to specify network permissions – java.net.SocketPermission – Not restricted to just HTTP – Operates in terms of IP addresses only  New, higher level capabilities – Support HTTP operations (POST, GET, etc) – Build on limited doPrivileged feature 31 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 32. Small Items  Limited doPrivileged – Execute Lambda expression with privileges enabled  NSA Suite B cryptographic algorithms – Conform to standards to meet U.S. government, banking requirements  AEAD CipherSuite support – Conform to standards to meet U.S. government, banking requirements  SHA-224 message digests – Required due to known flaw in SHA-1  Leverage CPU instructions for AES cryptography – Improve encryption/decryption performance 32 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 33. Small Changes  Microsoft Services For UNIX (MS-SFU) Kerberos 5 extensions – Enhanced Microsoft interoperability  TLS Server Name Indication (SNI) extension – More flexible secure virtual hosting, virtual-machine infrastructure  PKCS#11 crypto provider for 64-bit Windows – Allow use of widely available native libraries  Stronger algorithms for password-based encryption – Researchers and hackers move on  Overhaul JKS-JCEKS-PKCS12 keystores – Simplify interacting with Java SE keystores for cryptographic applications 33 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 34. The Platform 34 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 35. Launch JavaFX Applications  Support the direct launching of JavaFX applications  Enhancement to the java command line launcher 35 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 36. Compact Profiles Approximate static footprint goals Compact1 Profile Compact2 Profile 10Mb 17Mb Compact3 Profile Full JRE 36 24Mb 140Mb Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 37. Modularisation Preparation Getting Ready For Jigsaw  Fix some assumptions about classloaders  Use ServiceLoader rather than proprietary SPI code  JDK tool to analyse application code dependencies  Deprecate APIs that will impede modularisation – e.g. java.util.logging.LogManager.addPropertyChangeListener  Review and possibly change $JAVA_HOME normative references – Relative v. absolute pathnames 37 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 38. Stripped Implementations  Applications that ship bundled with a JRE don’t need to include all the class libraries  This does not break ‘Write once, run anywhere’  Only applicable for bundled JRE – JRE cannot be used by other applications 38 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 39. Virtual Machine 39 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 40. Lambda-Form Representation For Method Handles Assembly language code re-written in Java  Improve performance, quality, and portability of method handles and invokedynamic  Reduce the amount of assembly code in the JVM  Reduce native calls during method handle processing  Better reference implementation of JSR 292 (invokedynamic) 40 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 41. Nashorn JavaScript Engine  Lightweight, high-performance JavaScript engine – Integrated into JRE  Use existing javax.script API  ECMAScript-262 Edition 5.1 language specification compliance  New command-line tool, jjs to run JavaScript  Internationalised error messages and documentation 41 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 42. Retire Rarely-Used GC Combinations  Rarely used – DefNew + CMS – ParNew + SerialOld – Incremental CMS  Large testing effort for little return  Will generate deprecated option messages – Won’t disappear just yet 42 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 43. Remove The Permanent Generation Permanently  No more need to tune the size of it  Current objects moved to Java heap or native memory – Interned strings – Class metadata – Class static variables  Part of the HotSpot, JRockit convergence 43 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 44. Fence Intrinsics  Three new methods in sun.misc.Unsafe class – loadFence – storeFence – ringFence  Required by library code – Ensure memory access operations do not get reordered  Not intended to be used by application developers – May be exposed as public API in JDK9 44 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 45. Mechanical Checking of Caller-Sensitive Methods  Improve security of JDK method-handle implementation  New @CallerSensitive annotation  SecurityManager.checkMemberAccess deprecated – In future may throw an unconditional exception  java.util.logging.Logger revised – Remove stack walk in search of resource bundle – Related to modularisation preparation 45 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 46. Small Things  Enhanced verification errors – Additional contextual information on bytecode verification errors  Reduce cache contention on specified fields – Pad variables to avoid sharing cache lines  Reduce class metadata footprint – Use techniques from CVM of Java ME CDC  Small VM – libjvm.so <3MB by compiling for size over speed 46 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 47. The JDK Increased Build Speed, Simplified Setup  Autoconf based build system – ./configure style build setup  Enhance javac to improve build speed – Run on all available cores – Track package and class dependences between builds – Automatically generate header files for native methods – Clean up class and header files that are no longer needed 47 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 48. Conclusions  Java SE 8 will add plenty of new features (and remove a few) – Language – Libraries – JVM  Java continues to evolve! – jdk8.java.net – www.jcp.org – openjdk.java.net/jeps 48 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 49. 49 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

Editor's Notes

  1. JEP126
  2. JEP126
  3. JEP104
  4. JEP101Add inferrence in argument position and chained calls.List.cons is a static method, but the type cannot currently be inferred from the fact that the first parameter is an int that would be autoboxed to an Integer
  5. JEP118Currently parameter names of methods and constructors cannot be retrieved via reflectionParameter types can be retrieved, but not names (Look at Method and Constructor classes in java.lang.reflect)
  6. JEPS 120, 117, 105, 172, 106JSR 269 Pluggable Annotation Processing API
  7. JEP 109
  8. JEP 155Completion based design. Multiple threads getting stalled by one thread. The way round this is to basically pass on the work from a thread that is waiting to the one doing the work. The waiting thread is then free to be reused.
  9. JEP 107Heavily linked to the ideas of JSR-335, Lanbdas and extension methods. Stream implementation for lazy, or parallel implementation
  10. JEP103
  11. JEP150Internal storage using just the offset in nanosecods from the Epoch. Things like day and date, etc calculated on demand to improve efficiency.Partial, e.g. March 20th (no year). Not specificDuration (nanos), period (minutes, days, etc), interval nanos between two points in time.
  12. JEP170 / JSR-310 Date and Time APIREF_CURSOR for RecordSets from stored procedures
  13. JEP135
  14. JEP 119, 112, 149javax.lang.model used for annotation processing. Currently limited to compile time, but this would make it available at runtime
  15. JEP 177, 178, 180
  16. JEP127Locale Data Markup Language
  17. JEP128BCP – Best Current Practice
  18. JEP133
  19. JEP123
  20. JEP124RevocationChecker can evaluate the status of a certificate revocation based on a RevocationParmaters object that encapsulates the revocation requestproperties
  21. JEP 184
  22. doPrivileged, allows a Lambda expression (i.e. a functional interface) to have it’s method executed Authenticated Encryption with Associated Data (AEAD)secure hash algorithm SHAAdvanced encryption standard (AES)JEP 140, 129, 115, 130, 164
  23. PKCS – Public Key Cryptography Standard from RSA Labs (Hardware devices and smart cards)JKS-JCEKS-PKCS12 Java Key Store (from SUN days in the JDK)Java Cryptography Extensions Key StoreJEP 113, 114, 131, 121, 166
  24. JEP 153
  25. JEP 161
  26. JEP 162ServiceLoader. JAXP does not use ServiceLoader (which provides a consistenet interface to an SPI)
  27. JEP 160Move code from assembly language to Java for implementing method handles.
  28. JEP 174
  29. JEP 173
  30. JEP 122
  31. loadFence prevent reordering of load operations before this call with loads and stores after this callstoreFence prevent reordering of store operations before this call with loads and stores after this callringFence prevent reordering of all memory operations before this call with loads and stores after this callJEP 171
  32. JEP 176
  33. JEP 136, 142, 147, 148
  34. JEP 138, 139