Todo

Preferences

A 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