Angelika Langer - Training & Consulting
HOME | COURSES | TALKS | ARTICLES | GENERICS | LAMBDAS | IOSTREAMS | ABOUT | CONTACT | Twitter | Lanyrd | Linkedin
 
HOME 

  OVERVIEW

  BY TOPIC
    JAVA
    C++

  BY COLUMN
    EFFECTIVE JAVA
    EFFECTIVE STDLIB

  BY MAGAZINE
    JAVA MAGAZIN
    JAVA SPEKTRUM
    JAVA WORLD
    JAVA SOLUTIONS
    JAVA PRO
    C++ REPORT
    CUJ
    OTHER
 

GENERICS 
LAMBDAS 
IOSTREAMS 
ABOUT 
CONTACT 
Effective Java

Effective Java
Überblick über Java 9
Teil 3: Neue und alte JDK-Tools
 

Java Magazin, Januar 2017
Klaus Kreft & Angelika Langer

Dies ist die Überarbeitung eines Manuskripts für einen Artikel, der im Rahmen einer Kolumne mit dem Titel "Effective Java" im Java Magazin erschienen ist.  Die übrigen Artikel dieser Serie sind ebenfalls verfügbar ( click here ).

 

Neue und alte JDK-Tools

Ergänzungen zu jcmd

Seit Java 8 gibt es das Diagnose-Tool  jcmd , mit dem man Informationen über eine laufende JVM bekommen kann.  Es befindet sich wie alle Diagnose-Werkzeuge im  bin -Directory des JDK.  Viele der Diagnose-Kommandos, die es schon früher im JDK gab, sind nun unter  jcmd zusammengefasst.  Zum Beispiel kann man für das Auflisten aller JVMs seit Java 8 das Kommando  jcmd anstelle von  jps verwenden.  Oder man kann seit Java 8 einen Heapdump ziehen mit
jcmd <pid> GC.heap_dump <file >
anstelle von
jmap -dump:live,format=b,file=<file> <pid>
wie man es traditionell gemacht hat.
 
 

Mit Java 9 sind weitere Optionen für  jcmd dazu gekommen (siehe / JCMD /), unter anderem das oben schon erwähnte  VM.log für die Steuerung des JVM-Loggings.  Ein anderes Beispiel ist das Abfragen von Informationen über den Heap (mit  GC.heap_info ) oder die Finalizer-Queue (mit  GC.finalizer_info ).  Man kann z.B. in Java 9 sagen:

jcmd <pid> GC.finalizerinfo

anstelle von

jmap -finalizerinfo <pid>

wie man es noch in Java 8 gemacht hätte.
 
 

Neu in Java 9 sind auch Optionen für den JIT-Compiler ( Compiler.directives_add Compiler.queue , …), die Möglichkeit, JVM-Flags zu setzen (mit  VM.set_flag ),  und einiges mehr.  Die komplette Liste aller Optionen für  jcmd bekommt man über  jcmd <pid> help .
 
 

Neue Tools

jdeprscan

Da in Zukunft solche Features wegfallen sollen, die heute bereits als "deprecated" gekennzeichnet sind, gibt es ein neues Tool  jdeprscan , mit dem nach der Verwendung von deprecated API-Elementen gesucht werden kann.

jshell

Das  jshell -Werkzeug (siehe / REPL /) ist ein interaktives Comand-Line-Tool, mit dem man Java-Ausdrücke und -Anweisungen evaluieren kann.  Es hat einen Code-Modus, in dem man Java-Code eintippen und sofort ausführen kann.  Zusätzlich gibt es einen Kommando-Modus, in dem man sich z.B. alle Variablen und Methoden anschauen kann, die man explizit oder implizit angelegt hat.  Man kann den Source-Code auch abspeichern und aufheben oder vorhandenen Source-Code einlesen.  Es hat Auto-Completion und vieles mehr.  Zum Lernen der Sprache oder auch zum Ausprobieren von neuen Features ist das  jshell -Werkzeug recht nützlich. Es gibt dazu ein Konferenz-Video von Robert Field, der das  jshell -Werkzeug für Java 9 implementiert hat (siehe / DVXX /).

Verschwundene Tools

jvisualvm

Das Monitoring-Tool  jvisualvm ist nicht mehr Bestandteil des JDK 9.  Viele Entwickler haben es wegen seiner zahlreichen Plugins als Profiler und JVM-Monitor verwendet.  jvisualvm lebt als Open Source Project weiter und man kann es von / VSVM / herunterladen.

hprof

Der  hprof -Agent wird nicht mehr ausgeliefert (siehe / HPRF /).  Er wurde in Java 5 mit der Einführung der JVMTI-Schnittstelle als "proof of concept" implementiert und war nie als offizielles Werkzeug konzipiert.  Mittlerweile gibt es andere Tools für das Heap-Profiling, die seine Funktionalität ersetzen.  Das  hprof -Format, in dem Heap Dumps dargestellt werden, wird es allerdings weiterhin unverändert geben.  In Java 9 werden Heap Dumps nun mit  jcmd <pid> GC.heap_dump oder  jmap -dump erzeugt.

jhat

Das  jhat -Tool ist ein Browser für Heap Dumps im  hprof -Format, den es seit langer Zeit im JDK gibt.  Mittlerweile gibt es unzählige Werkzeuge, mit denen Heap Dumps analysiert werden können, und deshalb gibt es das vergleichsweise rudimentäre  jhat -Tool im JDK 9 nicht mehr.  Eine beliebte Alternative ist das Memory Analyzer Tool MAT (siehe / MAT /); aber auch jeder beliebige Java-Profiler kann Heap Dumps analysieren.

 

 
 

If you are interested to hear more about this and related topics you might want to check out the following seminars:
Seminars
Java Module System - Names, Unnamed, Automatic Modules, Module Descriptors, Tool Chain
1 day seminar ( open enrollment and on-site)
Java 8 & 9 - Lambdas & Stream, New Concurrency Utilities, Date/Time API, Module System
4 day seminar ( open enrollment and on-site)
 

 
 
 
  © Copyright 1995-2018 by Angelika Langer.  All Rights Reserved.    URL: < http://www.AngelikaLanger.com/Articles/EffectiveJava/91.Java9.What-is-new-in-Java-9/90.java-9.1.overview.ready_5.html  last update: 26 Oct 2018