Je poursuis ma migration vers le fonctionnel sur Java 8 avec un petit tuto sur les stream et les map-reduce. Le tout est guidé par une multitude de petits exemples simples.
Je découvre le blog de Jean-Christophe Gay. Très sympa et assez complet sur Java 8.
Attention : si vous ne vous êtes toujours pas mis aux lambdas, aux Clojures et aux Predicats, vous allez avoir du mal à vous revendre dans l'univers Java. Début 2016, cela deviendra indispensable !
P.S : vous savez que je déteste la programmation fonctionnelle car l'inférence de type permet de produire bien trop souvent un code immaintenable, cependant, utilisée avec BEAUCOUP de parcimonie, elle permet de factoriser énormément de code technique et éviter les doublons. Bref, je m'y suis mise, ce n'est pas pour rien.
Un truc d'Amine sur Java 8 :
Stream.of(args).collect(Collectors.joining(SEPARATOR)).toString();
Les lambda & Clojure de Java 8
Vu que je suis obligée de faire de la programmation fonctionnelle (avec inférence de type, ce que je déteste au plus haut point), je vais poster une série de tutos à ce sujet.
Écrire des benchmark facilement en Java.
Lancer un mode debug depuis NetBeans vers un Tomcat distant
Ou plus simplement, si vous utilisez le plugin maven-tomcat plugin et que vous lancez votre serveur Tomcat via une commande du type : "mvn initialize tomcat:run" vous pouvez faire ceci :
1) Remplacez celle-ci par "mvnDebug initialize tomcat:run"
2) Dans NetbBeans aller dans "Debug > Attach Debugger... > Java Debugger (JPDA) > SocketAttach"
Si vous configurer Surefire avec certaines options, il ne vous sera plus possible de produire des rapports avec JaCoCo (le fichier jacoco.exec dédié à l'agent JaCoCo ne sera plus produit).
Ce poste explique comment résoudre le problème en remplaçant les configurations de Surefire
et
Tutos sur Tapestry.
Un projet que vient de me montrer Aurélien et qui permet d'ajouter des annotations plus parlantes et dédiées au développeur dans le code du type : @WTF, @BossMadeMeDoIt, @IAmAwesome, @LegacySucks...
Il semble même que l'on puisse générer une JavaDoc à partir de ces annotations histoire de documenter techniquement la qualité interne et ressentie du code.
Autant utile que drôle !
J'avais perdu ma base Shaarli à cause d'un problème d'espace disque. Je reposte ici une partie des liens que j'ai pu retrouver. Dans ce cas, il s'agit d'un tuto sur Nashorn, une technologie que je suis beaucoup avec le projet Brattac
Un petit post sur OpenJDK (un peu vieux le post certes) mais très sympa.
Je viens de découvrir le concept d'énumération polymorphique en Java. C'est juste énorme ! Je suis fan.
OHHHHHH ÇA C'EST BON !
Je copie-colle un extrait :
Java < 8
-server
-Xms<heap size>[g|m|k] -Xmx<heap size>[g|m|k]
-XX:PermSize=<perm gen size>[g|m|k] -XX:MaxPermSize=<perm gen size>[g|m|k]
-Xmn<young size>[g|m|k]
-XX:SurvivorRatio=<ratio>
-XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled
-XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=<percent>
-XX:+ScavengeBeforeFullGC -XX:+CMSScavengeBeforeRemark
-XX:+PrintGCDateStamps -verbose:gc -XX:+PrintGCDetails -Xloggc:"<path to log>"
-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M
-Dsun.net.inetaddr.ttl=<TTL in seconds>
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=<path to dump>`date`.hprof
-Djava.rmi.server.hostname=<external IP>
-Dcom.sun.management.jmxremote.port=<port>
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
Java >= 8
-server
-Xms<heap size>[g|m|k] -Xmx<heap size>[g|m|k]
-XX:MaxMetaspaceSize=<metaspace size>[g|m|k]
-Xmn<young size>[g|m|k]
-XX:SurvivorRatio=<ratio>
-XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled
-XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=<percent>
-XX:+ScavengeBeforeFullGC -XX:+CMSScavengeBeforeRemark
-XX:+PrintGCDateStamps -verbose:gc -XX:+PrintGCDetails -Xloggc:"<path to log>"
-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M
-Dsun.net.inetaddr.ttl=<TTL in seconds>
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=<path to dump>`date`.hprof
-Djava.rmi.server.hostname=<external IP>
-Dcom.sun.management.jmxremote.port=<port>
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
Côté Eric CHUDYBA :
http://www.echudyba.fr/archives/73
http://www.echudyba.fr/archives/81
Le département informatique de l'université de Nice :
http://deptinfo.unice.fr/twiki/pub/Minfo05/GLOO/cours10-GL-minfo-0506.pdf
Jean-Michelle DOUDOUX :
http://www.jmdoudoux.fr/java/dej/chap-jvm.htm#jvm-3
Développez.com :
http://www.developpez.net/forums/d663331/java/general-java/langage/classloader-chager-class/
Le site demo.fr :
http://www.demos.fr/chaines-thematiques/espace-informatique/Resource%20Library/JAVA%20SE%20-%20ClassLoaders.pdf
Comment implémenter votre propre ClassLoader en Java.
Divers tutos en Java. Très sympa !
via Memiks : http://shaarli.memiks.fr/?DFNQ5w