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 !
Tweet