Le blog de Fatiha

Une geek de plus !

Tutoriels java sur slideshare

 

Il y a différentes manières d’apprendre le langage java. Un collègue m’a conseillé les présentations powerpoint hébergées sur le site slideshare. Vous trouverez donc ci-dessous quelques unes des présentations que j’ai lues.

La première présentation est en anglais, elle est adaptée aux débutants car elle reprend aussi les principes de la programmation.

 

Cette deuxième présentation en français n’est pas destinée aux programmeurs java, elle concernerait plus les administrateurs système. Le but de cette présentation est de nous apprendre comment optimiser la gestion de la mémoire de la JVM. Vous y trouverez des notions comme le garbage collector, le throughput ou encore heap.

Dans cette troisième présentation dédiée au garbage collector, vous entendrez parler de minor GC, de full GC, de survivor space… Rassurez-vous, même si cette présentation est en anglais, elle vous sera très utile pour comprendre comment le garbage collector fonctionne, comment il gère la mémoire. On y trouve des conseils sur l’allocation mémoire, par exemple, il est préconisé de créer des « petits » objets avec des durées de vie courtes. Le mécanisme de fuite mémoire y est notamment détaillé. Dans cette présentation, vous trouverez aussi des conseils pour bien gérer la mémoire : ne pas forcer le lancement du garbage collector (System.gc()), utiliser le bloc finally dans la programmation java (gestion des fichiers, gestion bases de données), … Elle mentionne quelques outils de base pour le monitoring : jconsole, jstat, jmap, jhat

Je vous laisse, je retourne sur le site slideshare :)

Erreur java : « Exception in thread « main » java.lang.NoClassDefFoundError »

 

Exception in thread « main » java.lang.NoClassDefFoundError

Comment ai-je obtenu cette très belle erreur ? Cela s’est produit quand j’ai essayé de lancer un programme java avec son extension .class :

erreur de débutante

Pour corriger cette erreur, il suffit de relancer le programme en supprimant l’extension .class. C’est une erreur de débutante, je l’avoue. Ce que je peux dire pour ma défense c’est que j’ai l’habitude de travailler avec des langages interprétés qui n’ont pas besoin de compilation. Il y a quelques années j’avais déjà essayé de coder en java, puis, je m’étais rabattue sur le php.

Source : commentcamarche.net

Lister les fichiers .jar chargés par tomcat

 

Cela fait deux ou trois jours que je n’ai pas de réponse à cette question, je m’impatiente. Bon, je fais une nouvelle recherche sur Google et tombe encore une fois sur le site http://stackoverflow.com. Je n’ai pas encore la réponse à ma question alors je recherche directement sur ce site et après avoir tapé « jar files loaded in tomcat » dans leur moteur de recherche interne, je trouve enfin quelque chose d’intéressant.

Un internaute conseille d’utiliser la commande lsof, tout simplement. Je ne me souviens plus trop quelles sont les options de lsof alors je vais une nouvelle fois une recherche sur Google et ce site m’indique comment faire.

Donc je retourne sur ma console Linux Redhat et récupère le PID du process du tomcat concerné, ensuite je tape :

lsof -p <PID tomcat>

Et j’obtiens enfin les informations que je recherche depuis quelques jours. Faut vraiment être patiente en informatique. En tout cas, cela m’a appris que tomcat ne charge pas toutes les librairies mais uniquement celles dont il a besoin.

Java ME : Débuter en vidéos

 

Je viens de visionner quatre vidéos sur Java Micro Edition sur le site Oracle. Ce sont des tutoriaux très bien faits pour débuter avec Java Micro Edition ou Java ME. De l’installation du logiciel en passant par la création de votre premier projet sur téléphones mobiles. Qu’est-ce qu’un fichier .jad ? Comment installer une application java sur son portable ? Comment lancer un émulateur ?

Je vous invite à visionner ces tutoriels.

Comment décompiler des fichiers .class ?

 

Pour décompiler un fichier .class il faut télécharger l’exécutable jad.exe. Ensuite il faut ouvrir une invite de commande Windows et taper les commandes suivantes :

C:\jad>jad.exe

Vous obtenez la liste des options disponibles :

Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov (jad@kpdus.com).
Usage:    jad [option(s)] <filename(s)>
Options: -a       – generate JVM instructions as comments (annotate)
         -af      – output fully qualified names when annotating
         -b       – generate redundant braces (braces)
         -clear   – clear all prefixes, including the default ones
         -d <dir> – directory for output files
         -dead    – try to decompile dead parts of code (if there are any)
         -dis     – disassembler only (disassembler)
         -f       – generate fully qualified names (fullnames)
         -ff      – output fields before methods (fieldsfirst)
         -i       – print default initializers for fields (definits)
         -l<num>  – split strings into pieces of max <num> chars (splitstr)
         -lnc     – output original line numbers as comments (lnc)
         -lradix<num>- display long integers using the specified radix
         -nl      – split strings on newline characters (splitstr)
         -noconv  – don’t convert Java identifiers into valid ones (noconv)
         -nocast  – don’t generate auxiliary casts
         -noclass – don’t convert .class operators
         -nocode  – don’t generate the source code for methods
         -noctor  – suppress the empty constructors
         -nodos   – turn off check for class files written in DOS mode
         -nofd    – don’t disambiguate fields with the same names (nofldis)
         -noinner – turn off the support of inner classes
         -nolvt   – ignore Local Variable Table entries (nolvt)
         -nonlb   – don’t insert a newline before opening brace (nonlb)
         -o       – overwrite output files without confirmation
         -p       – send all output to STDOUT (for piping)
         -pa <pfx>- prefix for all packages in generated source files
         -pc <pfx>- prefix for classes with numerical names (default: _cls)
         -pe <pfx>- prefix for unused exception names (default: _ex)
         -pf <pfx>- prefix for fields with numerical names (default: _fld)
         -pi<num> – pack imports into one line using .* (packimports)
         -pl <pfx>- prefix for locals with numerical names (default: _lcl)
         -pm <pfx>- prefix for methods with numerical names (default: _mth)
         -pp <pfx>- prefix for method parms with numerical names (default:_prm)
         -pv<num> – pack fields with the same types into one line (packfields)
         -r       – restore package directory structure
         -radix<num>- display integers using the specified radix (8, 10, or 16)
         -s <ext> – output file extension (default: .jad)
         -safe    – generate additional casts to disambiguate methods/fields
         -space   – output space between keyword (if, while, etc) and expression
         -stat    – show the total number of processed classes/methods/fields
         -t<num>  – use <num> spaces for indentation (default: 4)
         -t       – use tabs instead of spaces for indentation
         -v       – show method names while decompiling
         -8       – convert Unicode strings into ANSI strings (ansi)
         -&       – redirect STDERR to STDOUT

N’étant pas experte Windows mais plutôt Linux, j’ai copié les fichiers à décompiler dans le même répertoire que mon exécutable jad.exe. Ainsi la commande pour décompiler se résume à :

C:\jad>jad.exe -r -sjava -d C:\jad *.class

A présent vous pouvez ouvrir les fichiers .java qui viennent d’être généravec n’importe quel éditeur. Pour ma part j’utilise Eclipse.

Source : tutoriel de developpez.com.

Comment générer un thread dump ?

 

Je viens d’apprendre comment générer un thread dump. Dans mon cas, c’est pour l’analyse d’erreurs java dans tomcat. Il faut pour cela lancer une commande à intervalles de temps réguliers (toutes les cinq minutes par exemple).

kill -3 <PID process java>

Dans le fichier de logs de tomcat catalina.out, vous pourrez analyser ce « thread dump ».

Le monde java est passionnant !