This Learning to Program Java text book is designed as the first course of a two semester course in Java programming. Selected topics from the Java programming language are introduced to facilitate a beginner programming in Java. All exercises are programming problems. Programming problems are used as exercises to enforce a programming paradigm. A high percent of learning to program is highly correlated with the practice of designing and implementing programs for specific requirements. The translator or compiler will enhance the student knowledge through the trail and error process of removing errors from their programs. Emphasis is on defining Java constructs and their use in programming. Students are encouraged to program all the exercises at the end of each Chapter. Also students are encouraged to program their own applications to enhance their knowledge base. The idea is to program as many applications as possible using various Java constructs to improve programming skills in the Java programming language. Emphasis is placed on programming applications requirements. To enforce this paradigm Chapters are organized to maximize the learning process. Chapters on Exceptions and File Input and Output are introduced early in the text. After the file input and output are introduced all programs should read and write files to devices to maximize the learning experience.