ACHIEVING LOW-LEVEL ARCHITECTURE IN JAVA: A THOROUGH EXPLANATION