Thursday, October 6, 2016

JDK 9

The goal of this Project is to produce an open-source reference implementation of the Java SE 9 Platform, to be defined by a forthcoming JSR in the Java Community Process.

The schedule and features of this release are proposed and tracked via the JEP Process, as amended by the JEP 2.0 proposal.

Schedule

2016/05/26 Feature Complete
2016/08/11 All Tests Run
2016/09/01 Rampdown Start
2016/10/20 Zero Bug Bounce
2016/12/01 Rampdown Phase 2
2017/01/26 Final Release Candidate
2017/03/23 General Availability

The milestone definitions are the same as those for JDK 8.

Status

We are past the Feature Complete milestone, but that does not mean that the feature set is frozen. If you own a JEP or a small enhancement that is not yet complete then you can request an extension via the FC extension-request process.

Features

JEPs targeted to JDK 9, so far

102: Process API Updates
110: HTTP 2 Client
143: Improve Contended Locking
158: Unified JVM Logging
165: Compiler Control
193: Variable Handles
197: Segmented Code Cache
199: Smart Java Compilation, Phase Two
200: The Modular JDK
201: Modular Source Code
211: Elide Deprecation Warnings on Import Statements
212: Resolve Lint and Doclint Warnings
213: Milling Project Coin
214: Remove GC Combinations Deprecated in JDK 8
215: Tiered Attribution for javac
216: Process Import Statements Correctly
217: Annotations Pipeline 2.0
219: Datagram Transport Layer Security (DTLS)
220: Modular Run-Time Images
221: Simplified Doclet API
222: jshell: The Java Shell (Read-Eval-Print Loop)
223: New Version-String Scheme
224: HTML5 Javadoc
225: Javadoc Search
226: UTF-8 Property Files
227: Unicode 7.0
228: Add More Diagnostic Commands
229: Create PKCS12 Keystores by Default
231: Remove Launch-Time JRE Version Selection
232: Improve Secure Application Performance
233: Generate Run-Time Compiler Tests Automatically
235: Test Class-File Attributes Generated by javac
236: Parser API for Nashorn
237: Linux/AArch64 Port
238: Multi-Release JAR Files
240: Remove the JVM TI hprof Agent
241: Remove the jhat Tool
243: Java-Level JVM Compiler Interface
244: TLS Application-Layer Protocol Negotiation Extension
245: Validate JVM Command-Line Flag Arguments
246: Leverage CPU Instructions for GHASH and RSA
247: Compile for Older Platform Versions
248: Make G1 the Default Garbage Collector
249: OCSP Stapling for TLS
250: Store Interned Strings in CDS Archives
251: Multi-Resolution Images
252: Use CLDR Locale Data by Default
253: Prepare JavaFX UI Controls & CSS APIs for Modularization
254: Compact Strings
255: Merge Selected Xerces 2.11.0 Updates into JAXP
256: BeanInfo Annotations
257: Update JavaFX/Media to Newer Version of GStreamer
258: HarfBuzz Font-Layout Engine
259: Stack-Walking API
260: Encapsulate Most Internal APIs
261: Module System
262: TIFF Image I/O
263: HiDPI Graphics on Windows and Linux
264: Platform Logging API and Service
265: Marlin Graphics Renderer
266: More Concurrency Updates
267: Unicode 8.0
268: XML Catalogs
269: Convenience Factory Methods for Collections
270: Reserved Stack Areas for Critical Sections
271: Unified GC Logging
272: Platform-Specific Desktop Features
273: DRBG-Based SecureRandom Implementations
274: Enhanced Method Handles
275: Modular Java Application Packaging
276: Dynamic Linking of Language-Defined Object Models
277: Enhanced Deprecation
278: Additional Tests for Humongous Objects in G1
279: Improve Test-Failure Troubleshooting
280: Indify String Concatenation
281: HotSpot C++ Unit-Test Framework
282: jlink: The Java Linker
283: Enable GTK 3 on Linux
284: New HotSpot Build System
285: Spin-Wait Hints
287: SHA-3 Hash Algorithms
288: Disable SHA-1 Certificates
289: Deprecate the Applet API
290: Filter Incoming Serialization Data
292: Implement Selected ECMAScript 6 Features in Nashorn
Last update: 2016/8/4 19:47 UTC

In a recent communication, Mark Reinhold, chief architect of the Java Platform Group at Oracle, suggested delaying the general availability of Java 9 by six months, to provide more time to finish Project Jigsaw. After some deliberation the delay was accepted, setting the general availability of Java 9 to March 2017, exactly three years after the release of Java 8.

Mark Reinhold has previously talked about the conflict of features vs. schedule, manifesting a preference towards keeping a relatively fixed schedule even at the expense of deferring features to a later release. He has, however, argued in favour of exceptions when the feature in question is considered the flagship feature of the newer version. For Java 9 the flagship feature is Project Jigsaw, so given the fact that it would slip the initial schedule, and considering it has seen reasonable progress in recent months, the community accepted the delay.

This decision aligned with a similar one that was taken for Java 8. When it became apparent that Java 8's flaghip feature Project Lambda wouldn't be ready on schedule, a delay was also proposed and accepted. 

Project Jigsaw was originally scheduled for release in Java 8, but in 2013 Reinhold announced it would be deferred to Java 9 rather than hold up that release, and announced a two year cadence for future Java releases and accordingly a March 2016 release of Java 9. Then last May Reinhold set the official schedule GA date as September 2016, also a six month delay. If Reinhold's latest schedule holds, Java 9's release will be a full three years after the prior release. 

Java 10 has not been scheduled but the flagship feature is expected to be Project Valhalla, who's goal is to provide advanced Java VM and language features such as value types, generic specialization, and enhanced volatiles.

September 18–22, 2016 | San Francisco JavaOne KeynotesOpenWorld Keynotes Java Community Keynote Stephen Chin, Java Community Manager, Oracle Show all speakers Watch full-length keynote Accelerating Innovation with Java: The Future Is Today John Duimovich, Java CTO and IBM Distinguished Engineer, IBM Watch full-length keynote Engineering the Red Planet Dr. Anita Sengupta, Research Professor, University of Southern California Watch full-length keynote The Java Keynote at JavaOne 2016 Georges Saab, Vice President of Development, Oracle Show all speakers Watch full-length keynote Enabling a Smart and Connected World with Java Michael Greene, Vice President and General Manager of System Technologies and Optimization in the Software and Services Group, Intel Watch full-length keynote https://www.oracle.com/javaone/on-demand/index.html?bcid=5147916031001 https://www.oracle.com/javaone/on-demand/index.html?bcid=5138679338001 https://www.oracle.com/javaone/on-demand/index.html?bcid=5131273315001 https://www.oracle.com/javaone/on-demand/index.html?bcid=5131093508001 https://www.oracle.com/javaone/on-demand/index.html?bcid=5131206266001 https://www.oracle.com/javaone/on-demand/index.html?bcid=5130996435001

Sunday, March 30, 2014

Java 8 Launch

Continue the Conversation

Use #Java8 or go to the Java 8 Forum

JavaOne 2014

Need more information on Java 8? Don’t miss JavaOne 2014 San Francisco. Register Now.

Java SE 8

Java SE 8—Language and Library Features

Java SE 8—Language and Library Features

Brian Goetz

A New Date and Time API—JSR-310

A New Date and Time API—JSR-310

Stephen Colebourne

JDK Hacker on Core Libraries

JDK Hacker on Core Libraries

Paul Sandoz

Introduction to Lambda Expressions

Introduction to Lambda Expressions

Stuart Marks

Enhanced Metadata—Annotations and Access to Parameter Names

Enhanced Metadata—Annotations and Access to Parameter Names

Alex Buckley and Michael Ernst

Performance Improvements in JDK 8

Performance Improvements in JDK 8

Staffan Friberg

What's New for JavaFX in Java SE 8

What's New for JavaFX in Java SE 8

Jim Weaver

New Features in Java SE 8: A Developer's Guide

New Features in Java SE 8: A Developer's Guide

Simon Ritter

NetBeans IDE 8: Toolbox for Java SE 8

NetBeans IDE 8: Toolbox for Java SE 8

Geertjan Wielenga

Nashorn: JavaScript on the JVM

Nashorn: JavaScript on the JVM

Jim Laskey

Java 8 Security Highlights

Java 8 Security Highlights

Milton Smith

Introducing Java Mission Control 5.3.0

Introducing Java Mission Control 5.3.0

Marcus Hirt


Java SE Embedded 8

Java 8 on the Raspberry Pi

Java 8 on the Raspberry Pi

Stephen Chin

Getting Started with Java SE Embedded on Lego Mindstorms EV3

Getting Started with Java SE Embedded on Lego Mindstorms EV3

Hinkmond Wong

Migrating from CDC 1.1.x to Java SE Embedded 8

Migrating from CDC 1.1.x to Java SE Embedded 8

Hinkmond Wong

Developing Embedded Applications with Java SE 8 Compact Profiles

Developing Embedded Applications with Java SE 8 Compact Profiles

Bob Vandette

Getting Started with JavaFX Embedded on a Raspberry Pi

Getting Started with JavaFX Embedded on a Raspberry Pi

Lisa Selle

Reducing Dynamic Memory in Java SE Embedded Application

Reducing Dynamic Memory in Java SE Embedded Application

Darryl Mocek

Choosing a Compact Profile for your Deployment

Choosing a Compact Profile for your Deployment

Jim Connors

Real-time Analytics: SE Embedded 8 and OEP on Freescale i.MX6

Real-time Analytics: SE Embedded 8 and OEP on Freescale i.MX6

Jeff Kudrick


Java ME 8

Be an Embedded Developer in Minutes Using Java ME Embedded 8

Be an Embedded Developer in Minutes Using Java ME Embedded 8

Angela Caicedo

JSR 360—CLDC 8: Benefits of an Optimized Implementation

JSR 360—CLDC 8: Benefits of an Optimized Implementation

Oleg Pliss

JSR 360—CLDC 8: Java Platform for IoT

JSR 360—CLDC 8: Java Platform for IoT

Michael Lagally

JSR 360—CLDC 8: Generic Networking APIs

JSR 360—CLDC 8: Generic Networking APIs

Roger Riggs

Unified Development Experience for Java ME 8 and Java SE Embedded 8

Unified Development Experience for Java ME 8 and Java SE Embedded 8

Shiva Govindarajapuram

Accessing HW Devices Using Java ME 8 Device I/O API

Accessing HW Devices Using Java ME 8 Device I/O API

Thierry Violleau and Jens Pätzold

Java ME 8: Top 10 Features

Java ME 8: Top 10 Features

Terrence Barr

Java ME 8: Tackling the Challenges of Embedded Software Design

Java ME 8: Tackling the Challenges of Embedded Software Design

Terrence Barr

MEEP—A New Java Profile for the Embedded World

MEEP—A New Java Profile for the Embedded World

Volker Bauche and Andrey Petushkov

Developing Modular, Service-enabled Applications: Java ME 8

Developing Modular, Service-enabled Applications: Java ME 8

Leonardo Lima


Internet of Things and The Enterprise

Here comes Java 8. Learn how your applications will benefit.

Here comes Java 8. Learn how your applications will benefit.

Georges Saab, VP Java Development, Oracle interviewed by Tori Wieldt, OTN and Java Community Manager, Oracle

Here comes Java 8. Learn how your edge devices will benefit.

Here comes Java 8. Learn how your edge devices will benefit.

Robert Clark, Senior Director Java Development, Oracle interviewed by Urszula Grassl, IoT Product Management, Oracle

Turning devices into value-generating app platform with Java

Turning devices into value-generating app platform with Java

Axel Hansmann, VP Strategy and Marketig Communication M2M , Gemalto interviewed by Robert Clark, Senior Director Java Development, Oracle

Building Blocks for the Internet of Things

Building Blocks for the Internet of Things

Nandini Ramani, VP Java Development, Oracle interviewed by Nicolas Lorain, IoT Product Management, Oracle

Distributed Intelligence in IoT Deployments

Distributed Intelligence in IoT Deployments

Demed L'Her, VP Product Management , Oracle interviewed by Jai Suri, Director Product Management, Oracle

For a person without a comp-sci background, what is a lambda in the world of Computer Science?
share|edit
add comment

16 Answers

up vote301down voteaccepted
Lambda comes from the Lambda Calculus and refers to anonymous functions in programming.
Why is this cool? It allows you to write quick throw away functions without naming them. It also provides a nice way to write closures. With that power you can do things like this.
Python
def adder(x):
    return lambda y: x + y
add5 = adder(5)
add5(1)
6
JavaScript
var adder = function (x) {
    return function (y) {
        return x + y;
    };
};
add5 = adder(5);
add5(1) == 6
Scheme
(define adder
    (lambda (x)
        (lambda (y)
           (+ x y))))
(define add5
    (adder 5))
(add5 1)
6
Func> adder = 
    (int x) => (int y) => x + y; // `int` declarations optional
Func add5 = adder(5);
var add6 = adder(6); // Using implicit typing
Debug.Assert(add5(1) == 6);
Debug.Assert(add6(-1) == 5);

// Closure example
int yEnclosed = 1;
Func addWithClosure = 
    (x) => x + yEnclosed;
Debug.Assert(addWithClosure(2) == 3);
As you can see from the snippet of Python and JavaScript, the function adder takes in an argument x, and returns an anonymous function, or lambda, that takes another argument y. That anonymous function allows you to create functions from functions. This is a simple example, but it should convey the power lambdas and closures have.
share|edit
22 
This is by by far the best yet simplest description of lambda I have ever seen. Yet you managed to not lose any of the key ideas bravo. +1 –  faceless1_14 Aug 10 '09 at 13:36
   
Agreed. I have seen the light! Thanks. =) –  Chris Cooper Apr 14 '10 at 23:53
   
+1 Best explanation I've seen. Thanks –  Rich Jul 20 '10 at 11:05
   
awesome, thanks much –  Orbit Oct 29 '10 at 13:38
3 
What a superb explanation!! I have the power now. –  trusktr Feb 15 '11 at 3:50
show 1 more comment