SlideShare a Scribd company logo
Java EE 8
Why We Need to Take Action to
Move Forward
Kito D. Mann
Virtua, Inc.
Kito D. Mann
@kito99
• Principal Consultant at Virtua (http://virtua.tech)
• Training, consulting, architecture, mentoring
• PrimeFaces, JSF, Java EE, Polymer, Web
Components, Liferay, etc.
• Official US PrimeFaces partner
• Author, JavaServer Faces in Action
• Founder, JSF Central (http://www.jsfcentral.com)
Kito D. Mann
@kito99
• Co-host, Enterprise Java Newscast
• http://enterprisejavanews.com
• Internationally recognized speaker
• JavaOne, JavaZone, Devoxx, Devnexus,
NFJS, etc.
• JCP Member
• JSF, MVC, JSF Portlet Bridge, Portlets
Agenda
• Overview of the specifications that are part of
Java EE 8, provide current status
• Examples of Proposed Enhancements and New
Features
• What the current status of Java EE 8 progress is
and what you can do to help
The Importance of Java
EE to the Ecosystem
https://javaee-guardians.io/java-ee-adoption-surveys
Java EE Ecosystem
Microservices and Java
EE
http://microprofile.io
Java EE
Past, Present, Future
J2EE 1.2
Servlet,
JSP, EJB,
JMS, RMI
J2EE 1.3
CMP,
JCA
J2EE 1.4
Web
Services,
Mgmt,
Deplymnt
Java EE 5
Ease of
Use,
EJB 3,
JPA, JSF,
JAXB,
JAX-WS
Java EE 6
Pruning,
Ease of Use,
JAX-RS,
CDI,
Bean-
Validation
Servlet 3,
EJB 3.1 Lite
Java EE 7
JMS 2, Batch,
TX,
Concurrency,
Web-Sockets,
JSON
Java EE 8
SERVLET 4,
JSON-B,
JSON-P 1.1,
JSF 2.3, CDI
2.0, JAX-RS
2.1,
SECURITY,
MVC,
MANAGEMENT
Java EE Past, Present, &
Future
J2EE 1.3
CMP,
JCA
J2EE 1.4
Web
Services,
Mgmt,
Deplymnt
Java EE 5
Ease of
Use,
EJB 3,
JPA, JSF,
JAXB,
JAX-WS
Java EE 6
Pruning,
Ease of
Use,
JAX-RS,
CDI,
Bean-
Validation
Servlet 3,
EJB 3.1
Lite
Java EE 7
JMS 2,
Batch, TX,
Concurr,
Web-
Sockets,
JSON
JAX-RS 2
JAX-RPC, CMP/
BMP, JSR 88
J2EE 1.2
Servlet,
JSP, EJB,
JMS, RMI
Java EE Past, Present, &
Future
Java EE 5
Ease of
Use,
EJB 3,
JPA, JSF,
JAXB,
JAX-WS
Java EE 6
Pruning,
Ease of
Use,
JAX-RS,
CDI,
Bean-
Validation
Web Profile
Servlet 3,
EJB 3.1
Lite
Java EE 7
JMS 2,
Batch, TX,
Concurr,
Web-
Sockets,
JSON
Web Profile
JAX-RS 2
JAX-RPC, CMP/
BMP, JSR 88
J2EE 1.3
CMP,
JCA
J2EE 1.4
Web
Services,
Mgmt,
Deplymnt
J2EE 1.2
Servlet,
JSP, EJB,
JMS, RMI
Java EE Past, Present, &
Future
J2EE 1.3
CMP,
JCA
J2EE 1.4
Web
Services,
Mgmt,
Deplymnt
Java EE 5
Ease of
Use,
EJB 3,
JPA, JSF,
JAXB,
JAX-WS
Java EE 6
Pruning,
Ease of
Use,
JAX-RS,
CDI,
Bean-
Validation
Web Profile
Servlet 3,
EJB 3.1
Lite
Java EE 7
JMS 2,
Batch, TX,
Concurr,
Web-
Sockets,
JSON
JAX-RS 2
JAX-RPC, CMP/
BMP, JSR 88
J2EE 1.2
Servlet,
JSP, EJB,
JMS, RMI
Java EE Past, Present, &
Future
J2EE 1.3
CMP,
JCA
J2EE 1.4
Web
Services,
Mgmt,
Deplymnt
Java EE 5
Ease of
Use,
EJB 3,
JPA, JSF,
JAXB,
JAX-WS
Java EE 6
Pruning,
Ease of
Use,
JAX-RS,
CDI,
Bean-
Validation
Web Profile
Servlet 3,
EJB 3.1
Lite
Java EE 7
JMS 2,
Batch, TX,
Concurr,
Web-
Sockets,
JSON
Web Profile
JAX-RS 2
JAX-RPC, CMP/
BMP, JSR 88
J2EE 1.2
Servlet,
JSP, EJB,
JMS, RMI
Java EE 8 Community Survey
https://java.net/downloads/javaee-spec/JavaEE8_Community_Survey_Results.pdf
https://blogs.oracle.com/ldemichiel/entry/results_from_the_java_ee
Java EE 8: Original
Plan
• Continued Enhancements for Web Standards
Alignment
• HTTP2, JSON Binding, JSON-P, MVC
• Cloud enhancements
• Security, RESTful Management API
• CDI Programming Model
• Ease of use, EJB via CDI
• Smaller, but Important Features
• Caching, Better Messaging
• Alignment with Java SE 8
Java EE 8
Original Overview
• JMS 2.1
• JAX-RS 2.1
• JSF 2.3
• CDI 2.0
• JSON-P 1.1
• Servlet 4.0
• JCache 1.0
• JSON-B 1.0
• MVC 1.0
• Java EE Security1.0
• Java EE Management 2.0
Java EE 8: New Proposal
Expected release: Q4 2017
• JMS 2.1
• JAX-RS 2.1
• JSF 2.3
• CDI 2.0
• JSON-P 1.1
• Servlet 4.0
• JCache 1.0
• JSON-B 1.0
• MVC 1.0
• Java EE Security 1.0
• Java EE Management 2.0
●Health Checking
●Configuration
Java EE 9: New Proposal
Expected release: Q4 2018
• Increased focus on microservices and cloud
• Proposed new features:
• Multi-tenancy
• Circuit-breaker
• Reactive programming support
Updated
Specifications
Servlet 4.0
• Principal goal to support HTTP 2
• Modernization of internet protocol
• Boost web performance
• Early Draft has been published
• Join mailing list or follow expert group (JSR 369)
• Keep tabs on Ed Burns’ presentations, although
not anything new since JavaOne 2015
Servlet 4.0
• HTTP 2 Support -> Major Update
• Why do we need HTTP 2?
• Problems with HTTP 1.1
• Head-of-Line Blocking
• HTTP Pipelining, File Concatenation, &
Image Sprites
Servlet 4.0
HTTP 2
• Request/Response Multiplexing
• Binary Framing
• Socket Optimization
• Upgrade from HTTP 1.1
Servlet 4.0
Exposing HTTP 2
• Stream Prioritization
• New class Priority
• Enhance HttpServletRequest and
HttpServletResponse to accommodate
• Server Push
• Not replacing WebSockets
Servlet 4.0
Newer HttpClient API (Java SE
9)
• Plans to provide easy to use API
• Support both HTTP/1.1 and 2
• Builds on existing Java API Classes
JMS 2.1
(Proposed for Removal)
• JSR 368 - In early stages
• No builds available for testing, as yet.
• Planning: https://java.net/projects/jms-
spec/pages/JMS21Planning
JMS 2.1
• JMS 2.0 was a major overhaul
• Continuation of API Modernization
• Declarative Message Listeners
• Alternative to MDB
• More Powerful Features
• Available to all Beans
JMS 2.1
• JMS Provider Portability Improvements
• Dead Message Queues
• Redelivery Behavior on JMS MDB Rollback
(delays, max # consecutive)
JMS 2.1
Asynchronous Batches
• In JMS 2.0, messages delivered asynchronously by
calling:
javax.jms.MessageListener onMessage(Message
message)
• Define new:
javax.jms.BatchMessageListener
onMessages(Message[] messages)
JMS 2.1
Declarative JMS Listeners
@ApplicationScoped
@MaxConcurrency(10)
public class HandlingEventRegistrationAttemptConsumer {
@JmsListener(
destinationLookup="jms/HandlingEventRegistrationAttempt
Queue",
selector="source = 'mobile'",
batchSize=10, retry=5, retryDelay=7000,
orderBy=TIMESTAMP)
@Transactional
public void onEventRegistrationAttempt(
HandlingEventRegistrationAttempt... attempts) {
...
}
}
JAX-RS 2.1
• JSR 370 - In Early Stages
• No builds available for testing
• Follow JSR-370 EG and Mailing Lists
JAX-RS 2.1
• Hypermedia API
• Reactive API
• Security API
• Support for SSE (Server Sent Events)
• Improved CDI Integration
• Support for Non-Blocking IO in Providers
JAX-RS 2.1
• Conditional JAXB on Runtimes
• Integration with JSON-B
• Support for CDI in Java SE
JSF 2.3
• JSR 372 - in active progress
• Milestones available for testing
• Read, Test, Supply Feedback
JSF 2.3
• Enhanced CDI Integration
• Lifecycle Enhancements
• PostRenderViewEvent
• EL API Enhancements
• Configuration Enhancements
• AJAX Enhancements
JSF 2.3
Enhanced CDI Integration
• Injection of Resources
@Inject FacesContext facesContext;
@ApplicationMap
@Inject
Map applicationMap;
JSF 2.3
Enhanced CDI Integration
• Wider Support of Injection into JSF Artifacts
• javax.faces.convert.Converter
• javax.faces.validator.Validator
• javax.faces.component.behavior.Behavior
• Upgraded to CDI qualifiers
CDI 2.0
• JSR 365 - in active progress
• Test Releases of Reference Implementation
(Weld 3.0.0 Alphas)
• http://weld.cdi-spec.org/news/
• Follow the Expert Group
CDI 2.0
• Java SE Bootstrap
• XML Configuration
• Asynchronous Events@S@tar
• @Startup for CDI Beans
• Portable Extension SPI Simplification
• Small features and enhancements
CDI 2.0
Event System
Enhancements
• Asynchronous Events
• Call to event.fireAsync() returns immediately
@Inject
private ExperimentalEvent<Configuration> event;
…
event.fireAsync(new Configuration());
CDI 2.0
@Schedule Outside EJB
@ApplicationScoped
public class MyScheduledBean {
...
@Schedule(...)
public void myScheduledTask() { ... }
}
@ApplicationScoped
@Stereotype
@Retention(RUNTIME)
@Target(TYPE)
@Schedule(...)
public @interface MonthlyTask {}
JSON-P 1.1
• JSR 374 - In Early Draft Review
• More Information:
• https://json-processing-spec.java.net/
• Sources: https://java.net/projects/jsonp
JSON-P 1.1
• Updates to new API in Java EE 7
• New JSON Standards
• JSON-Pointer and JSON-Patch
• Editing Operations on JSON objects and arrays
• Helper Classes and Enhanced Java SE 8
support
JSON-P 1.1
Java SE 8 Support
• Stream Support
JsonArray persons;
persons.getValuesAs(JsonObject.class).stream()
.filter(x->x.getString(“age”) >= 65)
.forEach(System.out.println(x.getString(“name”)));
JSON-P 1.1
JSON-Pointer
JSON-P 1.1
JSON-Patch
public void shouldBuildJsonPatchExpressionUsingJsonPatchBuilder() {
JsonPatchBuilder patchBuilder = new JsonPatchBuilder();
JsonObject result = patchBuilder.add("/email”,
"john@example.com").replace("/age", 30)
.remove("/phoneNumber”)
.test("/firstName", "John”)
.copy("/address/lastName", "/lastName”)
.apply(buildPerson());
}
Java EE Management API
2.0
(Proposed for Removal)
• Currently working on Early Draft
• Join mailing list of JSR 373
Java EE Management API
2.0
• REST Based Interface to Supersede EJB
Management APIs of JSR 77
• Monitoring and deployment as well
• SSE for Event Support (WebSockets also under
consideration)
New Specifications
MVC
(Proposed for Removal)
• Model - View - Controller
• JSR 371
• Active Progress…download milestones
• Ozark: https://ozark.java.net/
MVC
• Action-Based Web Framework for Java EE
• Follows suit of Spring MVC or Apache Struts
• Does Not Replace JSF
• Model: CDI, Bean Validation, JPA
• View: Facelets, JSP (Extensible)
• Controller: Layered on top of JAX-RS
MVC
Controller Example
@Controller
@Path("/customers")
@View("my-view.jsp")
public class CustomerController {
@Inject
private Models models;
@GET
public String getItems(){
...
return “customers.jsp”;
}
MVC
View Example
<c:forEach var="customer" items="${customers}">
<tr>
<td class="text-left">${customer.name}</td>
<td class="text-center">
<form
action="${pageContext.request.contextPath}/r/customers/edit"
method="POST">
<input type="hidden" name="id" value="${item.id}"/>
<button type="submit">
Edit
</button>
</form>
</td>
</tr>
</c:forEach>
JSON-B
• Java API for JSON Binding
• JSR 367 - Public Review
• Read the spec, start testing:
https://java.net/projects/jsonb-spec/pages/Home
JSON-B
• Standardize means of converting JSON to Java
objects and vice versa
• Default mapping algorithm for converting Java
classes
• Draw from best of breed ideas in existing JSON
binding solutions
• Provide JAX-RS a standard way to support
“application/json” for POJOs
• JAX-RS currently supports JSON-P
JSON-B
Mapping
@Entity public class Person {
@Id String name;
String gender;
@ElementCollection
Map<String, String> phones;
...
}
Person duke = new Person();
duke.setName("Duke");
duke.setGender("Male");
phones = new HashMap<>();
phones.put("home", "650-123-4567");
phones.put("mobile",
"650-234-5678");
duke.setPhones(phones);
{
"name":"Duke",
"gender":"Male",
"phones":{
"home":"650-123-4567",
"mobile":"650-234-5678"
}
}
JSON-B
Proposed API - Custom Mapping
• Utilization of annotations to map fields to JSON
Document Elements
{
poolType : “Inground”,
}
@JsonProperty(“poolType”)
public String poolType;
{
poolType : “Inground”,
shape : “Rectangle”
}
@JsonPropertyOrder(“poolType”,
”shape”)
public class Pool(){
public String poolType;
public String shape;
…
}
Java EE Security
• JSR 365
• Early Draft Development
• Improve Java EE platform by ensuring that the
security API is useful in the modern cloud/PaaS
paradigm
• Simplify, standardize, modernize
• Promotes modern concepts (EL and CDI)
Java EE Security
• Simple security providers
• Easy pluggability and mapping
• Enabling Existing Security Annotations for all
beans
Java EE Security
Proposed Security Provider
@SecurityProvider
public class MySecurityProvider {
@Inject UserService userService;
@OnAuthentication
// The parameters could suit the credentials mechanism being
used.
public Principal getPrincipal(String username, String password) {
// Construct the principal using the user service.
}
@OnAuthorization
public String[] getRoles (Principal principal) {
// Construct an array of roles using the principal and user
service.
}
}
Java EE Security
• Proposed Idea Examples:
• https://github.com/javaee-security-spec/javaee-
security-proposals
JCache
• Java Temporary Caching API
• JSR 107 - Started in 2001
• Finished in 2014
• Provides a common way for Java applications to
create, access, update, and remove entries from
caches
JCache
• Provide applications with caching
functionality…particularly the ability to cache Java
objects
• Define common set of caching concepts & facilities
• Minimize learning curve
• Maximize portability
• Support in-process and distributed cache
implementations
JCache
• Unknown status...not mentioned in the Oracle
update
• Make use of JCache with some application servers
now with CDI
Health Checking
• Newly proposed specification, geared towards
monitoring the health of microservices
• Client-side standard
• Automatic, periodic, and self-monitoring
• Possibly statistics
Configuration
• Standard for externalizing configuration
• Aimed at cloud based environments
• Provide the ability to change one or more
configurations that are independent/decoupled of
apps...multiple configuration files
• Unified API for accessing configuration in many
different environments
• Layering and Overrides
Not Addressed
• JPA
• WebSocket
• Concurrency Utilities
• etc...
Java EE 8 Timeline
Q4 2014
Expert Groups
Q4 2015
Early
Draft
Q1 2016
Public
Review
Q3 2016
Proposed Final
Draft
H2
2017?
Final
Release
Java
EE.Next
Java EE 8:
Take Action
• Start working with Java EE 8 today
• Tools:
• GlassFish v4.1, Payara 5 Branch
• Milestones
• Examples and Specification Docs
Adopt-A-JSR
• Started in 2007, easy way for JUGs to get
involved
• What you can do depends upon what you want
to do & what spec leads are looking for
Join Us!
https://javaee-guardians.io

More Related Content

What's hot (20)

PPTX
Seven Points for Applying Java EE 7
Hirofumi Iwasaki
 
PPTX
Java EE 8 Update
Ryan Cuprak
 
PDF
MicroProfile for MicroServices
Mert Çalışkan
 
PDF
Finally, EE Security API JSR 375
Alex Kosowski
 
PDF
EJB and CDI - Alignment and Strategy
David Delabassee
 
PDF
jDays2015 - JavaEE vs. Spring Smackdown
Mert Çalışkan
 
PDF
MVC 1.0 / JSR 371
David Delabassee
 
PDF
What is tackled in the Java EE Security API (Java EE 8)
Rudy De Busscher
 
PDF
Microservices - java ee vs spring boot and spring cloud
Ben Wilcock
 
PDF
Java EE 8 - An instant snapshot
David Delabassee
 
PDF
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
David Delabassee
 
PDF
Grails patterns and practices
paulbowler
 
PPTX
JavaFX Versus HTML5 - JavaOne 2014
Ryan Cuprak
 
PDF
Grails At Linked
LinkedIn
 
PDF
5 best Java Frameworks
Aegis Softtech
 
PPTX
Alfresco/Activiti Modeler Application - Andras Popovics - 2019
András Popovics
 
PDF
What's Coming in Java EE 8
PT.JUG
 
PDF
Continuous integration and delivery for java based web applications
Sunil Dalal
 
PDF
JavaCro'15 - HTTP2 Comes to Java! - David Delabassee
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PPTX
Java ee 8 + security overview
Rudy De Busscher
 
Seven Points for Applying Java EE 7
Hirofumi Iwasaki
 
Java EE 8 Update
Ryan Cuprak
 
MicroProfile for MicroServices
Mert Çalışkan
 
Finally, EE Security API JSR 375
Alex Kosowski
 
EJB and CDI - Alignment and Strategy
David Delabassee
 
jDays2015 - JavaEE vs. Spring Smackdown
Mert Çalışkan
 
MVC 1.0 / JSR 371
David Delabassee
 
What is tackled in the Java EE Security API (Java EE 8)
Rudy De Busscher
 
Microservices - java ee vs spring boot and spring cloud
Ben Wilcock
 
Java EE 8 - An instant snapshot
David Delabassee
 
Java EE 8 Adopt a JSR : JSON-P 1.1 & MVC 1.0
David Delabassee
 
Grails patterns and practices
paulbowler
 
JavaFX Versus HTML5 - JavaOne 2014
Ryan Cuprak
 
Grails At Linked
LinkedIn
 
5 best Java Frameworks
Aegis Softtech
 
Alfresco/Activiti Modeler Application - Andras Popovics - 2019
András Popovics
 
What's Coming in Java EE 8
PT.JUG
 
Continuous integration and delivery for java based web applications
Sunil Dalal
 
JavaCro'15 - HTTP2 Comes to Java! - David Delabassee
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Java ee 8 + security overview
Rudy De Busscher
 

Viewers also liked (20)

PPTX
What's new in the Java API for JSON Binding
Dmitry Kornilov
 
PPTX
A first Draft to Java Configuration
Anatole Tresch
 
PDF
Web protocols for java developers
Pavel Bucek
 
PPTX
Configuration for Java EE: Config JSR and Tamaya
Dmitry Kornilov
 
PDF
Outbound Reservation Management System
Sigma Infosolutions, LLC
 
PPTX
Java EE for the Cloud
Dmitry Kornilov
 
PDF
Jsf 2 slideshare
Antonio Lazaro Carvalho Borges
 
PDF
Injecting evil code in your SAP J2EE systems. Security of SAP Software Deploy...
ERPScan
 
PPTX
Adopt-a-JSR session (JSON-B/P)
Dmitry Kornilov
 
PPTX
Inventory management
Monica Blanco
 
PPT
jVoiD - the enterprise ecommerce Java by Schogini
Schogini Systems Pvt Ltd
 
PDF
Making Java REST with JAX-RS 2.0
Dmytro Chyzhykov
 
PPTX
Self-Diagnosis Hospital Management System
Neelam Priya
 
PPTX
Introduction to j2 ee frameworks
Mukesh Kumar
 
PPT
Reactive Java EE - Let Me Count the Ways!
Reza Rahman
 
PDF
J2EE Introduction
Patroklos Papapetrou (Pat)
 
PPT
Java & J2EE Struts with Hibernate Framework
Mohit Belwal
 
POTX
Adopt-a-jsr Mar 1 2017 JAX-RS update
Pavel Bucek
 
PDF
Huge Enterprise Systems Architecture Design with Java EE
Rakuten Group, Inc.
 
What's new in the Java API for JSON Binding
Dmitry Kornilov
 
A first Draft to Java Configuration
Anatole Tresch
 
Web protocols for java developers
Pavel Bucek
 
Configuration for Java EE: Config JSR and Tamaya
Dmitry Kornilov
 
Outbound Reservation Management System
Sigma Infosolutions, LLC
 
Java EE for the Cloud
Dmitry Kornilov
 
Injecting evil code in your SAP J2EE systems. Security of SAP Software Deploy...
ERPScan
 
Adopt-a-JSR session (JSON-B/P)
Dmitry Kornilov
 
Inventory management
Monica Blanco
 
jVoiD - the enterprise ecommerce Java by Schogini
Schogini Systems Pvt Ltd
 
Making Java REST with JAX-RS 2.0
Dmytro Chyzhykov
 
Self-Diagnosis Hospital Management System
Neelam Priya
 
Introduction to j2 ee frameworks
Mukesh Kumar
 
Reactive Java EE - Let Me Count the Ways!
Reza Rahman
 
J2EE Introduction
Patroklos Papapetrou (Pat)
 
Java & J2EE Struts with Hibernate Framework
Mohit Belwal
 
Adopt-a-jsr Mar 1 2017 JAX-RS update
Pavel Bucek
 
Huge Enterprise Systems Architecture Design with Java EE
Rakuten Group, Inc.
 
Ad

Similar to Java EE8 - by Kito Mann (20)

PPTX
Java EE 8
Ryan Cuprak
 
PDF
What’s new in Java SE, EE, ME, Embedded world & new Strategy
Mohamed Taman
 
PDF
JavaOne 2014 Java EE 8 Booth Slides
Edward Burns
 
PPT
Java EE7 in action
Ankara JUG
 
PDF
InterConnect 2016 Java EE 7 Overview (PEJ-5296)
Kevin Sutter
 
PDF
Haj 4328-java ee 7 overview
Kevin Sutter
 
PDF
AAI-1713 Introduction to Java EE 7
WASdev Community
 
PDF
AAI 1713-Introduction to Java EE 7
Kevin Sutter
 
PDF
Java EE 7, what's in it for me?
Alex Soto
 
PDF
What's new in Java EE 7? From HTML5 to JMS 2.0
Bruno Borges
 
PDF
Java EE 8 Overview (Japanese)
Logico
 
PDF
OTN Tour 2013: What's new in java EE 7
Bruno Borges
 
PPTX
Java EE 7 - New Features and the WebSocket API
Marcus Schiesser
 
PDF
JCP & The Future of Java
Heather VanCura
 
PDF
Java EE 7 - Overview and Status
Java Usergroup Berlin-Brandenburg
 
PDF
Join the Java Evolution GIDS Bangalore & Pune
Heather VanCura
 
PDF
Contextual Dependency Injection for Apachecon 2010
Rohit Kelapure
 
ODP
JUDCON India 2014 Java EE 7 talk
Vijay Nair
 
PDF
JCP & Adopt-a-JSR @ GeeCon CZ
Heather VanCura
 
Java EE 8
Ryan Cuprak
 
What’s new in Java SE, EE, ME, Embedded world & new Strategy
Mohamed Taman
 
JavaOne 2014 Java EE 8 Booth Slides
Edward Burns
 
Java EE7 in action
Ankara JUG
 
InterConnect 2016 Java EE 7 Overview (PEJ-5296)
Kevin Sutter
 
Haj 4328-java ee 7 overview
Kevin Sutter
 
AAI-1713 Introduction to Java EE 7
WASdev Community
 
AAI 1713-Introduction to Java EE 7
Kevin Sutter
 
Java EE 7, what's in it for me?
Alex Soto
 
What's new in Java EE 7? From HTML5 to JMS 2.0
Bruno Borges
 
Java EE 8 Overview (Japanese)
Logico
 
OTN Tour 2013: What's new in java EE 7
Bruno Borges
 
Java EE 7 - New Features and the WebSocket API
Marcus Schiesser
 
JCP & The Future of Java
Heather VanCura
 
Java EE 7 - Overview and Status
Java Usergroup Berlin-Brandenburg
 
Join the Java Evolution GIDS Bangalore & Pune
Heather VanCura
 
Contextual Dependency Injection for Apachecon 2010
Rohit Kelapure
 
JUDCON India 2014 Java EE 7 talk
Vijay Nair
 
JCP & Adopt-a-JSR @ GeeCon CZ
Heather VanCura
 
Ad

Recently uploaded (20)

PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Python basic programing language for automation
DanialHabibi2
 
PDF
The Builder’s Playbook - 2025 State of AI Report.pdf
jeroen339954
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
PPTX
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
PDF
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
PPTX
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Python basic programing language for automation
DanialHabibi2
 
The Builder’s Playbook - 2025 State of AI Report.pdf
jeroen339954
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 

Java EE8 - by Kito Mann

  • 1. Java EE 8 Why We Need to Take Action to Move Forward Kito D. Mann Virtua, Inc.
  • 2. Kito D. Mann @kito99 • Principal Consultant at Virtua (http://virtua.tech) • Training, consulting, architecture, mentoring • PrimeFaces, JSF, Java EE, Polymer, Web Components, Liferay, etc. • Official US PrimeFaces partner • Author, JavaServer Faces in Action • Founder, JSF Central (http://www.jsfcentral.com)
  • 3. Kito D. Mann @kito99 • Co-host, Enterprise Java Newscast • http://enterprisejavanews.com • Internationally recognized speaker • JavaOne, JavaZone, Devoxx, Devnexus, NFJS, etc. • JCP Member • JSF, MVC, JSF Portlet Bridge, Portlets
  • 4. Agenda • Overview of the specifications that are part of Java EE 8, provide current status • Examples of Proposed Enhancements and New Features • What the current status of Java EE 8 progress is and what you can do to help
  • 5. The Importance of Java EE to the Ecosystem https://javaee-guardians.io/java-ee-adoption-surveys
  • 8. Java EE Past, Present, Future J2EE 1.2 Servlet, JSP, EJB, JMS, RMI J2EE 1.3 CMP, JCA J2EE 1.4 Web Services, Mgmt, Deplymnt Java EE 5 Ease of Use, EJB 3, JPA, JSF, JAXB, JAX-WS Java EE 6 Pruning, Ease of Use, JAX-RS, CDI, Bean- Validation Servlet 3, EJB 3.1 Lite Java EE 7 JMS 2, Batch, TX, Concurrency, Web-Sockets, JSON Java EE 8 SERVLET 4, JSON-B, JSON-P 1.1, JSF 2.3, CDI 2.0, JAX-RS 2.1, SECURITY, MVC, MANAGEMENT
  • 9. Java EE Past, Present, & Future J2EE 1.3 CMP, JCA J2EE 1.4 Web Services, Mgmt, Deplymnt Java EE 5 Ease of Use, EJB 3, JPA, JSF, JAXB, JAX-WS Java EE 6 Pruning, Ease of Use, JAX-RS, CDI, Bean- Validation Servlet 3, EJB 3.1 Lite Java EE 7 JMS 2, Batch, TX, Concurr, Web- Sockets, JSON JAX-RS 2 JAX-RPC, CMP/ BMP, JSR 88 J2EE 1.2 Servlet, JSP, EJB, JMS, RMI
  • 10. Java EE Past, Present, & Future Java EE 5 Ease of Use, EJB 3, JPA, JSF, JAXB, JAX-WS Java EE 6 Pruning, Ease of Use, JAX-RS, CDI, Bean- Validation Web Profile Servlet 3, EJB 3.1 Lite Java EE 7 JMS 2, Batch, TX, Concurr, Web- Sockets, JSON Web Profile JAX-RS 2 JAX-RPC, CMP/ BMP, JSR 88 J2EE 1.3 CMP, JCA J2EE 1.4 Web Services, Mgmt, Deplymnt J2EE 1.2 Servlet, JSP, EJB, JMS, RMI
  • 11. Java EE Past, Present, & Future J2EE 1.3 CMP, JCA J2EE 1.4 Web Services, Mgmt, Deplymnt Java EE 5 Ease of Use, EJB 3, JPA, JSF, JAXB, JAX-WS Java EE 6 Pruning, Ease of Use, JAX-RS, CDI, Bean- Validation Web Profile Servlet 3, EJB 3.1 Lite Java EE 7 JMS 2, Batch, TX, Concurr, Web- Sockets, JSON JAX-RS 2 JAX-RPC, CMP/ BMP, JSR 88 J2EE 1.2 Servlet, JSP, EJB, JMS, RMI
  • 12. Java EE Past, Present, & Future J2EE 1.3 CMP, JCA J2EE 1.4 Web Services, Mgmt, Deplymnt Java EE 5 Ease of Use, EJB 3, JPA, JSF, JAXB, JAX-WS Java EE 6 Pruning, Ease of Use, JAX-RS, CDI, Bean- Validation Web Profile Servlet 3, EJB 3.1 Lite Java EE 7 JMS 2, Batch, TX, Concurr, Web- Sockets, JSON Web Profile JAX-RS 2 JAX-RPC, CMP/ BMP, JSR 88 J2EE 1.2 Servlet, JSP, EJB, JMS, RMI
  • 13. Java EE 8 Community Survey https://java.net/downloads/javaee-spec/JavaEE8_Community_Survey_Results.pdf https://blogs.oracle.com/ldemichiel/entry/results_from_the_java_ee
  • 14. Java EE 8: Original Plan • Continued Enhancements for Web Standards Alignment • HTTP2, JSON Binding, JSON-P, MVC • Cloud enhancements • Security, RESTful Management API • CDI Programming Model • Ease of use, EJB via CDI • Smaller, but Important Features • Caching, Better Messaging • Alignment with Java SE 8
  • 15. Java EE 8 Original Overview • JMS 2.1 • JAX-RS 2.1 • JSF 2.3 • CDI 2.0 • JSON-P 1.1 • Servlet 4.0 • JCache 1.0 • JSON-B 1.0 • MVC 1.0 • Java EE Security1.0 • Java EE Management 2.0
  • 16. Java EE 8: New Proposal Expected release: Q4 2017 • JMS 2.1 • JAX-RS 2.1 • JSF 2.3 • CDI 2.0 • JSON-P 1.1 • Servlet 4.0 • JCache 1.0 • JSON-B 1.0 • MVC 1.0 • Java EE Security 1.0 • Java EE Management 2.0 ●Health Checking ●Configuration
  • 17. Java EE 9: New Proposal Expected release: Q4 2018 • Increased focus on microservices and cloud • Proposed new features: • Multi-tenancy • Circuit-breaker • Reactive programming support
  • 19. Servlet 4.0 • Principal goal to support HTTP 2 • Modernization of internet protocol • Boost web performance • Early Draft has been published • Join mailing list or follow expert group (JSR 369) • Keep tabs on Ed Burns’ presentations, although not anything new since JavaOne 2015
  • 20. Servlet 4.0 • HTTP 2 Support -> Major Update • Why do we need HTTP 2? • Problems with HTTP 1.1 • Head-of-Line Blocking • HTTP Pipelining, File Concatenation, & Image Sprites
  • 21. Servlet 4.0 HTTP 2 • Request/Response Multiplexing • Binary Framing • Socket Optimization • Upgrade from HTTP 1.1
  • 22. Servlet 4.0 Exposing HTTP 2 • Stream Prioritization • New class Priority • Enhance HttpServletRequest and HttpServletResponse to accommodate • Server Push • Not replacing WebSockets
  • 23. Servlet 4.0 Newer HttpClient API (Java SE 9) • Plans to provide easy to use API • Support both HTTP/1.1 and 2 • Builds on existing Java API Classes
  • 24. JMS 2.1 (Proposed for Removal) • JSR 368 - In early stages • No builds available for testing, as yet. • Planning: https://java.net/projects/jms- spec/pages/JMS21Planning
  • 25. JMS 2.1 • JMS 2.0 was a major overhaul • Continuation of API Modernization • Declarative Message Listeners • Alternative to MDB • More Powerful Features • Available to all Beans
  • 26. JMS 2.1 • JMS Provider Portability Improvements • Dead Message Queues • Redelivery Behavior on JMS MDB Rollback (delays, max # consecutive)
  • 27. JMS 2.1 Asynchronous Batches • In JMS 2.0, messages delivered asynchronously by calling: javax.jms.MessageListener onMessage(Message message) • Define new: javax.jms.BatchMessageListener onMessages(Message[] messages)
  • 28. JMS 2.1 Declarative JMS Listeners @ApplicationScoped @MaxConcurrency(10) public class HandlingEventRegistrationAttemptConsumer { @JmsListener( destinationLookup="jms/HandlingEventRegistrationAttempt Queue", selector="source = 'mobile'", batchSize=10, retry=5, retryDelay=7000, orderBy=TIMESTAMP) @Transactional public void onEventRegistrationAttempt( HandlingEventRegistrationAttempt... attempts) { ... } }
  • 29. JAX-RS 2.1 • JSR 370 - In Early Stages • No builds available for testing • Follow JSR-370 EG and Mailing Lists
  • 30. JAX-RS 2.1 • Hypermedia API • Reactive API • Security API • Support for SSE (Server Sent Events) • Improved CDI Integration • Support for Non-Blocking IO in Providers
  • 31. JAX-RS 2.1 • Conditional JAXB on Runtimes • Integration with JSON-B • Support for CDI in Java SE
  • 32. JSF 2.3 • JSR 372 - in active progress • Milestones available for testing • Read, Test, Supply Feedback
  • 33. JSF 2.3 • Enhanced CDI Integration • Lifecycle Enhancements • PostRenderViewEvent • EL API Enhancements • Configuration Enhancements • AJAX Enhancements
  • 34. JSF 2.3 Enhanced CDI Integration • Injection of Resources @Inject FacesContext facesContext; @ApplicationMap @Inject Map applicationMap;
  • 35. JSF 2.3 Enhanced CDI Integration • Wider Support of Injection into JSF Artifacts • javax.faces.convert.Converter • javax.faces.validator.Validator • javax.faces.component.behavior.Behavior • Upgraded to CDI qualifiers
  • 36. CDI 2.0 • JSR 365 - in active progress • Test Releases of Reference Implementation (Weld 3.0.0 Alphas) • http://weld.cdi-spec.org/news/ • Follow the Expert Group
  • 37. CDI 2.0 • Java SE Bootstrap • XML Configuration • Asynchronous Events@S@tar • @Startup for CDI Beans • Portable Extension SPI Simplification • Small features and enhancements
  • 38. CDI 2.0 Event System Enhancements • Asynchronous Events • Call to event.fireAsync() returns immediately @Inject private ExperimentalEvent<Configuration> event; … event.fireAsync(new Configuration());
  • 39. CDI 2.0 @Schedule Outside EJB @ApplicationScoped public class MyScheduledBean { ... @Schedule(...) public void myScheduledTask() { ... } } @ApplicationScoped @Stereotype @Retention(RUNTIME) @Target(TYPE) @Schedule(...) public @interface MonthlyTask {}
  • 40. JSON-P 1.1 • JSR 374 - In Early Draft Review • More Information: • https://json-processing-spec.java.net/ • Sources: https://java.net/projects/jsonp
  • 41. JSON-P 1.1 • Updates to new API in Java EE 7 • New JSON Standards • JSON-Pointer and JSON-Patch • Editing Operations on JSON objects and arrays • Helper Classes and Enhanced Java SE 8 support
  • 42. JSON-P 1.1 Java SE 8 Support • Stream Support JsonArray persons; persons.getValuesAs(JsonObject.class).stream() .filter(x->x.getString(“age”) >= 65) .forEach(System.out.println(x.getString(“name”)));
  • 44. JSON-P 1.1 JSON-Patch public void shouldBuildJsonPatchExpressionUsingJsonPatchBuilder() { JsonPatchBuilder patchBuilder = new JsonPatchBuilder(); JsonObject result = patchBuilder.add("/email”, "[email protected]").replace("/age", 30) .remove("/phoneNumber”) .test("/firstName", "John”) .copy("/address/lastName", "/lastName”) .apply(buildPerson()); }
  • 45. Java EE Management API 2.0 (Proposed for Removal) • Currently working on Early Draft • Join mailing list of JSR 373
  • 46. Java EE Management API 2.0 • REST Based Interface to Supersede EJB Management APIs of JSR 77 • Monitoring and deployment as well • SSE for Event Support (WebSockets also under consideration)
  • 48. MVC (Proposed for Removal) • Model - View - Controller • JSR 371 • Active Progress…download milestones • Ozark: https://ozark.java.net/
  • 49. MVC • Action-Based Web Framework for Java EE • Follows suit of Spring MVC or Apache Struts • Does Not Replace JSF • Model: CDI, Bean Validation, JPA • View: Facelets, JSP (Extensible) • Controller: Layered on top of JAX-RS
  • 50. MVC Controller Example @Controller @Path("/customers") @View("my-view.jsp") public class CustomerController { @Inject private Models models; @GET public String getItems(){ ... return “customers.jsp”; }
  • 51. MVC View Example <c:forEach var="customer" items="${customers}"> <tr> <td class="text-left">${customer.name}</td> <td class="text-center"> <form action="${pageContext.request.contextPath}/r/customers/edit" method="POST"> <input type="hidden" name="id" value="${item.id}"/> <button type="submit"> Edit </button> </form> </td> </tr> </c:forEach>
  • 52. JSON-B • Java API for JSON Binding • JSR 367 - Public Review • Read the spec, start testing: https://java.net/projects/jsonb-spec/pages/Home
  • 53. JSON-B • Standardize means of converting JSON to Java objects and vice versa • Default mapping algorithm for converting Java classes • Draw from best of breed ideas in existing JSON binding solutions • Provide JAX-RS a standard way to support “application/json” for POJOs • JAX-RS currently supports JSON-P
  • 54. JSON-B Mapping @Entity public class Person { @Id String name; String gender; @ElementCollection Map<String, String> phones; ... } Person duke = new Person(); duke.setName("Duke"); duke.setGender("Male"); phones = new HashMap<>(); phones.put("home", "650-123-4567"); phones.put("mobile", "650-234-5678"); duke.setPhones(phones); { "name":"Duke", "gender":"Male", "phones":{ "home":"650-123-4567", "mobile":"650-234-5678" } }
  • 55. JSON-B Proposed API - Custom Mapping • Utilization of annotations to map fields to JSON Document Elements { poolType : “Inground”, } @JsonProperty(“poolType”) public String poolType; { poolType : “Inground”, shape : “Rectangle” } @JsonPropertyOrder(“poolType”, ”shape”) public class Pool(){ public String poolType; public String shape; … }
  • 56. Java EE Security • JSR 365 • Early Draft Development • Improve Java EE platform by ensuring that the security API is useful in the modern cloud/PaaS paradigm • Simplify, standardize, modernize • Promotes modern concepts (EL and CDI)
  • 57. Java EE Security • Simple security providers • Easy pluggability and mapping • Enabling Existing Security Annotations for all beans
  • 58. Java EE Security Proposed Security Provider @SecurityProvider public class MySecurityProvider { @Inject UserService userService; @OnAuthentication // The parameters could suit the credentials mechanism being used. public Principal getPrincipal(String username, String password) { // Construct the principal using the user service. } @OnAuthorization public String[] getRoles (Principal principal) { // Construct an array of roles using the principal and user service. } }
  • 59. Java EE Security • Proposed Idea Examples: • https://github.com/javaee-security-spec/javaee- security-proposals
  • 60. JCache • Java Temporary Caching API • JSR 107 - Started in 2001 • Finished in 2014 • Provides a common way for Java applications to create, access, update, and remove entries from caches
  • 61. JCache • Provide applications with caching functionality…particularly the ability to cache Java objects • Define common set of caching concepts & facilities • Minimize learning curve • Maximize portability • Support in-process and distributed cache implementations
  • 62. JCache • Unknown status...not mentioned in the Oracle update • Make use of JCache with some application servers now with CDI
  • 63. Health Checking • Newly proposed specification, geared towards monitoring the health of microservices • Client-side standard • Automatic, periodic, and self-monitoring • Possibly statistics
  • 64. Configuration • Standard for externalizing configuration • Aimed at cloud based environments • Provide the ability to change one or more configurations that are independent/decoupled of apps...multiple configuration files • Unified API for accessing configuration in many different environments • Layering and Overrides
  • 65. Not Addressed • JPA • WebSocket • Concurrency Utilities • etc...
  • 66. Java EE 8 Timeline Q4 2014 Expert Groups Q4 2015 Early Draft Q1 2016 Public Review Q3 2016 Proposed Final Draft H2 2017? Final Release Java EE.Next
  • 67. Java EE 8: Take Action • Start working with Java EE 8 today • Tools: • GlassFish v4.1, Payara 5 Branch • Milestones • Examples and Specification Docs
  • 68. Adopt-A-JSR • Started in 2007, easy way for JUGs to get involved • What you can do depends upon what you want to do & what spec leads are looking for