Java 7 and 8, what does it mean for you?<br />
What does Java 7 (and 8) mean to you?<br />IT professional<br />(non java) Developer<br />Java Developer<br />Oracle<br />
IT professional<br />
http://commons.wikimedia.org/wiki/File:Alexander_cuts_the_Gordian_Knot.jpg<br />
Developer<br />
JSR 292<br />Invokedynamic<br />
Java Developer<br />
Project Coin – JSR 334<br />http://www.flickr.com/photos/chefranden/908539119/<br />
Coin (1) Strings in switch<br />String s = ... <br />switch(s) { <br />case "foo": <br />processFoo(s); <br />	break; <br ...
Coin (2) Changes to literals<br />1234_5678 <br />1_2_3_4__5_6_7_8L <br />0b0001_0010_0100_1000 <br />3.141_592_653_589_79...
Coin (3) Multi Catch, precise rethrow<br />try { <br />	doWork(file); <br />} catch (IOException ex) { <br />	logger.log(e...
Coin (4) Diamond operator<br />Map<String,List<String>> m = new HashMap<String,List<String>>();<br />Map<String,List<Strin...
Coin (5) Try with resources<br />try (AutoclosableResource) {<br />// Do stuff<br />}<br />// closed here<br />
Concurrency and Collections Updates - JSR 166yLightweight Fork/Join Framework<br />10,000000<br />Transistors (1,000s)<br ...
Network and File System – JSR 203NIO.2 <br />NIO.2<br />NIO.2 Filesystem Provider for ZIP and JAR Archives<br />SCTP (Stre...
Security<br />Native ECC (Elliptic Curve Cryptography)<br />TLS (Transport Layer Security)1.2<br />Stronger pseudorandom f...
Internationalization<br />Unicode 6.0<br />IETF BCP47 and UTR35<br />One language many character codes (Kanji, Hiragana, K...
Other EnhancementsClient & Graphics<br />Added Nimbus L&F to the standard<br />Much better –modern- look than what was pre...
Other Enhancements<br />Better font configuration on Unix<br />Now uses standard Unix mechanism to find fonts.<br />JAXP 1...
JDK 7 Platform Support<br />Windows x86<br />Server 2008, Server 2008 R2, 7 & 8 (when it GAs)<br />Windows Vista, XP<br />...
JDK 7 Project Plan<br />From 1/21 OpenJDK Schedule<br />2010/12/16 Feature Complete<br />2011/04/12 Rampdown start: P1-P3 ...
Features from “Plan B”<br />Other Things On Oracle’s Wish List*<br /><ul><li>Modularization
Language and VM Support
Platform Modularization
Project Lambda
Lambda Expressions
Upcoming SlideShare
Loading in …5
×

Java 7 and 8, what does it mean for you

3,289 views

Published on

Published in: Technology, Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,289
On SlideShare
0
From Embeds
0
Number of Embeds
140
Actions
Shares
0
Downloads
29
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • In todays presentation, you will learn what Java 7, and to some extent Java 8 will mean do you.What ”You” means can differ a bit, so I have grouped different ”You”s in 3 groups – IT professionals, Non java developers and Java developers. Not surprising, the Java Developer part will get the most slides. Finally, I will speak a little about the Oracle specific parts of the Java SE world.
  • The biggest news about Java 7 is that it’s shipping. For those of you that aren&apos;t up to speed with your classical paintings, what you see here is Alexander the great cutting the Gordian Knot.Java SE 6 came out in december 2006, more than 4 years ago. In internet time this is for ever. Twitter started 5 years ago, the first iPhone came 4 years ago. Between 2006 and 2010, no new Java versions were released, in contrast we saw 2 new versions of the .NET framework. Development platforms tend to move slower with increasing success - C hasn&apos;t been updated in more then a decade. It&apos;s still doing awfully well for that.That being said, and also adding that the rumors of Javascoboldisation were vastly exaggerated, the state of affairs were worrying people. At the core of this delay was a conflict between Sun and Apache regarding licensing terms. The war was about licensing terms, but the battle was fought over Java releases. What I just said is indented to be a truthful, but very simplified version of what happened. There are a lot more details to this, and it’s a source of much controversy. This was the state of affairs when Oracle came in and cut the metaphorical knot.Again, this is a topic of much controversy, but Oracle managed to rally enough support to break the blockade. Java 7 is happening. But it upset some people enough so that they left the Executive committee. Doug Lea, Tim Peierls and Apache all left due to this.
  • So for the JCP, Java 7 broke the staus quo. It also heralded the start of a JCP re-invigoration process. Patrick Curran, Oracles JCP ”chief”, is working on some changes to make the JCP more transparent and easier to join and participate in. The current ”contract” that one has to sign to actively participate in the JCP is quite intimidating, and it has to be since it covers all the rules and terms from a regular interested developer up to a specification lead. Patrick hopes to get a small and non-scary ”contract” for a regular developer, and only add more pages and terms as they take on a greater responsibility. He also plans to change the rules to that full transparency becomes mandatory, not just reccomended as it is today.A lot of people were worried that Oracle would cancel, or stop investing in OpenJDK. In fact the oposite happened. Oracle will keep investing in the OpenJDK, and move the vast majoroty of all new code written by Oracle engineers into OpenJDK. Perhaps even bigger news is that first IBM and later Apple joined the OpenJDK project.
  • Strangely enough, ”JSR 292” is the name that most people know this by, second people will use ”invokedynamic” and at third place, the most human readable name ”The Davinci machine”The name ”Davinci machine” is one of two puns in this release. The second on is ”Coin”, but more on that later. JSR 292 is ” a multi-language renaissancefor the Java™ Virtual Machine architecture”, with Da Vinci beeing the archetypical renaissance man... Pun or not, I love helicopter dukeInvokedynamic is the first new java bytecode since java 1.0. Technially, I guess you could call the new methods using the java.lang.invoke package, but in reality I would bet none of you will. With no details what so ever – Invokedynamic is created to drastically reduce the overhead for dynamic languages running on the JVM. The jury is still out on exactly how much this will improve things for different languages, but rumor has it that Jruby are seeing really good results.
  • I said that ”Coin ” was the second pun in Java 7. The project was intented to cover ”small language changes”. ”Small language changes” became ”Small changes” became ”Small change” became ”Coin”. We’re better coders than we are comedians.Coin was split between Java 7 and Java 8.
  • So that was a lot of details on Java 7, what about 8?It’s not set in stone yet, but the big guns are modularization, also known as project jigsaw, and project lambda.
  • One of our internally big deals is the JVM convergence project. We havent decided on what the convereged JVM will be called yet, but there are guerilla campaigns ongoing...We will ”converge” by moving and re-implementing the missing goodies from JRockit into the Hotspot codebase. Most of those changes will go into the OpenJDK, but some will remain premium features. E.g, JRockit Mission Control. Once all of the features are moved, we will prounce the convergence complete. Well, in all honesty, we will probably make a bigger deal than that from it, but it sounds less dramatic when you know how its done.Hopefully, the convergence will be completed by JDK 8 GA, but I’m making no promises today.
  • Java 7 and 8, what does it mean for you

    1. 1. Java 7 and 8, what does it mean for you?<br />
    2. 2. What does Java 7 (and 8) mean to you?<br />IT professional<br />(non java) Developer<br />Java Developer<br />Oracle<br />
    3. 3. IT professional<br />
    4. 4. http://commons.wikimedia.org/wiki/File:Alexander_cuts_the_Gordian_Knot.jpg<br />
    5. 5.
    6. 6. Developer<br />
    7. 7. JSR 292<br />Invokedynamic<br />
    8. 8. Java Developer<br />
    9. 9. Project Coin – JSR 334<br />http://www.flickr.com/photos/chefranden/908539119/<br />
    10. 10. Coin (1) Strings in switch<br />String s = ... <br />switch(s) { <br />case "foo": <br />processFoo(s); <br /> break; <br />}<br />
    11. 11. Coin (2) Changes to literals<br />1234_5678 <br />1_2_3_4__5_6_7_8L <br />0b0001_0010_0100_1000 <br />3.141_592_653_589_793d <br />0x1.ffff_ffff_ffff_fP1_023 // Double.MAX_VALUE <br />
    12. 12. Coin (3) Multi Catch, precise rethrow<br />try { <br /> doWork(file); <br />} catch (IOException ex) { <br /> logger.log(ex); <br />} <br />catch (SQLException ex) { <br /> logger.log(ex); <br />}<br />try { <br /> doWork(file); <br />} catch (IOException|SQLException ex) { logger.log(ex); <br />} <br />
    13. 13. Coin (4) Diamond operator<br />Map<String,List<String>> m = new HashMap<String,List<String>>();<br />Map<String,List<String>> m = new HashMap<>();<br />
    14. 14. Coin (5) Try with resources<br />try (AutoclosableResource) {<br />// Do stuff<br />}<br />// closed here<br />
    15. 15. Concurrency and Collections Updates - JSR 166yLightweight Fork/Join Framework<br />10,000000<br />Transistors (1,000s)<br />1,000,000<br />100,000<br />10,000<br />1,000<br />Clock (MHz)<br />100<br />10<br />1<br />1970<br />1975<br />1980<br />1985<br />1990<br />1995<br />2000<br />2005<br />2010<br />
    16. 16. Network and File System – JSR 203NIO.2 <br />NIO.2<br />NIO.2 Filesystem Provider for ZIP and JAR Archives<br />SCTP (Stream Control Transmission Protocol)<br />SDP (Sockets Direct Protocol)<br />Redirection for Subprocess<br />Vista IPv6 stack<br />(new) Enhanced JMX agent and MBeans<br />
    17. 17. Security<br />Native ECC (Elliptic Curve Cryptography)<br />TLS (Transport Layer Security)1.2<br />Stronger pseudorandom functions, additional (stronger) hash/signature algorithms, enhanced key exchange<br />ASLR (Address space layout randomization)<br />DEP (Data Execution Prevention) – Windows Only<br />
    18. 18. Internationalization<br />Unicode 6.0<br />IETF BCP47 and UTR35<br />One language many character codes (Kanji, Hiragana, Katakana, Romaji)<br />Three-letter base language codes; three-digit region codes<br />Separate user locale and user interface locale<br />Currency data enhancements<br />http://en.wikipedia.org/wiki/File:Astrological_Glyphs.svg<br />
    19. 19. Other EnhancementsClient & Graphics<br />Added Nimbus L&F to the standard<br />Much better –modern- look than what was previously available<br />Platform APIs for Java 6u10 Graphics Features<br />Shaped and translucent windows<br />JXLayer core included in the standard<br />Formerly SwingLabs component<br />Allows easier layering inside of a component<br />Optimized Java2D Rendering Pipeline for X-Windows<br />Allows hardware accelerated remote X<br />
    20. 20. Other Enhancements<br />Better font configuration on Unix<br />Now uses standard Unix mechanism to find fonts.<br />JAXP 1.4.4, JAXWS 2.2 and JAXB 2.2<br />JDBC 4.1, Rowset 1.1<br />Upgrade class-loader architecture<br />Modifications to the ClassLoader API and implementation to avoid deadlocks in non-hierarchical class-loader topologies<br />Close URLClassloaders<br />Allows applications to proactively clean up classloaders, freeing up native resources and unlocking JAR files<br />Javadoc support for stylesheets<br />
    21. 21. JDK 7 Platform Support<br />Windows x86<br />Server 2008, Server 2008 R2, 7 & 8 (when it GAs)<br />Windows Vista, XP<br />Linux x86<br />Oracle Linux 5.5+, 6.x<br />Red Hat Enterprise Linux 5.5+, 6.x<br />SuSE Linux Enterprise Server 10.x, 11.x<br />Ubuntu Linux 10.04 LTS, 11.04<br />Solaris x86/SPARC<br />Solaris 10.9+, 11.x<br />Apple OSX x86<br />will be supported post-GA, detailed plan TBD<br />Note: JDK 7 should run on pretty much any Windows/Linux/Solaris. These configurations are the ones primarily tested by Oracle, and for which we provide commercial support.<br />
    22. 22. JDK 7 Project Plan<br />From 1/21 OpenJDK Schedule<br />2010/12/16 Feature Complete<br />2011/04/12 Rampdown start: P1-P3 bugs only<br />2011/04/28 API/interface changes: Showstoppers only <br />2011/05/11 All targeted bugs addressed First release candidate built <br />2011/05/18 Bug fixes: Showstoppers only <br />2011/06/08 Final test cycle starts<br />2011/07/28 General Availability<br />
    23. 23. Features from “Plan B”<br />Other Things On Oracle’s Wish List*<br /><ul><li>Modularization
    24. 24. Language and VM Support
    25. 25. Platform Modularization
    26. 26. Project Lambda
    27. 27. Lambda Expressions
    28. 28. Default Methods
    29. 29. Bulk Data Operations
    30. 30. Annotations on Java types (JSR 308)
    31. 31. More Small Language Enhancements
    32. 32. Project Coin part 2
    33. 33. Serialization fixes
    34. 34. Multicast improvements
    35. 35. Java APIs for accessing location, compass and other ”environmental” data (partially exists in ME)
    36. 36. Improved language interop
    37. 37. Faster startup/warmup
    38. 38. Dependency injection (JSR 330)
    39. 39. Include select enhancements from Google Guava
    40. 40. Small Swing enhancements
    41. 41. More security/crypto features, improved support for x.509-style certificates etc
    42. 42. Internationalization: non-Gregorian calendars, more configurable sorting
    43. 43. Date and Time (JSR 310)
    44. 44. Process control API</li></ul>JDK 8 – Fall/Winter 2012<br />* Many of these will undoubtedly NOT make JDK 8.<br />
    45. 45. Oracle<br />
    46. 46. Oracle’s Java StrategyIn Order of Priority<br />A Vibrant Java Ecosystem<br />Generate Revenue.<br />Lower Costs<br />
    47. 47. JDK 7 GA<br />JDK 7 Update X<br />JDK 7 Update Y<br />JDK 8 GA<br /><ul><li>Java SE 7 Support
    48. 48. Rebranding
    49. 49. No PermGen (stretch goal)
    50. 50. Improved JMX Agent
    51. 51. Command line servicability tool (jrcmd)
    52. 52. JRockit Mission Control Console support
    53. 53. Performance
    54. 54. Initial JRockit Flight Recorder Support
    55. 55. More performance
    56. 56. Improved command line servicability (jrcmd)
    57. 57. G1 complete as CMS replacement
    58. 58. Non-contiguous heaps
    59. 59. Complete JRockit Flight Recorder Support
    60. 60. JRockit Virtual Edition Support
    61. 61. Soft Real Time GC
    62. 62. Java SE 8 Support
    63. 63. All performance features from JRockit ported
    64. 64. I/O Performance
    65. 65. JIT Optimizations
    66. 66. All servicability features from JRockit ported
    67. 67. Compiler controls
    68. 68. Verbose logging
    69. 69. JRockit Mission Control Memleak Tool Support</li></ul>JVM ConvergenceProject “HotRockit”<br /> = Premium Feature<br />

    ×