Todo
Preferences, System e EnvironmentMessageFormatA função main inicia com
int runNumber = getRunNumber() + 1;
long firstRun() = getFirstRun();
O primeiro objetivo é entender o que as métodos getRunNumber() e getFirstRun() fazem. Analizando a primeira função temos
public static int getRunNumber() {
return Preferences.userNodeForPackage(Main.class).getInt("projectlibreRunNumber",0);
}
Basicamente, Preferences.userNodeForPackage(Main.class) retorna o nó de preferência da árvore de preferências do usuário que faz a chamada que está associado ao package da classe Main. Como o package da classe Main é com.projectlibre1.main as preferência estaram armazenadas em “/com/projectlibre1/main”. Se o nó ainda não exisit ele criar.
Em seguida getInt("projectlibreRunNumber", 0), busca o valor associado a propriedade "projectlibreRunNumber", caso não exista ele cria com valor defaulrt 0 e a retorna.
Preferences persiste esse dados no Windows Registry um banco de dados hierárquico em sistemas operacionais Windows que armazena configurações e opções para o sistema e aplicativos. Pode verificar as preferencias buscando na barra de pesquisa do windows por Windows Registry, em seguida procure HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs ou HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\JavaSoft\Prefs
Referência: https://docs.oracle.com/javase/8/docs/api/java/util/prefs/Preferences.html