И один и другой языки используют ООП, то есть, если хорошо поняли тему "Классы", то проблем возникнуть не должно. Если первым учили C++, то придется немного перестроиться на Java, потому как все в этом языке построено на классах, что очень удобно, но поначалу слегка непривычно. Синтаксис особо отличаться не будет, запомнить достаточно просто, циклы, переменные создаются аналогично. Не думаю, что возникнут какие-то особые трудности. Если поставите цель, то все получится за достаточно короткий промежуток времени.
Считаю, что любой самоучитель даёт больше, чем среднестатистическое учебное заведение. Тем более, что сейчас полным полно бесплатных онлайн-курсов. Смысл идти в учебное заведение есть только в том случае, если вам примерно 16-17 лет и нужно получить высшее образование.
На мой взгляд самый лучший путь, это взять какую-нибудь книгу для подготовки к экзамену от Oracle №1Z0-808, который называется "Java SE 8 Programmer I". Это самый простой экзамен на знание Java 8. Учите Java по этом самоучителю, попутно готовитесь к экзамену и в конце сдаете экзамен. Плюс в том, что ваше обучение не проходит бесследно и в конце вы получаете сертификат от Oracle котирующийся во всем мире.
Java - это язык программирования, его в основном используют для программирования и создания программ для мобильных устройств, игр к мобильным устройствам и всему, что с этим связано. Этот язык программирования достаточно молод и развивается, кстати он очень перспективный для работы с ним.
Высшую математику для освоения этого программного кода знать не нужно. Чтобы выучить этот язык программирования, достаточно иметь необходимые для этого способности (способности к обучению) и всё. ЗДЕСЬ есть всё необходимое для начинающих в его изучении.