SlideShare une entreprise Scribd logo
1  sur  250
Télécharger pour lire hors ligne
JavaScript pour le
développeur Java
Christophe Jollivet
Christophe Jollivet
• Neurobiologiste	

• Informaticien	

• Homme de communauté	

!

• @jollivetc
Sondages
Qui connait JavaScript ?
Autrement qu’un
copier-coller du web ?
Les autres, qui se dit
qu’il devrait apprendre
JavaScript ?
Pourquoi JavaScript ?
Atwood Law
• «Any application that can be written in
JavaScript, will eventually be written in
JavaScript»	


• http://www.codinghorror.com/blog/

2007/07/the-principle-of-least-power.html
J’apprend JavaScript
«JavaScript is the only
language that people feel they
don’t need to learn to use it»	

Doug Crockford
Java is to JavaScript
Java is to JavaScript
What ham is to hamster
http://blog.movereem.nl/images/javascript-the-good-parts-the-definitive-guide.jpg
m/
.co
et
n

ttp
h

lu
vo
.re
ks
oo
jsb
://
Tour de JavaScript
Types
Types
• Number, String, Boolean, undefined	

• Object, function	

• Faiblement typé
Number
• 64 bits floating point	

• IEEE-754 (aka Double)	

• Ecriture littérale 	

• 1.024e+3 === 1024	

• Méthodes (toExponential, toFixed,
toPrecision...)
valeurs approximatives
valeurs approximatives
(0.1 + 0.2) + 0.3 === 0.1 + (0.2 + 0.3)
valeurs approximatives
(0.1 + 0.2) + 0.3 ALSE + (0.2 + 0.3)
=== 0.1

F
valeurs approximatives
(0.1 + 0.2) + 0.3 ALSE + (0.2 + 0.3)
=== 0.1

F

9007199254740992 === 9007199254740992 + 1
valeurs approximatives
(0.1 + 0.2) + 0.3 ALSE + (0.2 + 0.3)
=== 0.1

F

9007199254740992 ===E
RU 9007199254740992 + 1

T
Objet
Objet
Objet
• Container de propriétés avec un nom et une
valeur
Objet
• Container de propriétés avec un nom et une
valeur

• nom de propriété est une string y compris ""
Objet
• Container de propriétés avec un nom et une
valeur

• nom de propriété est une string y compris ""
• propriété est n’importe quelle valeur sauf
undefined
Déclaration objet
Déclaration objet
Déclaration objet
Déclaration objet
Déclaration objet
Déclaration objet
Déclaration objet

Classe anonyme
Déclaration d’objet
Déclaration d’objet
Déclaration d’objet
Déclaration d’objet
Accès aux valeurs
Objet et héritage
Création d’objet
Problème
unRectangle
longueur
largeur
surface

anotherRectangle
longueur
largeur
surface
Problème
Occupation mémoire
unRectangle
longueur
largeur
surface

anotherRectangle
longueur
largeur
surface
Héritage par prototype
• Un objet hérite directement d’un autre
objet, il n’y a pas de notion de classe	


• On place les propriétés communes dans le
prototype pour la mémoire
Création d’objet
Solution
unRectangle

anotherRectangle

longueur

longueur

largeur

largeur

surface
Prototype
Résolution de propriété
• Se fait en remontant la chaîne de prototype	

• il est possible de surcharger une propriété
Extension
• Ajout d’une méthode dans un prototype	

• la méthode est alors disponible pour toutes
les instances existantes et à venir
for in
• itérateur sur les propriétés de l’objet

Les propriétés du prototype sont listées
hasOwnProperty
• TRUE si la propriété est à l’objet et pas au
prototype

Attention si foo a une propriété ‘hasOwnProperty’
Introspection
Fonctions
Fonction

Conserve une référence sur son
contexte de création
Fonction

Conserve une référence sur son
contexte de création
Fonction

Méthode statique 	

utilitaire
Conserve une référence sur son
contexte de création
Arguments
Arguments
Arguments
•

Il n’y a pas d’erreur si le nombre d’arguments
et paramètres ne correspondent pas
Arguments
•

Il n’y a pas d’erreur si le nombre d’arguments
et paramètres ne correspondent pas

•

arguments contient la liste des arguments
Arguments
Arguments

varargs
apply

• Permet l’invocation d’une fonction en lui
passant un contexte et des paramètres
Apply
This
4 patterns
• méthode	

• fonction	

• new	

• apply
this et méthode
• pattern : bar.foo()	

• this référence l’objet contenant la méthode	

• binding à l’invocation
this et fonction
• pattern : foo()	

• this est l’objet global, même si la fonction
est déclarée dans une méthode
this et fonction
this et fonction

Pollution de l’espace global
this et fonction
this et fonction
this et fonction
this et new
• pattern : var bar = new Foo();	

• création d’un objet avec lien au prototype
de la fonction et this pointe cet objet
this et new
this et new
this et new
this et apply
• pattern : foo.apply(bar, args);	

• this est lié à bar
Apply
Coercition de type
Coercition de type
Coercition de type
• Forcer le type d’une variable
Coercition de type
• Forcer le type d’une variable
• == fait la coercition de type
Coercition de type
• Forcer le type d’une variable
• == fait la coercition de type
• === ne fait pas la coercition de type
Coercition de type
• '1' ==1
• '1'===1

TRUE
FALSE
Coercition de type
Coercition de type
• false == 'false'

FALSE
Coercition de type
• false == 'false'
• false == '0'

FALSE
TRUE
Coercition de type
• false == 'false'
• false == '0'
• " trn " == 0

FALSE
TRUE
TRUE
Coercition de type
• false == 'false'
• false == '0'
• " trn " == 0
• ",,," == new Array(4)

FALSE
TRUE
TRUE
TRUE
Coercition de type
• false == undefined
• false == null
• null == undefined

FALSE	

FALSE	

TRUE
Coercition de type
Coercition de type
• if( foo === null || foo === undefined )
Coercition de type
• if( foo === null || foo === undefined )
• if( foo == null )
Coercition type (bonus)
Coercition type (bonus)
• foo=+foo
Coercition type (bonus)
• foo=+foo
• foo = parseInt(foo,10)
Coercition type (bonus)
• foo=+foo
• foo = parseInt(foo,10)
• foo = parseFloat(foo,10)
Coercition type (bonus)
‘10.2a’

• foo=+foo
• foo = parseInt(foo,10)
• foo = parseFloat(foo,10)
Coercition type (bonus)
‘10.2a’

• foo=+foo
• foo = parseInt(foo,10)
• foo = parseFloat(foo,10)

NaN
Coercition type (bonus)
‘10.2a’

• foo=+foo
• foo = parseInt(foo,10)
• foo = parseFloat(foo,10)

NaN
10
Coercition type (bonus)
‘10.2a’

• foo=+foo
• foo = parseInt(foo,10)
• foo = parseFloat(foo,10)

NaN
10
10.2
Coercition et transitivité
Coercition et transitivité
• 0 ==''

TRUE
Coercition et transitivité
• 0 ==''
• 0 =='0'

TRUE
TRUE
Coercition et transitivité
• 0 ==''
• 0 =='0'
• ''=='0'

TRUE
TRUE
Coercition et transitivité
• 0 ==''
• 0 =='0'
• ''=='0'

TRUE
TRUE
FALSE
Piège
Truthy et Falsy
Truthy et Falsy
• false, "", 0, null, undefined, NaN, void sont
FALSY
Truthy et Falsy
• false, "", 0, null, undefined, NaN, void sont
FALSY

• Tous les autres sont TRUTHY
Truthy et Falsy
• false, "", 0, null, undefined, NaN, void sont
FALSY

• Tous les autres sont TRUTHY
• même "0" et "FALSE"
Truthy et Falsy
• false, "", 0, null, undefined, NaN, void sont
FALSY

• Tous les autres sont TRUTHY
• même "0" et "FALSE"
• if( array.length )
Truthy et Falsy
• false, "", 0, null, undefined, NaN, void sont
FALSY

• Tous les autres sont TRUTHY
• même "0" et "FALSE"
• if( array.length )
• if( string )
Valeur par défaut
Valeur par défaut

Attention si b vaut 0 car 0 est falsy
Appel sécurisé
Point virgule
Point virgule
• Séparation d’expression
Point virgule
• Séparation d’expression
• Pas toujours obligatoire
Point virgule
• Séparation d’expression
• Pas toujours obligatoire
• Pose problème dans la minification
Point virgule
• Séparation d’expression
• Pas toujours obligatoire
• Pose problème dans la minification
• Grand débat sur quand il est nécessaire
Point virgule

https://github.com/twitter/bootstrap/issues/3057
Point virgule
Point virgule
Scope
Scope
Scope
• Syntaxe à « la C » avec bloc
Scope
• Syntaxe à « la C » avec bloc
• Le scope est la fonction
Scope
• Syntaxe à « la C » avec bloc
• Le scope est la fonction
• Déclaration de variable avec «var»
Scope
• Syntaxe à « la C » avec bloc
• Le scope est la fonction
• Déclaration de variable avec «var»
• /! déclaration automatique
Déclaration
Déclaration
Hoisting

• Déplace les déclarations en tête du bloc
Hoisting
Hoisting
Hoisting
Closure
• Une fonction objet contient : 	

• une fonction (nom, paramètres, body)	

• une référence à l’environnement où elle a
été créée (contexte)
Closure
Closure

•Pollution de Global	

•Risque de collision de nom	

•names est modifiable
Closure
Closure

•Lent car construction de names à chaque appel
Closure
Closure
Closure
Exception
throw
try catch finally
Séparation de code
namespace
• Séparation de code pour limiter les
collisions de nom	


• Masquer le fonctionnement de votre
librairie
Namespace

• Tout n’est pas dans un bloc	

• Tout est public
IIFE
• Immediatly Invoked Function Expression	

• Fonction exécutée au chargement du script
et qui renvoie un objet avec les fonctions/
variables utiles.
IIFE
IIFE
IIFE
IIFE
Callback
Callback

• fonction donnée en paramètre pour des
opération asynchrone
callback
callback
callback
Promise
Callback
Pyramide of doom
Promise
• Objet avec une méthode then qui prend 3
paramètres	


• success callback	

• failure callback	

• progress callback (pas obligatoire)
Promise
• 3 états possibles	

• unfulfilled or pending	

• fulfilled or resolved	

• failed or rejected
Résumé
Résumé
• JavaScript s’apprend !	

• Scope / Hoisting	

• this (constructeur et callback)	

• Héritage par prototype	

• asynchrone
Industrialisation ?
JS c’est lent
• Enormes progrès sur les VM (V8, Rhino,
XMonkey)
• Enormes progrès sur les VM (V8, Rhino,
XMonkey)

• compilateur JIT
• Enormes progrès sur les VM (V8, Rhino,
XMonkey)

• compilateur JIT
• Cible du transpiling
• Enormes progrès sur les VM (V8, Rhino,
XMonkey)

• compilateur JIT
• Cible du transpiling
• Coffeescript, Dart, GWT...
JS n’est pas maintenable
JS est artisanal
Build

Industrialisation
Tests

Audit
Structure
Modularisation
• AMD : Asynchronous Module Definition	

• Chargement asynchrone en parallèle dans
son propre scope	


• requirejs, Dojo, JQuery, Curl, Backdraft
Modularisation
Modularisation
Modularisation
Modularisation
Modularisation
Automatisation
NPM
• Node Package Module	

• installation d’outils et de plugins	

• Permet l’installation d’outils de façon
globale ou locale
Grunt
• The JavaScript Task Runner	

• 2 fichiers 	

• package.json -> dépendances et plugins	

• Gruntfile.js -> configuration
Gruntfile.js
Gruntfile.js
package.json
Bower
• Provisionnement de dépendances pour la
webapp	


• Clone de repository Github
bower.json
Yeoman
• Scaffolding 	

• Intégration de Yo, Grunt et Bower	

• Générateur
Tests
Jasmine
Jasmine
Jasmine
Jasmine
Jasmine spies
Jasmine spies
Jasmine spies
Jasmine spies
Alternative
• Mocha.js	

• Qunit
Bonus
• Rapport de tests dans différents formats	

• Couverture de code
Chai.js
Sinon.js
• Mock, Spies.....	

• Fake sur XMLHttpRequest	

• Fake sur Timer
CasperJs
• Headless scriptable Webkit	

• Screenshot	

• Test recorder dans Chrome
CasperJs
Integration Continue
Job dédié
• commande shell	

• NodeJS Jenkins Plugin
Plugin Maven

• Lancement des outils en ligne de
commande
Aggregation résultats
• Reporter au format XUnit	

• Plugin Jenkins TAP
Framework
Frameworks
Frameworks
http://addyosmani.github.com/todomvc/
Frameworks
• Fonctionnalités diverses	

• binding	

• routing	

• templating	

• ......
Qualité
use strict
!

• En haut du script ou dans une fonction	

• Transforme en erreur certaines fautes	

• déclaration implicite de variable	

• syntaxe octale	

• double propriété
JSLint / JSHint
• attention cela fait mal.	

• utiliser dès le début avant les mauvaises
habitudes !	


• en ligne ou en plugin
Sonar
• Plugin pour le JavaScript	

• tests, coverage, métriques,
Tooling
IDE
IDE
• Difficile....
IDE
• Difficile....
• Il faut essayer
Console des navigateurs
• Debugging	

• Test en live
Questions ?
Creative Commons
Attribution — You must attribute the work in the
manner specified by the author or licensor (but not in
any way that suggests that they endorse you or your use
of the work).	

!

Noncommercial — You may not use this work for
commercial purposes.	

!

Share Alike — If you alter, transform, or build upon this
work, you may distribute the resulting work only under
the same or similar license to this one.

Contenu connexe

Tendances

Présentation JavaScript
Présentation JavaScriptPrésentation JavaScript
Présentation JavaScripttarkan_
 
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Julien Jakubowski
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
Nouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde MicrosoftNouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde Microsoftdavrous
 
Swift, opportunités et perspectives du dernier langage d'Apple
Swift, opportunités et perspectives du dernier langage d'AppleSwift, opportunités et perspectives du dernier langage d'Apple
Swift, opportunités et perspectives du dernier langage d'AppleDamien GOSSET
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummiesMicrosoft
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express jsAbdoulaye Dieng
 
Votre mission ? Découvrir Haskell et le mettre en prod
Votre mission ? Découvrir Haskell et le mettre en prodVotre mission ? Découvrir Haskell et le mettre en prod
Votre mission ? Découvrir Haskell et le mettre en prodCéline Louvet
 
Javascript pour les Développeurs WEB
Javascript pour les Développeurs WEBJavascript pour les Développeurs WEB
Javascript pour les Développeurs WEBAbbes Rharrab
 
Réu technodejs
Réu technodejsRéu technodejs
Réu technodejsnaholyr
 
Introduction TypeScript
Introduction TypeScriptIntroduction TypeScript
Introduction TypeScriptfelixbillon
 
Migrations PHP 5 - Solutions linux 2009
Migrations PHP 5 - Solutions linux 2009Migrations PHP 5 - Solutions linux 2009
Migrations PHP 5 - Solutions linux 2009Eric D.
 
Cappuccino - ou comment créer une application web en 5 minutes
Cappuccino - ou comment créer une application web en 5 minutes Cappuccino - ou comment créer une application web en 5 minutes
Cappuccino - ou comment créer une application web en 5 minutes Geeks Anonymes
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & toolsSlim Soussi
 
NodeJs, une introduction
NodeJs, une introductionNodeJs, une introduction
NodeJs, une introductionToxicode
 
Une introduction à Javascript et ECMAScript 6
Une introduction à Javascript et ECMAScript 6Une introduction à Javascript et ECMAScript 6
Une introduction à Javascript et ECMAScript 6Jean-Baptiste Vigneron
 
L'Open Web en tant que pierre angulaire du développement multi-objets
L'Open Web en tant que pierre angulaire du développement multi-objetsL'Open Web en tant que pierre angulaire du développement multi-objets
L'Open Web en tant que pierre angulaire du développement multi-objetsThomas Bassetto
 

Tendances (20)

Présentation JavaScript
Présentation JavaScriptPrésentation JavaScript
Présentation JavaScript
 
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Nouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde MicrosoftNouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde Microsoft
 
Cours1
Cours1Cours1
Cours1
 
Swift, opportunités et perspectives du dernier langage d'Apple
Swift, opportunités et perspectives du dernier langage d'AppleSwift, opportunités et perspectives du dernier langage d'Apple
Swift, opportunités et perspectives du dernier langage d'Apple
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummies
 
XebiConFr 15 - Swift dans la vraie vie
XebiConFr 15 - Swift dans la vraie vieXebiConFr 15 - Swift dans la vraie vie
XebiConFr 15 - Swift dans la vraie vie
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express js
 
Votre mission ? Découvrir Haskell et le mettre en prod
Votre mission ? Découvrir Haskell et le mettre en prodVotre mission ? Découvrir Haskell et le mettre en prod
Votre mission ? Découvrir Haskell et le mettre en prod
 
Javascript pour les Développeurs WEB
Javascript pour les Développeurs WEBJavascript pour les Développeurs WEB
Javascript pour les Développeurs WEB
 
Réu technodejs
Réu technodejsRéu technodejs
Réu technodejs
 
Introduction TypeScript
Introduction TypeScriptIntroduction TypeScript
Introduction TypeScript
 
Migrations PHP 5 - Solutions linux 2009
Migrations PHP 5 - Solutions linux 2009Migrations PHP 5 - Solutions linux 2009
Migrations PHP 5 - Solutions linux 2009
 
Bonnes pratiques développement android
Bonnes pratiques développement androidBonnes pratiques développement android
Bonnes pratiques développement android
 
Cappuccino - ou comment créer une application web en 5 minutes
Cappuccino - ou comment créer une application web en 5 minutes Cappuccino - ou comment créer une application web en 5 minutes
Cappuccino - ou comment créer une application web en 5 minutes
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & tools
 
NodeJs, une introduction
NodeJs, une introductionNodeJs, une introduction
NodeJs, une introduction
 
Une introduction à Javascript et ECMAScript 6
Une introduction à Javascript et ECMAScript 6Une introduction à Javascript et ECMAScript 6
Une introduction à Javascript et ECMAScript 6
 
L'Open Web en tant que pierre angulaire du développement multi-objets
L'Open Web en tant que pierre angulaire du développement multi-objetsL'Open Web en tant que pierre angulaire du développement multi-objets
L'Open Web en tant que pierre angulaire du développement multi-objets
 

Similaire à JavaScript pour le développeur Java

Formation JavaScript - Guide de démarrage rapide
Formation JavaScript - Guide de démarrage rapideFormation JavaScript - Guide de démarrage rapide
Formation JavaScript - Guide de démarrage rapideTarek Jellali
 
Les nouveautés de Groovy 2 -- Mix-IT 2013
Les nouveautés de Groovy 2 -- Mix-IT 2013Les nouveautés de Groovy 2 -- Mix-IT 2013
Les nouveautés de Groovy 2 -- Mix-IT 2013Guillaume Laforge
 
coursphp-230411142526-784b67e9.pdf
coursphp-230411142526-784b67e9.pdfcoursphp-230411142526-784b67e9.pdf
coursphp-230411142526-784b67e9.pdfRihabBENLAMINE
 
COURS PHP.pptx
COURS PHP.pptxCOURS PHP.pptx
COURS PHP.pptxtokikun
 
Exploiter php 5
Exploiter php 5Exploiter php 5
Exploiter php 5halleck45
 
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...Cyrille Grandval
 
Langage Java et Programmation Orienté Objet
Langage Java et Programmation Orienté ObjetLangage Java et Programmation Orienté Objet
Langage Java et Programmation Orienté ObjetMohammed Jaafar
 
Eric Moreau: AOP in .Net sing PostSharp
Eric Moreau: AOP in .Net sing PostSharpEric Moreau: AOP in .Net sing PostSharp
Eric Moreau: AOP in .Net sing PostSharpMSDEVMTL
 
Fest assert - Rendez vos assertions lisibles
Fest assert - Rendez vos assertions lisiblesFest assert - Rendez vos assertions lisibles
Fest assert - Rendez vos assertions lisiblesNicolas FRANCOIS
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_finalDuchess France
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_finalagnes_crepet
 
Developpement web dynamique_Base de donnees.pdf
Developpement web dynamique_Base de donnees.pdfDeveloppement web dynamique_Base de donnees.pdf
Developpement web dynamique_Base de donnees.pdfrachidimstapha
 
Eléments du langage Java.pdf
Eléments du langage  Java.pdfEléments du langage  Java.pdf
Eléments du langage Java.pdfAabidiHafid
 
Hands on lab Elasticsearch
Hands on lab ElasticsearchHands on lab Elasticsearch
Hands on lab ElasticsearchDavid Pilato
 

Similaire à JavaScript pour le développeur Java (20)

Formation JavaScript - Guide de démarrage rapide
Formation JavaScript - Guide de démarrage rapideFormation JavaScript - Guide de démarrage rapide
Formation JavaScript - Guide de démarrage rapide
 
Les nouveautés de Groovy 2 -- Mix-IT 2013
Les nouveautés de Groovy 2 -- Mix-IT 2013Les nouveautés de Groovy 2 -- Mix-IT 2013
Les nouveautés de Groovy 2 -- Mix-IT 2013
 
coursphp-230411142526-784b67e9.pdf
coursphp-230411142526-784b67e9.pdfcoursphp-230411142526-784b67e9.pdf
coursphp-230411142526-784b67e9.pdf
 
COURS PHP.pptx
COURS PHP.pptxCOURS PHP.pptx
COURS PHP.pptx
 
Exploiter php 5
Exploiter php 5Exploiter php 5
Exploiter php 5
 
Aiguisez votre c#
Aiguisez votre c#Aiguisez votre c#
Aiguisez votre c#
 
GetText / Rails - FR
GetText / Rails - FRGetText / Rails - FR
GetText / Rails - FR
 
GetText / Rails
GetText / RailsGetText / Rails
GetText / Rails
 
Cours tp2
Cours tp2Cours tp2
Cours tp2
 
Langage C#
Langage C#Langage C#
Langage C#
 
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
 
Langage Java et Programmation Orienté Objet
Langage Java et Programmation Orienté ObjetLangage Java et Programmation Orienté Objet
Langage Java et Programmation Orienté Objet
 
Eric Moreau: AOP in .Net sing PostSharp
Eric Moreau: AOP in .Net sing PostSharpEric Moreau: AOP in .Net sing PostSharp
Eric Moreau: AOP in .Net sing PostSharp
 
Fest assert - Rendez vos assertions lisibles
Fest assert - Rendez vos assertions lisiblesFest assert - Rendez vos assertions lisibles
Fest assert - Rendez vos assertions lisibles
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_final
 
Design poo togo_jug_final
Design poo togo_jug_finalDesign poo togo_jug_final
Design poo togo_jug_final
 
java_PAR.pdf
java_PAR.pdfjava_PAR.pdf
java_PAR.pdf
 
Developpement web dynamique_Base de donnees.pdf
Developpement web dynamique_Base de donnees.pdfDeveloppement web dynamique_Base de donnees.pdf
Developpement web dynamique_Base de donnees.pdf
 
Eléments du langage Java.pdf
Eléments du langage  Java.pdfEléments du langage  Java.pdf
Eléments du langage Java.pdf
 
Hands on lab Elasticsearch
Hands on lab ElasticsearchHands on lab Elasticsearch
Hands on lab Elasticsearch
 

JavaScript pour le développeur Java