We've said it before: Java isn't dying - it's mutating. In addition to the Java Virtual Machine's use in languages like Scala, Java is used with Apache Cassandra, Apache Hadoop, Neo4j and other cutting edge data tools. It's also the language used for building native apps for Android, which has become the most popular smart phone OS on the market. Yes, The Guardian is swapping out Java for Scala. But Twitter, which once pioneered the production use of Ruby on Rails and Scala, now uses Java for its entire search stack.

In other words, it's still worth learning Java. Here are three books for beginning programmers.

Thinking in Java

Thinking in Java by Bruce Eckel is perhaps the most popular free text on learning Java. It's suitable for both beginners and advanced programmers. The 3rd edition is free, but the 4th edition will cost you. The print edition is published by Prentice Hall.

How to Think Like a Computer Scientist: Java Version

How to Think Like a Computer Scientist: Java Version by Allen B. Downey is a Java port of the popular Python-based introduction to computer scientist. The Python version of the book was used by MIT for its Introduction to Computer Science and Programming class.

This book includes material to help students prepare for the Computer Science AP Exam.

Introduction to Programming in Java: An Interdisciplinary Approach

Introduction to Programming in Java: An Interdisciplinary Approach by Robert Sedgewick and Kevin Wayne takes a slightly different approach to teaching Java. It relates each programming concept covered to specific applications, using examples from fields such as genomics, astrophysics and e-commerce.