Qual a melhor forma de carregar a biblioteca JNI?

Já li a documentação da Sun, mas não encontrei a referência a isso. Gostaria de saber se alguém sabe a melhor forma, ou tem alguma dica de boas práticas na hora de carregar uma biblioteca JNI.

Já vi código que carrega desse jeito, no construtor:

Construtor() { System.loadLibrary("biblioteca"); }
Já vi desse jeito, em um bloco estático:

static { System.loadLibrary("biblioteca"); }
E essa variação:

private static boolean isLoaded; static() { if (isLoaded == false) { System.loadLibrary("biblioteca"); isLoaded = true; } }

Além disso, faz diferença as chamadas aos métodos nativos serem estáticas ou de instância e qual seria a melhor maneira de tratar as excessões que o loadLibrary emite?

Uma biblioteca só pode ser carregada uma única vez, e não pode ser descarregada (argh)
O melhor seria pôr em um bloco estático mesmo (variação 1).
A variação 2 deve ser posta dentro de um try/catch para você checar se a biblioteca foi realmente carregada.

É mais fácil usar métodos estáticos que de instância pelo simples fato de ser difícil de acessar os membros da classe Java em C/C++, não por algum motivo esotérico.