Робота - штука цікава. Буває що пишеш протягом 10 років на плюсах, знаєш їх досить добре, і, раптом, херась, і ти став ведучим Java-розробником. Причому, ти навіть не хотів перекваліфікуватися, тому що роботодавці розривали на шматки, та й взагалі інструмент подобався. Але, якщо вже вплутався, не розривати ж контракт через таку дрібницю як нову мову програмування.
Проте, після такої несподіваної «перекваліфікації», гостро постає питання входження в тему. Так, мови схожі, але бібліотеки мають мало чого спільного, та й взагалі, треба б розуміти що ти робиш. Кінцева мета в моєму випадку, виглядає приблизно так: мережева низкоуровневая розробка + безпеку + трохи WEB-морд (Spring + JSP).
Так як довга розробка мережевих і розподілених додатків на плюсах дає досить хороший бекграунд, то, як «Ведення в Java» довелося прочитати / перегорнути не так вже й багато. Найкорисніше, що я знайшов:
The Structure of the Java Virtual Machine. Нерозумно працювати з інструментом, не маючи уявлення про його внутрішній устрій. Так що почати треба саме з цього.
Memory Management in the Java HotSpotTM Virtual Machine. Терпіти не можу працювати з якоюсь мовою, не знаючи як же мова звертається з пам'яттю. На мій погляд, це одна з основних знань про будь-якій мові програмування
Java for C ++ Programmers. Невелике введення в мову. Всі основні питання розглядаються, писати код можна починати відразу після прочитання.
Effective Java. Second Edition. Joshua Bloch. Чимось нагадує книги «Ефективне використання C ++». За великим рахунком, щоб зрозуміти Java після C ++ цього повністю вистачає.
Власне, це все, що на даний момент мені здається потрібним для нормального входження, тобто виконання першого пункту «мережева низкоуровневая розробка». Як пройду ребус далі - відпишуся.