SlideShare a Scribd company logo
1 of 81
Download to read offline
Avec JavaEE, 
fais ce que tu veux… 
Alexis Hassler
Alexis Hassler 
• Développeur, formateur Java 
• Indépendant 
• Co-leader du 
• @AlexisHassler
Java EE 1° partie 
http://www.public-domain-image.com/
Java EE 
CDI 
JSF 
EJB 3 
JPA 
JAX-RS 
WebSocket
CDI 
JCA
MQTT 
Broker 
Consumer 
Consumer 
Consumer 
Producer 
Producer 
Producer 
Topic 
Topic 
Topic 
Topic 
Publish Subscribe
MQTT 
http://www.galuzzi.it/
MQTT 
http://commons.wikimedia.org/wiki/File:St_Jude_Medical_pacemaker_with_ruler.jpg
MQTT
JCA2° partie 
http://www.public-domain-image.com/
Java 
Connector 
Architecture
Connector Java EE 
Java EE 
App EIS
Outbound
Java EE 
Connector 
App EIS
Java EE 
App 
DataSource
Resource 
public class SomeNiceBean { 
@Resource(name="jdbc/SomeDS") 
DataSource dataSource; 
public void doTheJob() { 
Connection connection = dataSource.getConnection(); 
... 
} 
}
MQTT Connection Factory 
public class SomeNiceBean { 
@Resource(name="mqtt/QuestionCF") 
ConnectionFactory connectionFactory; 
public void doTheJob() { 
connectionFactory.getConnection() 
.publish(message); 
} 
}
Resource Adapter 
Connection ManagedConnection 
API Implementation 
ManagedConnection 
Factory 
ConnectionFactory
ManagedConnection 
Factory 
ConnectionFactory 
new 
ManagedConnection 
new 
ConnectionManager 
Connection 
ResourceAdapter 
new 
ConnectionEvent 
Listener XAResource 
LocalTransaction 
ManagedConnection 
MetaData
Inbound
Java EE 
App 
Connector 
EIS
Message Driven Bean 
Java EE 
MDB 
JMS 
Destination 
Connector
JMS Message Driven Bean 
@MessageDriven(activationConfig = { 
@ActivationConfigProperty(propertyName="destinationLookup", 
propertyValue="swt/Question"), 
@ActivationConfigProperty(propertyName="destinationType", 
propertyValue="javax.jms.Queue"), 
}) 
public class MyJmsBean implements MessageListener { 
@Override 
public void onMessage(Message message) { 
... 
} 
}
MQTT Message Driven Bean 
@MessageDriven( 
activationConfig = { 
@ActivationConfigProperty(propertyName = "topicName", 
propertyValue = "swt/Question") 
} 
) 
public class MyMqttBean implements MqttListener { 
@Override 
public void onMessage(Message message) { 
... 
} 
}
ActivationSpec 
API Implementation 
Message 
Listener ResourceAdapter 
BootstrapContext 
WorkerManager 
XAResource
Connector API 
public interface MqttListener { 
void onMessage(Message message); 
} 
public class Message { 
private byte[] payload; 
public Message(byte[] payload) { 
this.payload = payload; 
} 
// + Getter 
}
Message Driven Bean ++ 
@MessageDriven 
public class MyMqttBean implements MqttListener { 
@TopicName("swt/Question") 
public void onQuestion(Message message) { 
... 
} 
@TopicName("swt/Answer") 
public void onAnswer(Message message) { 
... 
} 
}
Connector 
mqtt-ra.rar 
Application 
(w. MDB) 
mqtt-ra-example.war 
WildFly 
MQTT 
Broker 
(mosquitto) 
MQTT Client 
mosquitto 
pub/sub
C D I 3° partie 
http://www.picturesdepot.com/
Context & Dependency Injection 
• IoC pour Java EE et Java SE 
• Gestion des contextes 
• Liant pour la plupart des spec Java EE 
• Moteur d’extensions pour Java EE
http://commons.wikimedia.org/ 
Bean
@Inject
Dependency Injection 
public class MessageService { 
@Override 
public String message() { 
return "Bonjour le monde !"; 
} 
}
Dependency Injection 
public class HelloBean { 
@Inject MessageService service; 
public void displayHello() { 
display( frService.message() ); 
} 
}
Highlander Rule 
there can be 
only one 
http://pixabay.com/
Qualifiers 
public class FrenchMessageService 
implements MessageService { 
public String message() { 
return "Bonjour le monde !"; 
} 
} 
public class EnglishMessageService 
implements MessageService { 
public String message() { 
return "Hello World!"; 
} 
}
Qualifiers 
@Qualifier 
@Retention(RUNTIME) 
@Target({FIELD, TYPE, METHOD, PARAMETER}) 
public @interface French {} 
@Qualifier 
@Retention(RUNTIME) 
@Target({FIELD, TYPE, METHOD, PARAMETER}) 
public @interface English {}
Qualifiers 
@French 
public class FrenchMessageService 
implements MessageService { 
public String message() { 
return "Bonjour le monde !"; 
} 
} 
@English 
public class EnglishMessageService 
implements MessageService { 
public String message() { 
return "Hello World!"; 
} 
}
Qualifiers 
public class HelloBean { 
@Inject @French MessageService service; 
public void displayHello() { 
display(service.message()); 
} 
}
Programmatic 
Lookup 
http://pixabay.com/
Programmatic lookup 
public class HelloBean { 
@Inject Instance<MessageService> service; 
public void displayHello() { 
if (! service.isUnsatisfied()) { 
display(service.get().message()); 
} 
} 
}
Programmatic lookup 
public class HelloBean { 
@Inject @Any 
Instance<MessageService> services; 
public void displayHello() { 
for (MessageService service : services) { 
display(service.message()); 
} 
} 
}
Contexts 
@Dependent 
@RequestScoped 
@ConversationScoped 
@SessionScoped 
@ApplicationScoped 
public class MessageService { 
... 
}
Decorators 
@Decorator 
@Priority(Interceptor.Priority.APPLICATION) 
public class MessageDecorator 
implements MessageService { 
@Inject @Delegate @Any MessageService service; 
public String message() { 
return service.message() + " -decorated"; 
} 
} 
http://pixabay.com/
Interceptors 
http://commons.wikimedia.org/
Interceptors 
@InterceptorBinding 
@Target({METHOD, TYPE}) 
@Retention(RUNTIME) 
public @interface Loggable {}
@Interceptor @ILnoggtabeler ceptors 
public class LogInterceptor { 
@AroundInvoke 
public Object log(InvocationContext ic) 
throws Exception { 
System.out.println("Entering " 
+ ic.getMethod().getName()); 
try { 
return ic.proceed(); 
} finally { 
System.out.println("Exiting " 
+ ic.getMethod().getName()); 
} 
} 
}
Interceptors 
@Loggable 
public class HelloBean { 
@Inject MessageService service; 
public void displayHello() { 
display(service.message()); 
} 
}
Producers 
http://commons.wikimedia.org/
Producers 
public class FacesProducer { 
@Produces @RequestScoped 
public FacesContext produceFacesContext() { 
return FacesContext.getCurrentInstance(); 
} 
}
Producers 
@Produces 
public Logger produceLogger( 
InjectionPoint injectionPoint) { 
String loggerName = injectionPoint 
.getMember() 
.getDeclaringClass() 
.getName(); 
return Logger.getLogger(loggerName); 
}
public class HelloBean { 
@Inject MessageService service; 
@Inject Event<Message> messageEvent; 
public void displayHello() { 
display(service.message()); 
messageEvent.fire( 
new Message(frService.message())); 
} 
} 
Events
Events 
public class MessageReceiver { 
public void receive(@Observes Message message) { 
System.out.println("Received: " + message.text); 
} 
}
Synthèse 
Decoration Interception Event JavaEE 
Injection Context 
Integration 
Portable Extension
CDI 
Portable Extensions
Bean Manager 
https://www.kingbean.com/
Bean Manager 
• Interagir avec le conteneur CDI 
• Lecture seule 
• Injectable 
• JNDI 
• java:comp/BeanManager 
public class HelloBean { 
@Inject BeanManager beanManager; 
... 
}
Extension 
• Manipuler les métadonnées du container 
• AnnotatedType 
• InjectionPoint / InjectionTarget 
• BeanAttributes / Beans 
• Producer, Observer 
• Pendant le démarrage
Comment ? 
En observant les 
événements 
déclenchés par le 
conteneur CDI
Exemple (-) 
• Exclure les entités JPA 
public class VetoEntityExtension 
implements Extension { 
public void vetoEntity( 
@Observes @WithAnnotations({Entity.class}) 
ProcessAnnotatedType<?> pat) { 
pat.veto(); 
} 
}
Exemple (+) 
• Ajouter un bean 
public class HashMapAsBeanExtension 
implements Extension { 
public void addHashMapAsAnnotatedType( 
@Observes BeforeBeanDiscovery bbd, 
BeanManager beanManager) { 
bbd.addAnnotatedType( 
beanManager.createAnnotatedType(HashMap.class) 
); 
} 
}
CDI 1.1 Lifecycle 
Before Bean 
Discovery 
Process Bean 
Scan 
Archive 
Process 
Annotated 
Type 
After 
Deployment 
Validation 
Application 
Running 
Before 
Shutdown 
Undeploy 
Application 
After Bean 
Discovery 
Process 
Producer 
Process 
Injection 
Target 
Process 
Observer 
Method 
Process 
Injection 
Point 
Process Bean 
Attributes 
After Type 
Discovery 
événement unique 
événements multiples 
étape interne 
Deployment 
starts 
Bean 
eligibility 
check
Application 
mqtt-cdi-example.war 
WildFly 
MQTT 
Broker 
(mosquitto) 
MQTT Client 
mosquitto 
pub/sub 
http://pixabay.com/
4° partie 
JCA // CDI
CDI 
JCA
Managed Connection Factory 
@ConnectionDefinition 
(connectionFactory = MqttConnectionFactoryImpl.class, 
connectionFactoryImpl = MqttConnectionFactoryImpl.class, 
connection = BlockingConnection.class, 
connectionImpl = BlockingConnection.class) 
public class MqttManagedConnectionFactory 
implements ManagedConnectionFactory, 
ResourceAdapterAssociation, Serializable { 
@Inject 
ResourceAdapter ra; 
}
JCA 
CDI
public class SomeNiceBean { 
@Inject 
MqttConnectionFactory connectionFactory; 
public void doTheJob() { 
javax.enterprise.inject. 
Connection connection = connectionFactory.getConnection(); 
... 
} 
UnsatisfiedResolutionException 
}
Java EE 8 
• Implicit Producers ? 
• Ambiguities ? 
• Qualifiers ?
JCA // CDI
JCA 
ManagedConnection 
Factory 
ConnectionFactory 
new 
ManagedConnection 
new 
ConnectionManager 
Connection 
ResourceAdapter 
new 
ConnectionEvent 
Listener 
XAResource 
LocalTransaction 
ManagedConnection 
MetaData 
WorkerManager
CDI 
UserTransaction 
ManagedExecutor 
Service 
ConnectionFactory 
Producer 
ConnectionFactory 
new 
Connection 
LocalTransaction
Outbound Connector 
JCA < CDI
Message Driven Bean 
@MqttDriven 
public class MyMqttBean { 
@TopicName("swt/Question") 
public void onQuestion(Message message) { 
... 
} 
@TopicName("swt/Answer") 
public void onAnswer(Message message) { 
... 
} 
}
Message Observer 
@ApplicationScoped 
public class MyMqttBean { 
public void onQuestion( 
@Observes @TopicName(value = "swt/Question") 
Message message) { 
... 
} 
public void onAnswer( 
@Observes @TopicName("swt/QuestionBis") 
Message message) { 
... 
} 
}
Threads 
https://www.flickr.com/photos/mckaysavage/6491930649/
Inbound Connector 
JCA > CDI
Java EE Application Server 
App 
CDI 
App 
CDI 
App 
CDI 
JCA
? 
http://pixabay.com/fr/point-d-interrogation-boule-demande-65833/
Exemples 
• https://github.com/antoinesd/cdi-demo 
• https://github.com/sewatech/mqtt-ra/ 
• https://github.com/hasalex/mqtt-cdi 
• http://fr.slideshare.net/sewatech/
Version longue 
• Part 1 : Intro + CDI 
• https://parleys.com/play/536749d1e4b04bb59f502706 
• Part 2 : JCA + Synthèse 
• https://parleys.com/play/5369f1f9e4b04bb59f502725

More Related Content

What's hot

Managing user's data with Spring Session
Managing user's data with Spring SessionManaging user's data with Spring Session
Managing user's data with Spring SessionDavid Gómez García
 
Testing Your Application On Google App Engine
Testing Your Application On Google App EngineTesting Your Application On Google App Engine
Testing Your Application On Google App EngineIndicThreads
 
Identifing Listeners and Filters
Identifing Listeners and FiltersIdentifing Listeners and Filters
Identifing Listeners and FiltersPeople Strategists
 
Indic threads pune12-java ee 7 platformsimplification html5
Indic threads pune12-java ee 7 platformsimplification html5Indic threads pune12-java ee 7 platformsimplification html5
Indic threads pune12-java ee 7 platformsimplification html5IndicThreads
 
Guice tutorial
Guice tutorialGuice tutorial
Guice tutorialAnh Quân
 
My way to clean android v2 English DroidCon Spain
My way to clean android v2 English DroidCon SpainMy way to clean android v2 English DroidCon Spain
My way to clean android v2 English DroidCon SpainChristian Panadero
 
In the Brain of Hans Dockter: Gradle
In the Brain of Hans Dockter: GradleIn the Brain of Hans Dockter: Gradle
In the Brain of Hans Dockter: GradleSkills Matter
 
Integrating Security Roles into Microsoft Silverlight Applications
Integrating Security Roles into Microsoft Silverlight ApplicationsIntegrating Security Roles into Microsoft Silverlight Applications
Integrating Security Roles into Microsoft Silverlight ApplicationsDan Wahlin
 
Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5Arun Gupta
 
Using hilt in a modularized project
Using hilt in a modularized projectUsing hilt in a modularized project
Using hilt in a modularized projectFabio Collini
 
Re-architecting the designer-developer workflow
Re-architecting the designer-developer workflowRe-architecting the designer-developer workflow
Re-architecting the designer-developer workflowRichard Lord
 
Micronaut: Changing the Micro Future
Micronaut: Changing the Micro FutureMicronaut: Changing the Micro Future
Micronaut: Changing the Micro FutureZachary Klein
 
Lecture 6 Web Sockets
Lecture 6   Web SocketsLecture 6   Web Sockets
Lecture 6 Web SocketsFahad Golra
 
Vaadin 7 CN
Vaadin 7 CNVaadin 7 CN
Vaadin 7 CNjojule
 
Dagger 2 - Injeção de Dependência
Dagger 2 - Injeção de DependênciaDagger 2 - Injeção de Dependência
Dagger 2 - Injeção de DependênciaEdson Menegatti
 

What's hot (20)

TY.BSc.IT Java QB U3
TY.BSc.IT Java QB U3TY.BSc.IT Java QB U3
TY.BSc.IT Java QB U3
 
Managing user's data with Spring Session
Managing user's data with Spring SessionManaging user's data with Spring Session
Managing user's data with Spring Session
 
Testing Your Application On Google App Engine
Testing Your Application On Google App EngineTesting Your Application On Google App Engine
Testing Your Application On Google App Engine
 
Introduction to CDI
Introduction to CDIIntroduction to CDI
Introduction to CDI
 
Identifing Listeners and Filters
Identifing Listeners and FiltersIdentifing Listeners and Filters
Identifing Listeners and Filters
 
Indic threads pune12-java ee 7 platformsimplification html5
Indic threads pune12-java ee 7 platformsimplification html5Indic threads pune12-java ee 7 platformsimplification html5
Indic threads pune12-java ee 7 platformsimplification html5
 
Guice tutorial
Guice tutorialGuice tutorial
Guice tutorial
 
TY.BSc.IT Java QB U4
TY.BSc.IT Java QB U4TY.BSc.IT Java QB U4
TY.BSc.IT Java QB U4
 
Java Enterprise Edition
Java Enterprise EditionJava Enterprise Edition
Java Enterprise Edition
 
My way to clean android v2 English DroidCon Spain
My way to clean android v2 English DroidCon SpainMy way to clean android v2 English DroidCon Spain
My way to clean android v2 English DroidCon Spain
 
In the Brain of Hans Dockter: Gradle
In the Brain of Hans Dockter: GradleIn the Brain of Hans Dockter: Gradle
In the Brain of Hans Dockter: Gradle
 
Devoxx 2012 (v2)
Devoxx 2012 (v2)Devoxx 2012 (v2)
Devoxx 2012 (v2)
 
Integrating Security Roles into Microsoft Silverlight Applications
Integrating Security Roles into Microsoft Silverlight ApplicationsIntegrating Security Roles into Microsoft Silverlight Applications
Integrating Security Roles into Microsoft Silverlight Applications
 
Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5
 
Using hilt in a modularized project
Using hilt in a modularized projectUsing hilt in a modularized project
Using hilt in a modularized project
 
Re-architecting the designer-developer workflow
Re-architecting the designer-developer workflowRe-architecting the designer-developer workflow
Re-architecting the designer-developer workflow
 
Micronaut: Changing the Micro Future
Micronaut: Changing the Micro FutureMicronaut: Changing the Micro Future
Micronaut: Changing the Micro Future
 
Lecture 6 Web Sockets
Lecture 6   Web SocketsLecture 6   Web Sockets
Lecture 6 Web Sockets
 
Vaadin 7 CN
Vaadin 7 CNVaadin 7 CN
Vaadin 7 CN
 
Dagger 2 - Injeção de Dependência
Dagger 2 - Injeção de DependênciaDagger 2 - Injeção de Dependência
Dagger 2 - Injeção de Dependência
 

Similar to softshake 2014 - Java EE

比XML更好用的Java Annotation
比XML更好用的Java Annotation比XML更好用的Java Annotation
比XML更好用的Java Annotationjavatwo2011
 
Enterprise Guice 20090217 Bejug
Enterprise Guice 20090217 BejugEnterprise Guice 20090217 Bejug
Enterprise Guice 20090217 Bejugrobbiev
 
Google Web Toolkits
Google Web ToolkitsGoogle Web Toolkits
Google Web ToolkitsYiguang Hu
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitIMC Institute
 
Java Advance 4deleteQuery.PNGJava Advance 4deleteQuerySucc.docx
Java Advance 4deleteQuery.PNGJava Advance 4deleteQuerySucc.docxJava Advance 4deleteQuery.PNGJava Advance 4deleteQuerySucc.docx
Java Advance 4deleteQuery.PNGJava Advance 4deleteQuerySucc.docxpriestmanmable
 
Pushing Datatothe Browserwith Comet Ajax W
Pushing Datatothe Browserwith Comet Ajax WPushing Datatothe Browserwith Comet Ajax W
Pushing Datatothe Browserwith Comet Ajax Wrajivmordani
 
Speed up your Web applications with HTML5 WebSockets
Speed up your Web applications with HTML5 WebSocketsSpeed up your Web applications with HTML5 WebSockets
Speed up your Web applications with HTML5 WebSocketsYakov Fain
 
CDI e as ideias pro futuro do VRaptor
CDI e as ideias pro futuro do VRaptorCDI e as ideias pro futuro do VRaptor
CDI e as ideias pro futuro do VRaptorCaelum
 
Java Configuration Deep Dive with Spring
Java Configuration Deep Dive with SpringJava Configuration Deep Dive with Spring
Java Configuration Deep Dive with SpringJoshua Long
 
Implement Service Broker with Spring Boot #cf_tokyo
Implement Service Broker with Spring Boot #cf_tokyoImplement Service Broker with Spring Boot #cf_tokyo
Implement Service Broker with Spring Boot #cf_tokyoToshiaki Maki
 
How to code to code less
How to code to code lessHow to code to code less
How to code to code lessAnton Novikau
 
Architecting your GWT applications with GWT-Platform - Lesson 02
Architecting your GWT applications with GWT-Platform - Lesson 02Architecting your GWT applications with GWT-Platform - Lesson 02
Architecting your GWT applications with GWT-Platform - Lesson 02rhemsolutions
 

Similar to softshake 2014 - Java EE (20)

比XML更好用的Java Annotation
比XML更好用的Java Annotation比XML更好用的Java Annotation
比XML更好用的Java Annotation
 
Codemotion appengine
Codemotion appengineCodemotion appengine
Codemotion appengine
 
Enterprise Guice 20090217 Bejug
Enterprise Guice 20090217 BejugEnterprise Guice 20090217 Bejug
Enterprise Guice 20090217 Bejug
 
JavaCro'14 - Building interactive web applications with Vaadin – Peter Lehto
JavaCro'14 - Building interactive web applications with Vaadin – Peter LehtoJavaCro'14 - Building interactive web applications with Vaadin – Peter Lehto
JavaCro'14 - Building interactive web applications with Vaadin – Peter Lehto
 
Google Web Toolkits
Google Web ToolkitsGoogle Web Toolkits
Google Web Toolkits
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
 
Vertx daitan
Vertx daitanVertx daitan
Vertx daitan
 
Vertx SouJava
Vertx SouJavaVertx SouJava
Vertx SouJava
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Java Advance 4deleteQuery.PNGJava Advance 4deleteQuerySucc.docx
Java Advance 4deleteQuery.PNGJava Advance 4deleteQuerySucc.docxJava Advance 4deleteQuery.PNGJava Advance 4deleteQuerySucc.docx
Java Advance 4deleteQuery.PNGJava Advance 4deleteQuerySucc.docx
 
Pushing Datatothe Browserwith Comet Ajax W
Pushing Datatothe Browserwith Comet Ajax WPushing Datatothe Browserwith Comet Ajax W
Pushing Datatothe Browserwith Comet Ajax W
 
Annotation processing
Annotation processingAnnotation processing
Annotation processing
 
Vaadin7
Vaadin7Vaadin7
Vaadin7
 
Speed up your Web applications with HTML5 WebSockets
Speed up your Web applications with HTML5 WebSocketsSpeed up your Web applications with HTML5 WebSockets
Speed up your Web applications with HTML5 WebSockets
 
CDI e as ideias pro futuro do VRaptor
CDI e as ideias pro futuro do VRaptorCDI e as ideias pro futuro do VRaptor
CDI e as ideias pro futuro do VRaptor
 
Java Configuration Deep Dive with Spring
Java Configuration Deep Dive with SpringJava Configuration Deep Dive with Spring
Java Configuration Deep Dive with Spring
 
CDI @javaonehyderabad
CDI @javaonehyderabadCDI @javaonehyderabad
CDI @javaonehyderabad
 
Implement Service Broker with Spring Boot #cf_tokyo
Implement Service Broker with Spring Boot #cf_tokyoImplement Service Broker with Spring Boot #cf_tokyo
Implement Service Broker with Spring Boot #cf_tokyo
 
How to code to code less
How to code to code lessHow to code to code less
How to code to code less
 
Architecting your GWT applications with GWT-Platform - Lesson 02
Architecting your GWT applications with GWT-Platform - Lesson 02Architecting your GWT applications with GWT-Platform - Lesson 02
Architecting your GWT applications with GWT-Platform - Lesson 02
 

More from Alexis Hassler

DevoxxFR17 - Préparez-vous à la modularité selon Java 9
DevoxxFR17 - Préparez-vous à la modularité selon Java 9DevoxxFR17 - Préparez-vous à la modularité selon Java 9
DevoxxFR17 - Préparez-vous à la modularité selon Java 9Alexis Hassler
 
LausanneJUG 2017 - Jigsaw est prêt à tuer le classpath
LausanneJUG 2017 - Jigsaw est prêt à tuer le classpathLausanneJUG 2017 - Jigsaw est prêt à tuer le classpath
LausanneJUG 2017 - Jigsaw est prêt à tuer le classpathAlexis Hassler
 
DevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath Java
DevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath JavaDevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath Java
DevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath JavaAlexis Hassler
 
Soft-Shake 2016 : Jigsaw est prêt à tuer le classpath
Soft-Shake 2016 : Jigsaw  est prêt à tuer le classpathSoft-Shake 2016 : Jigsaw  est prêt à tuer le classpath
Soft-Shake 2016 : Jigsaw est prêt à tuer le classpathAlexis Hassler
 
LyonJUG : Comment Jigsaw est prêt à tuer le classpath
LyonJUG : Comment Jigsaw est prêt à tuer le classpath LyonJUG : Comment Jigsaw est prêt à tuer le classpath
LyonJUG : Comment Jigsaw est prêt à tuer le classpath Alexis Hassler
 
INSA Lyon - Java in da Cloud - 06/2016
INSA Lyon - Java in da Cloud - 06/2016INSA Lyon - Java in da Cloud - 06/2016
INSA Lyon - Java in da Cloud - 06/2016Alexis Hassler
 
LorraineJUG - Le classpath n'est pas mort
LorraineJUG - Le classpath n'est pas mortLorraineJUG - Le classpath n'est pas mort
LorraineJUG - Le classpath n'est pas mortAlexis Hassler
 
ElsassJUG - Le classpath n'est pas mort...
ElsassJUG - Le classpath n'est pas mort...ElsassJUG - Le classpath n'est pas mort...
ElsassJUG - Le classpath n'est pas mort...Alexis Hassler
 
INSA - Java in Ze Cloud - 2014
INSA - Java in Ze Cloud - 2014INSA - Java in Ze Cloud - 2014
INSA - Java in Ze Cloud - 2014Alexis Hassler
 
INSA - Java in ze Cloud (2013)
INSA - Java in ze Cloud (2013)INSA - Java in ze Cloud (2013)
INSA - Java in ze Cloud (2013)Alexis Hassler
 
MarsJUG - Le classpath n'est pas mort, mais presque
MarsJUG - Le classpath n'est pas mort, mais presqueMarsJUG - Le classpath n'est pas mort, mais presque
MarsJUG - Le classpath n'est pas mort, mais presqueAlexis Hassler
 
MarsJUG - Une nouvelle vision des tests avec Arquillian
MarsJUG - Une nouvelle vision des tests avec ArquillianMarsJUG - Une nouvelle vision des tests avec Arquillian
MarsJUG - Une nouvelle vision des tests avec ArquillianAlexis Hassler
 
JUG Summer Camp - Une nouvelle vision des tests avec Arquillian
JUG Summer Camp - Une nouvelle vision des tests avec ArquillianJUG Summer Camp - Une nouvelle vision des tests avec Arquillian
JUG Summer Camp - Une nouvelle vision des tests avec ArquillianAlexis Hassler
 
DevoxxFR 2013 - Arquillian
DevoxxFR 2013 - ArquillianDevoxxFR 2013 - Arquillian
DevoxxFR 2013 - ArquillianAlexis Hassler
 
DevoxxFR 2013 - Le classpath n'est pas mort, mais presque
DevoxxFR 2013 - Le classpath n'est pas mort, mais presqueDevoxxFR 2013 - Le classpath n'est pas mort, mais presque
DevoxxFR 2013 - Le classpath n'est pas mort, mais presqueAlexis Hassler
 
Java in ze Cloud - INSA - nov. 2012
Java in ze Cloud - INSA - nov. 2012Java in ze Cloud - INSA - nov. 2012
Java in ze Cloud - INSA - nov. 2012Alexis Hassler
 
Arquillian - YaJUG - nov. 2012
Arquillian - YaJUG - nov. 2012Arquillian - YaJUG - nov. 2012
Arquillian - YaJUG - nov. 2012Alexis Hassler
 
JBoss AS 7 - YaJUG - nov. 2012
JBoss AS 7 - YaJUG - nov. 2012JBoss AS 7 - YaJUG - nov. 2012
JBoss AS 7 - YaJUG - nov. 2012Alexis Hassler
 
JBoss AS 7 : Déployer sur terre et dans les nuages
JBoss AS 7 : Déployer sur terre et dans les nuagesJBoss AS 7 : Déployer sur terre et dans les nuages
JBoss AS 7 : Déployer sur terre et dans les nuagesAlexis Hassler
 

More from Alexis Hassler (20)

DevoxxFR17 - Préparez-vous à la modularité selon Java 9
DevoxxFR17 - Préparez-vous à la modularité selon Java 9DevoxxFR17 - Préparez-vous à la modularité selon Java 9
DevoxxFR17 - Préparez-vous à la modularité selon Java 9
 
LausanneJUG 2017 - Jigsaw est prêt à tuer le classpath
LausanneJUG 2017 - Jigsaw est prêt à tuer le classpathLausanneJUG 2017 - Jigsaw est prêt à tuer le classpath
LausanneJUG 2017 - Jigsaw est prêt à tuer le classpath
 
DevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath Java
DevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath JavaDevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath Java
DevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath Java
 
Soft-Shake 2016 : Jigsaw est prêt à tuer le classpath
Soft-Shake 2016 : Jigsaw  est prêt à tuer le classpathSoft-Shake 2016 : Jigsaw  est prêt à tuer le classpath
Soft-Shake 2016 : Jigsaw est prêt à tuer le classpath
 
LyonJUG : Comment Jigsaw est prêt à tuer le classpath
LyonJUG : Comment Jigsaw est prêt à tuer le classpath LyonJUG : Comment Jigsaw est prêt à tuer le classpath
LyonJUG : Comment Jigsaw est prêt à tuer le classpath
 
INSA Lyon - Java in da Cloud - 06/2016
INSA Lyon - Java in da Cloud - 06/2016INSA Lyon - Java in da Cloud - 06/2016
INSA Lyon - Java in da Cloud - 06/2016
 
LorraineJUG - Le classpath n'est pas mort
LorraineJUG - Le classpath n'est pas mortLorraineJUG - Le classpath n'est pas mort
LorraineJUG - Le classpath n'est pas mort
 
LorraineJUG - WildFly
LorraineJUG - WildFlyLorraineJUG - WildFly
LorraineJUG - WildFly
 
ElsassJUG - Le classpath n'est pas mort...
ElsassJUG - Le classpath n'est pas mort...ElsassJUG - Le classpath n'est pas mort...
ElsassJUG - Le classpath n'est pas mort...
 
INSA - Java in Ze Cloud - 2014
INSA - Java in Ze Cloud - 2014INSA - Java in Ze Cloud - 2014
INSA - Java in Ze Cloud - 2014
 
INSA - Java in ze Cloud (2013)
INSA - Java in ze Cloud (2013)INSA - Java in ze Cloud (2013)
INSA - Java in ze Cloud (2013)
 
MarsJUG - Le classpath n'est pas mort, mais presque
MarsJUG - Le classpath n'est pas mort, mais presqueMarsJUG - Le classpath n'est pas mort, mais presque
MarsJUG - Le classpath n'est pas mort, mais presque
 
MarsJUG - Une nouvelle vision des tests avec Arquillian
MarsJUG - Une nouvelle vision des tests avec ArquillianMarsJUG - Une nouvelle vision des tests avec Arquillian
MarsJUG - Une nouvelle vision des tests avec Arquillian
 
JUG Summer Camp - Une nouvelle vision des tests avec Arquillian
JUG Summer Camp - Une nouvelle vision des tests avec ArquillianJUG Summer Camp - Une nouvelle vision des tests avec Arquillian
JUG Summer Camp - Une nouvelle vision des tests avec Arquillian
 
DevoxxFR 2013 - Arquillian
DevoxxFR 2013 - ArquillianDevoxxFR 2013 - Arquillian
DevoxxFR 2013 - Arquillian
 
DevoxxFR 2013 - Le classpath n'est pas mort, mais presque
DevoxxFR 2013 - Le classpath n'est pas mort, mais presqueDevoxxFR 2013 - Le classpath n'est pas mort, mais presque
DevoxxFR 2013 - Le classpath n'est pas mort, mais presque
 
Java in ze Cloud - INSA - nov. 2012
Java in ze Cloud - INSA - nov. 2012Java in ze Cloud - INSA - nov. 2012
Java in ze Cloud - INSA - nov. 2012
 
Arquillian - YaJUG - nov. 2012
Arquillian - YaJUG - nov. 2012Arquillian - YaJUG - nov. 2012
Arquillian - YaJUG - nov. 2012
 
JBoss AS 7 - YaJUG - nov. 2012
JBoss AS 7 - YaJUG - nov. 2012JBoss AS 7 - YaJUG - nov. 2012
JBoss AS 7 - YaJUG - nov. 2012
 
JBoss AS 7 : Déployer sur terre et dans les nuages
JBoss AS 7 : Déployer sur terre et dans les nuagesJBoss AS 7 : Déployer sur terre et dans les nuages
JBoss AS 7 : Déployer sur terre et dans les nuages
 

Recently uploaded

Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 

Recently uploaded (20)

Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 

softshake 2014 - Java EE