Le singleton est mort, vive le singleton !

Encore un post sur le Singleton ?

Le 06/08/2018
  • Version 1 parue le 16/12/2017
  • Version 2 parue le 06/08/2018 : accès concurrents, PermGen / Meta spaces, Holder interne

L’objectif de ce billet est de présenter une implémentation simple en Java du pattern Singleton.

Je ne traiterai donc pas de l’utilité ni des recommandations d’usage liées à celui-ci mais bien de mise en oeuvre (codage pour les intimes) en Java Standard Edition (JSE).

Float pour un Montant

Le 27/07/2018

Blanka très très très EN COLERREEEEEEE !

Blanka trouver encore trop de codes sources sur GitHub avec Float price; ou Double montantTotal;.

Gens pas connaitre IEEE-754 !!!!!

Blanka donner lien en anglais à lire par gens ! https://javarevisited.blogspot.com/2012/02/java-mistake-1-using-float-and-double.html

Blanka donner TL;DR : Gens devoir utiliser BigDecimal avec constructeur String !

Blanka prévenir : si Blanka trouver code source avec Float pour montant, Blanka casser Crâne !!!!!

GWT, AngularJS, GoogleMaps, Kotlin

Le 22/07/2018

Blanka pas aimer quand Google rien avoir à faire des développeurs. Google casser API, Google arrêter API, Google faire payer API quand Google dire gratuit.

Blanka lister Google bad-habits :

  • Google abandonner GWT -> Google créer GWT2
  • Google abandonner GWT2 -> Google créér AngularJS
  • Google abandonner AngularJS -> Google créer Angular2
  • Google donner GoogleMaps -> Google faire payer GoogleMaps
  • Google procès Java JVM -> Google encourager JavaScript (EcmaScript)
  • Google procès Java API -> Google encourager Kotlin

Web Components

Le 21/07/2018

Blanka pas content du tout quand Blanka obligé écrire JavaScript + CSS + HTML dans même fichier !

Blanka trouve programmation gros crado :

<script src="node_modules/@webcomponents/webcomponents-bundle.js"></script>
  <script type="module">
    import {LitElement, html} from '@polymer/lit-element';

    class MyElement extends LitElement {

      static get properties() { return { mood: String }}

      _render({mood}) {
        return html`<style> .mood { color: green; } </style>
          Web Components are <span class="mood">${mood}</span>!`;
      }

    }

    customElements.define('my-element', MyElement);
  </script>

  <my-element mood="happy"></my-element>

Découverte de Deltaspike Data Module

avec CDI 2.0, Weld 3, JUnit 5, JPA 2.2, EclipseLink 2.7, H2 et Lombok

Le 21/06/2018

Cet article va vous permettre de découvrir Deltaspike Data Module, une alternative à Spring Data dans le monde CDI et dans notre cas en CDI 2.0.

Cette accroche est parlante pour ceux qui connaissent Spring Data mais peut-être pas pour les autres : Deltaspike Data va permettre d’avoir très simplement une fonctionnalité de CRUD (Create, Read, Update, Delete) sur des entités JPA et bien plus encore en vous faisant économiser énormément de temps de développement et de bugs potentiels !

Préconditions des méthodes d'une API

Parce qu'il faudrait toujours vérifier les arguments

Le 02/06/2018

Comme tout système s’appuyant sur des inputs, il est très important de contrôler les arguments des méthodes quand on élabore une API, qu’elle soit locale sous forme de JAR ou distante via un service REST, afin de non seulement la rendre plus robuste et stable mais aussi de se prémunir de certaines attaques.

Cependant, en Java de base, c’est particulièrement laborieux, rébarbatif et cela engendre une fainéantise exacerbée. Conséquences directes et désastreuses : baisse de la qualité, de la robustesse du code et créations potentielles de failles de sécurité.

Cet article tente de faire le tour de la question, sans prétention, en ratissant assez large. C’est à dire en allant de Java classique jusqu’à Bean Validation et JAX-RS, en passant par une implémentation spécifique “Faite Maison”.

Serveur minimal HTTP avec JShell en Java_10

Histoire de troller sur NodeJS versus Java

Le 23/04/2018

NodeJS se targue de pouvoir monter en quelques lignes de code un simple serveur HTTP. Effectivement, créer ce genre de serveur est vraiment simple et particulièrement utile pour du déploiement dans le Cloud.

Et Java dans tout ça ? A la traîne ? Has-Been ?

“Si à 50 ans t’as pas de Rolex et/ou si tu sais pas faire de TypeScript, t’as raté ta vie !”

Fort heureusement, je vais vous montrer qu’avec JShell, apparu avec Java 9, en 10 lignes de code environ, vous obtiendrez un serveur HTTP Asynchrone, performant, en ayant à portée de main tout ce que vous offre Java 10, ses modules, ainsi qu’historiquement, toutes les bibliothèques JAR de son écosystème !

Apache Archiva sur Raspberry PI

pour centraliser ses artefacts et autres archetypes ...

Le 14/04/2018

Il me faut un repo Maven dédié !”. Voilà ce qui m’est venu en tête quand j’ai dû changer de machine récemment alors que tous les artefacts maven que je produisais étaient capitalisés dans le .m2/repository de mon home. Autant dire “Pas capitalisés”.

Bien sûr, j’utilise un repo Nexus au boulot mais je change d’activité et je vais devenir plus mobile, il me faut donc une solution.

J’aurais pu prendre une image Docker et la déployer sur AWS ou équivalent : la solution de facilité qui demande toutefois un peu de “ressource” financière.

Et je le vois, là, rose, toutes diodes allumées, connecté à ma box, servant de proxy Squid de temps en temps. Mon Raspberry PI 1, je l’entends encore me dire “Moi je peux, moi je peux, moi je peux !” en trépignant dans son joli boitier.

Contribuer à l'Eclipse Foundation : DONE

plutôt que d'attendre en pestant sur sa chaise ...

Le 02/04/2018

Comme tout bon développeur Java, je suis un gros consommateur des solutions fournies par l’Eclipse Foundation. Je ne vais en citer que quelques-unes : Eclipse IDE, EclipseLink, Eclipse GlassFish, Jetty, Eclipse EGit, Eclipse Maven Integration, etc.

Il était donc temps, au lieu d’attendre en ronchonnant qu’un patch ne soit développé, de contribuer en fournissant un correctif à un projet.

Développer en s'amusant et réciproquement

Ou comment apprendre à coder en réalisant un jeu vidéo ...

Le 14/03/2018

Dans mon parcours professionnel, j’ai été formateur de jeunes développeurs pendant sept années. Ces derniers venaient d’horizons différents, parfois sans aucune compétence en terme de programmation.

Afin de rendre ludique l’apprentissage des fondamentaux de l’algorithmique et de Java, je les ai fait participer à la création d’un jeu video : Xenon Reborn.