Компилятор джавы генерирует именно байткод. Нативный код, если и появляется, то только внутри виртуальной машины, и не надо считать эту штуку компилятором. Это оптимизатор, который в зависимости от чего угодно может принять решение оптимизировать работу проги методом замены какого-то куска интерпретируемого байткода на некий нативный код для текущего проца. А может и не принять.
В любом случае, если ты задаёшь такие вопросы, то ничего полезного ты в этих дампах не найдёшь, так что забей.
В терминологии HotSpot это называется компилятором, попробуй игнорировать темы в которых мало что понимаешь.
Попробуй сам. «Терминология HotSpot» много где отличается от общепринятой, потому что она пришла от коммерсов, и приличные люди в технических обсуждениях к ней не прибегают. Вообще говоря, приличные люди о терминологии вообще никогда не спорят, поэтому не вижу смысла объяснять почему это не компилятор.
Для JVM бессмысленно требовать однозначного представления в машинном коде, т.к. там многоуровневая компиляция в JIT, плюс JIT в зависимости от данных профайлера компилирует по-разному.
Компилятором обычно называют штуку, которая из какаго-то высокоуровневого представления делает бинарник. Если же речь про избирательную компиляцию кусков кода в реальном времени - это называют jit-компиляцией, и приставка «jit-» тут существенна и неотделима. Ну, ты конечно можешь про неё забыть и начать придираться к словам, но в таком виде это не общепринятый термин.
Компиляция (программирование) — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду (абсолютный код, объектный модуль, иногда на язык ассемблера), выполняемая компилятором.
Поэтому «jit-компиляция» это не компиляция. Как NFS не файловая система. Но, как уже заметили выше, спор о терминах - признак профнепригодности. Я-то не претендую, а вот тебе это совсем не нужно.
JVM (Java Virtual Machine) выполняет байт код. В ней нет понятия «нативного ассемблера». JVM бывают разные от разных «производителей» и они оперируют этим самым кодом каждый по своему.
Хотеть увидеть «нативный ассемблер» для java байткода, тоже самое что хотеть увидеть «нативный ассемблер» для JavaScript или какого-нить лиспа из емакса и т.п.
Сделать для Java бинарную запускалку одно время было можно это называлось «ahead-of-time компилятор», но после Java 1.8 таких вещей я не встречал - 1.8 очень много добавила, потом появились модули, потом пришёл Оракл и стал печь версии как пирожки и бинарные запускался по факту умерли.
Хотеть увидеть «нативный ассемблер» для java байткода, тоже самое что хотеть увидеть «нативный ассемблер» для JavaScript или какого-нить лиспа из емакса и т.п.
Можешь перейти на godbolt.org и увидеть нативный ассемблер для JavaScript V8.
Уверен elisp после перехода на gccjit тоже позволяет вызвать какой нибудь disassebmly, если поискать в интернете, то можно даже быстро найти https://akrl.sdf.org/img/disass.png
У node.js есть удобные флаги для просмотра ассемблера от V8.
JVM (Java Virtual Machine) выполняет байт код.
Это абсолютно бесполезная информация, речь о реальных реализациях, прежде всего интересует HotSpot. Увидеть ассемблерный код можно, и даже выше написали как, но через дамп в мегабайты смотреть его неприятно, ищу более приятные инструменты.
Ты понимаешь, что такое «JavaScript V8», а именно V8? Если бы понимал, то задавал бы вопрос аля ассемблерный код который выполняет <имя рек конкретной реализации jvm машины> или gccjit или что-то другое. Просить asm для современные jvm бред.
«Ассемблерный код» для HotSpot полный бред для любого, кто хоть немного понимает, что такое HotSpot и как он работает.
Ещё раз - в старых версиях jvm на твой вопрос можно было натянуть какой никакой, но смысл. Сейчас под текущие jvm твой вопрос полный бред.
В общем гугли что такое AOT – Ahead-of-Time и не дрючь другим мозги.
Ты понимаешь, что такое «JavaScript V8», а именно V8?
Да, в отличие от тебя, ведь именно ты усомнился в том что можно продемонстрировать ассемблерный выхлоп для JS и Elisp JIT.
вопрос аля ассемблерный код который выполняет <имя рек конкретной реализации jvm машины>
Если следовать этой логики, то нельзя задавать такой же вопрос о С++, потому что он может и интерпретироваться, и компилироваться в байткод. Предлагаю добавить меня в игнор лист если не нравится как я задаю вопросы. В нем кстати указан C2, он хорошо обозначает о чем я говорю.
«Ассемблерный код» для HotSpot полный бред для любого, кто хоть немного понимает, что такое HotSpot и как он работает.
Если для тебя это бесполезная информация, в силу непонимания, то это не значит что другие не смогут из этого что то извлечь.
C/C++ компиляторы тоже имеют разные реализации, pgo, ipo, попробуй для начала добиться закрытия godbolt.
Ты понимаешь, что такое «JavaScript V8», а именно V8? Если бы понимал, то задавал бы вопрос аля ассемблерный код который выполняет <имя рек конкретной реализации jvm машины> или gccjit или что-то другое. Просить asm для современные jvm бред.
Не пиши сюда больше, пожалуйста. Всё что ценного можно извлечь из твоих некомпетентных заявлений - что в Java есть свои нюансы, в частности актуальный машинный код следует извлекать во время выполнения приложения, ибо в любых других ситуациях его может просто не быть.
«Ассемблерный код» для HotSpot полный бред для любого, кто хоть немного понимает, что такое HotSpot и как он работает.
Для любого кто хоть немного понимает, как работает процессор, очевидно что если есть код который напрямую на нём исполняется, его можно посмотреть. Для любого, кто хоть немного понимает, что такое HotSpot и как он работает, очевидно что такой код во время её работы есть. Ты же даже немного не понимаешь ни в том, ни в другом.
Я вам указал на способ. А вам хочется чтобы подали на блюдечке, да еще и бесплатно. Если вам хочется онлайн сервис, то делайте сами. Или занесите много денег godbolt чтобы они сделали сомнительную и никому не нужную фичу для одного человека.