SlideShare a Scribd company logo
1 of 65
Download to read offline
Pushing 
Java 
EE 
outside 
of 
the 
Enterprise 
JAX 
London 
Oct.2014 
David 
Delabassee 
(@delabassee) 
Oracle 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
1
Safe 
Harbor 
Statement 
The 
following 
is 
intended 
to 
outline 
our 
general 
product 
direction. 
It 
is 
intended 
for 
information 
purposes 
only, 
and 
may 
not 
be 
incorporated 
into 
any 
contract. 
It 
is 
not 
a 
commitment 
to 
deliver 
any 
material, 
code, 
or 
functionality, 
and 
should 
not 
be 
relied 
upon 
in 
making 
purchasing 
decisions. 
The 
development, 
release, 
and 
timing 
of 
any 
features 
or 
functionality 
described 
for 
Oracle’s 
products 
remains 
at 
the 
sole 
discretion 
of 
Oracle. 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
2
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Program 
Agenda 
Home 
Automation 
Java 
EE 
Demo 
Wrap-­‐up 
1 
2 
3 
4 
3
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Program 
Agenda 
Home 
Automation 
Java 
EE 
Demo 
Wrap-­‐up 
1 
2 
3 
4 
4
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Home 
Automation 
• “Devices” 
control 
- Lights, 
windows, 
blinders, 
audio, 
doors, 
wall-­‐plugs, 
heating, 
etc. 
- From 
different 
“terminal” 
• Monitoring 
& 
dashboard 
- Power 
consumption, 
weather, 
motion/presence, 
intrusion, 
etc. 
• Scenario, 
scene, 
scheduling 
& 
automation 
• “Flexible” 
configuration 
Features 
5
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Home 
Automation 
Benefits 
• Better 
control 
• Improves 
day-­‐to-­‐day 
life 
• Improves 
security 
• More 
Eco 
friendly 
• … 
6
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Home 
Automation 
Market 
• Crowded 
space 
• Just 
the 
beginning! 
• IoT 
7
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Home 
Automation 
Technologies 
• X10 
/ 
PCLBUS 
• RF433 
• EnOcean 
• Z-­‐Wave 
• ZigBee 
• Domologic 
8 
• Domintell 
• NikoBus 
/ 
HomeControl 
• Chacon 
/ 
DI-­‐O 
• Somfy 
RTS 
• io-­‐homecontrol 
• VelBus 
• Domologic 
• KNX 
• BLE 
• HomeKit 
• Thread 
• …
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Home 
Automation 
• Sensors 
- Switches, 
motion, 
temperature, 
CO2, 
humidity, 
wind 
speed, 
etc. 
• Actuators 
- Lights, 
blinders, 
windows, 
doors, 
audio, 
wall-­‐plugs, 
etc. 
• Network 
- Wired 
or/and 
wireless 
+ 
TCP/IP 
• Hub, 
box, 
gateway, 
… 
- Provides 
added 
values 
Actors 
9
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Z-­‐Wave 
“Z-­‐Wave, 
The 
Interoperable 
Standard” 
• “Interoperable 
wireless 
RF-­‐based 
communications 
technology 
designed 
for 
control, 
monitoring 
and 
status 
reading 
applications 
in 
residential 
and 
light 
commercial 
environments.” 
• Proprietary 
• Z-­‐Wave 
Alliance 
- Consortium 
of 
250 
manufacturers 
and 
service 
providers 
worldwide 
! 
http://www.z-­‐wavealliance.org 
10
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Z-­‐Wave 
“Z-­‐Wave, 
The 
Interoperable 
Standard” 
• Meshed 
wireless 
network 
• Range 
100 
ft 
(open-­‐sight) 
• 232 
modules 
per 
controller 
• Cheap 
and 
simple 
11
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Connectivity 
• Physical 
connectivity 
- Razberry-­‐Pi 
Daughter 
Card 
- Aeon 
Labs 
Z-­‐Stick, 
… 
• Middleware 
- OpenZwave 
- RaZberry 
/ 
Z-­‐Wave-­‐me 
/ 
Z-­‐Way 
- Domoticz, 
… 
12
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Principles 
13 
Switch Z-­‐Wave 
Chip 
1 
1 
Z-­‐Wave 
Midd. App. 
Set(0) 
Set(0) Set(0) 
Get() 
Get() 
1 
(inv.) 
0 
(valid.) 0
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
In 
real 
life 
14
“The 
worldwide 
STANDARD 
for 
home 
and 
building 
control” 
- 40,189 
KNX 
Partners 
in 
125 
countries 
- 100 
Scientific 
Partners 
in 
28 
countries 
- 13 
User 
clubs 
in 
12 
countries 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
KNX 
• ISO/IEC 
14543-­‐3 
• KNX 
Association 
- 340 
KNX 
Members 
in 
37 
countries 
- 40 
KNX 
National 
Groups 
- 275 
Training 
Centres 
in 
51 
countries 
! 
http://www.knx.org 
15
“The 
worldwide 
STANDARD 
for 
home 
and 
building 
control” 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
KNX 
• Media 
- TP, 
PL, 
RF 
and 
IP 
• Engineering 
Tool 
Software 
- Manufacturer 
independent 
configuration 
software 
tool 
- Design 
and 
configure 
intelligent 
home 
and 
building 
KNX 
installations 
16
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Connectivity 
• Physical 
connectivity 
- KNX/USB 
Router 
- KNX/IP 
Router 
- Eelectron 
Raspberry 
Pi 
KNX 
interface 
17
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Calimero 
• Java 
library 
for 
KNX/EIB 
applications 
- KNX 
Network 
services 
and 
data 
encodings 
- Routing 
- Local 
device 
management 
- Datapoint 
type 
and 
property 
type 
translation 
- ETS4 
import, 
… 
• Java 
ME 
CDC 
Foundation 
Profile 
• http://calimero.sourceforge.net 
18
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Config 
only Optional 
Principles 
KNX 
Bus 
Bus 
Power 
Supply 
IP 
KNX 
KNX 
Output 
module 
KNX 
Input 
module 
ETS 
IP 
Controller 
Gateway 
… 
110/220v 
19
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
In 
real 
life 
20
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Z-­‐Wave 
Vs. 
KNX 
• Proprietary 
• 232 
devices 
per 
controller 
• Residential 
grade 
• Wireless, 
more 
sensible 
• Powered 
via 
batteries 
and 
PL 
• Controller 
is 
the 
Single 
PoF 
• Simple, 
non 
intrusive 
• Cheap 
• ISO 
Standard 
• Up 
to 
58.000 
bus 
devices 
• Industrial, 
professional 
grade 
• Wired, 
more 
reliable 
• Powered 
through 
the 
Bus 
• No 
real 
PoF 
• Complex, 
intrusive 
• Expensive 
21
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Program 
Agenda 
Home 
Automation 
Java 
EE 
Demo 
Wrap-­‐up 
1 
2 
3 
4 
22
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Java 
EE 
ENTERPRISE 
EDITION 
▪Batch 
▪Concurrency 
▪Simplified JMS 
DEVELOPER 
PRODUCTIVITY 
▪More annotated POJOs 
▪Less boilerplate code 
▪Cohesive integrated platform 
▪WebSockets 
▪JSON 
▪Servlet 3.1 NIO 
▪REST 
MEETING 
ENTERPRISE 
DEMANDS 
Java EE 7 
23
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Java 
EE 
ENTERPRISE 
EDITION 
Java EE 
24 
• Connectivity 
- EE 
to 
clients 
- EE 
to 
HA 
• Events
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
JSON-­‐P 
• API 
to 
parse 
and 
generate 
JSON 
• Streaming 
API 
(javax.json.stream) 
- Low-­‐level, 
efficient 
way 
to 
parse/generate 
JSON 
- Similar 
to 
StAX 
API 
in 
XML 
world 
• Object 
model 
API 
(javax.json) 
- Simple, 
easy 
to 
use 
high-­‐level 
API 
- Similar 
to 
DOM 
API 
in 
XML 
world 
JSR 
353 
25
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
public 
class 
Notification 
{ 
! 
// 
bunch 
of 
Getters 
& 
Setters 
! 
public 
String 
toJson() 
{ 
JsonObject 
model 
= 
Json.createObjectBuilder() 
.add("source", 
getSource()) 
.add("target", 
getTarget()) 
.add("val", 
getValue()) 
.add("type", 
getType()) 
.add("medium", 
getMedium()) 
.add("cyclic", 
isCyclic()) 
.add("time", 
getTimestamp()) 
.build(); 
return 
model; 
} 
26 
JSON-­‐P
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Java 
API 
for 
Web 
Socket 
• Bidirectional 
full-­‐duplex 
messaging 
- Initial 
HTTP 
handshake 
- Over 
a 
single 
TCP 
connection 
• IETF 
defined 
protocol: 
RFC 
6455 
• HTML5 
/ 
W3C 
defined 
JavaScript 
API 
• JSR 
356 
- Client 
& 
Server 
API 
JSR 
356 
27
WebSocket 
Server 
Endpoint 
(1/2) 
@ServerEndpoint("/wsEndPt") 
public 
class 
InboundWebsocket 
implements 
Serializable 
{ 
! 
static 
Queue<Session> 
queue 
= 
new 
ConcurrentLinkedQueue<>(); 
@OnOpen 
public 
void 
openConnection(Session 
session) 
{ 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
queue.add(session); 
} 
! 
public 
void 
onEvent(Notification 
notif) 
{ 
sendAllEndpoints(notif.toJson()); 
} 
! 
… 
28
WebSocket 
Server 
Endpoint 
(2/2) 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
! 
… 
public 
static 
synchronized 
void 
sendAllEndpoints(String 
payload) 
{ 
try 
{ 
for 
(Session 
session 
: 
queue) 
{ 
if 
(session.isOpen()) 
{ 
session.getBasicRemote().sendText(payload); 
} 
} 
} 
catch 
(IOException 
e) 
{ 
// 
Oooops 
} 
} 
29
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
WebSocket 
Client 
Endpoint 
function 
connect() 
{ 
wsocket 
= 
new 
WebSocket('ws://' 
+ 
window.location.host 
+ 
'/dashboard/wsEndPt'); 
wsocket.onmessage 
= 
onMessage; 
} 
! 
function 
onMessage(evt) 
{ 
jsonData 
= 
JSON.parse(evt.data); 
targetDiv 
= 
jsonData.target; 
var 
myDiv 
= 
document.getElementById(targetDiv); 
! 
if 
(jsonData.type 
=== 
"switch") 
{ 
if 
(jsonData.val 
=== 
"true") 
value 
= 
"ON"; 
else 
value 
= 
"OFF"; 
} 
else 
value 
= 
jsonData.val; 
$(myDiv).text(value); 
} 
30
Contexts 
and 
Dependency 
Injection 
for 
Java 
EE 
1.1 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
JSR 
346 
• Core 
component 
model 
- Enabled 
by 
default 
in 
implicit 
bean 
archives 
• Expanded 
use 
of 
CDI 
Interceptors 
- Transactional 
interceptors 
- Method-­‐level 
validation 
interceptors 
• New 
CDI 
scopes 
- @TransactionScoped 
- @FlowScoped 
31
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
CDI 
Events 
• Observer 
Design 
Pattern 
• Defined 
by 
- A 
java 
object 
(the 
event 
object) 
- Event 
Qualifier(s) 
JSR 
346 
32
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
CDI 
Events 
JSR 
346 
33 
!public 
class 
producerClass 
{ 
! 
@Inject 
Event<SomeEvent> 
someEvent; 
public 
void 
someMethod(...) 
{ 
... 
someEvent.fire(myEvent); 
} 
} 
!public 
class 
anotherClass 
{ 
public 
void 
someObserver(@Observes 
SomeEvent 
someEvent 
) 
{ 
... 
! 
} 
}
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 34 
CDI 
Events 
MDB 
! 
@MessageDriven( 
… 
) 
public 
class 
KnxMdb 
implements 
KnxListener 
{ 
! 
@Inject 
@HomeEvent 
Event<Notification> 
homeEvent; 
! 
@KnxMessage(type="sensor") 
public 
void 
handleKnxSensor(Notification 
notif) 
{ 
… 
homeEvent.fire(notif); 
} 
! 
}
CDI 
Events 
@ServerEndpoint("/wsEndPt") 
public 
class 
InboundWebsocket 
implements 
Serializable 
{ 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
!! 
@Inject 
@HomeEvent 
Event<Notification> 
homeEvent; 
! 
@OnOpen 
public 
void 
openConnection(Session 
session) 
{ 
… 
} 
! 
public 
void 
onEvent(@Observes 
@HomeEvent 
Notification 
notif) 
{ 
sendAllEndpoints(notif.toJson()); 
} 
… 
35 
WebSocker 
Server 
Endpoint
Java 
API 
for 
RESTful 
Web 
Services 
2.0 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
• Filters 
and 
Interceptors 
• Asynchronous 
Processing 
• Hypermedia 
• Validation 
• Client 
API 
JSR 
339 
36
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
JAX-­‐RS 
Client 
!! 
private 
void 
zwaveCommand(String 
url, 
String 
node, 
boolean 
val) 
{ 
//http://host/ZWaveAPI/Run/devices[3].instances[0].commandClasses[0x25].Set(false) 
! 
String 
zwaveUrl 
= 
url 
+ 
node 
+ 
".Set(" 
+ 
val 
+ 
")"; 
! 
private 
final 
Client 
jaxrsClient 
= 
ClientBuilder.newClient(); 
! 
String 
zwaveResp 
= 
jaxrsClient.target(zwaveUrl) 
.request(MediaType.TEXT_PLAIN_TYPE) 
.get(String.class); 
} 
37
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
REST 
Endpoint 
! 
@Path("/zwave") 
public 
class 
ZwaveEndpoint 
{ 
@Inject 
@HomeEvent 
Event<Notification> 
homeEvent; 
! 
@PUT 
@Path("/{id}/{val}/") 
@Produces("text/plain") 
public 
String 
swithZ(@PathParam("id") 
String 
id, 
@PathParam("val") 
String 
val) 
{ 
Notification 
notif 
= 
new 
Notification(id, 
"switch" 
, 
val, 
"ZWAVE"); 
notif.setTarget(id); 
// 
target 
is 
required 
to 
identify 
the 
Zwave 
device 
notif.setValue(val); 
homeEvent.fire(notif); 
} 
! 
} 
38
Java 
Connector 
Architecture 
1.7 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
• Resource 
Adapter 
- JCA 
component 
for 
a 
specific 
EIS 
- Mediates 
communication 
between 
the 
container 
and 
the 
EIS 
by 
means 
of 
contracts 
- Packaged 
as 
a 
RAR 
• EIS 
- Packaged 
Applications, 
ERP, 
CICS, 
mail 
server, 
MoM, 
etc. 
• Contracts 
- Lifecycle, 
Connection 
(inc. 
pooling), 
TX, 
Work 
Management, 
CCI, 
… 
39 
JSR 
322
Java 
Connector 
Architecture 
1.7 
Outbound 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
40 
JSR 
322 
Java 
EE 
Container 
Java 
EE 
Application 
Resource 
Adapter EIS 
Inbound
Java 
Connector 
Architecture 
1.7 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
41 
JSR 
322 
Java 
EE 
Container 
Java 
EE 
Application 
Resource 
Adapter EIS 
MDB Inbound
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Message 
Driven 
Bean 
@MessageDriven 
( 
activationConfig 
= 
{ 
@ActivationConfigProperty( 
propertyName="destinationLookup", 
propertyValue="…"), 
@ActivationConfigProperty( 
propertyName="destinationType", 
propertyValue="javax.jms.Queue") 
} 
) 
! 
public 
class 
MyJmsMdb 
implements 
MessageListener 
{ 
@Override 
public 
void 
onMessage(Message 
message) 
{ 
//do 
the 
work 
} 
! 
} 
42 
JMS
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Message 
Driven 
Bean 
43 
• “A 
MDB 
is 
an 
asynchronous 
message 
consumer…” 
• “A 
MDB 
is 
invoked 
by 
the 
container 
as 
a 
result 
of 
the 
arrival 
of 
a 
message 
at 
the 
destination 
or 
endpoint 
that 
is 
serviced 
by 
the 
MDB…” 
• “MDB 
listen 
to 
an 
Inbound 
Ressource 
Adapter” 
- Eg. 
JMS
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 44 
Message 
Driven 
Bean 
KNX 
@MessageDriven( 
activationConfig 
= 
{ 
@ActivationConfigProperty( 
propertyName 
= 
“knx", 
propertyValue 
= 
"10.0.0.60") 
} 
) 
! 
public 
class 
KnxMdb 
implements 
KnxListener 
{ 
! 
@Override 
public 
void 
onMessage(Message 
message) 
{ 
//handle 
the 
KNX 
Message 
} 
! 
}
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 45 
Message 
Driven 
Bean 
KNX 
@MessageDriven( 
activationConfig 
= 
{ 
@ActivationConfigProperty( 
propertyName 
= 
“knx", 
propertyValue 
= 
"10.0.0.60") 
} 
) 
! 
!public 
class 
KnxMdb 
implements 
KnxListener 
{ 
@KnxMessage(type="sensor") 
public 
void 
handleKnxSensor(Notification 
notif) 
{ 
… 
} 
@KnxMessage(type=“switch") 
public 
void 
switchKnx(Notification 
notif) 
{ 
… 
} 
! 
}
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Inbound 
RA 
• public 
interface 
KnxListener 
{ 
} 
- Will 
be 
implemented 
by 
the 
MDB 
• public 
class 
KnxResourceAdapter 
implements 
ResourceAdapter 
{…} 
- Do 
the 
actual 
work, 
without 
real 
constraints 
(e.g. 
threads) 
- Handle 
MDB 
activation 
- Will 
listen 
on 
the 
KNX 
bus 
via 
WorkManager 
• public 
class 
KnxActivationSpec 
implements 
ActivationSpec 
{…} 
- Expose 
RA 
configuration 
to 
the 
application 
!! 
46
Inbound 
RA 
@Override 
public 
void 
endpointActivation(MessageEndpointFactory 
endpointFactory, 
ActivationSpec 
spec) 
throws 
ResourceException 
{ 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
tSpec 
= 
(TrafficActivationSpec) 
spec; 
Class 
endpointClass 
= 
endpointFactory.getEndpointClass(); 
tSpec.setBeanClass(endpointClass); 
tSpec.findCommandsInMDB(); 
ObtainEndpointWork 
work 
= 
new 
ObtainEndpointWork(this, 
endpointFactory); 
workManager.scheduleWork(work); 
} 
47
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Inbound 
RA 
public 
void 
findCommandsInMDB() 
{ 
! 
for 
(Method 
method 
: 
beanClass.getMethods()) 
{ 
if 
(method.isAnnotationPresent(KnxMessage.class)) 
{ 
KnxMessage 
tCommand 
= 
method.getAnnotation(KnxMessage.class); 
commands.put(tCommand.type(), 
method); 
} 
} 
… 
} 
48
KNX 
(real) 
Listener 
// 
KNX 
ProcessedEvent 
from 
the 
Calimero 
stack 
switch 
(actor) 
{ 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
case 
"0/7/4": 
messageType 
= 
"sensor"; 
notif.setType("humidity"); 
processedEvent 
= 
Float.toString(knxSensorHumidity(pe)); 
notif.setValue(processedEvent); 
// 
and 
so 
on… 
break; 
} 
! 
if 
(spec.getCommands().containsKey(messageType)) 
{ 
// 
Does 
the 
MDB 
support 
this 
message? 
Method 
mdbMethod 
= 
spec.getCommands().get(messageType); 
try 
{ 
callMdb(mdb, 
mdbMethod, 
notif); 
} 
catch 
(ResourceException 
ex) 
{ 
// 
Ooops! 
} 
} 
else 
{ 
// 
Unknown 
command 
?! 
} 
49
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
KnxMessage 
! 
/* 
Annotation 
to 
decorate 
methods 
in 
the 
MDB 
*/ 
@Target({ElementType.METHOD}) 
@Retention(RetentionPolicy.RUNTIME) 
public 
@interface 
KnxMessage 
{ 
String 
type() 
default 
""; 
String 
info() 
default 
""; 
} 
50
Inbound 
connector 
private 
Notif 
callMdb(MessageEndpoint 
mdb, 
Method 
command, 
Notification 
param) 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
throws 
ResourceException 
{ 
! 
try 
{ 
mdb.beforeDelivery(command); 
Object 
ret 
= 
command.invoke(mdb, 
param); 
notif 
= 
(Notif) 
ret; 
} 
catch 
(NoSuchMethodException 
| 
ResourceException 
| 
IllegalAccessException 
| 
IllegalArgumentException 
|InvocationTargetException 
ex) 
{ 
// 
MDB 
invocation 
error 
:( 
… 
} 
mdb.afterDelivery(); 
return 
notif; 
} 
51
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
KNX 
MDB 
52 
@MessageDriven( 
activationConfig 
= 
{ 
@ActivationConfigProperty( 
propertyName 
= 
“knx", 
propertyValue 
= 
"10.0.0.60") 
} 
) 
! 
public 
class 
KnxMdb 
implements 
KnxListener 
{ 
! 
@KnxMessage(type="sensor") 
public 
void 
handleKnxSensor(Notification 
notif) 
{ 
… 
} 
@KnxMessage(type=“switch") 
public 
void 
switchKnx(Notification 
notif) 
{ 
… 
} 
! 
}
Java 
Connector 
Architecture 
1.7 
Outbound 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
53 
JSR 
322 
Java 
EE 
Container 
Java 
EE 
Application 
Resource 
Adapter EIS
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
And 
more… 
• EJB 
• CDI 
Interceptors 
• JAX-­‐RS 
Interceptors 
• Concurrency 
Utilities 
for 
Java 
EE 
• Java 
Persistence 
API 
• JavaServer 
Faces 
• OpenMQ 
Stomp 
support 
• Jersey 
SSE, 
MVC… 
54
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Program 
Agenda 
Home 
Automation 
Java 
EE 
Demo 
Wrap-­‐up 
1 
2 
3 
4 
55
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Dashboard 
• HTML 
Client 
- “Pure” 
JS 
- Real-­‐time 
notifications 
via 
WebSocket 
- Control 
devices 
via 
REST 
• Java 
EE 
7 
backend 
- KNX 
(JCA) 
& 
Z-­‐Wave 
(REST) 
- In 
& 
Outbound 
56
KNX 
Sensors 
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
KNX 
Bus 
Bus 
Power 
Supply 
IP 
KNX 
KNX 
Output 
module 
VPN 
IP 
Java 
EE 
110/220v 
57 
KNX 
Output 
module 
KNX 
Input 
module 
KNX 
Input 
module 
KNX 
Input 
module 
Z-­‐Wave 
Output 
module 
Z-­‐Wave 
KNX 
Sensors 
Z-­‐Wave 
Input 
module 
Demo 
JCA 
REST
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Program 
Agenda 
Home 
Automation 
Java 
EE 
Demo 
Wrap-­‐up 
1 
2 
3 
4 
58
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
• Connectivity 
- JAX-­‐RS, 
JCA, 
WebSocket, 
JMS… 
• ‘Event’ 
driven 
capabilities 
- MDB, 
CDI 
event 
• Non 
blocking 
IO 
• Asynchronous 
• Scheduling 
• Persistence 
• Component 
models 
• UI 
- JSF, 
JAX-­‐RS 
• Container 
- Lifecycle 
- Monitoring 
& 
Management 
- Ressources 
pooling 
- Logging 
- … 
Java 
EE 
for 
Home 
Automation 
59
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
What’s 
next 
• PoC 
- KNX, 
Z-­‐Wave 
& 
InfraRed 
• Improvements 
- Additional 
‘connectors’, 
e.g. 
RF433 
- More 
types, 
e.g. 
range 
for 
blinders 
- State 
Management 
- User 
interface 
- Add 
‘scenario’s 
- Leverage 
Java 
EE 
more, 
e.g. 
CDI 
Interceptors 
60
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Java 
EE 
and 
IoT 
• Connected 
devices 
• Messages 
/ 
data 
producer 
• Data 
aggregation 
/ 
processing 
- Deeper 
in 
the 
network 
• Scaling 
• Security 
61
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Java 
EE 
8 
• CDI 
2.0 
• JMS 
2.1 
• MVC 
1.0 
• JAX-­‐RS 
2.1 
• JSON-­‐B 
+ 
JSON-­‐P 
TBC! 
62
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 
Resources 
• The 
Java 
EE 
7 
Tutorial 
- http://docs.oracle.com/javaee/7/tutorial/doc/home.htm 
• GlassFish 
4.1 
- http://glassfish.org 
• NetBeans 
8.0.1 
- http://netbeans.org 
63
Copyright 
© 
2014, 
Oracle 
and/or 
its 
affiliates. 
All 
rights 
reserved. 
| 64
65

More Related Content

What's hot

Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)Cisco DevNet
 
Cisco Automation with Puppet and onePK - PuppetConf 2013
Cisco Automation with Puppet and onePK - PuppetConf 2013Cisco Automation with Puppet and onePK - PuppetConf 2013
Cisco Automation with Puppet and onePK - PuppetConf 2013Puppet
 
Exploring the Final Frontier of Data Center Orchestration: Network Elements -...
Exploring the Final Frontier of Data Center Orchestration: Network Elements -...Exploring the Final Frontier of Data Center Orchestration: Network Elements -...
Exploring the Final Frontier of Data Center Orchestration: Network Elements -...Puppet
 
Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015Edward Burns
 
Software Defined Networks Network Function Virtualization Pivotal Technologies
Software Defined Networks Network Function Virtualization Pivotal TechnologiesSoftware Defined Networks Network Function Virtualization Pivotal Technologies
Software Defined Networks Network Function Virtualization Pivotal TechnologiesOpen Networking Summits
 
WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015Pavel Bucek
 
3 Years of Puppet at Cisco: The Secrets to Our Success - PuppetConf 2013
3 Years of Puppet at Cisco: The Secrets to Our Success - PuppetConf 20133 Years of Puppet at Cisco: The Secrets to Our Success - PuppetConf 2013
3 Years of Puppet at Cisco: The Secrets to Our Success - PuppetConf 2013Puppet
 
How to Thrive on REST/WebSocket-Based Microservices
How to Thrive on REST/WebSocket-Based MicroservicesHow to Thrive on REST/WebSocket-Based Microservices
How to Thrive on REST/WebSocket-Based MicroservicesPavel Bucek
 
Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374Heather VanCura
 
TechWiseTV Workshop: Digital Building Switches
TechWiseTV Workshop: Digital Building SwitchesTechWiseTV Workshop: Digital Building Switches
TechWiseTV Workshop: Digital Building SwitchesRobb Boyd
 
Innovations in the Enterprise Routing & Switching Space
Innovations in the Enterprise Routing & Switching SpaceInnovations in the Enterprise Routing & Switching Space
Innovations in the Enterprise Routing & Switching SpaceCisco Canada
 
Hands-on Experience with IPv6 Routing and Services
Hands-on Experience with IPv6 Routing and ServicesHands-on Experience with IPv6 Routing and Services
Hands-on Experience with IPv6 Routing and ServicesCisco Canada
 
Cisco's Open Device Programmability Strategy: Open Discussion
Cisco's Open Device Programmability Strategy: Open DiscussionCisco's Open Device Programmability Strategy: Open Discussion
Cisco's Open Device Programmability Strategy: Open DiscussionCisco DevNet
 
Cisco Connect Montreal 2017 - Segment Routing - Technology Deep-dive and Adva...
Cisco Connect Montreal 2017 - Segment Routing - Technology Deep-dive and Adva...Cisco Connect Montreal 2017 - Segment Routing - Technology Deep-dive and Adva...
Cisco Connect Montreal 2017 - Segment Routing - Technology Deep-dive and Adva...Cisco Canada
 
EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5
EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5
EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5Shaun Smith
 
Software Defined Networks
Software Defined NetworksSoftware Defined Networks
Software Defined NetworksCisco Canada
 
Software Defined Networking/Openflow: A path to Programmable Networks
Software Defined Networking/Openflow: A path to Programmable NetworksSoftware Defined Networking/Openflow: A path to Programmable Networks
Software Defined Networking/Openflow: A path to Programmable NetworksMyNOG
 
Introduction to SDN and Network Programmability - BRKRST-1014 | 2017/Las Vegas
Introduction to SDN and Network Programmability - BRKRST-1014 | 2017/Las VegasIntroduction to SDN and Network Programmability - BRKRST-1014 | 2017/Las Vegas
Introduction to SDN and Network Programmability - BRKRST-1014 | 2017/Las VegasBruno Teixeira
 

What's hot (20)

Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
Open Device Programmability: Hands-on Intro to RESTCONF (and a bit of NETCONF)
 
Cisco Automation with Puppet and onePK - PuppetConf 2013
Cisco Automation with Puppet and onePK - PuppetConf 2013Cisco Automation with Puppet and onePK - PuppetConf 2013
Cisco Automation with Puppet and onePK - PuppetConf 2013
 
Exploring the Final Frontier of Data Center Orchestration: Network Elements -...
Exploring the Final Frontier of Data Center Orchestration: Network Elements -...Exploring the Final Frontier of Data Center Orchestration: Network Elements -...
Exploring the Final Frontier of Data Center Orchestration: Network Elements -...
 
Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015
 
Software Defined Networks Network Function Virtualization Pivotal Technologies
Software Defined Networks Network Function Virtualization Pivotal TechnologiesSoftware Defined Networks Network Function Virtualization Pivotal Technologies
Software Defined Networks Network Function Virtualization Pivotal Technologies
 
WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015
 
3 Years of Puppet at Cisco: The Secrets to Our Success - PuppetConf 2013
3 Years of Puppet at Cisco: The Secrets to Our Success - PuppetConf 20133 Years of Puppet at Cisco: The Secrets to Our Success - PuppetConf 2013
3 Years of Puppet at Cisco: The Secrets to Our Success - PuppetConf 2013
 
How to Thrive on REST/WebSocket-Based Microservices
How to Thrive on REST/WebSocket-Based MicroservicesHow to Thrive on REST/WebSocket-Based Microservices
How to Thrive on REST/WebSocket-Based Microservices
 
Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374Adopt-a-JSR for JSON Processing 1.1, JSR 374
Adopt-a-JSR for JSON Processing 1.1, JSR 374
 
TechWiseTV Workshop: Digital Building Switches
TechWiseTV Workshop: Digital Building SwitchesTechWiseTV Workshop: Digital Building Switches
TechWiseTV Workshop: Digital Building Switches
 
Innovations in the Enterprise Routing & Switching Space
Innovations in the Enterprise Routing & Switching SpaceInnovations in the Enterprise Routing & Switching Space
Innovations in the Enterprise Routing & Switching Space
 
Hands-on Experience with IPv6 Routing and Services
Hands-on Experience with IPv6 Routing and ServicesHands-on Experience with IPv6 Routing and Services
Hands-on Experience with IPv6 Routing and Services
 
Cisco's Open Device Programmability Strategy: Open Discussion
Cisco's Open Device Programmability Strategy: Open DiscussionCisco's Open Device Programmability Strategy: Open Discussion
Cisco's Open Device Programmability Strategy: Open Discussion
 
Cisco Connect Montreal 2017 - Segment Routing - Technology Deep-dive and Adva...
Cisco Connect Montreal 2017 - Segment Routing - Technology Deep-dive and Adva...Cisco Connect Montreal 2017 - Segment Routing - Technology Deep-dive and Adva...
Cisco Connect Montreal 2017 - Segment Routing - Technology Deep-dive and Adva...
 
EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5
EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5
EclipseLink: Beyond Relational and NoSQL to Polyglot and HTML5
 
Java 101
Java 101Java 101
Java 101
 
Software Defined Networks
Software Defined NetworksSoftware Defined Networks
Software Defined Networks
 
Software Defined Networking/Openflow: A path to Programmable Networks
Software Defined Networking/Openflow: A path to Programmable NetworksSoftware Defined Networking/Openflow: A path to Programmable Networks
Software Defined Networking/Openflow: A path to Programmable Networks
 
Introduction to SDN and Network Programmability - BRKRST-1014 | 2017/Las Vegas
Introduction to SDN and Network Programmability - BRKRST-1014 | 2017/Las VegasIntroduction to SDN and Network Programmability - BRKRST-1014 | 2017/Las Vegas
Introduction to SDN and Network Programmability - BRKRST-1014 | 2017/Las Vegas
 
CCNP Security-VPN
CCNP Security-VPNCCNP Security-VPN
CCNP Security-VPN
 

Similar to Pushing Java EE outside of the Enterprise: Home Automation and IoT - David Delabassee

Pushing Java EE outside of the Enterprise - Home Automation
Pushing Java EE outside of the Enterprise - Home AutomationPushing Java EE outside of the Enterprise - Home Automation
Pushing Java EE outside of the Enterprise - Home AutomationDavid Delabassee
 
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...Marco Antonio Maciel
 
Sviluppo IoT - Un approccio standard da Nerd ad Impresa, prove pratiche di Me...
Sviluppo IoT - Un approccio standard da Nerd ad Impresa, prove pratiche di Me...Sviluppo IoT - Un approccio standard da Nerd ad Impresa, prove pratiche di Me...
Sviluppo IoT - Un approccio standard da Nerd ad Impresa, prove pratiche di Me...Codemotion
 
Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...
Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...
Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...Tomek Borek
 
Increased Developer Productivity for IoT with Java and Reactive Blocks (Oracl...
Increased Developer Productivity for IoT with Java and Reactive Blocks (Oracl...Increased Developer Productivity for IoT with Java and Reactive Blocks (Oracl...
Increased Developer Productivity for IoT with Java and Reactive Blocks (Oracl...Bart Jonkers
 
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to YouHTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to YouDavid Delabassee
 
JDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDKJDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDKWolfgang Weigend
 
Virtual Compute Appliance Oracle IaaS
Virtual Compute Appliance Oracle IaaS Virtual Compute Appliance Oracle IaaS
Virtual Compute Appliance Oracle IaaS Fran Navarro
 
Simplify IT: Oracle SuperCluster
Simplify IT: Oracle SuperCluster Simplify IT: Oracle SuperCluster
Simplify IT: Oracle SuperCluster Fran Navarro
 
Plataforma Java Embedded & Internet of Things (IoT)
Plataforma Java Embedded & Internet of Things (IoT)Plataforma Java Embedded & Internet of Things (IoT)
Plataforma Java Embedded & Internet of Things (IoT)Marco Antonio Maciel
 
A practical introduction to Oracle NoSQL Database - OOW2014
A practical introduction to Oracle NoSQL Database - OOW2014A practical introduction to Oracle NoSQL Database - OOW2014
A practical introduction to Oracle NoSQL Database - OOW2014Anuj Sahni
 
Developing Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12c
Developing Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12cDeveloping Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12c
Developing Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12cBruno Borges
 
Tweet4Beer - Beertap powered by Java goes IoT and JavaFX
Tweet4Beer - Beertap powered by Java goes IoT and JavaFXTweet4Beer - Beertap powered by Java goes IoT and JavaFX
Tweet4Beer - Beertap powered by Java goes IoT and JavaFXBruno Borges
 
Managing Oracle Solaris Systems with Puppet
Managing Oracle Solaris Systems with PuppetManaging Oracle Solaris Systems with Puppet
Managing Oracle Solaris Systems with Puppetglynnfoster
 
Desayuno Tecnico OVN - Xsigo
Desayuno Tecnico OVN - XsigoDesayuno Tecnico OVN - Xsigo
Desayuno Tecnico OVN - XsigoFran Navarro
 
Grow Your Business with Oracle Linux, Virtualization- BL v6.pdf
Grow Your Business with Oracle Linux, Virtualization- BL v6.pdfGrow Your Business with Oracle Linux, Virtualization- BL v6.pdf
Grow Your Business with Oracle Linux, Virtualization- BL v6.pdfsyamsulsakbar
 
JavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth SlidesJavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth SlidesEdward Burns
 
Java Community and Overview Track - March 2016
Java Community and Overview Track - March 2016Java Community and Overview Track - March 2016
Java Community and Overview Track - March 2016Yolande Poirier
 
Introduction to MySQL
Introduction to MySQLIntroduction to MySQL
Introduction to MySQLTed Wennmark
 

Similar to Pushing Java EE outside of the Enterprise: Home Automation and IoT - David Delabassee (20)

Pushing Java EE outside of the Enterprise - Home Automation
Pushing Java EE outside of the Enterprise - Home AutomationPushing Java EE outside of the Enterprise - Home Automation
Pushing Java EE outside of the Enterprise - Home Automation
 
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
Tweet4Beer (atualizada): Torneira de Chopp Controlada por Java, JavaFX, IoT ...
 
Sviluppo IoT - Un approccio standard da Nerd ad Impresa, prove pratiche di Me...
Sviluppo IoT - Un approccio standard da Nerd ad Impresa, prove pratiche di Me...Sviluppo IoT - Un approccio standard da Nerd ad Impresa, prove pratiche di Me...
Sviluppo IoT - Un approccio standard da Nerd ad Impresa, prove pratiche di Me...
 
Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...
Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...
Łukasz Romaszewski on Internet of Things Raspberry Pi and Java Embedded JavaC...
 
Increased Developer Productivity for IoT with Java and Reactive Blocks (Oracl...
Increased Developer Productivity for IoT with Java and Reactive Blocks (Oracl...Increased Developer Productivity for IoT with Java and Reactive Blocks (Oracl...
Increased Developer Productivity for IoT with Java and Reactive Blocks (Oracl...
 
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to YouHTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
 
JDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDKJDK 8 and JDK 8 Updates in OpenJDK
JDK 8 and JDK 8 Updates in OpenJDK
 
Virtual Compute Appliance Oracle IaaS
Virtual Compute Appliance Oracle IaaS Virtual Compute Appliance Oracle IaaS
Virtual Compute Appliance Oracle IaaS
 
Simplify IT: Oracle SuperCluster
Simplify IT: Oracle SuperCluster Simplify IT: Oracle SuperCluster
Simplify IT: Oracle SuperCluster
 
Plataforma Java Embedded & Internet of Things (IoT)
Plataforma Java Embedded & Internet of Things (IoT)Plataforma Java Embedded & Internet of Things (IoT)
Plataforma Java Embedded & Internet of Things (IoT)
 
A practical introduction to Oracle NoSQL Database - OOW2014
A practical introduction to Oracle NoSQL Database - OOW2014A practical introduction to Oracle NoSQL Database - OOW2014
A practical introduction to Oracle NoSQL Database - OOW2014
 
Developing Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12c
Developing Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12cDeveloping Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12c
Developing Java EE Applications on IntelliJ IDEA with Oracle WebLogic 12c
 
Tweet4Beer - Beertap powered by Java goes IoT and JavaFX
Tweet4Beer - Beertap powered by Java goes IoT and JavaFXTweet4Beer - Beertap powered by Java goes IoT and JavaFX
Tweet4Beer - Beertap powered by Java goes IoT and JavaFX
 
Oracle Database Cloud Service
Oracle Database Cloud ServiceOracle Database Cloud Service
Oracle Database Cloud Service
 
Managing Oracle Solaris Systems with Puppet
Managing Oracle Solaris Systems with PuppetManaging Oracle Solaris Systems with Puppet
Managing Oracle Solaris Systems with Puppet
 
Desayuno Tecnico OVN - Xsigo
Desayuno Tecnico OVN - XsigoDesayuno Tecnico OVN - Xsigo
Desayuno Tecnico OVN - Xsigo
 
Grow Your Business with Oracle Linux, Virtualization- BL v6.pdf
Grow Your Business with Oracle Linux, Virtualization- BL v6.pdfGrow Your Business with Oracle Linux, Virtualization- BL v6.pdf
Grow Your Business with Oracle Linux, Virtualization- BL v6.pdf
 
JavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth SlidesJavaOne 2014 Java EE 8 Booth Slides
JavaOne 2014 Java EE 8 Booth Slides
 
Java Community and Overview Track - March 2016
Java Community and Overview Track - March 2016Java Community and Overview Track - March 2016
Java Community and Overview Track - March 2016
 
Introduction to MySQL
Introduction to MySQLIntroduction to MySQL
Introduction to MySQL
 

More from JAXLondon2014

GridGain 6.0: Open Source In-Memory Computing Platform - Nikita Ivanov
GridGain 6.0: Open Source In-Memory Computing Platform - Nikita IvanovGridGain 6.0: Open Source In-Memory Computing Platform - Nikita Ivanov
GridGain 6.0: Open Source In-Memory Computing Platform - Nikita IvanovJAXLondon2014
 
Performance Metrics for your Delivery Pipeline - Wolfgang Gottesheim
Performance Metrics for your Delivery Pipeline - Wolfgang GottesheimPerformance Metrics for your Delivery Pipeline - Wolfgang Gottesheim
Performance Metrics for your Delivery Pipeline - Wolfgang GottesheimJAXLondon2014
 
How to randomly access data in close-to-RAM speeds but a lower cost with SSD’...
How to randomly access data in close-to-RAM speeds but a lower cost with SSD’...How to randomly access data in close-to-RAM speeds but a lower cost with SSD’...
How to randomly access data in close-to-RAM speeds but a lower cost with SSD’...JAXLondon2014
 
Conditional Logging Considered Harmful - Sean Reilly
Conditional Logging Considered Harmful - Sean ReillyConditional Logging Considered Harmful - Sean Reilly
Conditional Logging Considered Harmful - Sean ReillyJAXLondon2014
 
Finding your Way in the Midst of the NoSQL Haze - Abdelmonaim Remani
Finding your Way in the Midst of the NoSQL Haze - Abdelmonaim RemaniFinding your Way in the Midst of the NoSQL Haze - Abdelmonaim Remani
Finding your Way in the Midst of the NoSQL Haze - Abdelmonaim RemaniJAXLondon2014
 
API Management - a hands on workshop - Paul Fremantle
API Management - a hands on workshop - Paul FremantleAPI Management - a hands on workshop - Paul Fremantle
API Management - a hands on workshop - Paul FremantleJAXLondon2014
 
'Bootiful' Code with Spring Boot - Josh Long
'Bootiful' Code with Spring Boot - Josh Long'Bootiful' Code with Spring Boot - Josh Long
'Bootiful' Code with Spring Boot - Josh LongJAXLondon2014
 
The Full Stack Java Developer - Josh Long
The Full Stack Java Developer - Josh LongThe Full Stack Java Developer - Josh Long
The Full Stack Java Developer - Josh LongJAXLondon2014
 
The Economies of Scaling Software - Josh Long and Abdelmonaim Remani
The Economies of Scaling Software - Josh Long and Abdelmonaim RemaniThe Economies of Scaling Software - Josh Long and Abdelmonaim Remani
The Economies of Scaling Software - Josh Long and Abdelmonaim RemaniJAXLondon2014
 
Dataflow, the Forgotten Way - Russel Winder
Dataflow, the Forgotten Way - Russel WinderDataflow, the Forgotten Way - Russel Winder
Dataflow, the Forgotten Way - Russel WinderJAXLondon2014
 
Habits of Highly Effective Technical Teams - Martijn Verburg
Habits of Highly Effective Technical Teams - Martijn VerburgHabits of Highly Effective Technical Teams - Martijn Verburg
Habits of Highly Effective Technical Teams - Martijn VerburgJAXLondon2014
 
The Lazy Developer's Guide to Cloud Foundry - Holly Cummins
The Lazy Developer's Guide to Cloud Foundry - Holly CumminsThe Lazy Developer's Guide to Cloud Foundry - Holly Cummins
The Lazy Developer's Guide to Cloud Foundry - Holly CumminsJAXLondon2014
 
Testing within an Agile Environment - Beyza Sakir and Chris Gollop
Testing within an Agile Environment - Beyza Sakir and Chris GollopTesting within an Agile Environment - Beyza Sakir and Chris Gollop
Testing within an Agile Environment - Beyza Sakir and Chris GollopJAXLondon2014
 
Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...
Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...
Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...JAXLondon2014
 
Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov
Squeezing Performance of out of In-Memory Data Grids - Fuad MalikovSqueezing Performance of out of In-Memory Data Grids - Fuad Malikov
Squeezing Performance of out of In-Memory Data Grids - Fuad MalikovJAXLondon2014
 
Spocktacular Testing - Russel Winder
Spocktacular Testing - Russel WinderSpocktacular Testing - Russel Winder
Spocktacular Testing - Russel WinderJAXLondon2014
 
Server Side JavaScript on the Java Platform - David Delabassee
Server Side JavaScript on the Java Platform - David DelabasseeServer Side JavaScript on the Java Platform - David Delabassee
Server Side JavaScript on the Java Platform - David DelabasseeJAXLondon2014
 
Reflection Madness - Dr. Heinz Kabutz
Reflection Madness - Dr. Heinz KabutzReflection Madness - Dr. Heinz Kabutz
Reflection Madness - Dr. Heinz KabutzJAXLondon2014
 
Rapid Web Application Development with MongoDB and the JVM - Trisha Gee
Rapid Web Application Development with MongoDB and the JVM - Trisha GeeRapid Web Application Development with MongoDB and the JVM - Trisha Gee
Rapid Web Application Development with MongoDB and the JVM - Trisha GeeJAXLondon2014
 
Personal Retrospectives - Johannes Thönes
Personal Retrospectives - Johannes ThönesPersonal Retrospectives - Johannes Thönes
Personal Retrospectives - Johannes ThönesJAXLondon2014
 

More from JAXLondon2014 (20)

GridGain 6.0: Open Source In-Memory Computing Platform - Nikita Ivanov
GridGain 6.0: Open Source In-Memory Computing Platform - Nikita IvanovGridGain 6.0: Open Source In-Memory Computing Platform - Nikita Ivanov
GridGain 6.0: Open Source In-Memory Computing Platform - Nikita Ivanov
 
Performance Metrics for your Delivery Pipeline - Wolfgang Gottesheim
Performance Metrics for your Delivery Pipeline - Wolfgang GottesheimPerformance Metrics for your Delivery Pipeline - Wolfgang Gottesheim
Performance Metrics for your Delivery Pipeline - Wolfgang Gottesheim
 
How to randomly access data in close-to-RAM speeds but a lower cost with SSD’...
How to randomly access data in close-to-RAM speeds but a lower cost with SSD’...How to randomly access data in close-to-RAM speeds but a lower cost with SSD’...
How to randomly access data in close-to-RAM speeds but a lower cost with SSD’...
 
Conditional Logging Considered Harmful - Sean Reilly
Conditional Logging Considered Harmful - Sean ReillyConditional Logging Considered Harmful - Sean Reilly
Conditional Logging Considered Harmful - Sean Reilly
 
Finding your Way in the Midst of the NoSQL Haze - Abdelmonaim Remani
Finding your Way in the Midst of the NoSQL Haze - Abdelmonaim RemaniFinding your Way in the Midst of the NoSQL Haze - Abdelmonaim Remani
Finding your Way in the Midst of the NoSQL Haze - Abdelmonaim Remani
 
API Management - a hands on workshop - Paul Fremantle
API Management - a hands on workshop - Paul FremantleAPI Management - a hands on workshop - Paul Fremantle
API Management - a hands on workshop - Paul Fremantle
 
'Bootiful' Code with Spring Boot - Josh Long
'Bootiful' Code with Spring Boot - Josh Long'Bootiful' Code with Spring Boot - Josh Long
'Bootiful' Code with Spring Boot - Josh Long
 
The Full Stack Java Developer - Josh Long
The Full Stack Java Developer - Josh LongThe Full Stack Java Developer - Josh Long
The Full Stack Java Developer - Josh Long
 
The Economies of Scaling Software - Josh Long and Abdelmonaim Remani
The Economies of Scaling Software - Josh Long and Abdelmonaim RemaniThe Economies of Scaling Software - Josh Long and Abdelmonaim Remani
The Economies of Scaling Software - Josh Long and Abdelmonaim Remani
 
Dataflow, the Forgotten Way - Russel Winder
Dataflow, the Forgotten Way - Russel WinderDataflow, the Forgotten Way - Russel Winder
Dataflow, the Forgotten Way - Russel Winder
 
Habits of Highly Effective Technical Teams - Martijn Verburg
Habits of Highly Effective Technical Teams - Martijn VerburgHabits of Highly Effective Technical Teams - Martijn Verburg
Habits of Highly Effective Technical Teams - Martijn Verburg
 
The Lazy Developer's Guide to Cloud Foundry - Holly Cummins
The Lazy Developer's Guide to Cloud Foundry - Holly CumminsThe Lazy Developer's Guide to Cloud Foundry - Holly Cummins
The Lazy Developer's Guide to Cloud Foundry - Holly Cummins
 
Testing within an Agile Environment - Beyza Sakir and Chris Gollop
Testing within an Agile Environment - Beyza Sakir and Chris GollopTesting within an Agile Environment - Beyza Sakir and Chris Gollop
Testing within an Agile Environment - Beyza Sakir and Chris Gollop
 
Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...
Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...
Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...
 
Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov
Squeezing Performance of out of In-Memory Data Grids - Fuad MalikovSqueezing Performance of out of In-Memory Data Grids - Fuad Malikov
Squeezing Performance of out of In-Memory Data Grids - Fuad Malikov
 
Spocktacular Testing - Russel Winder
Spocktacular Testing - Russel WinderSpocktacular Testing - Russel Winder
Spocktacular Testing - Russel Winder
 
Server Side JavaScript on the Java Platform - David Delabassee
Server Side JavaScript on the Java Platform - David DelabasseeServer Side JavaScript on the Java Platform - David Delabassee
Server Side JavaScript on the Java Platform - David Delabassee
 
Reflection Madness - Dr. Heinz Kabutz
Reflection Madness - Dr. Heinz KabutzReflection Madness - Dr. Heinz Kabutz
Reflection Madness - Dr. Heinz Kabutz
 
Rapid Web Application Development with MongoDB and the JVM - Trisha Gee
Rapid Web Application Development with MongoDB and the JVM - Trisha GeeRapid Web Application Development with MongoDB and the JVM - Trisha Gee
Rapid Web Application Development with MongoDB and the JVM - Trisha Gee
 
Personal Retrospectives - Johannes Thönes
Personal Retrospectives - Johannes ThönesPersonal Retrospectives - Johannes Thönes
Personal Retrospectives - Johannes Thönes
 

Recently uploaded

My Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle BaileyMy Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle Baileyhlharris
 
Dreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video TreatmentDreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video Treatmentnswingard
 
BDSM⚡Call Girls in Sector 97 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 97 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 97 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 97 Noida Escorts >༒8448380779 Escort ServiceDelhi Call girls
 
Uncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoUncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoKayode Fayemi
 
SaaStr Workshop Wednesday w/ Lucas Price, Yardstick
SaaStr Workshop Wednesday w/ Lucas Price, YardstickSaaStr Workshop Wednesday w/ Lucas Price, Yardstick
SaaStr Workshop Wednesday w/ Lucas Price, Yardsticksaastr
 
Report Writing Webinar Training
Report Writing Webinar TrainingReport Writing Webinar Training
Report Writing Webinar TrainingKylaCullinane
 
If this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New NigeriaIf this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New NigeriaKayode Fayemi
 
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptxChiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptxraffaeleoman
 
Sector 62, Noida Call girls :8448380779 Noida Escorts | 100% verified
Sector 62, Noida Call girls :8448380779 Noida Escorts | 100% verifiedSector 62, Noida Call girls :8448380779 Noida Escorts | 100% verified
Sector 62, Noida Call girls :8448380779 Noida Escorts | 100% verifiedDelhi Call girls
 
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfAWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfSkillCertProExams
 
No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...
No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...
No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...Sheetaleventcompany
 
Busty Desi⚡Call Girls in Sector 51 Noida Escorts >༒8448380779 Escort Service-...
Busty Desi⚡Call Girls in Sector 51 Noida Escorts >༒8448380779 Escort Service-...Busty Desi⚡Call Girls in Sector 51 Noida Escorts >༒8448380779 Escort Service-...
Busty Desi⚡Call Girls in Sector 51 Noida Escorts >༒8448380779 Escort Service-...Delhi Call girls
 
Presentation on Engagement in Book Clubs
Presentation on Engagement in Book ClubsPresentation on Engagement in Book Clubs
Presentation on Engagement in Book Clubssamaasim06
 
Air breathing and respiratory adaptations in diver animals
Air breathing and respiratory adaptations in diver animalsAir breathing and respiratory adaptations in diver animals
Air breathing and respiratory adaptations in diver animalsaqsarehman5055
 
Aesthetic Colaba Mumbai Cst Call girls 📞 7738631006 Grant road Call Girls ❤️-...
Aesthetic Colaba Mumbai Cst Call girls 📞 7738631006 Grant road Call Girls ❤️-...Aesthetic Colaba Mumbai Cst Call girls 📞 7738631006 Grant road Call Girls ❤️-...
Aesthetic Colaba Mumbai Cst Call girls 📞 7738631006 Grant road Call Girls ❤️-...Pooja Nehwal
 
Causes of poverty in France presentation.pptx
Causes of poverty in France presentation.pptxCauses of poverty in France presentation.pptx
Causes of poverty in France presentation.pptxCamilleBoulbin1
 
Thirunelveli call girls Tamil escorts 7877702510
Thirunelveli call girls Tamil escorts 7877702510Thirunelveli call girls Tamil escorts 7877702510
Thirunelveli call girls Tamil escorts 7877702510Vipesco
 
Dreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio IIIDreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio IIINhPhngng3
 
Introduction to Prompt Engineering (Focusing on ChatGPT)
Introduction to Prompt Engineering (Focusing on ChatGPT)Introduction to Prompt Engineering (Focusing on ChatGPT)
Introduction to Prompt Engineering (Focusing on ChatGPT)Chameera Dedduwage
 

Recently uploaded (20)

My Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle BaileyMy Presentation "In Your Hands" by Halle Bailey
My Presentation "In Your Hands" by Halle Bailey
 
Dreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video TreatmentDreaming Marissa Sánchez Music Video Treatment
Dreaming Marissa Sánchez Music Video Treatment
 
BDSM⚡Call Girls in Sector 97 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 97 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 97 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 97 Noida Escorts >༒8448380779 Escort Service
 
Uncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoUncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac Folorunso
 
SaaStr Workshop Wednesday w/ Lucas Price, Yardstick
SaaStr Workshop Wednesday w/ Lucas Price, YardstickSaaStr Workshop Wednesday w/ Lucas Price, Yardstick
SaaStr Workshop Wednesday w/ Lucas Price, Yardstick
 
Report Writing Webinar Training
Report Writing Webinar TrainingReport Writing Webinar Training
Report Writing Webinar Training
 
If this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New NigeriaIf this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New Nigeria
 
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptxChiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptx
 
Sector 62, Noida Call girls :8448380779 Noida Escorts | 100% verified
Sector 62, Noida Call girls :8448380779 Noida Escorts | 100% verifiedSector 62, Noida Call girls :8448380779 Noida Escorts | 100% verified
Sector 62, Noida Call girls :8448380779 Noida Escorts | 100% verified
 
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfAWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
 
No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...
No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...
No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...
 
Busty Desi⚡Call Girls in Sector 51 Noida Escorts >༒8448380779 Escort Service-...
Busty Desi⚡Call Girls in Sector 51 Noida Escorts >༒8448380779 Escort Service-...Busty Desi⚡Call Girls in Sector 51 Noida Escorts >༒8448380779 Escort Service-...
Busty Desi⚡Call Girls in Sector 51 Noida Escorts >༒8448380779 Escort Service-...
 
Presentation on Engagement in Book Clubs
Presentation on Engagement in Book ClubsPresentation on Engagement in Book Clubs
Presentation on Engagement in Book Clubs
 
ICT role in 21st century education and it's challenges.pdf
ICT role in 21st century education and it's challenges.pdfICT role in 21st century education and it's challenges.pdf
ICT role in 21st century education and it's challenges.pdf
 
Air breathing and respiratory adaptations in diver animals
Air breathing and respiratory adaptations in diver animalsAir breathing and respiratory adaptations in diver animals
Air breathing and respiratory adaptations in diver animals
 
Aesthetic Colaba Mumbai Cst Call girls 📞 7738631006 Grant road Call Girls ❤️-...
Aesthetic Colaba Mumbai Cst Call girls 📞 7738631006 Grant road Call Girls ❤️-...Aesthetic Colaba Mumbai Cst Call girls 📞 7738631006 Grant road Call Girls ❤️-...
Aesthetic Colaba Mumbai Cst Call girls 📞 7738631006 Grant road Call Girls ❤️-...
 
Causes of poverty in France presentation.pptx
Causes of poverty in France presentation.pptxCauses of poverty in France presentation.pptx
Causes of poverty in France presentation.pptx
 
Thirunelveli call girls Tamil escorts 7877702510
Thirunelveli call girls Tamil escorts 7877702510Thirunelveli call girls Tamil escorts 7877702510
Thirunelveli call girls Tamil escorts 7877702510
 
Dreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio IIIDreaming Music Video Treatment _ Project & Portfolio III
Dreaming Music Video Treatment _ Project & Portfolio III
 
Introduction to Prompt Engineering (Focusing on ChatGPT)
Introduction to Prompt Engineering (Focusing on ChatGPT)Introduction to Prompt Engineering (Focusing on ChatGPT)
Introduction to Prompt Engineering (Focusing on ChatGPT)
 

Pushing Java EE outside of the Enterprise: Home Automation and IoT - David Delabassee

  • 1. Pushing Java EE outside of the Enterprise JAX London Oct.2014 David Delabassee (@delabassee) Oracle Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | 1
  • 2. Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | 2
  • 3. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Program Agenda Home Automation Java EE Demo Wrap-­‐up 1 2 3 4 3
  • 4. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Program Agenda Home Automation Java EE Demo Wrap-­‐up 1 2 3 4 4
  • 5. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Home Automation • “Devices” control - Lights, windows, blinders, audio, doors, wall-­‐plugs, heating, etc. - From different “terminal” • Monitoring & dashboard - Power consumption, weather, motion/presence, intrusion, etc. • Scenario, scene, scheduling & automation • “Flexible” configuration Features 5
  • 6. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Home Automation Benefits • Better control • Improves day-­‐to-­‐day life • Improves security • More Eco friendly • … 6
  • 7. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Home Automation Market • Crowded space • Just the beginning! • IoT 7
  • 8. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Home Automation Technologies • X10 / PCLBUS • RF433 • EnOcean • Z-­‐Wave • ZigBee • Domologic 8 • Domintell • NikoBus / HomeControl • Chacon / DI-­‐O • Somfy RTS • io-­‐homecontrol • VelBus • Domologic • KNX • BLE • HomeKit • Thread • …
  • 9. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Home Automation • Sensors - Switches, motion, temperature, CO2, humidity, wind speed, etc. • Actuators - Lights, blinders, windows, doors, audio, wall-­‐plugs, etc. • Network - Wired or/and wireless + TCP/IP • Hub, box, gateway, … - Provides added values Actors 9
  • 10. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Z-­‐Wave “Z-­‐Wave, The Interoperable Standard” • “Interoperable wireless RF-­‐based communications technology designed for control, monitoring and status reading applications in residential and light commercial environments.” • Proprietary • Z-­‐Wave Alliance - Consortium of 250 manufacturers and service providers worldwide ! http://www.z-­‐wavealliance.org 10
  • 11. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Z-­‐Wave “Z-­‐Wave, The Interoperable Standard” • Meshed wireless network • Range 100 ft (open-­‐sight) • 232 modules per controller • Cheap and simple 11
  • 12. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Connectivity • Physical connectivity - Razberry-­‐Pi Daughter Card - Aeon Labs Z-­‐Stick, … • Middleware - OpenZwave - RaZberry / Z-­‐Wave-­‐me / Z-­‐Way - Domoticz, … 12
  • 13. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Principles 13 Switch Z-­‐Wave Chip 1 1 Z-­‐Wave Midd. App. Set(0) Set(0) Set(0) Get() Get() 1 (inv.) 0 (valid.) 0
  • 14. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | In real life 14
  • 15. “The worldwide STANDARD for home and building control” - 40,189 KNX Partners in 125 countries - 100 Scientific Partners in 28 countries - 13 User clubs in 12 countries Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | KNX • ISO/IEC 14543-­‐3 • KNX Association - 340 KNX Members in 37 countries - 40 KNX National Groups - 275 Training Centres in 51 countries ! http://www.knx.org 15
  • 16. “The worldwide STANDARD for home and building control” Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | KNX • Media - TP, PL, RF and IP • Engineering Tool Software - Manufacturer independent configuration software tool - Design and configure intelligent home and building KNX installations 16
  • 17. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Connectivity • Physical connectivity - KNX/USB Router - KNX/IP Router - Eelectron Raspberry Pi KNX interface 17
  • 18. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Calimero • Java library for KNX/EIB applications - KNX Network services and data encodings - Routing - Local device management - Datapoint type and property type translation - ETS4 import, … • Java ME CDC Foundation Profile • http://calimero.sourceforge.net 18
  • 19. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Config only Optional Principles KNX Bus Bus Power Supply IP KNX KNX Output module KNX Input module ETS IP Controller Gateway … 110/220v 19
  • 20. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | In real life 20
  • 21. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Z-­‐Wave Vs. KNX • Proprietary • 232 devices per controller • Residential grade • Wireless, more sensible • Powered via batteries and PL • Controller is the Single PoF • Simple, non intrusive • Cheap • ISO Standard • Up to 58.000 bus devices • Industrial, professional grade • Wired, more reliable • Powered through the Bus • No real PoF • Complex, intrusive • Expensive 21
  • 22. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Program Agenda Home Automation Java EE Demo Wrap-­‐up 1 2 3 4 22
  • 23. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Java EE ENTERPRISE EDITION ▪Batch ▪Concurrency ▪Simplified JMS DEVELOPER PRODUCTIVITY ▪More annotated POJOs ▪Less boilerplate code ▪Cohesive integrated platform ▪WebSockets ▪JSON ▪Servlet 3.1 NIO ▪REST MEETING ENTERPRISE DEMANDS Java EE 7 23
  • 24. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Java EE ENTERPRISE EDITION Java EE 24 • Connectivity - EE to clients - EE to HA • Events
  • 25. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | JSON-­‐P • API to parse and generate JSON • Streaming API (javax.json.stream) - Low-­‐level, efficient way to parse/generate JSON - Similar to StAX API in XML world • Object model API (javax.json) - Simple, easy to use high-­‐level API - Similar to DOM API in XML world JSR 353 25
  • 26. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | public class Notification { ! // bunch of Getters & Setters ! public String toJson() { JsonObject model = Json.createObjectBuilder() .add("source", getSource()) .add("target", getTarget()) .add("val", getValue()) .add("type", getType()) .add("medium", getMedium()) .add("cyclic", isCyclic()) .add("time", getTimestamp()) .build(); return model; } 26 JSON-­‐P
  • 27. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Java API for Web Socket • Bidirectional full-­‐duplex messaging - Initial HTTP handshake - Over a single TCP connection • IETF defined protocol: RFC 6455 • HTML5 / W3C defined JavaScript API • JSR 356 - Client & Server API JSR 356 27
  • 28. WebSocket Server Endpoint (1/2) @ServerEndpoint("/wsEndPt") public class InboundWebsocket implements Serializable { ! static Queue<Session> queue = new ConcurrentLinkedQueue<>(); @OnOpen public void openConnection(Session session) { Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | queue.add(session); } ! public void onEvent(Notification notif) { sendAllEndpoints(notif.toJson()); } ! … 28
  • 29. WebSocket Server Endpoint (2/2) Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | ! … public static synchronized void sendAllEndpoints(String payload) { try { for (Session session : queue) { if (session.isOpen()) { session.getBasicRemote().sendText(payload); } } } catch (IOException e) { // Oooops } } 29
  • 30. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | WebSocket Client Endpoint function connect() { wsocket = new WebSocket('ws://' + window.location.host + '/dashboard/wsEndPt'); wsocket.onmessage = onMessage; } ! function onMessage(evt) { jsonData = JSON.parse(evt.data); targetDiv = jsonData.target; var myDiv = document.getElementById(targetDiv); ! if (jsonData.type === "switch") { if (jsonData.val === "true") value = "ON"; else value = "OFF"; } else value = jsonData.val; $(myDiv).text(value); } 30
  • 31. Contexts and Dependency Injection for Java EE 1.1 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | JSR 346 • Core component model - Enabled by default in implicit bean archives • Expanded use of CDI Interceptors - Transactional interceptors - Method-­‐level validation interceptors • New CDI scopes - @TransactionScoped - @FlowScoped 31
  • 32. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | CDI Events • Observer Design Pattern • Defined by - A java object (the event object) - Event Qualifier(s) JSR 346 32
  • 33. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | CDI Events JSR 346 33 !public class producerClass { ! @Inject Event<SomeEvent> someEvent; public void someMethod(...) { ... someEvent.fire(myEvent); } } !public class anotherClass { public void someObserver(@Observes SomeEvent someEvent ) { ... ! } }
  • 34. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | 34 CDI Events MDB ! @MessageDriven( … ) public class KnxMdb implements KnxListener { ! @Inject @HomeEvent Event<Notification> homeEvent; ! @KnxMessage(type="sensor") public void handleKnxSensor(Notification notif) { … homeEvent.fire(notif); } ! }
  • 35. CDI Events @ServerEndpoint("/wsEndPt") public class InboundWebsocket implements Serializable { Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | !! @Inject @HomeEvent Event<Notification> homeEvent; ! @OnOpen public void openConnection(Session session) { … } ! public void onEvent(@Observes @HomeEvent Notification notif) { sendAllEndpoints(notif.toJson()); } … 35 WebSocker Server Endpoint
  • 36. Java API for RESTful Web Services 2.0 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • Filters and Interceptors • Asynchronous Processing • Hypermedia • Validation • Client API JSR 339 36
  • 37. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | JAX-­‐RS Client !! private void zwaveCommand(String url, String node, boolean val) { //http://host/ZWaveAPI/Run/devices[3].instances[0].commandClasses[0x25].Set(false) ! String zwaveUrl = url + node + ".Set(" + val + ")"; ! private final Client jaxrsClient = ClientBuilder.newClient(); ! String zwaveResp = jaxrsClient.target(zwaveUrl) .request(MediaType.TEXT_PLAIN_TYPE) .get(String.class); } 37
  • 38. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | REST Endpoint ! @Path("/zwave") public class ZwaveEndpoint { @Inject @HomeEvent Event<Notification> homeEvent; ! @PUT @Path("/{id}/{val}/") @Produces("text/plain") public String swithZ(@PathParam("id") String id, @PathParam("val") String val) { Notification notif = new Notification(id, "switch" , val, "ZWAVE"); notif.setTarget(id); // target is required to identify the Zwave device notif.setValue(val); homeEvent.fire(notif); } ! } 38
  • 39. Java Connector Architecture 1.7 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • Resource Adapter - JCA component for a specific EIS - Mediates communication between the container and the EIS by means of contracts - Packaged as a RAR • EIS - Packaged Applications, ERP, CICS, mail server, MoM, etc. • Contracts - Lifecycle, Connection (inc. pooling), TX, Work Management, CCI, … 39 JSR 322
  • 40. Java Connector Architecture 1.7 Outbound Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | 40 JSR 322 Java EE Container Java EE Application Resource Adapter EIS Inbound
  • 41. Java Connector Architecture 1.7 Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | 41 JSR 322 Java EE Container Java EE Application Resource Adapter EIS MDB Inbound
  • 42. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Message Driven Bean @MessageDriven ( activationConfig = { @ActivationConfigProperty( propertyName="destinationLookup", propertyValue="…"), @ActivationConfigProperty( propertyName="destinationType", propertyValue="javax.jms.Queue") } ) ! public class MyJmsMdb implements MessageListener { @Override public void onMessage(Message message) { //do the work } ! } 42 JMS
  • 43. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Message Driven Bean 43 • “A MDB is an asynchronous message consumer…” • “A MDB is invoked by the container as a result of the arrival of a message at the destination or endpoint that is serviced by the MDB…” • “MDB listen to an Inbound Ressource Adapter” - Eg. JMS
  • 44. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | 44 Message Driven Bean KNX @MessageDriven( activationConfig = { @ActivationConfigProperty( propertyName = “knx", propertyValue = "10.0.0.60") } ) ! public class KnxMdb implements KnxListener { ! @Override public void onMessage(Message message) { //handle the KNX Message } ! }
  • 45. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | 45 Message Driven Bean KNX @MessageDriven( activationConfig = { @ActivationConfigProperty( propertyName = “knx", propertyValue = "10.0.0.60") } ) ! !public class KnxMdb implements KnxListener { @KnxMessage(type="sensor") public void handleKnxSensor(Notification notif) { … } @KnxMessage(type=“switch") public void switchKnx(Notification notif) { … } ! }
  • 46. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Inbound RA • public interface KnxListener { } - Will be implemented by the MDB • public class KnxResourceAdapter implements ResourceAdapter {…} - Do the actual work, without real constraints (e.g. threads) - Handle MDB activation - Will listen on the KNX bus via WorkManager • public class KnxActivationSpec implements ActivationSpec {…} - Expose RA configuration to the application !! 46
  • 47. Inbound RA @Override public void endpointActivation(MessageEndpointFactory endpointFactory, ActivationSpec spec) throws ResourceException { Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | tSpec = (TrafficActivationSpec) spec; Class endpointClass = endpointFactory.getEndpointClass(); tSpec.setBeanClass(endpointClass); tSpec.findCommandsInMDB(); ObtainEndpointWork work = new ObtainEndpointWork(this, endpointFactory); workManager.scheduleWork(work); } 47
  • 48. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Inbound RA public void findCommandsInMDB() { ! for (Method method : beanClass.getMethods()) { if (method.isAnnotationPresent(KnxMessage.class)) { KnxMessage tCommand = method.getAnnotation(KnxMessage.class); commands.put(tCommand.type(), method); } } … } 48
  • 49. KNX (real) Listener // KNX ProcessedEvent from the Calimero stack switch (actor) { Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | case "0/7/4": messageType = "sensor"; notif.setType("humidity"); processedEvent = Float.toString(knxSensorHumidity(pe)); notif.setValue(processedEvent); // and so on… break; } ! if (spec.getCommands().containsKey(messageType)) { // Does the MDB support this message? Method mdbMethod = spec.getCommands().get(messageType); try { callMdb(mdb, mdbMethod, notif); } catch (ResourceException ex) { // Ooops! } } else { // Unknown command ?! } 49
  • 50. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | KnxMessage ! /* Annotation to decorate methods in the MDB */ @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface KnxMessage { String type() default ""; String info() default ""; } 50
  • 51. Inbound connector private Notif callMdb(MessageEndpoint mdb, Method command, Notification param) Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | throws ResourceException { ! try { mdb.beforeDelivery(command); Object ret = command.invoke(mdb, param); notif = (Notif) ret; } catch (NoSuchMethodException | ResourceException | IllegalAccessException | IllegalArgumentException |InvocationTargetException ex) { // MDB invocation error :( … } mdb.afterDelivery(); return notif; } 51
  • 52. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | KNX MDB 52 @MessageDriven( activationConfig = { @ActivationConfigProperty( propertyName = “knx", propertyValue = "10.0.0.60") } ) ! public class KnxMdb implements KnxListener { ! @KnxMessage(type="sensor") public void handleKnxSensor(Notification notif) { … } @KnxMessage(type=“switch") public void switchKnx(Notification notif) { … } ! }
  • 53. Java Connector Architecture 1.7 Outbound Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | 53 JSR 322 Java EE Container Java EE Application Resource Adapter EIS
  • 54. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | And more… • EJB • CDI Interceptors • JAX-­‐RS Interceptors • Concurrency Utilities for Java EE • Java Persistence API • JavaServer Faces • OpenMQ Stomp support • Jersey SSE, MVC… 54
  • 55. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Program Agenda Home Automation Java EE Demo Wrap-­‐up 1 2 3 4 55
  • 56. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Dashboard • HTML Client - “Pure” JS - Real-­‐time notifications via WebSocket - Control devices via REST • Java EE 7 backend - KNX (JCA) & Z-­‐Wave (REST) - In & Outbound 56
  • 57. KNX Sensors Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | KNX Bus Bus Power Supply IP KNX KNX Output module VPN IP Java EE 110/220v 57 KNX Output module KNX Input module KNX Input module KNX Input module Z-­‐Wave Output module Z-­‐Wave KNX Sensors Z-­‐Wave Input module Demo JCA REST
  • 58. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Program Agenda Home Automation Java EE Demo Wrap-­‐up 1 2 3 4 58
  • 59. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | • Connectivity - JAX-­‐RS, JCA, WebSocket, JMS… • ‘Event’ driven capabilities - MDB, CDI event • Non blocking IO • Asynchronous • Scheduling • Persistence • Component models • UI - JSF, JAX-­‐RS • Container - Lifecycle - Monitoring & Management - Ressources pooling - Logging - … Java EE for Home Automation 59
  • 60. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | What’s next • PoC - KNX, Z-­‐Wave & InfraRed • Improvements - Additional ‘connectors’, e.g. RF433 - More types, e.g. range for blinders - State Management - User interface - Add ‘scenario’s - Leverage Java EE more, e.g. CDI Interceptors 60
  • 61. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Java EE and IoT • Connected devices • Messages / data producer • Data aggregation / processing - Deeper in the network • Scaling • Security 61
  • 62. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Java EE 8 • CDI 2.0 • JMS 2.1 • MVC 1.0 • JAX-­‐RS 2.1 • JSON-­‐B + JSON-­‐P TBC! 62
  • 63. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | Resources • The Java EE 7 Tutorial - http://docs.oracle.com/javaee/7/tutorial/doc/home.htm • GlassFish 4.1 - http://glassfish.org • NetBeans 8.0.1 - http://netbeans.org 63
  • 64. Copyright © 2014, Oracle and/or its affiliates. All rights reserved. | 64
  • 65. 65