I recommend that you use C++11 over Java due to various reasons, such as
- better speed (especially important in codeforces)
- typically shorter / simpler
- miscellaneous shortcuts such as #define, typedef, auto
- good STL
- Competitive Programming Handbook (CPH)
- also see Guide to Competitive Programming and problemset
- Competitive Programming Book (Steven, Felix)
- Samuel Hsiang Guide
- Principles of Algorithmic Problem Solving
- Introduction to Algorithms