Recherche

Coder's IO

Java8 : JDeps

 

Dans la prochaine version du JDK, la version 8, un outil sera présent, appelé JDeps. Il aura pour but de fournir une analyse des dépendances statiques d'un projet.

JDeps permet de voir les packages dont dépend la cible analysée (un fichier .class, un répertoire ou une archive .jar)

Voici un exemple tiré de lien attaché à ce post : 

$./bin/jdeps demo/jfc/Notepad/Notepad.jar
<unnamed> (demo/jfc/Notepad/Notepad.jar)
     -> java.awt
     -> java.awt.event
     -> java.beans
     -> java.io
     -> java.lang
     -> java.net
     -> java.util
     -> java.util.logging
     -> javax.swing
     -> javax.swing.border
     -> javax.swing.event
     -> javax.swing.text
     -> javax.swing.tree
     -> javax.swing.undo
 
Dans cet exemple, JDeps décrit l'ensemble des packages utilisé dans le projet Notepad.jar

Plusieurs options sont disponibles comme la possibilité de définir la profondeur de la transitivité (–depth).

Pour en savoir plus, vous trouverez d'autres exemples en suivant le lien attaché à ce post.

#java   #dependance   #java8   

Mieux comprendre le bytecode de Java

 

+Yohan Beschi  développeur et expert chez Soat, présentera le 24 septembre prochain une soirée autour du bytecode de Java.

Cette soirée permettra de répondre aux questions suivantes : 
– Comment fonctionne le bytecode Java ?
– Comment la JVM fonctionne ?

Yohann proposera une introduction au fonctionnement de la JVM et s'intéressera aux bases du bytecode de Java. L'approche se fera au travers d'exemples concrets.

La soirée se découpera en deux parties : 
1- La JVM et le bytecode
2- La structure d'un fichier .class

Cet événement est gratuit, il nécessite un niveau intermédiaire pour suivre la soirée dans de bonnes conditions.

#java #bytecode #jvm

Catch-Exception

 

Dans les tests unitaires, il existe plusieurs façons de vérifier que le comportement des exceptions répond bien aux attentes.

Pour information j'utilise fest-assert pour la gestion des assertions ; même si l'information n'est pas capitale, cela permet de savoir de quoi on parle 😉

Voici un premier exemple qui présente la manière basique d'effectuer cette vérification : 

   @Test
    public void first_way_to_exception() throws Exception {

        //case 1
        try {
            ms.computeSomething(1, 1);
            fail("should throw an exception!");
        } catch (Exception e) {

        }

       //case 2
        try {
            ms.computeSomething(1, 2);
        } catch (Exception e) {
            fail("no exception should be threw");
        }

    }

Dans le cas 1, on va vérifier que le fil d’exécution du test unitaire passe bien dans le block catch, ce qui voudrait dire qu’une exception a bien été levée et correspond au comportement attendu.
Si l’invocation de la méthode du service ne lançait pas d’exception alors le test échouerait avec la méthode fail(..) 

Cette solution très pragmatique et qui fonctionne bien, implique la mise en place de pas mal de lignes de code qui présente peu d’intérêt pour le test unitaire en lui-même.

Avec l’évolution du JDK et de JUnit, il est possible d'avoir recours aux annotations. En effet, l'ajout du paramètre expected dans l'annotation @Test permet d'exprimer de manière plus synthétique le fait que le lancement d'une exception est attendu par le test. Voici un exemple d'implémentation : 

  @Test(expected=OneException.class)
   public void second_way_to_exception() throws Exception {
        ms.computeSomething(1, 1);
   }

Cette solution est plus concise, néanmoins elle ne permet pas de manipuler l'exception levée pour, par exemple, analyser le message contenu dans l'exception à l'instar de la première solution.

La troisième solution repose sur une librairie nommée catch-exception.
Cette librairie permet d'obtenir, en quelque sorte, un mix des deux solutions précédentes.
c'est-à-dire que le code écrit restera (très) concis et que cela permettra de faire une analyse fine de l'exception que l'on souhaite traiter. 
Voici un exemple : 

 @Test
 public void third_way_to_exception() throws Exception {
        catchException(ms).computeSomething(1, 1);

         assertThat(caughtException())
             .isInstanceOf(OneException.class)
             .hasMessage(EVERYONE_ARE_EQUALS_TO_1);
 }
    
Cette librairie fournit une manipulation à la Mockito (très expressive). Il est d'ailleurs très facile de comprendre l'exemple.
La première ligne du test va encapsuler l'instance de l'objet que l'on souhaite surveiller. Ensuite, on enregistre la méthode que l'on souhaite contrôler.

Après, on écrit l'assertion. Dans ce cadre, on a accès à un ensemble d'informations (comme son type, le contenu du message, etc..)

Des trois solutions, c'est naturellement la dernière que je retiendrai.

Vous trouverez plus de détails dans le lien attaché à ce post.

    #java #test_unitaire #exception

Podcast : Une tasse de thé

 

Un nouveau podcast a vu le jour il y a quelques mois. Il a été créé et est animé par +Eric Lefevre-Ardant 
Ce podcast a pour objectif d'aborder des sujets techniques assez variés (le cloud, java, haskell,…).

La durée d'une épisode est limitée à environ 10mn. Cela peut paraitre court néanmoins l'entretien est mené de manière très pragmatique afin de couvrir le sujet sur ses points essentiels. 

En règle générale, un épisode est basé sur un échange avec un invité. Celui-ci vient présenter un sujet technique précis.

Actuellement le rythme des épisodes est d'environ 2 épisodes par mois. 
 
Le premier épisode a été diffusé le 24 avril dernier et aujourd'hui le podcast compte 7 épisodes.

Vous pourrez trouver les sujets qui ont été abordés jusqu'à présent en suivant le lien attaché au post. 

La diversité des sujets fait que tout le monde peut y trouver son compte. Le format très court est intéressant car en un temps réduit, il est possible de se faire une idée sur un sujet.

Les épisodes de ce podcast sont disponibles sur l'ensemble des plateforme habituelles.

Au lieu de ne boire que du café à longueur de journée, tentez une tasse de thé! 😉

#java #podcast

IntelliJ : Folding

 

L'article de ce soir vous propose un pointeur sur un court article présentant une fonctionnalité intéressante du célèbre IDE Java édité par JetBrain.

L'article, hébergé sur le confluence de l'éditeur décrit la fonctionnalité de folding . Cette fonctionnalité a pour objectif de clarifier le code. En effet, lorsque nous codons dans notre langage favori, certains détails peuvent venir polluer la clarté du code.

L'article liste les différents cas ou l'IDE intervient pour aider à la lecture du code.

Pour mieux comprendre ce qu'est le folding, voici un exemple présentant le cas des générics.

Lorsque nous écrivons la ligne suivante :

ListMyClass> l = new ArrayListMyClass>();

Le code ci-dessus présente de l'information redondante : My Classe>, qui est indiqué 2 fois. Cette information en double peut nuire à la lecture.

La fonctionnalité de folding va transformer la ligne précédente de la façon suivante :

ListMyClass> l = new Array List ~>();

Ce qui améliore la lisibilité du code. Cet exemple n'est peut-être pas très représentatif de la pollution visuelle générée, mais imaginer une classe plus complexe avec beaucoup plus de code…

Vous trouverez dans l'article d'autres cas ou le folding intervient.

#java #ide #idea #folding

Les vrais développeurs Java : où sont-ils ?

Voici un article intéressant faisant état des déboires rencontrés d'une session de recrutement de développeurs Java.
L'auteur de l'article nous explique son désappointement lorsqu'il voit arriver des CVs mentionnant une multitude de technos et que les candidats associés n'en connaissent réellement aucun.

D'autre part, il constate également les effets de l'endoctrinement des frameworks (tel que spring, hibernate, etc.) sur les développeurs (Java).

Ce constat amène l'auteur à se poser la question de la pertinence de ces profils connaissant la manière de faire discuter un conteneur spring avec hibernate, mais ne sachant pas écrire une requête SQL (c'est un exemple parmi tant d'autres), ni traiter une requête http dans un conteneur de servlet.

L'article peut faire sourire, mais je trouve que le fond est intéressant. Il met en avant le problème de certains profils qui n'ont appris leur métier qu'au travers des frameworks et qui n'ont jamais regardé comment tout ça fonctionnait.

Ce point de vue rejoint un conseil que je donne toujours à quelqu'un qui débute en Java et qui me demande quel est le meilleur IDE pour débuter en Java, ce à quoi je réponds : la console.
N'hésitez pas à venir partager votre point de vue dans les commentaires de ce post !

#java   #profil #recrutement

Mémento Java

 

Ce post s'adresse à tous les javaistes, qu'ils soient seniors ou débutants, tout le monde y trouvera son compte 🙂
Ce document recense l'ensemble des mots-clefs réservés du langage Java.

L'auteur fournit une explication et un exemple pour chaque mot-clef.

En plus de la version électronique disponible en ligne, il est possible de télécharger une version imprimable.

Sur le site les mots-clefs sont répertoriés par ordre alphabétique ou par catégorie.
Même si ce document n'est pas une révolution, je pense qu'il a sa place dans une boîte à outils de javaiste débutant (voire confirmé).

#java #memento #keyword

Droidcon Paris

 

Le Droidcon se tiendra les 17 et 18 juin prochains pour la première édition parisienne.

La première conférence Droidcon a vu le jour en 2009. Depuis cette date, la conférence s'est tenue un peu partout sur le globe.

Cette conférence est entièrement dédiée à la plateforme Android et son écosystème.

Afin de préparer son programme de manière optimale, chaque session est estampillée du niveau requis (beginner, intermediate, etc.), ce qui permet d'éviter les erreurs de casting 🙂
Une particularité intéressante, c'est le démocamp. Il a pour objectif de fournir une tribune pour présenter un projet devant des investisseurs. L'objectif étant d'essayer de donner une autre dimension à son projet (vous trouverez toutes les informations en suivant le lien democamp sur le site du Droidcon).

L'entrée est payante, à un prix relativement attractif : 120 euros pour les deux jours. Néanmoins, en cherchant bien sûr le site, il est possible d'obtenir une réduction rendant le prix encore plus attractif !

L'évènement se tient à l'adresse suivante :
Tapis Rouge 67
rue du Faubourg Saint-Martin
75010 Paris

Les inscriptions sont ouvertes jusqu'au 16 juin, ne tardez pas trop !

En suivant le lien ci-dessous, vous trouverez l'agenda des deux jours.

#java #android #conférence

ProGuard

 

ProGuard est un outil intéressant adressant des problématiques transversent aux projets informatiques réalisés en Java.
Cet outil va vous permettre de réaliser, entre autres, les choses suivantes :
– création ne code plus compact permettant d’alléger les archives;
– Sécuriser le code sensible;
– identification du code mort;
– Prévérification du code afin de rendre le chargement des classes plus rapide.

ProGuard est un outil gratuit. il s’utilise principalement en ligne de commande. Il existe néanmoins des plugins permettant de l’intégrer au cycle de vie de vos projets (Ant, gradle, JME Wireless Toolkit).

Par rapport à ses principaux concurrents, ProGuard présente l’avantage d’être plus léger et rapide en plus d’être très efficace (vous pourrez retrouver dans la partie result des chiffres mettant en évidence ses performances)

ProGuard fait partie des outils de packaging de Dalvik pour la plateforme Android sous le nom de Dexguard. Il permet notamment dans ce contexte, d’optimiser la taille du .Apk générer ainsi que d’obfusquer le code.

Je vous recommande de parcourir le site de référence pour avoir plus de détails.

#java # proguard #android

Créez un site Web ou un blog gratuitement sur WordPress.com.

Retour en haut ↑

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