Что такое собственная реализация в Java? [дубликат]

Предполагая, что это ваш скрипт на Python:

def say_hello(name):
    return "hello " + name
  1. Добавьте Python Scope. Убедитесь, что вы указали путь к исполняемому файлу.
  2. Добавьте действие Load Python Script и создайте новую выходную переменную для сохранения результата.
  3. Добавить действие Invoke Python Method и настроить его следующим образом: enter image description here
  4. Добавить действие Get Python Object и преобразовать возвращенный объект в объект .NET (строка в нашем случае): enter image description here

Вот и все. Вот полный рабочий процесс:

enter image description here

35
задан River 21 October 2017 в 21:53
поделиться

4 ответа

Эти методы или Внутренние или записанный внешний Java в "собственном" коде, то есть, характерный для данной машины.

Те, которых Вы упоминаете, Внутренние и часть JDK, но можно также записать собственные методы сами с помощью Собственный Интерфейс Java (JNI). Это обычно использовало бы C для записи методов, но много других языков, таких как Python позволяет Вам методам записи этот путь довольно легко. Код написан этот путь или для производительности, или потому что это должно получить доступ к платформе определенная инфраструктура, которая не может быть сделана в плоскости Java.

В случае hashcode(), это реализовано JVM. Это вызвано тем, что часто хэш-код будет связан с чем-то, что только JVM знает. На раннем JVMs это было связано с местоположением объекта в памяти - на другом JVMs, который Объект может переместить в память, и таким образом, более сложное (но все еще очень быстро) схема может использоваться.

36
ответ дан Nick Fortescue 27 November 2019 в 06:52
поделиться

Наиболее собственные методы реализованы с помощью JNI, как упомянуто в других ответах.

Однако производительность критические методы такой как Object.hashCode обычно реализуются как intrinsics. Когда код байта компилируется в машинный код, компилятор Java распознает вызов метода и встраивает соответствующий код непосредственно. Это, очевидно, будет намного быстрее, чем прохождение через JNI для тривиального метода.

Многие люди будут утверждать, что Object.hashCode возвратит адрес объектного представления в памяти. В современных объектах реализаций на самом деле перемещаются в памяти. Вместо этого область объектного заголовка используется для хранения значения, которое может быть лениво получено на адрес памяти в то время, когда значение сначала требуют.

19
ответ дан Tom Hawtin - tackline 27 November 2019 в 06:52
поделиться

Собственные методы реализованы главным образом в C и скомпилированы в собственный код, который работает непосредственно на машине. Это в отличие от нормальных методов, которые реализованы в Java и скомпилированы в байт-код Java, который выполняется виртуальной машиной Java (JVM).

интерфейс To к этим методам от Java необходимо использовать Собственный интерфейс Java (JNI) .

Собственный код главным образом необходим для доступа к материалу низкого уровня. В случае хэш-код это - адрес объекта в памяти. Мое предположение для клон - то, что оно копирует необработанную память от дать объекта до клонированного. Другое использование собственного кода для доступа к функциям OS или аппаратным средствам.

недостаток использования собственного кода состоит в том, что Вы теряете безопасность JVM, т.е. Ваша программа могла бы разрушить или иметь дыры в системе безопасности из-за ошибок в собственном коде.

11
ответ дан starblue 27 November 2019 в 06:52
поделиться

Собственные методы в Java реализованы с помощью' Собственный Интерфейс Java ', известный как JNI.

0
ответ дан Sunlight 27 November 2019 в 06:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: