Java is a fantastic first programming language to learn as it introduces you to a strong base of programming fundamentals.
Why did you vote for Java?
Most Commonly Used Language in Industry
Consistent Programming Standards
Best Introduction to "C Style" Languages
Introduces You to Object Oriented Languages
Add Another Reason
Java is the second most popular language in industry, resulting a lot of support for tools and plenty of computer science books, example projects and online tutorials written in Java.
According to a poll of over 10,000 current job listing Java is second only to PhP in demand in the marketplace at the moment. This makes Java a great time investment as you will be easily able to get a job utilizing your skills in the future.
Because Java is statically typed, integrated development environments (IDEs) for Java can provide a lot more feedback on errors you will encounter. Java IDEs can give you specific errors in the location where they occur without having to run the code every time. This makes is faster to debug and learn from your mistakes.
IDEs also have extensive auto complete capabilities that can help you learn the programming libraries you are using faster and tell you what functions are available.
Most Java code follows very standardized coding styles. This means that when you're starting out, there are fewer questions about how you should implement something as the programming styles and patters are well established and consistent. It also means that you can follow other people's code as a good example of how to do things as most Java code is done in a consistent style.
The Java syntax is very similar to other C style languages. Learning the fundamentals of Java will port over well to other languages so you can apply what you've leaned to other languages afterwards.
It's good to learn an object oriented language as your first language because it will help you learn concepts that will allow you to split your problem into simpler modules with few connections between them. By learning the fundamentals of object oriented languages you gain a good introduction to important programming principles, such as encapsulation, type systems, access control, abstraction, and inheritance.
Learning a scripting language first would not instill these fundamentals object oriented concepts as well in your learning since the depth of what you learn would be less - but in exchange, the breadth of what you learn would be wider.
Some features in Java can be quite confusing for beginners.
Java is an oriented-object language, but encapsulation is made more difficult because the "protected" keyword not only allows access to child classes but grants the entire package access as well. Since small programs are written as one package, the "protected" keyword is functionally equivalent to "public".
Java's type system is not without flaws; while everything is supposed to be an object, the basic ("primitive") types such as integers, booleans and characters are not really objects and must be handled in a special way.
While Java provides a nice abstraction on top of memory management, pointers and other low-level features, it lacks some high-level features such as events, and has to make up for them by adding confusing features not found in other languages or in most theoretical approaches to programming like anonymous subclasses.