JAVA 9 – Les streams et leurs équivalents en SQL

Sylvain SPANU

Si, comme moi, vous connaissez le Java de la vieille école et que vous n’êtes pas encore expert avec les changements de la version 8, je vous propose de voir ensemble les avantages de la librairie des Stream.
Les stream permettent de parcourir, filtrer, manipuler et transformer des données. Un peu comme avec SQL.

Dans cette article, je vais faire le parallèle entre les utilisations des stream et leurs équivalents SQL.

C’est parti !

Dans nos exemples, nous utiliserons une liste contenant des données sur des personnes.
Elle contient des informations sur leurs poids, leurs tailles, etc.
tableSQL
listeJava

1. Parcourir les données

On commence par la base, comment parcourir et afficher les données :
En Java :
Stream<Personne> sp = listeJava.stream();
sp.forEach(System.out::println);

! en Java, une fois le stream parcouru il est détruit. Il faudra le recréer pour afficher la liste à nouveau.

En SQL on ferait le classique :
SELECT * FROM tableSQL

2. Filtrer les données

Imaginons qu’on veuille filtrer les personnes de plus de 50 kg.
En Java :
sp = listeJava.stream();
sp.filter(x -> x.getPoids() > 50)
.forEach(System.out::println);

En SQL :
SELECT * FROM tableSQL WHERE poids > 50

3. L’opérateur Map

L’operation map en Java permet de récupérer uniquement ce dont on a besoin :
Dans notre cas on veut seulement afficher le poids.
sp = listeJava.stream();
sp.filter(x -> x.getPoids() > 50)
.map(x -> x.getPoids())
.forEach(System.out::println);

En SQL, il suffit de mentionner la colonne dans le SELECT :
SELECT poids FROM tableSQL WHERE poids > 50

4. Compter les données

Sans surprise, on utilise l’opérateur Count.
En Java :
sp = listeJava.stream();
long count = sp.filter(x -> x.getPoids() > 50)
.map(x -> x.getPoids())
.count();

En SQL :
SELECT COUNT(*) FROM tableSQL WHERE poids > 50

5. Sommer des résultats

Et si nous avions besoin de sommer les poids des personnes de plus de 50 kg ?

En Java il faut utiliser l’opérateur Reduce:

sp = listeJava.stream();
Double sum = sp.filter(x -> x.getPoids() > 50)
.map(x -> x.getPoids())
.reduce(0.0d, (x,y) -> x+y);
System.out.println(sum);

En SQL c’est l’opérateur SUM :
SELECT SUM(poids) FROM tableSQL WHERE poids > 50

6. Créer une nouvelle banque de donnés

L’opérateur Collect permet de créer une nouvelle liste en Java :
sp = listeJava.stream();
List<Double> ld = sp.filter(x -> x.getPoids() > 50)
.map(x -> x.getPoids())
.collect(Collectors.toList());
System.out.println(ld);

L’équivalent SQL est la fonction CREATE TABLE. C’est une fonction plus compliquée qui demande le détail de chaque colonne et type de donnée, je ne vais pas la détailler ici.

Voilà, c’est déjà terminé !
Nous avons pu voir la puissance des stream rien que sur les fonctions de base, et réviser notre SQL par la même occasion 😉

Pour aller plus loin, je vous donne rendez-vous sur open classroom :
https://openclassrooms.com/fr/courses/26832-apprenez-a-programmer-en-java/5013326-manipulez-vos-donnees-avec-les-streams

 

 

facebooktwittergoogle_plusmail

Chat Live Ossia Conseil par JobTeaser

Laura NATAF

Jobteaser X ossia

La semaine dernière, nos deux consultants Yusuf et Laurent, ont répondu à toutes vos questions lors du chat live @JobTeaser ! Le sujet : recruter des développeurs juniors en Java et .Net

A revoir en cliquant sur ce lien ci-dessous

https://www.jobteaser.com/fr/companies/ossia-conseil/newsfeed/recruitment-24622?fbclid=IwAR1vwa5CJMbOcnrPNjyCz9TpzZ6Y2iMefEzW8u_yhL2ghL13MHAZkyPoYL0

 

facebooktwittergoogle_plusmail

Petit aperçu de Java Fx

Anselme

Présentation

Au tout départ il y a eu AWT, qui fût la première bibliothèque  java pour concevoir des interfaces graphique. AWT a ensuite évolué en Swing qui est devenu la voie principale.

En digne successeur de Swing, JavaFX a été conçu pour réaliser des interfaces utilisateurs pouvant s’exécuter sur une large variété de support que ce soit ordinateur, appareil mobile, tv voire même console.

Cette librairie initialement créée en 2008 a beaucoup évolué depuis. Il y a peu cette bibliothèque était utilisable uniquement via un langage de script spécifique et il fallait la télécharger à part. Aujourd’hui Java Fx fait partie intégrante de java 8 et est full java.

Concepts de Base

En JavaFX toutes les applications doivent étendre la classe javafx.application.Application. Cette classe fournit le cycle de vie de l’application tel que le lancement (launch), le démarrage (start) ou encore l’arrêt de l’application (stop). Cela fourni un mécanisme pour les applications java de lancer une GUI JavaFX séparément de la méthode main.

Lors du lancement d’une application java faisant appel à du JavaFX, la méthode main doit appeler la méthode launch de la classe Application. Cette dernière appelle la méthode start que nous aurons préalablement redéfinie.

La redéfinition de la méthode start permet de s’assurer que la création des composants graphiques s’effectuera dans un seul thread. En effet, tous comme Swing l’utilisation de JavaFX est monothread et tous les appels de création ou de modification d’objet graphique doit se faire dans un seul thread, ici le JavaFX Application Thread.

Les éléments graphiques d’une gui JavaFX sont ordonnés dans une hiérarchie de conteneurs. Au plus haut niveau, il y a les Stages (javafx.stage.Stage) qui représentent les fenêtres. Dans ces Stages y sont disposés des Scenes (javafx.scene.Scene) qui contiennent des Nodes (javafx.scene.Node). Ces Nodes peuvent représenter des composants graphiques (tels que les labels, les boutons …) ou d’autres conteneurs (tel que des Panel avec leur stratégie de disposition de composants).

Hello World App

Comme dit précédemment, toutes les applications JavaFx doivent étendre la classe Application. La méthode start ainsi redéfinie créé et agence les composants graphiques.

Les lignes suivantes

créent un Node de type Button et y affecte du texte.

A l’aide de cette clouer, on ajoute au bouton un EventHandler qui appellera la méthode cliqueSurBouton() à chaque clique sur le bouton.

On crée un Node de type BorderPane et on lui ajoute dans la partie centrale le bouton précédemment créé.

Nous créons une Scene à laquelle nous passons en paramètre le Pan crée et les dimensions de la fenêtre. Et nous affectons au Stage, la fenêtre que nous venons de créer.

Nous avons créé les composants à afficher, nous pouvons donc affecter un titre et afficher la fenêtre avec les lignes suivantes :

Pour lancer notre application nous avons juste à lancer la méthode main comme pour tout programme en veillant bien appeler la méthode launch comme suit :

facebooktwittergoogle_plusmail

Développeur Java Finance

 

 

Société de conseil IT créée en 2006, Ossia Conseil est spécialisée dans les métiers de la finance de marché, à la fois au niveau des systèmes d’information (MOE, MOA) et des opérations. La qualité de nos prestations passe par notre capacité à développer chez nos consultants une vision complète des métiers de la finance et de leurs interactions au sein d’une banque d’investissement.

 

Notre client, grande banque d’investissement internationale recherche des développeurs Java, ayant des notions financières telles que :

 

  • Equity Derivatives
  • Fixed Income
  • Produits de Taux
  • Produits Dérivés
  • Règlementation financière

 

Missions et tâches principales :

 

La mission a pour objet le développement et la maintenance d’outils de calcul d’indicateurs utilisés par le front-office pour le reporting réglementaire LCR (Liquidity Coverage Ratio) incluant :

 

  • L’analyse du besoin, conception, développement / maintenance d’outils de calcul d’indicateurs utilisés par le front-office pour le reporting réglementaire LCR
  • Le suivi de la mise en production
  • Le support fonctionnel et technique

 

Profil recherché :

 

  • Ingénieur ou universitaire de niveau Bac +5 avec une expérience au minimum de 2 – 3 ans en développement informatique dans le domaine de la finance.

 

  • La maîtrise des technologies Java et Microsoft SQL Server est requise.

 

  • Très bon niveau d’anglais.

 

Nous recherchons une personne rigoureuse, méthodique et autonome pour mener à bien cette mission.

 

Vous souhaitez intégrer une équipe dynamique, à même de vous faire progresser, n’hésitez pas à nous adresser dès à présent votre candidature à l’adresse : drh@ossia-conseil.com

facebooktwittergoogle_plusmail