Некоторые методы содержат скомпилированный код?
===============================================

Переходя к исходному коду некоторых классов, я увидел, что некоторые методы содержат скомпилированный код, и перед расширением они выглядят так:

`public void someMethod(){`  
  
Скомпилированный код  
  
`}`

При расширении метода вы можете видеть, что коды внутри него написаны как комментарий.  
  

Смотрите один из методов из:`sun.awt.shell.ShellFolder`

Мне интересно узнать больше об этих методах и о том, какой язык используется.  
  
Можно ли написать собственный скомпилированный код?

 согласно комментарию).

Когда вам дается файл jar (например, rt.jar с JDK / JRE), он уже скомпилирован. Код высокого уровня, такой как:

превращается в низкоуровневый байт-код, который не читается человеком.

Этот байт-код содержит метаданные, такие как типы аргументов метода, и информацию, необходимую для загрузки этих классов и методов. Средам IDE необходимо предлагать завершение синтаксиса для библиотек (например, jar, которые вы добавляете в пути к классам проекта) и, что более важно, для загрузки и использования методов классов, которые вы получаете из этих библиотек.

"код" Здесь вы видите сводку и тип кода, называемый байт-кодом. Строка за строкой, инструкции как`ldc` как видно из вашего примера, оперируйте небольшими частями стека, который одновременно поддерживает JVM. Этот байт-код довольно трудно читать и программировать вручную, поэтому ваш компилятор сгенерирует его для вас.

Все это (за исключением некоторых нативных методов) реализовано на языке, совместимом с JVM.

В зависимости от библиотеки и ее ограничений, а также вашей IDE 'с функциональностью, можно получить полный исходный код в другом пакете и "прикреплять" так что ваша IDE показывает исходный код вместо сгенерированного машиной резюме или декомпилирует его обратно в исходный код Java с той же функциональностью1.1

 Компилятор Java обычно выводит байт-код, который довольно легко преобразовать обратно в исходный код с той же функцией (не относится к другим скомпилированным языкам, таким как C / C ++). Можно запутать код с помощью инструмента, такого как Proguard, который заменяет идентификаторы на бессмысленные и может дополнительно преобразовывать определенные операции в весьма неясные с тем же результатом при выполнении.



 что IDE неИсточник не доступен (но код написан на Java).`sun.*` классы обычно несделать их источник доступным, потому что у них есть непубличный API. Это не должноне путать с`native` код, который может быть написан на C / C ++ и вызываться через JNI / JNA.