The document provides an introduction and biography of Mohamed Taman. It states that he is a Systems Architect and Design Supervisor at "e-finance" and is involved with the JCP Executive Committee. It lists his other roles including being a board member of the "Oracle Egypt Architect Club" and being a frequent speaker at various conferences. It provides contact details and links to his blog and social media profiles.
Unleash Your Potential - Namagunga Girls Coding Club
Mohamed Taman - Systems Architect, JCP Expert Group Member
1. Mohamed Taman
S y s t e m s A r c h i t e c t & D e s i g n S u p e r v i s o r,
J C P, J C P E x e c u t i v e C o m m i t t e e , E x p e r t G r o u p
h t t p : / / a b o u t . m e / m o h a m e d t am a n
2. About Me
• A Systems Architect & Design supervisor @ “e-finance”.
• JCP, Executive Committee, Expert Group Member,
responsible for JSRs revision, evaluation, RI testing and
evangelist the new technologies specifications & JCP
process standardization.
• Board member of “Oracle Egypt Architect Club”.
• A frequent Speaker (JavaOne, Devoxx, Oracle Days, Tunis
JUG Day, jMaghreb, JEEConf & JDC... etc.),
• Consultant, Trainer, Blogger, & articles writer, books author
and tech. reviewer.
• Regularly posts on my blog , and also on DZone & JCG
community.
4. Agenda
• What is Java EE 7?
• Main aim and objectives of Java EE 7.
• What is new in Java EE 7?
• HTML5 support.
• IDEs support.
• Glassfish v4.0 as RI.
• Netbeans IDE.
• Adopt-a-JSR organization on Github.
• What's new
• The new Strategy
5. Java EE Past, Present, & Future
Java EE 7
Java EE 6
Java EE 5
J2EE 1.4
J2EE 1.2
J2EE 1.2
Servlet, JSP,
EJB, JMS,
RMI
Dec 1999
CMP,
Connector
Architecture
Sep 2001
Web
Services
Mgmt,
Deployment,
Async
Connector
Nov 2003
Ease of
Development,
EJB 3, JPA,
JSF, JAXB,
JAX-WS,
StAX, SAAJ
Pruning,
Extensibility
Ease of Dev,
CDI, JAX-RS
JMS 2,
Batch, TX,
Concurrency,
Interceptor,
WebSocket,
JSON
JAX-RPC, CMP/
BMP, JSR 88
Web Profile
Web Profile
JAX-RS 2
Servlet 3,
EJB 3.1 Lite
May 2006
Dec 2009
Jun 2013
6. Java EE 6 - Achievements
• 50,000,000 + downloads
• #1 choice for enterprise
developers
• #1 application development
platform
• Fastest adoptions of any Java
EE release – 18 complaint
servers
7. Java EE 6 – Main Features
• Web Profile
• EJB packaged in war
• Optional web.xml
• Type-safe dependency injection
• CDI Events
• JSF standardizing on facelets
• @Schedule
8. What is new in Java EE 7?
MA I N CO MP O NENT S
13. Java EE Web Profile Enhancements
• The Java Enterprise Edition Web Profile was introduced in Java EE 6
• Most Web applications have significant requirements in the areas of
transaction management, security, and persistence.
• but are not supported by standalone servlet containers.
• Web Profile is provided with pre-installed, pre-integrated, fully tested
Web infrastructure features.
• The Java EE 7 Web Profile adds support for HTML5 with WebSockets,
JSON, JAX-RS 2.0, and more.
14. JSR 343: Java Message Service 2.0
• API modernization using dependency injection
• Delivery delay, async send, MDB alignment, JMS resource definition
• Fixes, clarifications
17. JMS 2/Java EE 7
JMS Resource Definition
@JMSConnectionFactoryDefinition(
name="java:global/jms/demoConnectionFactory",
interfaceName= "javax.jms.ConnectionFactory",
description="ConnectionFactory to use in demonstration")
@JMSDestinationDefinition(
name = "java:global/jms/demoQueue",
description = "Queue to use in demonstration",
interfaceName = "javax.jms.Queue",
destinationName="demoQueue")
18. JMS 2/EJB 3.2
More Standard MDB Properties
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName =
"destinationType",
propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(
propertyName = "destinationLookup",
propertyValue = "jms/OrderQueue"),
@ActivationConfigProperty(
propertyName = "connectionFactoryLookup",
propertyValue = "jms/MyConnectionFactory")})
public class OrderListener implements MessageListener {
...
public void onMessage(Message message) { ... }
...
}
19. Why WebSocket?
• HTTP is half duplex
• HTTP is verbose
• Hacks for Server Push
• Polling
• Long Polling
• Comet/Ajax
• Complex, Wasteful, Inefficient
20. WebSocket to rescue
• TCP based, bi-directional, full-duplex messaging
• Capable of sending both UTF-8 string and binary frames in any
direction at the same time
• Operating from a single socket across the web
• As part of HTML5, the application of the client interface will become
native to all modern browsers
• To establish a Web Socket connection, the browser or client simply
makes a request to the server for an upgrade from HTTP to a Web
Socket
21. “Reducing kilobytes of data to 2
bytes…and reducing latency from 150ms
to 50ms is far more than marginal. In
fact, these two factors alone are enough
to make Web Sockets seriously
interesting to Google.”
22. JSR 356: Java API for WebSocket 1.0
• Higher level API for WebSocket
• Both client and server-side (Java SE and Java EE)
• Both declarative and programmatic
23. Java API for WebSocket
Connection Life Cycle
@ServerEndpoint(”/chat”)
public class ChatServer {
Set<Session> peers = ...
@OnOpen
public void onOpen(Session peer) {
peers.add(peer);
}
@OnClose
public void onClose(Session peer) {
peers.remove(peer);
}
...
24. Java API for WebSocket
WebSocket Communication
...
@OnMessage
public void message(String message, Session client)
throws IOException {
for (Session session : peers) {
if (!session.equals(client)) {
session.getRemote().sendObject(message);
}
}
}
}
25. JSON (JavaScript Object Notation)
• JSON (JavaScript Object Notation)
is a lightweight data-interchange
format. It is easy for humans to
read and write.
• It is easy for machines to parse and
generate.
• It is based on a subset of the
JavaScript Programming
Language, Standard ECMA-262
3rd Edition - December 1999.
• JSON is a text format that is
completely language independent
but uses conventions that are
familiar to programmers
{
“employee":
[
{ "firstName":“MOh" , "lastName":“Taman" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}
26. Why we need another API?
• JSON has become a defacto data transfer standard specially for
RESTful Web Services.
• Java applications use different implementations to consume and
process JSON data.
• There should be standardized Java API for JSON so that applications
do not need to bundle the implementation libraries.
27. JSR 353: Java API for JSON Processing 1.0
• API to parse, generate, transform, query JSON
• Binding JSON to Java objects forthcoming.
• API to parse and generate JSON
• Streaming API
• Low level efficient way to parse/generate JSON
• Provide Pluggability for parser/generator
• Object Model
• similar to DOM and StAX
• Simple, Easy-to-use high-level API
• Implemented on top of Streaming API
30. JSR 338: Java API for RESTful Web Services
2.0
• Client API
• Message Filters & Entity Interceptors
• Asynchronous Processing – Server & Client
• Hypermedia Support
• Content negotiation
31. JAX-RS 2
Client API
// Get instance of Client
Client client = ClientBuilder.newClient();
// Get customer name for the shipped products
String name = client.target(“../orders/{orderId}/customer”)
.pathParam(”orderId", ”10”)
.queryParam(”shipped", ”true”)
.request()
.get(String.class);
32. JAX-RS 2
Logging Filter
public class RequestLoggingFilter
implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext) {
log(requestContext);
// Non-wrapping => returns without invoking next filter
}
...
}
33. JSR 339: Java Persistence API 2.1
• The first spec to include new features is the JPA 2.1. The new features can be
described with the following short list:
• Schema Generation (Additional mapping metadata to provide better
standardization)
• Stored procedures
• Unsynchronized persistence contexts
• Entity converters
• Multi-Tenancy (Table discriminator)
• Custom types and transformation methods - Query by Example
• Dynamic PU Definition
• Fixes and enhancements
41. JSR 352: Batch Applications for the Java
Platform 1.0
• Batch processing is execution of series of "jobs" that is suitable for
non-interactive, bulk-oriented and long-running tasks.
• no standard Java programming model existed for batch applications.
• API for robust batch processing targeted to Java EE, Java SE
42. Batch Applications for the Java Platform
Step Example
<step id=”sendStatements”>
<chunk reader=”accountReader”
processor=”accountProcessor”
writer=”emailWriter”
item-count=”10” />
</step>
3
1
@Named(“accountReader")
...implements ItemReader... {
public Account readItem() {
// read account using JPA
2
@Named(“accountProcessor")
...implements ItemProcessor... {
Public Statement processItems(Account account) {
// read Account, return Statement
@Named(“emailWriter")
...implements ItemWriter... {
public void writeItems(List<Statements> statements) {
// use JavaMail to send email
44. Bean Validation 1.1
Method Level Constraints
public void placeOrder(
@NotNull String productName,
@NotNull @Max(“10”) Integer quantity,
@Customer String customer) {
...
}
@Future
public Date getAppointment() {
...
}
45. JSR 236: Concurrency Utilities for Java EE 1.0
• Provides simple, safe API for concurrency in Java EE
• Builds on Java SE concurrency
• java.util.concurrent.ExecutorService
• Relatively low-level API
• Important enabler for Java EE ecosystem
• Managing your own threads within a Java EE container is not recommended
• Using java.util.concurrent API in a Java EE application component such as EJB
or Servlet are problematic since the container and server have no knowledge of
these resource
46. Concurrency Utilities for Java EE
Managed Task Executor
public class TestServlet extends HTTPServlet {
@Resource(name=“concurrent/MyExecutorService”)
ManagedExecutorService executor;
Future future = executor.submit(new MyTask());
class MyTask implements Runnable {
public void run() {
... // Task logic
}
}
}
47. JSR 340: Servlet 3.1
• NIO.2 async I/O (Non-blocking I/O)
• Leverage Java EE concurrency
• Security improvements
• Web Sockets support
• Ease-of-Development
48. JSR 345: Enterprise JavaBeans 3.2
The scope of EJB 3.2 is intended to be relatively constrained in focusing
on these goals:
• Incremental factorization (Interceptors).
• Further use of annotations to simplify the EJB programming model.
• Proposed Optional: BMP/CMP.
• Proposed Optional: Web Services invocation using RPC.
51. IDEs
• Netbeans 7.4 - free
• IntelliJ IDEA 12.x – commercial and community edition
• Eclipse Juno 4.0 - free
They supports the following main features:
•
•
•
•
Java EE 7 support (Web and enterprise support).
Mobile Development support (Android development, Cordova API).
JDK 8 EA support.
Full HTML5 support.
52. Servers
4.0
• GlassFish 4.0 (RI)
• Weblogic 12.1.2c Partially (WS,
JSON-P).
• Apache Tomcat Version 8.0.0RC5.
RI
http://download.java.net/glassfish/4.0/release/glassfish-4.0.zip
54. Java.next() EE 8 and beyond.
• JSON-B
• Modularity?
• JCache
• Management/deployment
APIs?
• CDI.next()
• More CDI/EJB alignment
• Cloud, PaaS,
multitenancy/SaaS
• Security?
• Testability?
• NoSQL?
• Action-oriented Web
framework/HTML 5?
• JMS.next()?
55. Java SE 8 and beyond.
• Lambda Expressions.
• Compact Profiles.
• Stronger Algorithms for
Password-Based Encryption.
• Nashorn JavaScript Engine.
• Bulk Data Operations for
Collections.
• Annotations on Java Types.
• Date & Time API.
• DocTree API.
• JDBC 4.2.
• Parallel Array Sorting.
• More ++++
• Unicode 6.2.
56. You are Java Developer.
• Before you were a Java SE, EE, ME, Embedded Developer.
• In the future of Java you will become Java Developer.
• Because of Java platform editions converges, then One platform will
fit all needs.
57. Java & Embedded world.
• Oracle enhance the embedded APIs.
• Oracle becomes part of Raspberry PI equation.
• http://www.raspberrypi.org
• Oracle developed dukePad as BOC on Raspberry PI platform.
• https://wiki.openjdk.java.net/display/OpenJFX/DukePad
58. Internet of Things - IoT
• The Internet of Things (or IoT for short) refers to uniquely identifiable
objects and their virtual representations in an Internet-like structure.
• Equipping all objects in the world with minuscule identifying devices
or machine-readable identifiers could be transformative of daily life.
• According to ABI Research more than 30 billion devices will be
wirelessly connected to the Internet of Things (Internet of Everything)
by 2020.
• This concept, where devices connect to the internet/web via low
power radio is the most active research area in IoT.
Wikipedia