15 Java 8

12

Click here to load reader

Transcript of 15 Java 8

Page 1: 15 Java 8

WELCOME TO JAVA 8Talk 15

Page 2: 15 Java 8

JAVA 8

• Released in March 2014.

• No binary compatibility with Java 7.

• We are now at 1.8.0_u65.

• Support for Java 7 ended in April 2015.

• BBox 1.1 will be compiled on Java 8.

Page 3: 15 Java 8

NEW LANGUAGE FEATURES

Page 4: 15 Java 8

LAMBDA EXPRESSIONSbtn.onClick(new ClickListener() { @Override public void onClick(ClickEvent event) { System.out.println("Hello World!"); } });

btn.onClick( event -> System.out.println("Hello World!") );

Arrays.asList("a", "b", "d").forEach(e -> System.out.println(e));

Page 5: 15 Java 8

METHOD REFERENCES

public class Utils { public static int compareByLength(String in, String out) { return in.length() - out.length(); } }

String[] args = new String[] {“microsoft","apple","linux","oracle"}; Arrays.sort(args, Utils::compareByLength);

Page 6: 15 Java 8

DEFAULT METHODSprivate interface Defaultable { default String notRequired() { return "Default implementation"; } } private class DefaultableImpl implements Defaultable {} private class OverridableImpl implements Defaultable { @Override public String notRequired() { return "Overridden implementation"; }}

Page 7: 15 Java 8

INTERFACE STATIC METHODS

private interface DefaultableFactory { static Defaultable create(Supplier<Defaulable> supplier) { return supplier.get(); }}

Page 8: 15 Java 8

ANNOTATIONS

final Holder<String> holder = new @NonEmpty Holder<String>();

@NonEmpty Collection<@NonEmpty String> strings = new ArrayList<>();

Page 9: 15 Java 8

OPTIONAL

Optional<String> fullName = Optional(null);

System.out.println("Full Name is set? " + fullName.isPresent());

System.out.println("Full Name: " + fullName.orElseGet(() -> “[none]”)); System.out.println(fullName.map(s -> "Hey " + s + “!") .orElse("Hey Stranger!"));

Page 10: 15 Java 8

STREAMS

Collection<Task> tasks = Lists.newLinkedList();

double totalPoints = tasks .stream() .parallel() .filter(task -> task.getStatus() == Status.OPEN) .map(task -> task.getPoints()) // or map(Task::getPoints) .reduce(0, Integer::sum); System.out.println("Total points (all tasks): “ + totalPoints);

Page 11: 15 Java 8

OTHER IMPROVEMENTS• Repeatable annotations

• Better type inference

• Runtime access to parameters names

• New date/time API

• Nashorn Javascript engine

• Parallel arrays

Page 12: 15 Java 8

DELAYED TO JAVA 9

• Modularization

• Money and Currency API

• Java REPL shell