Recherche

Coder's IO

Android Bootstrap

 

On connaissait Twitter Bootstrap, le bootstrap de Tomcat, jQuery UI Bootstrap, il y a même le nom de domaine bootstrap.com (d’ailleurs je ne sais pas encore à quoi il sert :P).
Maintenant Android a aussi son kit de démarrage. Il permet d’obtenir les bases et la configuration d’une application android.

Il suffit de renseigner le nom de l’application ainsi que le nom du package racine, faire un clic sur le bouton et le site vous propose de télécharger la base d’une application packagée prête à l’emploi ; il ne reste plus qu’à développer.

Sur le site en lien dans ce post, vous trouverez l’ensemble des outils et frameworks embarqués dans le packaging de l’application.

A tester !

#java #android #bootstrap

Vert.x 2.0

 

J’avais parlé dans un article précédent du framework Vert.x
Je reviens avec ce sujet pour vous donner des nouvelles du projet.

La version 1.3 est sortie le 24 octobre dernier, incluant 37 points (corrections, updates de version, etc). La liste exhaustive sur ce pointeur : https://github.com/vert-x/vert.x/issues?milestone=21&state=closed

La mailing-list est très active sur le projet. Dernièrement, le développeur principal a annoncé que la réflexion pour la prochaine version majeure 2.0 avait commencé.

Un message a été posté contenant une liste d’idées sur le contenu de la prochaine release. Cette annonce a généré beaucoup de réactions et d’idées sur le google group du projet. 

Les points envisagés sont les suivants : 

– Le refactoring du classloader
– Meilleure intégration dans les IDEs
– Monitoring et management
– Introduction du multi-threading dans les verticles de type worker
– Elimination des callbacks spaghettis
– Séparation des différents langages en modules
– Support de Scala et Clojure
– Diverses évolutions (mise à jour de la version de Netty et de SockJS, etc)

Une affaire à suivre… 

#java #vertx #v2

Java au quotidien épisode 4 : Java toutes options

 

Il est très courant de trouver dans le code de nos applications les lignes suivantes : 

if (maVariable == null) {}

ou alors : 
if (maVariable !=null) {}

ou encore : 
if (maMethode() == null){}

ou bien : 

return null;
}

Je suis sur que vous l’aurez constaté, l’ensemble de ces portions de code ont un point commun : la référence null.
Si l’on comprend bien techniquement ce que l’on est en train de faire, fonctionnellement des fois on peut se poser la question.

Dans chacun des cas, on vérifie si l’objet que l’on va manipuler ne contient pas une référence nulle, ceci afin d’éviter la célèbre NullPointerException.

Le fait de se retrouver avec un objet qui contient une référence nulle peut être souhaité, c’est à dire que le fait d’affecter null à une instance indique qu’une référence attendue n’a pas été trouvée (par exemple). 
Dans ce cas là, on indique dans la javadoc de la méthode que ce comportement est possible et qu’il faut faire attention. Implicitement, cela veut dire que l’objet retourné par la méthode est optionnel.

Personnellement, je n’aime pas beaucoup écrire ce type de code je ne trouve pas ça très expressif et très joli.

Pour adresser ce problème, l’API Guava a introduit un type nommé Optional (depuis la version 10 de l’API)

L’idée de ce nouveau type est d’encapsuler la référence afin de transformer la question : 

Est ce que la référence est null ?

par 

Est ce que la référence est présente ou absente ?

Au premier abord, on peut dire que la question a le même sens, dit de deux façons différentes.

La vraie différence se trouve dans le code. Je vais essayer de vous faire un tour d’horizon.

Comme je vous le disais plus tôt, l’objectif du type Optional est de contenir une référence typée. La classe Optional est paramétrée.

Pour mieux comprendre son fonctionnement, rien de mieux qu’un petit exemple, soit la méthode suivante écrite de manière traditionnelle : 

public String getPersonName(final Person person){
if(person != null){
return person.getName();
}
return null;
}

final Person person = new Person(“Fabrice”);

String name = getPersonName(person);

if(name != null) {
System.out.println(“nom de la personne “ + name);
}else {
System.out.println(“nom de la personne : inconnu”);
}

Voila comment elle pourrait être refactorée à l’aide de la classe Optional<T> : 

public Optional<String> getPersonName(final Person person){
if(person != null){
return Optional.fromNullable(person.getName());
}
return Optional.absent();
}

final Person person = new Person(“Fabrice”);

System.out.println(“nom de la person “ + getPersonName(person).or(“inconnu”));

L’exemple présenté ci-dessus est un peu naif mais sans forcément connaitre l’API de cette classe, on peut voir tout de suite l’intérêt du type Optional.

Il existe 3 façons de créer une instance d’Optional :
Optional.fromNullable() : création à partir d’une référence potentiellement nulle. Cette instance répondra aux méthodes : isPresent() ou isAbsent()
Optional.absent() : création d’un optional contenant une référence nulle
Optional.of() : création à partir d’une référence qui ne peut pas être nulle.

Plusieurs méthodes sont disponibles pour interagir avec un Optional : 

Optional.or() : permet, en cas de référence absente, de fournir une valeur par défaut.
Optional.get() : permet d’obtenir concrètement la référence.
Optional.orNull() : permet de récupérer une référence null si la référence encapsulée est absente.
Optional.isPresent() : remplace le traditionnel : if(maVariable != null){..}

En utilisant Optional, on peut fournir un code plus ‘self’ expressif, plus maitrisé et sûr. En suivant le lien de l’article, vous pourrez découvrir l’ensemble des possibilités offertes par cette classe.

Aussi, il me semble qu’un type équivalent serait disponible dans la prochaine version du JDK. Malheureusement, je n’ai pas retrouvé le lien permettant d’appuyer ce propos.

A partir de maintenant, toutes les options sont permises 😉

#java #guava #optional #null

JSON.simple

JSON.simple est un outil permettant de transformer des objets java au format JSON et inversement.
Cet outil porte bien son nom par rapport à la simplicité de mise en oeuvre.
La première version est sortie en janvier 2009. Aujourd’hui, la version courante est la 1.1.1.

JSON.simple est pleinement compatible avec la spécification JSON (RFC4627), une suite de tests unitaires démontre cette compatibilité.

Un point intéressant est que l’api n’a aucune dépendance.

Les principales fonctionnalités sont les suivantes :

– Encoder au format JSON,
– Décoder à partir d’un flux JSON,
– Prend en charge l’échappement de certains caractères.

JSON.simple sait mapper nativement (decode/encode) les types suivants :

– String -> java.lang.String
– number -> java.lang.Number
– true|false -> java.lang.Boolean
– array -> java.util.List
– object -> java.util.Map.
– null -> null

En dehors de ces types, JSON va invoquer la méthode toString sur l’objet à encoder ce qui ne donne pas toujours le résultat souhaité.
Pour les objets sortant de ce scope, l’outil a prévu un moyen de rendre n’importe quelle classe Jsonifiable en fournissant l’interface JSONAware.
Cette interface définit une méthode à implémenter. Cette méthode sera invoquée au moment où l’objet sera transformé au format JSON.

Les différentes actions menées par l’outil se font en un temps record. Sur le site, on peut trouver un benchmark que l’on peut faire tourner localement.

Une dernière fonctionnalité intéressante est la possibilité d’intervenir dans la phase de parsing d’un flux JSON. Cette incursion se fait à la manière du traitement XML réalisé par l’api SAX.

J’ai eu recours très récemment à cet outil. La simplicité de mise en oeuvre est très appréciable.

#java #json #decode #encode

La sérialisation en 8 points

Le mécanisme de sérialisation en java permet à la JVM de sauver l’état d’un objet sur le disque ou le faire passer dans les tuyaux d’un réseau. Même si le sujet est vieux comme le monde… une piqûre de rappel peut des fois faire du bien 🙂

Lorsqu'on dit : “je vais rendre une classe sérialisable”, on pense immédiatement à l’interface que la classe cible doit implémenter pour être compatible avec ce mécanisme.
Cependant, il y a d’autres points qu’il est bon de connaître afin de maîtriser complètement le sujet.

Le lien que je vous propose décrit au travers de 8 questions la sérialisation en java. Au passage, un autre pointeur est fourni et tout aussi intéressant sur le mot clef transient.
Je vous recommande, si vous avez des doutes, de les lire attentivement 🙂

Bonne lecture !

#java #serialisation

Les fonctionnalités de Java

 

Voici un article que je trouve intéressant. L’auteur de ce post s’est amusé à classer les différentes fonctionnalités du langage Java selon 3 catégories : 

– Tous les jours, 
– Occasionnellement,
– Jamais (enfin seulement les développeurs de framework ou de librairie).

Chaque fonctionnalité est mise dans l’une des catégories selon la fréquence à laquelle il est bon de l’utiliser d’une manière générale dans notre job de développeur Java.

L’auteur de l’article à fait cette liste selon des critères subjectifs et ne revendique en aucun cas avoir une liste de référence. 

Si, en lisant l’article, vous trouviez une fonctionnalité dans une catégorie et que celle-ci ne correspond pas à votre rythme d’utilisation, l’auteur vous donne son analyse.

Pour chaque fonctionnalité, il indique un commentaire décrivant la raison pour laquelle celle-ci se trouve dans cette catégorie.

Je trouve l’exercice intéressant ainsi que le résultat. Sans vouloir lancer de discussion à dessein trollique, n’hésitez pas à donner votre avis sur la question 🙂

Bonne lecture !

#java #fonctionnalité #fréquence

Java Champion(e)

 

C’est courant octobre que la bonne nouvelle est arrivée, +agnes crepet  a été nommée Java Championne
Sur le site d’Oracle (http://java.net/website/java-champions/bios.html), on peut trouver la liste de l’ensemble des personnes qui ont reçu ce titre.

Qui est *Agnès Crepet ? (pour ceux qui ne la connaîtraient pas)

Agnès est passionnée par la technologie avec ses 11 années d’expérience et spécialement sur l’ensemble de l’éco-système Java.

Elle a commencé à travailler avec ce langage en 1999. Elle a eu l’occasion de travailler dans plusieurs secteurs d’activités.

Elle est aussi leader dans deux Java User Groups : Lyon JUG et le JDuchess France.
Elle est aussi co-fondatrice de la conférence Mix-IT ainsi que du podcast Cast-IT, traitant tous les deux de Java et de l’agilité.

Elle écrit régulièrement des articles pour le journal Programmez ainsi que sur le blog JDuchess.

Vous pourrez aussi la retrouver en tant que speaker dans différentes conférences autour de Java.

Elle est enfin membre et présidente de l’association Avataria qui organise des concerts, des Linux Party, des festivals dans des lieux du patrimoine industriel de la ville de Saint-Etienne (sa ville).

Son actualité ?

Dernièrement, Agnes Crepet s’est lancée dans une nouvelle “entreprise”. 
Elle a fondé avec 3 amis une entreprise nommée Ninja Squad.

Cette entreprise va fonctionner autour de 3 activités principales : 
–  le développement 
– l’expertise
– la formation

Les valeurs défendues par Ninja Squad sont : 
– programmer est un art
– développer, c’est créer,
– l’Open source

La société maintient 3 projets : 
– DbSetup : une API Java open source pour peupler votre base de données dans vos tests unitaires.
– Échanges.in : une plateforme d'échanges non marchands
–  Apache Camel : Working on improving monitoring

Si vous ne la connaissiez pas, vous en savez un peu plus… En lien dans ce post un article d’Agnès Crepet expliquant ses impressions sur le fait de devenir Java Championne ainsi que la génèse et la philosophie de l’entreprise Ninja Squad

Bonne lecture…

#java #championne #squad #agnes #crepet

DevFest à Nantes

 

Le 9 novembre prochain se tiendra le DevFest à Nantes. 
Cette conférence est organisée par le Google Developer Groups (GDG) Nantais.

D’une manière générale, les DevFests sont des conférences qui se tiennent un peu partout dans le monde et qui sont pour les développeurs intéressés par les technologies gravitant dans l’univers de Google. L'occasion de se rassembler et d’échanger.

La conférence Nantaise se déroulera sur une journée de 8h30 à 18h dans les locaux de l’Epitech à Nantes.

Deux types de sessions seront dispensés pendant cette journée : 
– Les conférences présentées par des googlers et/ou des speakers renommés,
– Les CodeLabs qui seront un moyen de mettre en pratique une techno accompagné d’un expert.

L’inscription est limitée et obligatoire. Une modeste participation de 10 euros est requise, celle-ci comprend le petit déjeuner le matin en arrivant ainsi que le repas. Néanmoins, l’inscription est gratuite pour les étudiants.

Le concours BeMyApp, dont le but est de développer en équipe en 48h, est soutenu par le DevFest.
Ce concours se déroule le week-end suivant la conférence à Marseille. 
En s’inscrivant au concours, l’aller-retour à Marseille et la restauration pour les 2 jours seront pris en charge. Petit bonus: l’inscription au DevFest devient gratuite.

L’ensemble des informations complémentaires sur le planning, les speakers, etc. sont disponibles sur le lien attaché à l’article.

#java #google #devfest #gdg

Java puzzle : unreachable statement

 

Ce soir je vous propose une devinette sur la compilation en Java.
Ce puzzle est proposé par +Joseph Kulandai R. A travers ce puzzle, il fournit une explication sur le mécanisme de compilation des déclarations unreachables.

Voici l’énoncé : 

Soit les 3 blocs de code suivants : 

Bloc A
public void javapapers() {
    System.out.println("java");
    return;
    System.out.println("papers");
}

Bloc B
public void javapapers() {
    System.out.println("java");
    if (true) {
        return;
    }
    System.out.println("papers");
}

Bloc C:
public void javapapers() {
    System.out.println("java");
    while(true) {
        return;
    }
    System.out.println("papers");
}

Tentez de décrire, sans IDE bien sûr, le comportement du compilateur dans les 3 cas ci-dessus.

Pour vérifier vos réponses et avoir une explication, suivez le lien attaché à ce post.

#java #puzzle #unreachable

Propulsé par WordPress.com.

Retour en haut ↑

Concevoir un site comme celui-ci avec WordPress.com
Commencer