КМБ по Java

Хорошо знающий и умеющий Java разработчик должен быть специалистом в… и тут длинный список того, о чём и в вакансии напишут, и на собеседовании спросят (а спрашивают порою такое, что часами можно рассказывать), и на практике надо, и в фоновом знании, и т.д.

Но есть некоторая база, без которой всё тлен. После крепкого освоения этой базы можно замахиваться на начальные сертификации.


JVM и tools. Вы должны знать виртуальную машину. Чем больше, тем лучше, но минимальное: class loading, выполнение byte code, GC, память. Требуется для того, чтобы понимать, почему что-то глобально выполняется так, а не эдак.

Читать:

  1. Спецификацию JVM: JVMS 8. Всё не надо, если не собираетесь компилятор писать или со старта копаться в результатах javap, но многое надо.
  2. Про GC со ссылками на всякое есть неплохой свежий пост вот тут.
  3. Стандартный набор утилит с флагами описан у Oracle. Как минимум, надо уметь почти весь Basic tools.

Java language. Собственно, сам язык и стандартные библиотеки (JDK SE). Без этого, понятно, вообще никуда.

Читать:

  1. Спецификацию Java language: JLS 8. Это хардкор и не особо нужен для начинающих, но JLS — судья во всех спорах о том, что и как должно трактоваться.
  2. Из свежих книг по Java 8 есть неплохая серия от Kishori Sharan: “Beginning Java 8 Fundamentals”, “Beginning Java 8 Language Features” и “Beginning Java 8 APIs, Extensions and Libraries”. Возможно, всё заменяется недавней “Java SE8 for Programmers” от Дейтелов, но я до неё не добрался.

Сопутствующее. Дальше можно расширять череп множеством способов. Но некоторые знания более полезны на втором этапе, чем другие:

  1. Полезно для набора идиом: [Josh Juneau. Java 8 Recipes. Apress, 2014].
  2. Тоже идиомы, но чуть иначе и с более детальным пояснением: [Noel Markham. Java Programming Interviews Exposed. Wrox, 2014].
  3. Можно и алгоритмы подтянуть, тем более, используется Java: [Robert Sedgewick, Kevin Wayne. Algorithms. Addison-Wesley Professional, 2011].
  4. Concurrency и multithreading — важные темы в Java, да и вообще в программировании, потому неплохо подхватить эту книгу: [Paul Butcher. Seven Concurrency Models in Seven Weeks. Pragmatic Bookshelf, 2014].

Всё это относится к J2SE. Существуют ещё два огромных мира, с которыми столкнётся разработчик, пошедший путём Java: J2EE и Android, но для них нужны отдельные КМБ.

Ну и да, книги подобраны таким образом, чтобы их можно было найти, скажем, не только на Amazon’е. ;)

PS. Не пишите Java-код в vim / Sublime / Notepad и прочем. Поставьте бесплатную версию IntelliJ IDEA и не мучайтесь.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.