Your SlideShare is downloading. ×
Whats new in Java 7
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Whats new in Java 7

2,696
views

Published on

This ppt lists the various new features in java SE7, going to be released this summer.

This ppt lists the various new features in java SE7, going to be released this summer.

Published in: Technology, Education

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,696
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
86
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. SE 7 : Whats New! Ayushman Jain JDT/Core committer IBM © IBM 2011. Licensed under EPL v1.0
  • 2. New features at a glance● Project Coin – small enhancement and new language features.● Support for dynamic languages.● Unicode 6.0 – new rupee symbol, brahmi script, emoticons.● New I/O and concurrent APIs. © IBM 2011. Licensed under EPL v1.0
  • 3. Project coin features● Binary literals and underscores in literals.• Strings in switch.• @SafeVarargs - Varargs warnings.• Diamond - improved type inference for generic instancecreation.• Multi-catch and more precise rethrow.• try-with-resources (formerly known as AutomaticResource Management or ARM). © IBM 2011. Licensed under EPL v1.0
  • 4. Strings in switch● When do you use a switch statement?● Valid case labels upto javaSE 6 can be – Int constants – Enum constants● String can also be constants! © IBM 2011. Licensed under EPL v1.0
  • 5. Safe Varargs● Variable arity method - public static <T> List<T> java.util.Arrays.asList(T... a)● If T is the parameter type with variable arity and is also non-reifiable, a new warning on declaration of variable arity methods with parameter of type T.● A new annotation @SafeVarargs to suppress the warning at both declaration site and call site. © IBM 2011. Licensed under EPL v1.0
  • 6. Reifiable types● A type whose type information is fully available at runtime, that is, a type that does not lose information in the course of type erasure.● Any type with type parameters is available to the JVM as the raw type because of type erasure.● So List<Number> and List<String> are both seen as List by the JVM.● Hence parameterized types are non-reifiable.● On the other hand, types such as “String” are reifiable. © IBM 2011. Licensed under EPL v1.0
  • 7. Safe Varargs● A variable arity parameter of a generic type can cause heap pollution.● public static <T> List<T> java.util.Arrays.asList(T... a)● Heap pollution - A situation where a variable of a parameterized type refers to an object that is not of that parameterized type.● Usually, the method body is well behaved and only iterates over the elements.● Hence, unchecked warning is mostly a distraction. © IBM 2011. Licensed under EPL v1.0
  • 8. @SafeVarargs● Annotation legal on static or final variable arity methods or constructors.● Not legal on – Fixed arity methods or constructors. – Variable arity methods or constructors that are neither final nor static.● Some java APIs already retrofitted with the annotation in JDK 7. © IBM 2011. Licensed under EPL v1.0
  • 9. Binary Integer Literals and Underscores in numeric literals● Binary integer literals structured just like hex interger literals. Differences: – Binary digits used instead of hex digits – 0b now used instead of 0x● In numeric literals, underscores now permitted as separators between digits.● Applies to literals in any base: binary, octal, hexadecimal, or decimal● Applies to both integer literals and floating point literals © IBM 2011. Licensed under EPL v1.0
  • 10. Multi-catch and more precise rethrow● Different catch blocks performing the same action on the caught exception.● They can now be combined into one single catch block using Disjunctive types.● Disjunctive type = ExceptionA | ExceptionB | ....● Disjunctive types implicitly final.● Also, now only the actually thrown exception is now rethrown and not its parent type. © IBM 2011. Licensed under EPL v1.0
  • 11. Try With Resources● Language & Library changes to – Ease management of objects that require explicit freeing/disposal/destruction. – Prevent resource leaks (handles, streams ...) – A la Destructors in C++ (and others)● Library changes: – A new interface java.lang.AutoCloseable. – Libraries retrofitted to implement the new interface – Facilities to manage suppressed exceptions on java.lang.Throwable © IBM 2011. Licensed under EPL v1.0
  • 12. What is a Resource● Basically a final variable local to the try block.● Must be of type AutoCloseable.● Must be initialized in the resource section.● Language guarantees that every successfully initialized non-null resource will be “closed”.● Will be closed regardless of normal or abrupt completion.● In LIFC order: Last initialized first closed. © IBM 2011. Licensed under EPL v1.0
  • 13. Suppressed exceptions● “Primary” exception will be the exception seen by a user supplied catch block.● Exception from close methods are added to the suppressed list of primary exception (unless it is the primary exception.)● An interested party can query and process suppressed exceptions. New APIs in class Throwable: – public final void addSuppressed(Throwable); – public final Throwable [] getSuppressed(); © IBM 2011. Licensed under EPL v1.0
  • 14. Diamond● Improved type inference for generic instance creation.● Before,● List<String> list = new ArrayList<String>();● Now,● List<String> list = new ArrayList<>();● Why not List<String> list = new ArrayList() ? © IBM 2011. Licensed under EPL v1.0
  • 15. Support for dynamic languages● A growing interest in running programs written in dynamic languages on JVM.● Particularly scripting languages-JRuby,Jpython,Groovy.● Motivation – make implementation in such languages efficient and fast.● Current Problem - JVM instruction to invoke a method takes method descriptor as the argument – Method descriptor is the method name, argument types and the return type.● Solution – new invokeDynamic instruction and dynamic linking through method handles. © IBM 2011. Licensed under EPL v1.0
  • 16. JVM bytecode instructions● invokevirtual - Invokes a method on a class. This is the typical type of method invocation.● invokeinterface - Invokes a method on an interface.● invokestatic - Invokes a static method on a class. This is the only kind of invocation that lacks a receiver argument.● invokespecial - Invokes a method without reference to the type of the receiver.● invokedynamic - enables an implementer of a dynamic language to translate a method invocation into bytecode without having to specify a target type that contains the method. © IBM 2011. Licensed under EPL v1.0
  • 17. Method handles● Consider hypothetical dynamic language code function max (x,y) { if x.lessThan(y) then y else x }● To compile this for JVM MyObject function max (MyObject x,MyObject y) { if x.lessThan(y) then y else x }● Or use reflection.● With Java7, use method handles! © IBM 2011. Licensed under EPL v1.0
  • 18. Use Eclipse for java 7● No builds available as of today.● Setup Eclipse to work for java 7 as described in http://wiki.eclipse.org/JDT_Core/Java7 © IBM 2011. Licensed under EPL v1.0
  • 19. Thank You! © IBM 2011. Licensed under EPL v1.0