Java for Aliens is structured in such a way as to facilitate the learning of the Java language (Version 13), even for those who have never programmed. The structure, writing and contents have been chosen carefully, based on the experience the author have accumulated as a trainer and mentor over a twenty-year career. In particular, for Sun Microsystems, for Oracle, and as a freelancer, he had the opportunity to deliver about 250 courses, for thousands of learners, on Java technology, architecture, object-oriented analysis, design and UML. This book also covers complex topics that even the most experienced Java programmers might not master. These topics are marked with appropriate icons to warn the reader about the frequency of use, complexity and importance. This two-volume book represents an evolution of the most popular book on Java in Italy, which since 2006, has been recommended as a reference book in all the most important Italian universities. The "Java Manual", (published by Hoepli), boasts the highest number of reviews on Amazon Italy compared to all other programming books, even those of the most established international authors. Book StructureJava for Aliens is divided into 7 parts within two volumes. The first three parts belong to the first volume: - Part I, "Java Language Basics" (Chapters 1 to 5), presents all the fundamental concepts of Java programming, such as the development environment, essential components, data types, programming constructs (including novelties such as text boxes and switch expressions), etc. The study of the first five chapters should therefore allow the reader to write their first programs, and also to be confident in the development environment. Nothing will be taken for granted, and notions of basic computer science will also be introduced. Furthermore, the reader will receive support in the form of simplified examples, exercises and explanations. However, there will also be an in-depth analysis, especially on the latest new features. The author has also created a simple, free and open source development tool called EJE, to support the initial learning phases. - Part II, "Object Orientation" (Chapters 6 to 10), explains the fundamental concepts for correctly designing our programs. How do we organize a program from scratch? How many classes do we need to create? What should these classes be called? What methods will they have to define? How can we create a program capable of evolving without changing parts that have already been written? These and many other questions are answered by the theory of Object Orientation with its paradigms (abstraction, reuse, encapsulation, inheritance, polymorphism, cohesion and coupling, the dependency inversion principle, etc.). This text then strives to provide all the information needed by the reader in order to follow the path of Java programming in the most correct way possible, that is, the object-oriented way. Further, important features such as abstract classes, interfaces, packages, initializers, design by contract with assertions, exception handling, errors and warnings, etc. will be presented contextually. - Part III, "Java Language Advanced Features" (Chapters 11 and 12), introduces some more complex topics such as enumerations, generic types, erasure, wildcards, bounded wildcards, bounded parameters, generic methods, intersection types, wildcard capture, helper methods, covariant parameters, nested types, and anonymous classes. These arguments are in preparation for those that will be presented in the chapters that follow. Furthermore, at this point and in other chapters, the discussion is extensively developed with a view to supporting possible Oracle Java programming certifications. Moreover, in order not to burden the body and the cost of the work too much, a lot of material (including over 500 exercises) has been moved to a special space available online at this address: http: //www.javaforaliens.com