Size: a a a

2020 April 27

A

Alex in graalvm_ru
Вызов jni кода не самый быстрый, вызов java кода из нативного медленнее ещё в разы
источник

PK

Pavel K. in graalvm_ru
Roman Ushakov
Интересно, как они дружить это всё будут с рефлексией
Даже если никак рефлексия зачастую заменима на билд-тайм кодогенерацию
источник

A

Alex in graalvm_ru
Но её руками нужно регать или первоначально погонять с запущенным агентом чтобы инфу собрал
источник

A

Alex in graalvm_ru
И все равно не всегда это возможно
источник

OS

Oleg Shelajev in graalvm_ru
Alex
Но её руками нужно регать или первоначально погонять с запущенным агентом чтобы инфу собрал
так всегда так надо — вот смотри
источник

OS

Oleg Shelajev in graalvm_ru
что напишет этот класс
источник

OS

Oleg Shelajev in graalvm_ru
package org.example;

import java.lang.reflect.Method;
import java.util.Arrays;

public class Sort {

   public static void main(String[] args) throws Throwable{
       // write your code here

       int[] n = {3, 1, 4, 1, 5, 9, 2, 6};
       Method sort = Arrays.class.getDeclaredMethod("sоrt", int[].class);
       sort.invoke(null, n);

       System.out.println(Arrays.toString(n));
   }
}
источник

A

Alex in graalvm_ru
Что смотреть?

То что спринг бут вместо класс пас скана теперь хочет на старте знать все реализации и во время запуска генерит отдельный файл с проставленными кодогенерациями и рефлешенами?

Или что тот же кваркус для кафки пишет регистрации отдельно чтобы компрессии работали, так как они ты их строкой в момент коннекта задаёшь?

Или что до сих пор log4j нормально в нейтив имейдже не полетел?

https://github.com/oracle/graal/issues/808
источник

OS

Oleg Shelajev in graalvm_ru
не, ну скажи что класс напишет?
источник

OS

Oleg Shelajev in graalvm_ru
это же просто java class
источник

OS

Oleg Shelajev in graalvm_ru
в нем используется рефлекшн
источник

A

Alex in graalvm_ru
источник

OS

Oleg Shelajev in graalvm_ru
ты вот не конфигурируя и не запуская посмотри и скажи что он напишет?
источник

OS

Oleg Shelajev in graalvm_ru
джвм же может так
источник

A

Alex in graalvm_ru
Не только в рефлекшена дело, но и в некоторых языковых конструкциях
источник

OS

Oleg Shelajev in graalvm_ru
вот, это вот уже другой момент
источник

OS

Oleg Shelajev in graalvm_ru
рефлекшн там вообще не причем, он отлично работает в native image
источник

A

Alex in graalvm_ru
Если рефлекшен зарегистрировать, то он будет работать

Твой пример не про рефлекшен а про метод хендл

Если грааль его на компиляции может вывести, то как и с лямбдами ок

А теперь перепиши свой пример в варианте когда там интерфейс влетает и ты берешь вызов метода из него

И 2-3 реализации на вход скармливаешь :)
источник

OS

Oleg Shelajev in graalvm_ru
мой пример про то что там в sort стринге — о кириллицей и нифига не работает это код так как ты думаешь
источник

OS

Oleg Shelajev in graalvm_ru
а что бы это узнать - надо его запустить
источник