learning based from scratch in java language