SlideShare a Scribd company logo
1 of 55
Download to read offline
Pushing	
  Java	
  EE	
  outside	
  of	
  the	
  

Enterprise
Codemotion	
  Tel	
  Aviv	
  
November	
  2014
David	
  Delabassee	
  (@delabassee)	
  
Oracle
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
1
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
Program	
  Agenda
Home	
  Automation	
  
Java	
  EE	
  
Demo	
  
Wrap-­‐up	
  
1
2
3
4
2Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
Home	
  Automation
• “Devices”	
  control	
  
• Monitoring	
  &	
  dashboard	
  
• Scenario,	
  scene,	
  scheduling	
  &	
  automation	
  
• “Flexible”	
  configuration	
  
3
Features
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
Home	
  Automation
• Better	
  control	
  
• Improves	
  day-­‐to-­‐day	
  life	
  
• Improves	
  security	
  
• More	
  Eco	
  friendly	
  
• …
4
Benefits
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
Home	
  Automation
• X10	
  /	
  PCLBUS	
  
• RF433	
  
• PCLBUS	
  	
  
• Z-­‐Wave	
  
• ZigBee	
  
• Somfy	
  RTS
5
Market
• Domintell	
  
• NikoBus	
  /	
  HomeControl	
  
• Chacon	
  /	
  DI-­‐O	
  
• Domologic	
  
• VelBus	
  
• KNX	
  
• EnOcean	
  
• BLE	
  
• HomeKit	
  
• Thread	
  
• …	
  
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
Home	
  Automation
• Sensors	
  
• Actuators	
  
• Network	
  
- Wired	
  or/and	
  wireless	
  +	
  TCP/IP	
  
• Hub,	
  box,	
  gateway,	
  …
6
Actors
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
Z-­‐Wave
• “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
7
“Z-­‐Wave,	
  The	
  Interoperable	
  Standard”
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
Z-­‐Wave
• Meshed	
  wireless	
  network	
  
• Range	
  100	
  ft	
  
• 232	
  modules	
  per	
  controller	
  
• Cheap	
  and	
  simple
8
“Z-­‐Wave,	
  The	
  Interoperable	
  Standard”
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
Principles
9
Switch
Z-­‐Wave	
  
Chip
Z-­‐Wave	
  
Midd.
App.
1
1
Set(0)
Set(0)Set(0)
Get()
Get()
1	
  (inv.)
0	
  (valid.) 0
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,	
  …
10
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
“In	
  real	
  life”
11
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
12
“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
• Media	
  
- TP,	
  PL,	
  RF	
  and	
  IP	
  
• Engineering	
  Tool	
  Software	
  
- “Manufacturer	
  independent	
  configuration	
  software	
  tool”	
  
- “Design	
  and	
  configure	
  intelligent	
  home	
  and	
  building	
  KNX	
  installations”
13
“The	
  worldwide	
  STANDARD	
  for	
  home	
  and	
  building	
  control”
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
14
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
Config	
  only Optional
Principles
15
KNX	
  Bus
Bus	
  
Power	
  
Supply
IP	
  KNX
KNX	
  
Output	
  
module
KNX	
  
Input	
  
module
ETS
IP
Controller	
  
Gateway	
  
…
110/220v
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
Connectivity
• Physical	
  connectivity	
  
- KNX/USB	
  Router	
  
- KNX/IP	
  Router	
  
- Eelectron	
  Raspberry	
  Pi	
  KNX	
  interface
16
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
“In	
  real	
  life”
17
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  | 18
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/less,	
  more	
  reliable	
  
• Powered	
  through	
  the	
  Bus	
  
• No	
  real	
  PoF	
  
• Complex,	
  intrusive	
  
• Expensive
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
Program	
  Agenda
Home	
  Automation	
  
Java	
  EE	
  
Demo	
  
Wrap-­‐up	
  
19
1
2
3
4
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
Java	
  EE
20
ENTERPRISE
EDITION
▪Batch
▪Concurrency
▪Simplified JMS
▪More annotated POJOs
▪Less boilerplate code
▪Cohesive integrated platform
DEVELOPER
PRODUCTIVITY
▪WebSockets
▪JSON
▪Servlet 3.1 NIO
▪REST
MEETING 

ENTERPRISE
DEMANDS
Java EE 7
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
Java	
  EE ENTERPRISE
EDITION
Java EE
• Connectivity	
  
- Java	
  EE	
  to	
  clients	
  
- Java	
  EE	
  to	
  “HA”	
  
• Events
21
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
22
JSR	
  353
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;	
  
}
JSON-­‐P
23
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
24
JSR	
  356
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
@ServerEndpoint("/wsEndPt")	
  
public	
  class	
  InboundWebsocket	
  implements	
  Serializable	
  {	
  
!
	
  	
  	
  	
  static	
  Queue<Session>	
  queue	
  =	
  new	
  ConcurrentLinkedQueue<>();	
  
	
  	
  	
  	
  
	
  	
  	
  	
  @OnOpen	
  
	
  	
  	
  	
  public	
  void	
  openConnection(Session	
  session)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  queue.add(session);	
  
	
  	
  	
  	
  }	
  
!
	
  	
  	
  	
  public	
  void	
  onEvent(Notification	
  notif)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  sendAllEndpoints(notif.toJson());	
  
	
  	
  	
  	
  }	
  
!
	
  	
  	
  	
  …
WebSocket	
  Server	
  Endpoint	
  (1/2)
25
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	
  
	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  }
WebSocket	
  Server	
  Endpoint	
  (2/2)
26
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
	
  	
  	
  	
  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);	
  
	
  	
  	
  	
  }
WebSocket	
  Client	
  Endpoint	
  
27
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
Contexts	
  and	
  Dependency	
  Injection	
  for	
  Java	
  EE	
  1.1
• 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
28
JSR	
  346
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)
29
JSR	
  346
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
CDI	
  Events
30
JSR	
  346
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.	
  	
  |
!
public	
  class	
  KnxMdb	
  implements	
  KnxListener	
  {	
  
!
	
  	
  	
  	
  @Inject	
  
	
  	
  	
  	
  @HomeEvent	
  
	
  	
  	
  	
  Event<Notification>	
  homeEvent;	
  	
  
!
	
  	
  	
  	
  @KnxMessage(type="sensor")	
  
	
  	
  	
  	
  public	
  void	
  handleKnxSensor(Notification	
  notif)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  …	
  
	
  	
  	
  	
  	
  	
  	
  	
  homeEvent.fire(notif);	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  }	
  
	
  	
  	
  	
  
!
}
CDI	
  Events
31
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
@ServerEndpoint("/wsEndPt")	
  
public	
  class	
  InboundWebsocket	
  implements	
  Serializable	
  {	
  
!
!
	
  	
  	
  	
  @Inject	
  
	
  	
  	
  	
  @HomeEvent	
  
	
  	
  	
  	
  Event<Notification>	
  homeEvent;	
  
!
	
  	
  	
  	
  @OnOpen	
  
	
  	
  	
  	
  public	
  void	
  openConnection(Session	
  session)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  …	
  
	
  	
  	
  	
  }	
  
!
	
  	
  	
  	
  public	
  void	
  onEvent(@Observes	
  @HomeEvent	
  Notification	
  notif)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  sendAllEndpoints(notif.toJson());	
  
	
  	
  	
  	
  }	
  
	
  	
  	
  	
  …
CDI	
  Events
32
WebSocker	
  Server	
  Endpoint
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
Java	
  API	
  for	
  RESTful	
  Web	
  Services	
  	
  2.0
• Filters	
  and	
  Interceptors	
  
• Asynchronous	
  Processing	
  
• Hypermedia	
  
• Validation	
  
• Client	
  API
33
JSR	
  339
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
!
!
	
  	
  	
  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);	
  
	
  	
  	
  }	
  
JAX-­‐RS	
  Client
34
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
!
@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);	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  }	
  
!
}
REST	
  Endpoint
35
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
Java	
  Connector	
  Architecture	
  1.7
• 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,	
  …
36
JSR	
  322
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
Java	
  Connector	
  Architecture	
  1.7
37
JSR	
  322
Java	
  EE	
  
Application
Java	
  EE	
  Container
Resource	
  
Adapter
EIS
Outbound
Inbound
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
Java	
  Connector	
  Architecture	
  1.7
38
JSR	
  322
Java	
  EE	
  
Application
Java	
  EE	
  Container
Resource	
  
Adapter
EIS
InboundMDB
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
@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	
  	
  
	
  	
  	
  	
  	
  }	
  
!
}
JMS
Message	
  Driven	
  Bean
39
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
Message	
  Driven	
  Bean
40
• “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.	
  	
  |
@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	
  	
  
	
  	
  	
  	
  	
  }	
  
!
}
Message	
  Driven	
  Bean
41
KNX
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
@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)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  …	
  
	
  	
  	
  	
  }	
  
!
}
Message	
  Driven	
  Bean
42
KNX
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
• 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	
  
!
!
Inbound	
  RA
43
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
KNX	
  MDB
44
@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.	
  	
  |
Java	
  Connector	
  Architecture	
  1.7
45
JSR	
  322
Java	
  EE	
  
Application
Java	
  EE	
  Container
Resource	
  
Adapter
EIS
Outbound
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
And	
  more…
• CDI	
  Interceptors	
  
• JAX-­‐RS	
  Interceptors	
  	
  
• Concurrency	
  Utilities	
  for	
  Java	
  EE	
  
• Java	
  Persistence	
  API	
  
• OpenMQ	
  Stomp	
  support	
  
• Jersey	
  SSE,	
  MVC…
46
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
Program	
  Agenda
Home	
  Automation	
  
Java	
  EE	
  
Demo	
  
Wrap-­‐up	
  
47
1
2
3
4
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
48
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
KNX	
  
Sensors
KNX	
  Bus
Bus	
  
Power	
  
Supply
IP	
  KNX
KNX	
  
Output	
  
module
VPN
IP
Java	
  EE
110/220v 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
49
JCA
RESTREST	
  +	
  WS
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
Program	
  Agenda
Home	
  Automation	
  
Java	
  EE	
  
Demo	
  
Wrap-­‐up	
  
50
1
2
3
4
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  |
• Connectivity	
  
- JAX-­‐RS,	
  JCA,	
  WebSocket	
  
• ‘Event’	
  driven	
  capabilities	
  
- MDB,	
  CDI	
  event	
  
• Async	
  Non	
  blocking	
  IO	
  
• Scheduling	
  
• Persistence	
  
• UI
• Component	
  models	
  
• Container	
  
- Lifecycle	
  
- Monitoring	
  &	
  Management	
  
- Ressources	
  pooling	
  
- Logging	
  
- …
Java	
  EE	
  for	
  Home	
  Automation
51
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”	
  
- State	
  Management	
  
- User	
  interface	
  
- Add	
  ‘scenario’s	
  
- Leverage	
  Java	
  EE	
  more,	
  e.g.	
  CDI	
  Interceptors
52
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
53
Safe	
  Harbor	
  Statement
The	
  preceding	
  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.	
  	
  | 54
Copyright	
  ©	
  2014,	
  Oracle	
  and/or	
  its	
  affiliates.	
  All	
  rights	
  reserved.	
  	
  | 55

More Related Content

What's hot

Using Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systemsUsing Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systemsSerge Stinckwich
 
The First Mile - Edge and IoT Data Collection With Apache Nifi and MiniFi
The First Mile - Edge and IoT Data Collection With Apache Nifi and MiniFiThe First Mile - Edge and IoT Data Collection With Apache Nifi and MiniFi
The First Mile - Edge and IoT Data Collection With Apache Nifi and MiniFiDataWorks Summit
 
Lessons Learned Running a Container Cloud on Apache Hadoop YARN
Lessons Learned Running a Container Cloud on Apache Hadoop YARNLessons Learned Running a Container Cloud on Apache Hadoop YARN
Lessons Learned Running a Container Cloud on Apache Hadoop YARNBillie Rinaldi
 
Sparc m6 32 in-memory infrastructure for the entire enterprise
Sparc m6 32 in-memory infrastructure for the entire enterpriseSparc m6 32 in-memory infrastructure for the entire enterprise
Sparc m6 32 in-memory infrastructure for the entire enterprisesolarisyougood
 
2015 UJUG, Servlet 4.0 portion
2015 UJUG, Servlet 4.0 portion2015 UJUG, Servlet 4.0 portion
2015 UJUG, Servlet 4.0 portionmnriem
 
Hortonworks Technical Workshop: Interactive Query with Apache Hive
Hortonworks Technical Workshop: Interactive Query with Apache Hive Hortonworks Technical Workshop: Interactive Query with Apache Hive
Hortonworks Technical Workshop: Interactive Query with Apache Hive Hortonworks
 
One Click Hadoop Clusters - Anywhere (Using Docker)
One Click Hadoop Clusters - Anywhere (Using Docker)One Click Hadoop Clusters - Anywhere (Using Docker)
One Click Hadoop Clusters - Anywhere (Using Docker)DataWorks Summit
 
Dataflow Management From Edge to Core with Apache NiFi
Dataflow Management From Edge to Core with Apache NiFiDataflow Management From Edge to Core with Apache NiFi
Dataflow Management From Edge to Core with Apache NiFiDataWorks Summit
 
BYOP: Custom Processor Development with Apache NiFi
BYOP: Custom Processor Development with Apache NiFiBYOP: Custom Processor Development with Apache NiFi
BYOP: Custom Processor Development with Apache NiFiDataWorks Summit
 
Next Generation Execution Engine for Apache Storm
Next Generation Execution Engine for Apache StormNext Generation Execution Engine for Apache Storm
Next Generation Execution Engine for Apache StormDataWorks Summit
 
Build Cloud Applications with Akka and Heroku
Build Cloud Applications with Akka and HerokuBuild Cloud Applications with Akka and Heroku
Build Cloud Applications with Akka and HerokuSalesforce Developers
 
Hadoop {Submarine} Project: Running Deep Learning Workloads on YARN
Hadoop {Submarine} Project: Running Deep Learning Workloads on YARNHadoop {Submarine} Project: Running Deep Learning Workloads on YARN
Hadoop {Submarine} Project: Running Deep Learning Workloads on YARNDataWorks Summit
 
Building Your Data Streams for all the IoT
Building Your Data Streams for all the IoTBuilding Your Data Streams for all the IoT
Building Your Data Streams for all the IoTDevOps.com
 

What's hot (20)

Using Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systemsUsing Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systems
 
16 (IDNOG01) EDNS0 / How CDNS works by Matt Jansen
16 (IDNOG01) EDNS0 / How CDNS works by Matt Jansen16 (IDNOG01) EDNS0 / How CDNS works by Matt Jansen
16 (IDNOG01) EDNS0 / How CDNS works by Matt Jansen
 
An Overview of Ambari
An Overview of AmbariAn Overview of Ambari
An Overview of Ambari
 
The First Mile - Edge and IoT Data Collection With Apache Nifi and MiniFi
The First Mile - Edge and IoT Data Collection With Apache Nifi and MiniFiThe First Mile - Edge and IoT Data Collection With Apache Nifi and MiniFi
The First Mile - Edge and IoT Data Collection With Apache Nifi and MiniFi
 
Lessons Learned Running a Container Cloud on Apache Hadoop YARN
Lessons Learned Running a Container Cloud on Apache Hadoop YARNLessons Learned Running a Container Cloud on Apache Hadoop YARN
Lessons Learned Running a Container Cloud on Apache Hadoop YARN
 
Oracle Storage a ochrana dat
Oracle Storage a ochrana datOracle Storage a ochrana dat
Oracle Storage a ochrana dat
 
Sparc m6 32 in-memory infrastructure for the entire enterprise
Sparc m6 32 in-memory infrastructure for the entire enterpriseSparc m6 32 in-memory infrastructure for the entire enterprise
Sparc m6 32 in-memory infrastructure for the entire enterprise
 
2015 UJUG, Servlet 4.0 portion
2015 UJUG, Servlet 4.0 portion2015 UJUG, Servlet 4.0 portion
2015 UJUG, Servlet 4.0 portion
 
Hortonworks Technical Workshop: Interactive Query with Apache Hive
Hortonworks Technical Workshop: Interactive Query with Apache Hive Hortonworks Technical Workshop: Interactive Query with Apache Hive
Hortonworks Technical Workshop: Interactive Query with Apache Hive
 
Apache Deep Learning 201
Apache Deep Learning 201Apache Deep Learning 201
Apache Deep Learning 201
 
One Click Hadoop Clusters - Anywhere (Using Docker)
One Click Hadoop Clusters - Anywhere (Using Docker)One Click Hadoop Clusters - Anywhere (Using Docker)
One Click Hadoop Clusters - Anywhere (Using Docker)
 
Dataflow Management From Edge to Core with Apache NiFi
Dataflow Management From Edge to Core with Apache NiFiDataflow Management From Edge to Core with Apache NiFi
Dataflow Management From Edge to Core with Apache NiFi
 
BYOP: Custom Processor Development with Apache NiFi
BYOP: Custom Processor Development with Apache NiFiBYOP: Custom Processor Development with Apache NiFi
BYOP: Custom Processor Development with Apache NiFi
 
Next Generation Execution Engine for Apache Storm
Next Generation Execution Engine for Apache StormNext Generation Execution Engine for Apache Storm
Next Generation Execution Engine for Apache Storm
 
Build Cloud Applications with Akka and Heroku
Build Cloud Applications with Akka and HerokuBuild Cloud Applications with Akka and Heroku
Build Cloud Applications with Akka and Heroku
 
Hadoop {Submarine} Project: Running Deep Learning Workloads on YARN
Hadoop {Submarine} Project: Running Deep Learning Workloads on YARNHadoop {Submarine} Project: Running Deep Learning Workloads on YARN
Hadoop {Submarine} Project: Running Deep Learning Workloads on YARN
 
SDN and metrics from the SDOs
SDN and metrics from the SDOsSDN and metrics from the SDOs
SDN and metrics from the SDOs
 
Building Your Data Streams for all the IoT
Building Your Data Streams for all the IoTBuilding Your Data Streams for all the IoT
Building Your Data Streams for all the IoT
 
MySQL Spatial
MySQL SpatialMySQL Spatial
MySQL Spatial
 
Apache NiFi Crash Course Intro
Apache NiFi Crash Course IntroApache NiFi Crash Course Intro
Apache NiFi Crash Course Intro
 

Viewers also liked (18)

O себе
O себеO себе
O себе
 
Franchising brochure-2015.compressed
Franchising brochure-2015.compressedFranchising brochure-2015.compressed
Franchising brochure-2015.compressed
 
Lesley S Fernandes Resume
Lesley S Fernandes ResumeLesley S Fernandes Resume
Lesley S Fernandes Resume
 
La briscola
La briscolaLa briscola
La briscola
 
16267 Holiday Survival Guide FINAL E
16267 Holiday Survival Guide FINAL E16267 Holiday Survival Guide FINAL E
16267 Holiday Survival Guide FINAL E
 
I l+overview+1
I l+overview+1I l+overview+1
I l+overview+1
 
B&D231-Jun016-tr
B&D231-Jun016-trB&D231-Jun016-tr
B&D231-Jun016-tr
 
Internet
InternetInternet
Internet
 
Eskoimoi
EskoimoiEskoimoi
Eskoimoi
 
Acquiring injuries compensation is not difficult
Acquiring injuries compensation is not difficultAcquiring injuries compensation is not difficult
Acquiring injuries compensation is not difficult
 
Swagger - Make your REST APIs accessible - Victor Trakhtenberg
Swagger - Make your REST APIs accessible - Victor TrakhtenbergSwagger - Make your REST APIs accessible - Victor Trakhtenberg
Swagger - Make your REST APIs accessible - Victor Trakhtenberg
 
Зимний словарик
Зимний словарикЗимний словарик
Зимний словарик
 
Lisboa (3)
Lisboa (3)Lisboa (3)
Lisboa (3)
 
Braganca intramuros
Braganca intramurosBraganca intramuros
Braganca intramuros
 
Jumlah rumah tangga ber phbs
Jumlah rumah tangga ber phbsJumlah rumah tangga ber phbs
Jumlah rumah tangga ber phbs
 
Oral presentation-ULCVs and their impacts on Container ports
Oral presentation-ULCVs and their impacts on Container portsOral presentation-ULCVs and their impacts on Container ports
Oral presentation-ULCVs and their impacts on Container ports
 
Question 3
Question 3Question 3
Question 3
 
Articles en mathematics_3
Articles en mathematics_3Articles en mathematics_3
Articles en mathematics_3
 

Similar to Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delabassee

Pushing Java EE outside of the Enterprise: Home Automation and IoT - David De...
Pushing Java EE outside of the Enterprise: Home Automation and IoT - David De...Pushing Java EE outside of the Enterprise: Home Automation and IoT - David De...
Pushing Java EE outside of the Enterprise: Home Automation and IoT - David De...JAXLondon2014
 
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
 
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
 
Ł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
 
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
 
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
 
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
 
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute InfodeckServlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute InfodeckEdward Burns
 
Introduction to MySQL
Introduction to MySQLIntroduction to MySQL
Introduction to MySQLTed Wennmark
 
2015 Java update and roadmap, JUG sevilla
2015  Java update and roadmap, JUG sevilla2015  Java update and roadmap, JUG sevilla
2015 Java update and roadmap, JUG sevillaTrisha Gee
 
WebSockets in Enterprise Applications
WebSockets in Enterprise ApplicationsWebSockets in Enterprise Applications
WebSockets in Enterprise ApplicationsPavel Bucek
 
Desayuno Tecnico OVN - Xsigo
Desayuno Tecnico OVN - XsigoDesayuno Tecnico OVN - Xsigo
Desayuno Tecnico OVN - XsigoFran Navarro
 
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
 
MySQL Cluster - Latest Developments (up to and including MySQL Cluster 7.4)
MySQL Cluster - Latest Developments (up to and including MySQL Cluster 7.4)MySQL Cluster - Latest Developments (up to and including MySQL Cluster 7.4)
MySQL Cluster - Latest Developments (up to and including MySQL Cluster 7.4)Andrew Morgan
 
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
 
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)jeckels
 
Real Life MAF (2.2) Oracle Open World 2015
Real Life MAF (2.2) Oracle Open World 2015Real Life MAF (2.2) Oracle Open World 2015
Real Life MAF (2.2) Oracle Open World 2015Luc Bors
 

Similar to Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delabassee (20)

Pushing Java EE outside of the Enterprise: Home Automation and IoT - David De...
Pushing Java EE outside of the Enterprise: Home Automation and IoT - David De...Pushing Java EE outside of the Enterprise: Home Automation and IoT - David De...
Pushing Java EE outside of the Enterprise: Home Automation and IoT - David De...
 
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 ...
 
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
 
Ł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...
 
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
 
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
 
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
 
Avatar 2.0
Avatar 2.0Avatar 2.0
Avatar 2.0
 
Oracle Database Cloud Service
Oracle Database Cloud ServiceOracle Database Cloud Service
Oracle Database Cloud Service
 
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute InfodeckServlet 4.0 Adopt-a-JSR 10 Minute Infodeck
Servlet 4.0 Adopt-a-JSR 10 Minute Infodeck
 
Introduction to MySQL
Introduction to MySQLIntroduction to MySQL
Introduction to MySQL
 
2015 Java update and roadmap, JUG sevilla
2015  Java update and roadmap, JUG sevilla2015  Java update and roadmap, JUG sevilla
2015 Java update and roadmap, JUG sevilla
 
WebSockets in Enterprise Applications
WebSockets in Enterprise ApplicationsWebSockets in Enterprise Applications
WebSockets in Enterprise Applications
 
Desayuno Tecnico OVN - Xsigo
Desayuno Tecnico OVN - XsigoDesayuno Tecnico OVN - Xsigo
Desayuno Tecnico OVN - Xsigo
 
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...
 
MySQL Cluster - Latest Developments (up to and including MySQL Cluster 7.4)
MySQL Cluster - Latest Developments (up to and including MySQL Cluster 7.4)MySQL Cluster - Latest Developments (up to and including MySQL Cluster 7.4)
MySQL Cluster - Latest Developments (up to and including MySQL Cluster 7.4)
 
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
 
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)
 
Real Life MAF (2.2) Oracle Open World 2015
Real Life MAF (2.2) Oracle Open World 2015Real Life MAF (2.2) Oracle Open World 2015
Real Life MAF (2.2) Oracle Open World 2015
 

More from Codemotion Tel Aviv

Keynote: Trends in Modern Application Development - Gilly Dekel, IBM
Keynote: Trends in Modern Application Development - Gilly Dekel, IBMKeynote: Trends in Modern Application Development - Gilly Dekel, IBM
Keynote: Trends in Modern Application Development - Gilly Dekel, IBMCodemotion Tel Aviv
 
Angular is one fire(base)! - Shmuela Jacobs
Angular is one fire(base)! - Shmuela JacobsAngular is one fire(base)! - Shmuela Jacobs
Angular is one fire(base)! - Shmuela JacobsCodemotion Tel Aviv
 
Demystifying docker networking black magic - Lorenzo Fontana, Kiratech
Demystifying docker networking black magic - Lorenzo Fontana, KiratechDemystifying docker networking black magic - Lorenzo Fontana, Kiratech
Demystifying docker networking black magic - Lorenzo Fontana, KiratechCodemotion Tel Aviv
 
Faster deep learning solutions from training to inference - Amitai Armon & Ni...
Faster deep learning solutions from training to inference - Amitai Armon & Ni...Faster deep learning solutions from training to inference - Amitai Armon & Ni...
Faster deep learning solutions from training to inference - Amitai Armon & Ni...Codemotion Tel Aviv
 
Facts about multithreading that'll keep you up at night - Guy Bar on, Vonage
Facts about multithreading that'll keep you up at night - Guy Bar on, VonageFacts about multithreading that'll keep you up at night - Guy Bar on, Vonage
Facts about multithreading that'll keep you up at night - Guy Bar on, VonageCodemotion Tel Aviv
 
Master the Art of the AST (and Take Control of Your JS!) - Yonatan Mevorach, ...
Master the Art of the AST (and Take Control of Your JS!) - Yonatan Mevorach, ...Master the Art of the AST (and Take Control of Your JS!) - Yonatan Mevorach, ...
Master the Art of the AST (and Take Control of Your JS!) - Yonatan Mevorach, ...Codemotion Tel Aviv
 
Unleash the power of angular Reactive Forms - Nir Kaufman, 500Tech
Unleash the power of angular Reactive Forms - Nir Kaufman, 500TechUnleash the power of angular Reactive Forms - Nir Kaufman, 500Tech
Unleash the power of angular Reactive Forms - Nir Kaufman, 500TechCodemotion Tel Aviv
 
Can we build an Azure IoT controlled device in less than 40 minutes that cost...
Can we build an Azure IoT controlled device in less than 40 minutes that cost...Can we build an Azure IoT controlled device in less than 40 minutes that cost...
Can we build an Azure IoT controlled device in less than 40 minutes that cost...Codemotion Tel Aviv
 
Actors and Microservices - Can two walk together? - Rotem Hermon, Gigya
Actors and Microservices - Can two walk together? - Rotem Hermon, GigyaActors and Microservices - Can two walk together? - Rotem Hermon, Gigya
Actors and Microservices - Can two walk together? - Rotem Hermon, GigyaCodemotion Tel Aviv
 
How to Leverage Machine Learning (R, Hadoop, Spark, H2O) for Real Time Proces...
How to Leverage Machine Learning (R, Hadoop, Spark, H2O) for Real Time Proces...How to Leverage Machine Learning (R, Hadoop, Spark, H2O) for Real Time Proces...
How to Leverage Machine Learning (R, Hadoop, Spark, H2O) for Real Time Proces...Codemotion Tel Aviv
 
My Minecraft Smart Home: Prototyping the internet of uncanny things - Sascha ...
My Minecraft Smart Home: Prototyping the internet of uncanny things - Sascha ...My Minecraft Smart Home: Prototyping the internet of uncanny things - Sascha ...
My Minecraft Smart Home: Prototyping the internet of uncanny things - Sascha ...Codemotion Tel Aviv
 
Distributed Systems explained (with NodeJS) - Bruno Bossola, JUG Torino
Distributed Systems explained (with NodeJS) - Bruno Bossola, JUG TorinoDistributed Systems explained (with NodeJS) - Bruno Bossola, JUG Torino
Distributed Systems explained (with NodeJS) - Bruno Bossola, JUG TorinoCodemotion Tel Aviv
 
Containerised ASP.NET Core apps with Kubernetes
Containerised ASP.NET Core apps with KubernetesContainerised ASP.NET Core apps with Kubernetes
Containerised ASP.NET Core apps with KubernetesCodemotion Tel Aviv
 
Fullstack DDD with ASP.NET Core and Anguar 2 - Ronald Harmsen, NForza
Fullstack DDD with ASP.NET Core and Anguar 2 - Ronald Harmsen, NForzaFullstack DDD with ASP.NET Core and Anguar 2 - Ronald Harmsen, NForza
Fullstack DDD with ASP.NET Core and Anguar 2 - Ronald Harmsen, NForzaCodemotion Tel Aviv
 
The Art of Decomposing Monoliths - Kfir Bloch, Wix
The Art of Decomposing Monoliths - Kfir Bloch, WixThe Art of Decomposing Monoliths - Kfir Bloch, Wix
The Art of Decomposing Monoliths - Kfir Bloch, WixCodemotion Tel Aviv
 
SOA Lessons Learnt (or Microservices done Better) - Sean Farmar, Particular S...
SOA Lessons Learnt (or Microservices done Better) - Sean Farmar, Particular S...SOA Lessons Learnt (or Microservices done Better) - Sean Farmar, Particular S...
SOA Lessons Learnt (or Microservices done Better) - Sean Farmar, Particular S...Codemotion Tel Aviv
 
S3, Cassandra or Outer Space? Dumping Time Series Data using Spark - Demi Ben...
S3, Cassandra or Outer Space? Dumping Time Series Data using Spark - Demi Ben...S3, Cassandra or Outer Space? Dumping Time Series Data using Spark - Demi Ben...
S3, Cassandra or Outer Space? Dumping Time Series Data using Spark - Demi Ben...Codemotion Tel Aviv
 
Getting Physical with Web Bluetooth - Uri Shaked, BlackBerry
Getting Physical with Web Bluetooth - Uri Shaked, BlackBerryGetting Physical with Web Bluetooth - Uri Shaked, BlackBerry
Getting Physical with Web Bluetooth - Uri Shaked, BlackBerryCodemotion Tel Aviv
 
Web based virtual reality - Tanay Pant, Mozilla
Web based virtual reality - Tanay Pant, MozillaWeb based virtual reality - Tanay Pant, Mozilla
Web based virtual reality - Tanay Pant, MozillaCodemotion Tel Aviv
 
Material Design Demytified - Ran Nachmany, Google
Material Design Demytified - Ran Nachmany, GoogleMaterial Design Demytified - Ran Nachmany, Google
Material Design Demytified - Ran Nachmany, GoogleCodemotion Tel Aviv
 

More from Codemotion Tel Aviv (20)

Keynote: Trends in Modern Application Development - Gilly Dekel, IBM
Keynote: Trends in Modern Application Development - Gilly Dekel, IBMKeynote: Trends in Modern Application Development - Gilly Dekel, IBM
Keynote: Trends in Modern Application Development - Gilly Dekel, IBM
 
Angular is one fire(base)! - Shmuela Jacobs
Angular is one fire(base)! - Shmuela JacobsAngular is one fire(base)! - Shmuela Jacobs
Angular is one fire(base)! - Shmuela Jacobs
 
Demystifying docker networking black magic - Lorenzo Fontana, Kiratech
Demystifying docker networking black magic - Lorenzo Fontana, KiratechDemystifying docker networking black magic - Lorenzo Fontana, Kiratech
Demystifying docker networking black magic - Lorenzo Fontana, Kiratech
 
Faster deep learning solutions from training to inference - Amitai Armon & Ni...
Faster deep learning solutions from training to inference - Amitai Armon & Ni...Faster deep learning solutions from training to inference - Amitai Armon & Ni...
Faster deep learning solutions from training to inference - Amitai Armon & Ni...
 
Facts about multithreading that'll keep you up at night - Guy Bar on, Vonage
Facts about multithreading that'll keep you up at night - Guy Bar on, VonageFacts about multithreading that'll keep you up at night - Guy Bar on, Vonage
Facts about multithreading that'll keep you up at night - Guy Bar on, Vonage
 
Master the Art of the AST (and Take Control of Your JS!) - Yonatan Mevorach, ...
Master the Art of the AST (and Take Control of Your JS!) - Yonatan Mevorach, ...Master the Art of the AST (and Take Control of Your JS!) - Yonatan Mevorach, ...
Master the Art of the AST (and Take Control of Your JS!) - Yonatan Mevorach, ...
 
Unleash the power of angular Reactive Forms - Nir Kaufman, 500Tech
Unleash the power of angular Reactive Forms - Nir Kaufman, 500TechUnleash the power of angular Reactive Forms - Nir Kaufman, 500Tech
Unleash the power of angular Reactive Forms - Nir Kaufman, 500Tech
 
Can we build an Azure IoT controlled device in less than 40 minutes that cost...
Can we build an Azure IoT controlled device in less than 40 minutes that cost...Can we build an Azure IoT controlled device in less than 40 minutes that cost...
Can we build an Azure IoT controlled device in less than 40 minutes that cost...
 
Actors and Microservices - Can two walk together? - Rotem Hermon, Gigya
Actors and Microservices - Can two walk together? - Rotem Hermon, GigyaActors and Microservices - Can two walk together? - Rotem Hermon, Gigya
Actors and Microservices - Can two walk together? - Rotem Hermon, Gigya
 
How to Leverage Machine Learning (R, Hadoop, Spark, H2O) for Real Time Proces...
How to Leverage Machine Learning (R, Hadoop, Spark, H2O) for Real Time Proces...How to Leverage Machine Learning (R, Hadoop, Spark, H2O) for Real Time Proces...
How to Leverage Machine Learning (R, Hadoop, Spark, H2O) for Real Time Proces...
 
My Minecraft Smart Home: Prototyping the internet of uncanny things - Sascha ...
My Minecraft Smart Home: Prototyping the internet of uncanny things - Sascha ...My Minecraft Smart Home: Prototyping the internet of uncanny things - Sascha ...
My Minecraft Smart Home: Prototyping the internet of uncanny things - Sascha ...
 
Distributed Systems explained (with NodeJS) - Bruno Bossola, JUG Torino
Distributed Systems explained (with NodeJS) - Bruno Bossola, JUG TorinoDistributed Systems explained (with NodeJS) - Bruno Bossola, JUG Torino
Distributed Systems explained (with NodeJS) - Bruno Bossola, JUG Torino
 
Containerised ASP.NET Core apps with Kubernetes
Containerised ASP.NET Core apps with KubernetesContainerised ASP.NET Core apps with Kubernetes
Containerised ASP.NET Core apps with Kubernetes
 
Fullstack DDD with ASP.NET Core and Anguar 2 - Ronald Harmsen, NForza
Fullstack DDD with ASP.NET Core and Anguar 2 - Ronald Harmsen, NForzaFullstack DDD with ASP.NET Core and Anguar 2 - Ronald Harmsen, NForza
Fullstack DDD with ASP.NET Core and Anguar 2 - Ronald Harmsen, NForza
 
The Art of Decomposing Monoliths - Kfir Bloch, Wix
The Art of Decomposing Monoliths - Kfir Bloch, WixThe Art of Decomposing Monoliths - Kfir Bloch, Wix
The Art of Decomposing Monoliths - Kfir Bloch, Wix
 
SOA Lessons Learnt (or Microservices done Better) - Sean Farmar, Particular S...
SOA Lessons Learnt (or Microservices done Better) - Sean Farmar, Particular S...SOA Lessons Learnt (or Microservices done Better) - Sean Farmar, Particular S...
SOA Lessons Learnt (or Microservices done Better) - Sean Farmar, Particular S...
 
S3, Cassandra or Outer Space? Dumping Time Series Data using Spark - Demi Ben...
S3, Cassandra or Outer Space? Dumping Time Series Data using Spark - Demi Ben...S3, Cassandra or Outer Space? Dumping Time Series Data using Spark - Demi Ben...
S3, Cassandra or Outer Space? Dumping Time Series Data using Spark - Demi Ben...
 
Getting Physical with Web Bluetooth - Uri Shaked, BlackBerry
Getting Physical with Web Bluetooth - Uri Shaked, BlackBerryGetting Physical with Web Bluetooth - Uri Shaked, BlackBerry
Getting Physical with Web Bluetooth - Uri Shaked, BlackBerry
 
Web based virtual reality - Tanay Pant, Mozilla
Web based virtual reality - Tanay Pant, MozillaWeb based virtual reality - Tanay Pant, Mozilla
Web based virtual reality - Tanay Pant, Mozilla
 
Material Design Demytified - Ran Nachmany, Google
Material Design Demytified - Ran Nachmany, GoogleMaterial Design Demytified - Ran Nachmany, Google
Material Design Demytified - Ran Nachmany, Google
 

Recently uploaded

Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 

Recently uploaded (20)

Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 

Pushing JavaEE outside of the enterprise: Home Automation & IoT - David Delabassee

  • 1. Pushing  Java  EE  outside  of  the  
 Enterprise Codemotion  Tel  Aviv   November  2014 David  Delabassee  (@delabassee)   Oracle Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | 1
  • 2. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | Program  Agenda Home  Automation   Java  EE   Demo   Wrap-­‐up   1 2 3 4 2Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |
  • 3. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | Home  Automation • “Devices”  control   • Monitoring  &  dashboard   • Scenario,  scene,  scheduling  &  automation   • “Flexible”  configuration   3 Features
  • 4. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | Home  Automation • Better  control   • Improves  day-­‐to-­‐day  life   • Improves  security   • More  Eco  friendly   • … 4 Benefits
  • 5. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | Home  Automation • X10  /  PCLBUS   • RF433   • PCLBUS     • Z-­‐Wave   • ZigBee   • Somfy  RTS 5 Market • Domintell   • NikoBus  /  HomeControl   • Chacon  /  DI-­‐O   • Domologic   • VelBus   • KNX   • EnOcean   • BLE   • HomeKit   • Thread   • …  
  • 6. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | Home  Automation • Sensors   • Actuators   • Network   - Wired  or/and  wireless  +  TCP/IP   • Hub,  box,  gateway,  … 6 Actors
  • 7. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | Z-­‐Wave • “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 7 “Z-­‐Wave,  The  Interoperable  Standard”
  • 8. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | Z-­‐Wave • Meshed  wireless  network   • Range  100  ft   • 232  modules  per  controller   • Cheap  and  simple 8 “Z-­‐Wave,  The  Interoperable  Standard”
  • 9. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | Principles 9 Switch Z-­‐Wave   Chip Z-­‐Wave   Midd. App. 1 1 Set(0) Set(0)Set(0) Get() Get() 1  (inv.) 0  (valid.) 0
  • 10. 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,  … 10
  • 11. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | “In  real  life” 11
  • 12. 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 12 “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
  • 13. 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” 13 “The  worldwide  STANDARD  for  home  and  building  control”
  • 14. 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 14
  • 15. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | Config  only Optional Principles 15 KNX  Bus Bus   Power   Supply IP  KNX KNX   Output   module KNX   Input   module ETS IP Controller   Gateway   … 110/220v
  • 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 16
  • 17. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | “In  real  life” 17
  • 18. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | 18 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/less,  more  reliable   • Powered  through  the  Bus   • No  real  PoF   • Complex,  intrusive   • Expensive
  • 19. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | Program  Agenda Home  Automation   Java  EE   Demo   Wrap-­‐up   19 1 2 3 4
  • 20. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | Java  EE 20 ENTERPRISE EDITION ▪Batch ▪Concurrency ▪Simplified JMS ▪More annotated POJOs ▪Less boilerplate code ▪Cohesive integrated platform DEVELOPER PRODUCTIVITY ▪WebSockets ▪JSON ▪Servlet 3.1 NIO ▪REST MEETING 
 ENTERPRISE DEMANDS Java EE 7
  • 21. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | Java  EE ENTERPRISE EDITION Java EE • Connectivity   - Java  EE  to  clients   - Java  EE  to  “HA”   • Events 21
  • 22. 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 22 JSR  353
  • 23. 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;   } JSON-­‐P 23
  • 24. 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 24 JSR  356
  • 25. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | @ServerEndpoint("/wsEndPt")   public  class  InboundWebsocket  implements  Serializable  {   !        static  Queue<Session>  queue  =  new  ConcurrentLinkedQueue<>();                  @OnOpen          public  void  openConnection(Session  session)  {                  queue.add(session);          }   !        public  void  onEvent(Notification  notif)  {                  sendAllEndpoints(notif.toJson());          }   !        … WebSocket  Server  Endpoint  (1/2) 25
  • 26. 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                  }          } WebSocket  Server  Endpoint  (2/2) 26
  • 27. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    |        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);          } WebSocket  Client  Endpoint   27
  • 28. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | Contexts  and  Dependency  Injection  for  Java  EE  1.1 • 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 28 JSR  346
  • 29. 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) 29 JSR  346
  • 30. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | CDI  Events 30 JSR  346 public  class  producerClass  {   !   @Inject  Event<SomeEvent>  someEvent;   !   public  void  someMethod(...)  {       ...       someEvent.fire(myEvent);     }   } public  class  anotherClass  {   !   public  void  someObserver(@Observes  SomeEvent  someEvent  )  {       ...     }   ! }
  • 31. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | ! public  class  KnxMdb  implements  KnxListener  {   !        @Inject          @HomeEvent          Event<Notification>  homeEvent;     !        @KnxMessage(type="sensor")          public  void  handleKnxSensor(Notification  notif)  {                  …                  homeEvent.fire(notif);                        }           ! } CDI  Events 31
  • 32. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | @ServerEndpoint("/wsEndPt")   public  class  InboundWebsocket  implements  Serializable  {   ! !        @Inject          @HomeEvent          Event<Notification>  homeEvent;   !        @OnOpen          public  void  openConnection(Session  session)  {                  …          }   !        public  void  onEvent(@Observes  @HomeEvent  Notification  notif)  {                  sendAllEndpoints(notif.toJson());          }          … CDI  Events 32 WebSocker  Server  Endpoint
  • 33. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | Java  API  for  RESTful  Web  Services    2.0 • Filters  and  Interceptors   • Asynchronous  Processing   • Hypermedia   • Validation   • Client  API 33 JSR  339
  • 34. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | ! !      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);        }   JAX-­‐RS  Client 34
  • 35. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | ! @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);                        }   ! } REST  Endpoint 35
  • 36. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | Java  Connector  Architecture  1.7 • 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,  … 36 JSR  322
  • 37. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | Java  Connector  Architecture  1.7 37 JSR  322 Java  EE   Application Java  EE  Container Resource   Adapter EIS Outbound Inbound
  • 38. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | Java  Connector  Architecture  1.7 38 JSR  322 Java  EE   Application Java  EE  Container Resource   Adapter EIS InboundMDB
  • 39. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | @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              }   ! } JMS Message  Driven  Bean 39
  • 40. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | Message  Driven  Bean 40 • “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  
  • 41. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | @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              }   ! } Message  Driven  Bean 41 KNX
  • 42. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | @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)  {                  …          }   ! } Message  Driven  Bean 42 KNX
  • 43. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | • 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   ! ! Inbound  RA 43
  • 44. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | KNX  MDB 44 @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)  {                  …          }   ! }
  • 45. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | Java  Connector  Architecture  1.7 45 JSR  322 Java  EE   Application Java  EE  Container Resource   Adapter EIS Outbound
  • 46. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | And  more… • CDI  Interceptors   • JAX-­‐RS  Interceptors     • Concurrency  Utilities  for  Java  EE   • Java  Persistence  API   • OpenMQ  Stomp  support   • Jersey  SSE,  MVC… 46
  • 47. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | Program  Agenda Home  Automation   Java  EE   Demo   Wrap-­‐up   47 1 2 3 4
  • 48. 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 48
  • 49. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | KNX   Sensors KNX  Bus Bus   Power   Supply IP  KNX KNX   Output   module VPN IP Java  EE 110/220v 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 49 JCA RESTREST  +  WS
  • 50. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | Program  Agenda Home  Automation   Java  EE   Demo   Wrap-­‐up   50 1 2 3 4
  • 51. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | • Connectivity   - JAX-­‐RS,  JCA,  WebSocket   • ‘Event’  driven  capabilities   - MDB,  CDI  event   • Async  Non  blocking  IO   • Scheduling   • Persistence   • UI • Component  models   • Container   - Lifecycle   - Monitoring  &  Management   - Ressources  pooling   - Logging   - … Java  EE  for  Home  Automation 51
  • 52. 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”   - State  Management   - User  interface   - Add  ‘scenario’s   - Leverage  Java  EE  more,  e.g.  CDI  Interceptors 52
  • 53. 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 53
  • 54. Safe  Harbor  Statement The  preceding  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.    | 54
  • 55. Copyright  ©  2014,  Oracle  and/or  its  affiliates.  All  rights  reserved.    | 55