There is a great SIP stack called Pjsip, which is written in C, but there is a JNI wrapper available, so SIP-specific C functions can be called directly from Java through JNI. It is possible to define callback methods, which can be implemented in your Java application.
Possible performance improvements, code reusablilty (e.g. on Android and iPhone) and active development community are the main benefits for this stack.
An Android SIP VOIP client, CSipSimple uses this stack, you can have a look at it.