Whats new in Java 7
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Whats new in Java 7

  • 3,153 views
Uploaded 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.

More in: Technology , Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,153
On Slideshare
3,087
From Embeds
66
Number of Embeds
2

Actions

Shares
Downloads
86
Comments
0
Likes
1

Embeds 66

http://www.eclipseday.in 65
url_unknown 1

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