Your SlideShare is downloading. ×
What's Expected 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

What's Expected in Java 7

16,453
views

Published on

This is a presentation given in a Java Open day conducted by Trainologic. …

This is a presentation given in a Java Open day conducted by Trainologic.
Trainologic shares its training content for free at trainologic.org you can find many more free full course there.

Published in: Technology

2 Comments
16 Likes
Statistics
Notes
  • Thanks. We've incorporated some of these learnings into preparing the Top 10 Java Interview Questions

    http://www.slideshare.net/iimjobs/top-10-java-interview-questions-and-answers
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • http://student-answers.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
16,453
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
2
Likes
16
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. What’s New in Java 7? A Glance at the Future copyright 2009 Trainologic LTD
  • 2. What’s New in Java 7? • Java 7. • Modularization • JSR 308. • Library Changes. • Language Changes. • Enhancements to the JVM. • What’s Not Included. copyright 2009 Trainologic LTD
  • 3. What’s new in Java 7? What’s new in Java 7 • Scheduled release date: early 2010. • No platform JSR yet. • Many exciting new features. • Lets go over them… 3 copyright 2009 Trainologic LTD
  • 4. What’s new in Java 7? Changes in Java 7 • Modularization. • Annotations on Types. • Fork/Join Library. • NIO2. • Safe Re-throw. • Null Dereference. • Multi-catch. • JVM Enhancements. • …and more… 4 copyright 2009 Trainologic LTD
  • 5. What’s New in Java 7? • Java 7. • Modularization Modularization. • JSR 308. • Library Changes. • Language Changes. • Enhancements to the JVM. • What’s Not Included. copyright 2009 Trainologic LTD
  • 6. What’s new in Java 7? The JAR Hell • JARs are archaic beasts headed for extinction. • No version management. • No dependencies mechanism. • Don’t plug well into existing module-frameworks (e.g. OSGi). • Don’t support encapsulation. 6 copyright 2009 Trainologic LTD
  • 7. What’s new in Java 7? Introducing Modules • The module keyword provides a new accessibility level to the standard levels (private, default/package, protected, public). • Here is a an example of using module: module com.trainologic.services@4.1; package com.trainologic.modules.example; public class InnerService { //... } 7 copyright 2009 Trainologic LTD
  • 8. What’s new in Java 7? Accessibility • In the previous example, the InnerService class belongs to the module com.trainologic.services version 4.1 • This class is accessible from everywhere, it is public!. • If the class or one of its members/constructors is declared module, it will only be accessible from a type that belongs to the same module. 8 copyright 2009 Trainologic LTD
  • 9. What’s new in Java 7? Module Meta-data • With Java 5, we were able to provide package meta- data (annotations) by the use of the package-info.java file. • With Java 7 we will be able to provide module meta- data with the module-info.java file. 9 copyright 2009 Trainologic LTD
  • 10. What’s new in Java 7? Example • module-info.java: module core provides infra { // Must have this module visible requires anotherModule; // Only this module will be able to require me. permits extensions; } 10 copyright 2009 Trainologic LTD
  • 11. What’s new in Java 7? Project Jigsaw • Project Jigsaw breaks the JDK into modules. • This will enable using smaller JDK Jars in applications (based on needs). • This will also be an excellent opportunity to get rid of deprecated APIs. 11 copyright 2009 Trainologic LTD
  • 12. What’s New in Java 7? • Java 7. • Modularization • JSR 308. • Library Changes. • Language Changes. • Enhancements to the JVM. • What’s Not Included. copyright 2009 Trainologic LTD
  • 13. What’s new in Java 7? JSR 308 • JSR 308 will enhance the Java Annotations framework and will enable placing annotations in more places than available in Java 6. • You can now place annotations on Types: List<@NonNull Object> 13 copyright 2009 Trainologic LTD
  • 14. What’s new in Java 7? More Examples Map<@NonNull String, @NonEmpty List<@Readonly Document>> files; void monitorTemperature() throws @Critical TemperatureException { myString = (@NonNull String) myObject; class Folder<F extends @Existing File> { ... } Collection<? super @Existing File> 14 copyright 2009 Trainologic LTD
  • 15. What’s new in Java 7? Method Receivers • You can also apply annotations to the object on which the method is called: // The read method can be invoked only on an Opened object! public byte[] read() @Open { ... } // The configure method can be invoked // only on an object which is in Configuration state! public void configure(Map props) @Configuration { ... } 15 copyright 2009 Trainologic LTD
  • 16. What’s new in Java 7? Annotations on Types • This new feature will enable “Design by Contract”. • It will enable new opportunities for static syntax checkers to find bugs. • One of the exciting new features for Java 7! 16 copyright 2009 Trainologic LTD
  • 17. What’s New in Java 7? • Java 7. • Modularization • JSR 308. • Library Changes. • Language Changes. • Enhancements to the JVM. • What’s Not Included. copyright 2009 Trainologic LTD
  • 18. What’s new in Java 7? Concurrency Utils • Doug Lea, the founder of the excellent java.util.concurrent introduces (through JSR 166) the following new features: • Fork/Join framework. • TransferQueue. • Phasers. 18 copyright 2009 Trainologic LTD
  • 19. What’s new in Java 7? Fork/Join • The basic idea of the Fork/Join framework is that many tasks can be split to several concurrent threads, and the result should be merged back. • Let’s take a look at an example… 19 copyright 2009 Trainologic LTD
  • 20. What’s new in Java 7? Fork/Join • Instead of doing it single-threaded, the idea of fork/join is to split the operation to several (depends on the # of cores) concurrent threads. public class Fibonacci extends RecursiveTask<Integer> { private final int n; public Fibonacci(int n) { this.n = n;} protected Integer compute() { System.out.println(Thread.currentThread().getName()); if (n <= 1) return n; Fibonacci f1 = new Fibonacci(n - 1); f1.fork(); Fibonacci f2 = new Fibonacci(n - 2); return f2.compute() + f1.join(); } } 20 copyright 2009 Trainologic LTD
  • 21. What’s new in Java 7? Example • The Main class: public class Main { public static void main(String[] args) { ForkJoinPool pool = new ForkJoinPool(3); Fibonacci fibonacci = new Fibonacci(20); pool.execute(fibonacci); System.out.println(fibonacci.join()); } } 21 copyright 2009 Trainologic LTD
  • 22. What’s new in Java 7? TransferQueue • A BlockingQueue on which the producers await for a consumer to take their elements. • Usage scenarios are typically message passing applications. 22 copyright 2009 Trainologic LTD
  • 23. What’s new in Java 7? Phasers • “Beam me up, Scotty!” • A Phaser is quite similar to CyclicBarrier and CountDownLatch but is more powerful and flexible. • A Phaser has an associated phase-number which is of type int. • A Phaser has a number of unarrived parties. Unlike CyclicBarrier and CountDownLatch, this number is dynamic. 23 copyright 2009 Trainologic LTD
  • 24. What’s new in Java 7? Phasers • A Phaser supports operations for arriving, awaiting, termination, deregistration and registration. • When all the parties arrive, the Phaser advances (increments its phase-number). • Phasers also supports ForkJoinTasks! 24 copyright 2009 Trainologic LTD
  • 25. What’s new in Java 7? NIO.2 • JSR 203 adds new APIs to the NIO package. • Main features: • BigBuffers – Buffers that support more than Integer.MAX_VALUE elements. • Filesystem API. • Asynchronous Channels. 25 copyright 2009 Trainologic LTD
  • 26. What’s new in Java 7? Filesystem API • Here is an example of using events on filesystem: FileSystem fs = ... FileReference file = ... WatchService watcher = fs.newWatchService(); file.register(watcher, WatchEvent.MODIFY_EVENT); for (;;) { WatchKey key = watcher.take();// wait for the next key List<WatchEvent> events = key.takeEvents(); for (WatchEvent event: events) { if ((event & WatchEvent.MODIFY_EVENT) > 0) { FileChannel fc = FileChannel.open(file, OpenFlag.READ); FileLock lock = fc.lock(); // do something lock.unlock(); fc.close(); } } key.reset(); } 26 copyright 2009 Trainologic LTD
  • 27. What’s New in Java 7? • Java 7. • Modularization • JSR 308. • Library Changes. • Language Changes. • Enhancements to the JVM. • What’s Not Included. copyright 2009 Trainologic LTD
  • 28. What’s new in Java 7? Multi-Catch • Finally, we can treat several Exception types in one catch block: try { Class.forName(quot;Kukuquot;).newInstance(); } catch (InstantiationException, IllegalAccessException e){ e.printStackTrace(); } catch (ClassNotFoundException e) { // do something else } 28 copyright 2009 Trainologic LTD
  • 29. What’s new in Java 7? Safe Re-throw • Currently the following code will not compile: public void foo() throws IOException, SQLException { try { // do something that may throw IOException or // SQLException } catch (Exception e) { // do something throw(e); } } 29 copyright 2009 Trainologic LTD
  • 30. What’s new in Java 7? Safe Re-throw • The proposed syntax is with the final keyword: public void foo() throws IOException, SQLException { try { // do something that may throw IOException or // SQLException } catch (final Exception e) { // do something throw(e); } } 30 copyright 2009 Trainologic LTD
  • 31. What’s new in Java 7? Null-safe Dereference • A new operator will be introduced: currentCompany?.getCEO()?.getAddress()?.getStreet() 31 copyright 2009 Trainologic LTD
  • 32. What’s new in Java 7? Type Inference • How about easing the cumbersome generic-types initialization? Map<String, Integer> map = new HashMap<String, Integer>(); • Now it will be: Map<String, Integer> map = new HashMap<>(); 32 copyright 2009 Trainologic LTD
  • 33. What’s New in Java 7? • Java 7. • Modularization • JSR 308. • Library Changes. • Language Changes. • Enhancements to the JVM. • What’s Not Included. copyright 2009 Trainologic LTD
  • 34. What’s new in Java 7? Garbage First (G1) • A new Garbage Collector is developed by Sun for Java 7. • It will be called G1. • This GC will split the memory into multiple regions (unlike 2 in the current version) and will (most likely) perform faster than the current parallel collectors. 34 copyright 2009 Trainologic LTD
  • 35. What’s new in Java 7? Compressed 64-bit Pointers • One of the downsides of a 64-bit JVM is that low level pointers take a lot of space. • Java7 will include a “compressed 64-bit pointers” that will consume less space and perform just like 32-bit pointers. 35 copyright 2009 Trainologic LTD
  • 36. What’s new in Java 7? InvokeDynamic • A new bytecode instruction will (finally) be added to the JVM bytecode. • This new instruction will greatly simplify dynamic languages implementations on the JVM. • Dynamic Language?? – Watch for the Groovy presentation!! 36 copyright 2009 Trainologic LTD
  • 37. What’s New in Java 7? • Java 7. • Modularization • JSR 308. • Library Changes. • Language Changes. • Enhancements to the JVM. • What’s Not Included Included. copyright 2009 Trainologic LTD
  • 38. What’s new in Java 7? Not Included • The following (promised) features will not be included in Java 7: • Closures. • Refied Generics. • Properties. • Operator overloading. • BigDecimal syntax. • Language level XML support. 38 copyright 2009 Trainologic LTD
  • 39. Thank You Q&A Shimi Bandiel, VP R&D, Trainologic LTD copyright 2008 trainologic LTD