There is currently a possible solution. However it only works with classes.
It allows you to call B4A subs without reflection.
B4A classes implement an interface named BA.SubDelegator.
Your library could accept an object of this type and use it to raise the events (pass a class instance from B4A).
In the B4A code you need to list the callable methods. It is done with this code:
Public Sub Initialize
If False Then
CallSub(Me, "test") 'number of parameters is not important. This code will never be called.
CallSub(Me, "Test_2")
End If
End Sub
Sub test (i As Int)
End Sub
Sub Test_2
End Sub
Compile your app in release mode and you will see that it creates a method named callSub with the relevant subs.
In your java code you can use this callSub method (part of the interface) instead of raiseEvent.