Главным образом для неуправляемого кода и взаимодействия с неуправляемым кодом. "Чистому" управляемому коду никогда не должен быть нужен финализатор. Доступный, с другой стороны, просто удобный шаблон, чтобы вынудить что-то быть выпущенным, когда Вы сделаны с ним.
Ммм ... да, можно . Возможно, я неправильно понимаю ваш вопрос (что вы имеете в виду под «функцией верхнего уровня»?), Но если вы предоставили объект Java для Rhino, вы можете вызвать его методы.