Есть несколько языков, поддерживающих достаточно мощную систему типов, которую они могут доказать во время компиляции, чтобы код не обращался к массиву за пределами его границ. Мой вопрос заключается в том, что если мы должны скомпилировать такой язык для JVM, можно ли каким-то образом воспользоваться этим для производительности и удалить проверки границ массивов, которые происходят при каждом доступе к массиву?
1) Я знаю, что недавний JDK поддерживает некоторые проверки проверки границ массива, но поскольку во время компиляции я знаю, что определенные вызовы безопасны, я мог бы удалить намного безопаснее.
2) Некоторые могут подумать, что это не сильно влияет на производительность, но это, безусловно, имеет место, особенно в приложениях с массивами/вычислениями, таких как научные вычисления.
Тот же вопрос, касающийся кастинга. Я знаю, что что-то есть определенный тип, но Java не потому, что его система ограниченного типа. Есть ли способ сказать JVM "доверять мне" и пропустить какие-либо проверки?
Я понимаю, что, вероятно, нет способа сделать это, поскольку JVM обычно распространяется, может ли разумно изменить JVM с помощью этой функции? Это что-то сделано?
Это одно из разочарований в компиляции более мощного языка для JVM, ему все еще мешают ограничения Java.