Я бы не советовал Вам читать любую книгу по Java, книг много, не все написаны хорошо, может попасться неудачная книга, у Вас возникнет устойчивое ощущение, что Java это сложный и запутанный язык, а это не так. На мой взгляд - Java один из самых понятных и "чистых" языков. Но необходимо учитывать, что на сегодняшний день (так сложилось исторически), Java является основным "энтерпрайзным" языком, т.е. очень большие системы (банки, промышленные корпорации, государственные информационные системы) и даже те (небольшие) компании, которые взаимодействуют с ними (интегрированы в эти системы), заказывают код на Java, чтобы поддерживать существующие (уже много лет) стандарты. Поэтому надо понимать, что язык высокого уровня, который позволяет создавать надежные и быстродействующие системы промышленного назначения - не может быть очень простым, по определению.
Хотя необходимо отметить, что последние несколько лет, с развитием микросервисных систем, жесткие требования к языку програмирования, на котором будет написан определенный сервис, уходят "в прошлое".
Теперь по существу:
я рекомендую следующие книги:
1. "Java. Руководство для начинающих", Герберт Шилдт (последнее издание, которое Вы найдете на русском языке);
- "Java. Полное руководство", Герберт Шилдт
Но у Шилдта есть серьезный недостаток - в его книгах очень детальное объяснение всех базовых вещей с наглядными примерами. Причем примеры он повторяет много раз, с разными условиями, иногда кажется, что он пережевывает одно и тоже по второму и третьему кругу, читать становиться скучновато… и вдруг — бамс! — и какое-то довольно сложное место проскакивается почти мгновенно, и ты в полном недоумении пытаешься понять, что и где пропустил.
3. "Java. Библиотека профессионала", Кей С. Хорстманн, Гари Корнелл, Том 1 "Основы" - немного сложнее написано, но без "провалов" как у Шилдта.
Все книги, которые Вы будете читать, надо не просто читать, а выполнять все упражнения, с самого начала в вашей среде разработки (я рекомендую установить IDEA Community - она бесплатная и самая функциональная, это не только мое мнение, такого мнения придерживаются все Java разработчики, с которыми я знаком).
И вот тут мы переходим к тому, что для того, чтобы приступить к изучению java, Вы должны знать базовые вещи ==>
- математику, хотя бы в курсе средней школы, численные методы решения задач;
- основы работы с операционной системой (да, Линукса избежать не удастся), работа с командной строкой;
- двоичная и др. системы исчисления, логические операции;
- основы работы с реляционными базами данных, языки СУБД. Надо ведь как-то хранить информацию, которую ваша программа на java будет читать и обрабатывать, даже простая программа, иначе при каждой перезагрузке программы - все будет с "чистого листа".
Ну вот пожалуй, это минимальная "дорожная карта" - по которой Вы сможете начать идти. Со временем, к этому прибавится гораздо больше.