Java 7Anything new under the Sun?
Java 7Hands-onJava 8+
VersionsJDK 1.0 Jan, 1996JDK 1.1 Feb, 1997J2SE 1.2 Dec, 1998J2SE 1.3 May, 2000J2SE 1.4 Feb, 2002J2SE 5.0 Sep, 2004Java SE 6 Dec, 2006Java SE 7 Jul, 2011
Plans
Plan A
JDK 7As currently planned
Mid 2012
Plans
Plan A
JDK 7As currently planned
Mid 2012
Plan BPlan B
JDK7minus Lambda,
Jigsaw, and part of Coin
JDK8Lambda, Jigsaw, and rest of Coin
Mid 2011 End 2012
Platform FeaturesAPI Features
Language Features
Dynamic Language Support
JVM has no support for dynamic languages:
• Existing JVM instruction set is statically typed
• Limited support for dynamically modifying existing classes and methods
Dynamic Language Support
Java 7 adds:
• a new invokedynamic instruction at the JVM level
• ability to change classes and methods at runtime dynamically in a production environment.
Other Platform Features
• JVM performance enhancements
• Upgrade class-loader architecture
• Garbage-First Collector
• New JavaDoc layout
Platform FeaturesAPI Features
Language Features
Fork/Join
NIO.2
• The FileVisitor API• Directory watching• File attributes• Custom filesystem providers (ZIP)
Other API Features• Updated XML stacks• JDBC 4.1• MethodHandles• Unicode 6.0 and Locale enhancements• Elliptic-curve cryptography• Enhanced MBeans
Platform FeaturesAPI Features
Language Features
Strings in switchString line = in.readLine();
switch (line) { case "hello": System.out.println("hello world!"); return; case "cafe": System.out.println("cafebabe!"); return; default: System.out.println("wrong...");}
Literals
int binary = 0b1001_0000_1111_0010;System.out.println(binary);System.out.println(Integer.toBinaryString(binary));
int readableMillion = 1_000_000;System.out.println(readableMillion);
int readableBillion = 1_000_000_000;System.out.println(readableBillion);
Multi-catch/* Java 6 and older */} catch (IOException e) { logger.log(e); throw e;} catch (SQLException e) { logger.log(e); throw e;}
/* Java 7 */} catch (IOException | SQLException e) { logger.log(e); throw e;}
Precise rethrowpublic void preciseRethrow() throws IOException { try { new SimpleDateFormat("yyyyMMdd").parse("foo"); new FileReader("file.txt").read(); } catch(ParseException e) { System.out.println(e.getMessage()); } catch(Exception e) { System.out.println(e.getMessage()); throw e; }}
“Diamond”
/* Java 5 & 6 */Map<String, List<String>> myMap = new HashMap<String, List<String>>();
/* Java 7 */Map<String, List<String>> myMap = new HashMap<>();
/* Be warned, the compiler still generates an unchecked conversion warning! */Map<String, List<String>> myMap = new HashMap();
Try-with-resources
File file = new File("input.txt"); try (InputStream is = new FileInputStream(file)) { // do something with this input stream } catch (FileNotFoundException ex) { System.err.println(file.getAbsolutePath()); }
Java 7Hands-onJava 8+
IMDb
We’re building an application which reads IMDb data and parses it to determine which actor has made the best films.
Read files
• Open project SequentialWithoutIO• Update root field in class IMDB• Find method readFilms() and
readActors() in class IMDB• Implement!
NIO.2 Hints
/** Read a UTF-16 file like ratings-clean.txt **/try (BufferedReader reader = Files.newBufferedReader( file, Charset.forName(“UTF-16”)))
/** Read all actor files in a directory **/try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, “actor*.txt”))
/** Read all lines in file **/Files.readAllLines(entry, Charset.forName(“UTF-8”));
Parse files• Open project SequentialParserWithIO
(or continue with your previous project)• Update root field in class IMDB• Find method compute() in classes
ActorParseTask and FilmParseTask• Implement!
Fork/Join Hints/** Start computing with checking if the work is small enough to do sequentially **/
/** Fork! **/Collection<ParseTask> completedForks = invokeAll( /** give a list work packages **/);
/** Join! **/for (ParseTask task : completedForks)/** Join all the results of the tasks and return this collection **/
Java 7Hands-onJava 8+
Features• Project Coin 2
• List literals: [1, 2, 3]• Map literals: [“a”: 1, “b”: 2, “c”: 3]
• Project Lambda: (x, y) => x + y• Type annotations: List<@NonNull Object>• Superpackages
Features• Project Jigsaw
• JDK modularity• Modular and versioned applications
• Joda Time• Project HotRockit• Porting JDeveloper to Netbeans
Java 8 workshopDecember 2012
Hopefully...
Top Related