N3rd.stack:[java] : faites votre propre stack java pour le web

J’ai profité des congés de fin d’année pour faire un peu de java et construire ma propre stack technique à partir de composants que j’avais repérés ici ou là ces derniers temps. Je souhaitais avoir quelque chose de ré-utilisable pour mes divers travaux (persos et pros) et voir si j’étais capable de le faire. Au final j’ai quelque chose de montrable (et j’ai tout documenté), compréhensible quel que soit votre niveau. C’est aussi perfectible, car je ne me considère pas comme un développeur java, donc je suis preneur de toute remarque, conseil, etc. …

J’ai pompeusement appelé mon bébé N3rd.stack:[java].

N3rd.stack:[java] est une “petite” stack java agnostique (Qui peut s’adapter aux composants avec lesquels il interagit. Wikipedia).

N3rd.stack:[java] vous apporte la structure nécessaire pour faire des web apps de type “Single Page Application” en vous apportant les composants nécessaires aussi bien côté serveur que côté client, notamment les éléments pour mettre en oeuvre des interfaces “RESTful JSON”.

Qu’est-ce qu’il y a dedans ?

N3rd.stack:[java] embarque les composants suivants :

  • la base de la stack est le framework Spark http://www.sparkjava.com/
  • la partie base de données est assurée par CouchDB
  • N3rd.stack:[java] peut aussi utiliser Groovy (expérimental)
  • et d’autres composants que vous pouvez découvrir en lisant la documentation
  • il y a même un “bout de code” venant de Play!>2 pour la partie JSON ;)

Il y a aussi du javascript avec :

  • Backbone et les dépendances associées (jQuery, Underscore), essentiellement pour ses modèles, collections, “moyens de synchronisation” avec le serveur et enfin son modèle objet.
  • YepNope comme “script loader”
  • Knockout et Knockback, le 1er pour son binding html “bi-directionnel” “à la Angular”, (en plus simple) (ça n’engage que moi), le 2ème permettant d’intégrer les modèles et collections de Backbone dans Knockout

Mon inspiration vient de :

  • PlayFramework
  • RESThub
  • Ratpack
  • Node.js
  • Express.js

A quoi ça ressemble dans le code ?

Côté java, par exemple :

Voici une route pour retourner au format JSON la liste des humains :

/* get All Humans */
get(new Route("/humans") {
    @Override
    public Object handle(Request request, Response response) {
        List<Human> humans = humanRepository.getAll();

        response.type("application/json");
        return Json.toJson(humans);
    }
});

Côté javascript :

Voci la collection qui permettra d’appeler la “route” serveur correspondante :

N3rd.Collections.Humans = Backbone.Collection.extend({
    url :"/humans",
    model : N3rd.Models.Human
});
var humans = new N3rd.Collections.Humans();

humans.fetch({
    success: function(data){/**/},
    error: function(err){throw err;}
});

Vous voyez, c’est relativement simple, et suffisant pour faire des petites webapps.

On trouve ça où ?

Tout d’abord j’explique de A à Z, comment j’ai procédé pour construire N3rd.stack:[java], vous puvez trouver les explications ici : https://github.com/k33g/n3rd_stack_java_origins/blob/master/doc/README.md.

Et le projet de stack est ici : https://github.com/k33g/n3rd_stack_java

J’ai fais tout ça avec IntelliJ “version Ultimate” car il y avait une grosse promo de décembre, mais sinon, avec Netbeans c’est aussi tout à fait faisable, ainsi qu’avec la version Community d’IntelliJ. D’ailleurs, si vous téléchargez le projet ici : https://github.com/k33g/n3rd_stack_java/archive/master.zip vous pouvez très bien l’ouvrir avec la version Community d’IntelliJ, le compiler, le modifier, le lancer, etc… .

Amusez vous !

blog comments powered by Disqus

Related posts