APIs to support a Transport Layer Security (TLS) feature called Application Layer Protocol Negotiation (ALPN) [1] were introduced in Java SE 9 under JEP 244 (JDK-8051498). Customers have requested ALPN in Java SE 8 to support features like HTTP/2. A couple of diverging approaches (JavaEE/Jetty and Azul's OpenJSSE) demonstrate that a standardized ALPN API is needed to prevent platform API fragmentation.
To preserve compatibility with newer platform releases, the Java SE 9 ALPN APIs will be backported to Java SE 8.
There are five changesets that should be brought back to provide this feature: 2 API and 3 minor bug fixes:
APIs
JDK-8144093: JEP 244/8051498 - TLS Application-Layer Protocol Negotiation Extension
JDK-8170282: Enable ALPN parameters to be supplied during the TLS handshake
Bug Fixes
JDK-8145849: ALPN: getHandshakeApplicationProtocol() always return null
JDK-8158978: ALPN not working when values are set directly on a SSLServerSocket
JDK-8171443: (spec) An ALPN callback function may also ignore ALPN
[1] https://tools.ietf.org/html/rfc7301