Добавить в корзинуПозвонить
Найти в Дзене
(java || kotlin) && devOps

JDK != java + javac

Всем привет! Что входит в состав JDK - Java Development Kit - кроме стандартной библиотеки Java? Состав JDK Разные утилиты, сразу можно вспомнить java и javaс. Но не только они, есть еще ряд полезных консольных утилит, о которых расскажу ниже. Сразу скажу, про таких монстров, как JVisualVM и Mission Control, стоит рассказать отдельно, что я и сделаю. Но потом) Все утилиты лежат в папке bin внутри JDK. Поехали: 1) javap - прочитать версию байткода, а также увидеть байткод в человекочитаемом виде. Как запускать: javap -verbose Class1.class 2) jcmd - позволяет отправлять команды работающему процессу. Что за команды - да самые разные, например: - сделать дамп кучи - показать статистику использования памяти, причем после некоторых манипуляция - любых областей памяти, не только кучи - время работы и другую информацию о JVM - информацию о запущенных процессах Если запусить jcmd без параметров - покажет список работающих java процессов. Если запустить ее как jcmd PID - покажет доступные для

Всем привет!

Что входит в состав JDK - Java Development Kit - кроме стандартной библиотеки Java?

Состав JDK

Разные утилиты, сразу можно вспомнить java и javaс. Но не только они, есть еще ряд полезных консольных утилит, о которых расскажу ниже.

Сразу скажу, про таких монстров, как JVisualVM и Mission Control, стоит рассказать отдельно, что я и сделаю. Но потом)

Все утилиты лежат в папке bin внутри JDK.

Поехали:

1) javap - прочитать версию байткода, а также увидеть байткод в человекочитаемом виде.

Как запускать: javap -verbose Class1.class

2) jcmd - позволяет отправлять команды работающему процессу. Что за команды - да самые разные, например:

- сделать дамп кучи

- показать статистику использования памяти, причем после некоторых манипуляция - любых областей памяти, не только кучи

- время работы и другую информацию о JVM

- информацию о запущенных процессах

Если запусить jcmd без параметров - покажет список работающих java процессов.

Если запустить ее как jcmd PID - покажет доступные для процесса команды.

Описание почитать можно тут https://docs.oracle.com/en/java/javase/17/troubleshoot/diagnostic-tools.html#GUID-42A18B29-B4AD-4831-B846-2CDBA55F2254

3) jstat - показывает краткую статистику по Java процессу.

jstat -class PID - иннформация по загрузке классов

jstat -compiler PID - по JIT компиляции

jstat -gc PID - информация по работе GC, ее расшифровку и другие опции см. тут https://docs.oracle.com/en/java/javase/11/tools/jstat.html#GUID-5F72A7F9-5D5A-4486-8201-E1D1BA8ACCB5

Аналог линуксовых vmstat, iostat.

4) keytool - утилита для работы с сертификатами в формате jks.

5) jshell - начиная с Java 9 появляется консоль для выполнения Java кода интерактивно, без создания классов.

Что удобно: не нужно создавать класс, import-ы, ставить ; в конце строки, просто можно проверить выполнение какого-то простого кода.

6) jdeprscan - сканирует jar, класс или папку на наличие Deprecated API. Можно использовать в DevOps.

7) jconsole - графическая утилита для отображения использования CPU, памяти и другой информации, которую может отображать jcmd. Также показывает MBean-ы. Главное ее достоинство заключается в том, что она полностью бесплатна и есть в любой JDK.

При этом JVisualVM и Mission Control могут гораздо больше, но с ними есть нюансы)

Полный список утилит можно найти здесь: https://docs.oracle.com/en/java/javase/11/tools/tools-and-command-reference.html

#jdk #java #tools