Essentials of the Java Programming Language: A Hands-On Guide