Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Webinar: Whats New in Java 8 with Develop Intelligence

1,552 views

Published on

This Webinar explores a variety of new and updated features in Java 8, and discuss how these changes can positively impact your day-to-day programming.

Watch the video replay here: http://bit.ly/1vStxKN

Your Webinar presenter, Marnie Knue, is an instructor for Develop Intelligence and has taught Sun & Oracle certified Java classes, RedHat JBoss administration, Spring, and Hibernate. Marnie also has spoken at JavaOne.

Published in: Technology
  • Be the first to comment

Webinar: Whats New in Java 8 with Develop Intelligence

  1. 1. What's New in Java SE 8 A Quick Look at the Platform Enhancements 1
  2. 2. Objectives When we are done, you should be able to use: Functional interfaces Default methods Lambdas and lambda expressions java.time package 2© DevelopIntelligence http://www.DevelopIntelligence.com
  3. 3. Functional Interfaces Interface containing only one method Can annotate with java.lang.FunctionalInterface If only one method, the annotation is not needed Primarily used as targets for lambdas Several have been pre-defined in java.util.function Predicate – used for tests; takes an argument, compares it to the given Predicate Function – takes an argument, returns response Consumer – takes an argument, returns nothing 3© DevelopIntelligence http://www.DevelopIntelligence.com
  4. 4. Default Methods Specialized methods found in interfaces Marked with default keyword Allows us to add methods to an interface long after it has been released without breaking the interface 4© DevelopIntelligence http://www.DevelopIntelligence.com @FunctionalInterface public interface Predicate<T> { public boolean test(); default Predicate<T> and(Predicate<? super T> other){ //do stuff } }
  5. 5. Lambda Expressions Mechanism to pass functionality as an argument Way to simplify reading of code Anonymous inner classes tend to be bulky Multiple functionality options decrease DRY properties and/or cause explosion in number of methods 5© DevelopIntelligence http://www.DevelopIntelligence.com
  6. 6. Example: Customer public class Customer { private String firstName, surName; private String street, city, state, postalCode; public Customer (String firstName, String surName, String postalCode){ this.firstName = firstName; this.surName = surName; this.postalCode = postalCode; } <all appropriate accessor, mutators and constructors written here> 6© DevelopIntelligence http://www.DevelopIntelligence.com
  7. 7. Example: MailingList public List<Customer> findBySurName(String surName){ List<Customer> tempList = new ArrayList<>(); for(Customer c : customerList){ if(c.getSurName().equals(surName)){ tempList.add(c); } } return tempList; } We would need something like this for every search method 7© DevelopIntelligence http://www.DevelopIntelligence.com
  8. 8. Writing Lambdas Consists of three parts Comma-separated list of parameters enclosed in parentheses Arrow → Body of expression If one expression, it is evaluated and result is returned If it is a block, return statement can be explicitly defined Sometimes contains :: Can only be used when the Java compiler can determine the data type Called “Target Type” 8© DevelopIntelligence http://www.DevelopIntelligence.com
  9. 9. Lambda Expression: Part 1 Called method replaces all the various options public List<Customer> findCustomer (Predicate<Customer> tester){ List<Customer> customer = new ArrayList<>(); for(Customer c: customerList) { if(tester.test(c)) customer.add(c); } return customer; } 9© DevelopIntelligence http://www.DevelopIntelligence.com
  10. 10. Lambda Expression: Part 2 Calling method has the lambda expression modifiedList = ml.findCustomer(c-> c.getSurName().equals("Smith") && c.getPostalCode().equals("12346")); for(Customer c: modifiedList){ System.out.printf("Customer List: %s, %sn", c.getSurName(), c.getFirstName()); }); 10© DevelopIntelligence http://www.DevelopIntelligence.com
  11. 11. Charset Improvements Goal Decrease size of installed charsets Reduce maintenance cost Improve performance of encoding/decoding Improved performance of String(byte[], …) and string.getBytes() 11© DevelopIntelligence http://www.DevelopIntelligence.com
  12. 12. New Date-Time Package java.time package is the base Divided into two types • Human – based on days, months, hours • Machine (or continuous) – based on Unix Time Immutable and thus thread safe Methods perform same action in each class Works with ISO-8601 calendar system and non-ISO calendar systems Designed to be more natural to use and less clumsy than Calendar 12© DevelopIntelligence http://www.DevelopIntelligence.com
  13. 13. Date-Time Example 13© DevelopIntelligence http://www.DevelopIntelligence.com import java.time.*; public class DateTime { public static void main(String[] args) { LocalTime local = LocalTime.now(); System.out.println("The time is now " + local); LocalTime hours = local.plusHours(5); System.out.println("In 5 hours is will be " + hours); int seconds = local.toSecondOfDay(); System.out.println("The total number of seconds for today is " + seconds); } }
  14. 14. Date-Time Example (cont.) The previous example has the following results: The time is now 20:07:43.289 In 5 hours it will be 01:07:43.289 The total number of seconds since midnight is 72463 14© DevelopIntelligence http://www.DevelopIntelligence.com
  15. 15. java.time Package Has two enums DayOfWeek Month Continuous classes Instant Duration All others are considered 'human' 15© DevelopIntelligence http://www.DevelopIntelligence.com
  16. 16. SelectorProvider Abstract class whose subclasses give us access to the various channel streams Now have one specific to Solaris using its event port mechanism -Djava.nio.channels.spi.SelectorProvider= sun.nio.ch.EventPortSelectorProvider 16© DevelopIntelligence http://www.DevelopIntelligence.com
  17. 17. Closing Thank you!  DevelopIntelligence http://www.Develop Intelligence.com
  18. 18. Contact Does your team need to build its Java skills and knowledge beyond today's webinar’s offerings? We have some of the best Java instructors in the industry. Contact us today to discuss available learning solutions. Develop Intelligence (877) 629-5631 info@developintelligence.com Twitter: @DevIntelligence Stay in the know about developer news, tools, SDKs, technical presentations, events and future webinars, connect with AMD Central here: AMD Developer Central Twitter: @AMDDevCentral Web: http://developer.amd.com/ Developer Forums: devgurus.amd.com/welcome

×