how jdk works