Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Migration d'objets métier de Java vers JavaScript
Par Marc Autran

Le , par autran

0PARTAGES

Lors de précédents billets, j'ai évoqué la migration d'application JEE vers des architectures JavaScript. Les migrations que j'ai expérimentées m'ont permis de porter des applications JEE vers AngularJS pour le front office et Node.js pour le back-office. Comme dans les blogs précédents, je rappelle que ces migrations sont envisageables pour des applications légères.
Dans ce billet, j'aborderai la migration des objets métier. En JEE ces objets métier sont des POJO (Plain Old Java Objects) c'est-à-dire des classes. Aussi ces objets pourront devenir en JavaScript des POJO (Plain Old Javascript Objects) c'est-à-dire encore des classes.
Pour être autorisé à parler de classes en JavaScript, il faut bien entendu implémenter le standard ES6.
Regardons de plus près comment on pourrait migrer un objet Owner qui agrégerait des objets cellules.
Voici une implémentation en Java :
Code java : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
public class Cellule { 
  
	// attributs 
	private String name = ""; 
	private Owner owner = null; 
  
	// constructeur 
	public Cellule(String name){ 
		this.setName(name); 
	} 
  
	// méthodes --> setter et getter 
	public String getName() { 
		return name; 
	} 
  
	public void setName(String name) { 
		this.name = name; 
	} 
  
	public Owner getOwner() { 
		return owner; 
	} 
  
	public void setOwner(Owner owner) { 
		this.owner = owner; 
	} 
} 
  
public class Owner  
{ 
	// attributs 
	private ArrayList<Cellule> cellules; 
  
	// constructeur 
	public Owner(){ 
		this.cellules = new ArrayList<Cellule>(); 
	} 
  
	// méthodes 
	public int getSize(){ 
		return this.cellules.size(); 
	} 
  
	public int addElement(Cellule e){ 
		if(e.getOwner() != this)  
			e.setOwner(this); 
		this.cellules.add(e); 
		return this.cellules.indexOf(e); 
	} 
  
	public Cellule getElementAtIndex(int index){ 
		return this.cellules.get(index); 
	} 
}

Et maintenant l’implémentation en JavaScript :
Code javascript : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Cellule {  
    constructor(name){  
		// attributs 
		this.name = name; 
		this.owner = null; 
    }  
} 
  
class Owner{ 
	constructor(){  
		// attributs 
		this.cellules = []; 
    } 
  
	// methodes 
	getSize(){ 
		return this.cellules.length; 
	} 
  
	addElement(cellule){ 
		if(cellule.owner != this)  
			cellule.owner = this; 
		return this.cellules.push(cellule); 
	} 
  
	getElementAtIndex(index){ 
		return this.cellules[index]; 
	} 
}

On remarque que les règles de passage de Java à JavaScript semblent assez simples si on accepte quelques petites entorses aux règles strictes de l'objet et notamment l'encapsulation grâce aux mentions de protection. En effet, en Java les propriétés sont privateset donc seulement accessibles au travers de getter et setter. Tandis qu'en JavaScript, tout est public, mais cela permet de faire l'économie d'écriture des getter et setter.
Cependant, si l'on n'implémente pas l'héritage dans l'organisation des objets métier, on peut sans problème s'abstraire de ces mentions de protection. Et on remarque que l'on n'utilise que rarement l'héritage dans les tiers métier.

Donc, il semble que la migration des objets métier de Java à JavaScript soit assez simple.

Une erreur dans cette actualité ? Signalez-le nous !