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