Требования к потенциальным Java-разработчикам постоянно меняются и за ними сложно уследить. Достаточно ли знать только Java Core? Насколько хорошо нужно разбираться в Spring и Hibernate для получения должности Java Junior? Стоит ли учить базы данных, разбираться ли с алгоритмами сортировки и поиска?
Java Syntax
Основы языка. Все эти типы данных, операторы, циклы и ветвления.
Объектно-ориентированное программирование
Всё в Java состоит из объектов, поэтому ООП можно считать одной из самых главных тем языка. Объектно-ориентированный подход может поначалу показаться непривычным, особенно если вы раньше изучали только процедурные языки, но переучиться на объекты не составляет труда.
Самые большие сложности у новичков вызывают уровни абстракции и их самостоятельное распределение — начинающий программист должен уметь грамотно составить иерархию объектов, понять, за что будет отвечать интерфейс, а что можно вынести в абстрактный класс, составить лестницу наследования и так далее. Как обычно эту сложность решает практика.
Java Collections Framework
Коллекция — это совокупность отдельных объектов, представленных как единое целое. В Java для представления коллекций есть очень толковый Collections Framework. Коллекции основаны на популярных структурах данных — списках, обычных и связных, множествах, хэш-таблицах. Так что при изучении коллекций было бы неплохо поближе познакомиться со структурами данных.
Основная трудность в изучении коллекций — понять и запомнить принцип их работы. Если понимаешь, каким образом в них происходит обращение к элементу, извлечение из коллекции и добавление в неё, то начинаешь понимать, где применять ту или иную структуру. Это приходит с практикой. Но, к счастью, из огромного количества коллекций активно используются в реальной работе далеко не все.
Обработка исключений
Исключение — это выходящая из ряда вон ситуация, которая может возникнуть при выполнении вашей программы. Все классы исключений являются подтипами класса java.lang.Exception. Механизм обработки исключений значительно упрощает процессы поиска ошибок в программах.
Многопоточность
Пожалуй, именно эта тема вызывает самое большое непонимание у начинающих разработчиков. Невзирая на то, что многопоточность в Java реализована очень хорошо, в ней сложно разобраться, и проблемы могут возникнуть даже при написании простейших программ (например, многопоточного “Hello, world”). Многие работодатели это понимают и не требуют глубокого понимания многопоточности от начинающих, рассчитывая, что оно придёт с опытом.
Лямбда-выражения
Лямбда-выражения и намёки на функциональное программирование появились в Java 8, но новички не так уж часто используют этот удобный инструмент. Лямбда-выражение — это функция, которая может быть создана без принадлежности к какому-либо классу, и вы можете передать ее как объект или выполнить по запросу.
Алгоритмы и структуры данных
По поводу изучения алгоритмов сортировки и поиска ведутся постоянные споры. С одной стороны, лучшие алгоритмы уже давно написаны и включены в библиотеки всех популярных языков программирования, в том числе и Java. И их можно легально использовать, не заморачиваясь написанием собственного кода. Однако специалисты, обучающие программистов, всё-таки рекомендуют каждому начинающему разработчику потренировать мозг написанием всех этих алгоритмов
пузырька, слияния, бинарного поиска и им подобным. Во-первых, эти алгоритмы — своего рода лакмусовая бумажка умений программиста (именно не знаний, а умений) и понимания человеком, что такое программирование в принципе. Если мозг уже хорошо настроен на подобную работу, вы будете писать алгоритмы относительно легко.
И тем не менее, следует помнить: алгоритмы вам нужны именно для тренировки мозга… и для того, чтобы пройти собеседование: проводящие их въедливые Senior-разработчики очень любят мучить соискателей просьбами написать тот или иной алгоритм.
Unit-тестирование
За модульное (unit) тестирование в Java отвечает библиотека JUnit. На самом к юнит-тестированию можно приступить едва ли не в самом начале обучения. По крайней мере в тот момент, когда вы беретесь за свой первый самостоятельный проект, даже очень маленький, вам лучше уже владеть этим инструментом. Писать модульные тесты не так уж сложно, хотя есть нюансы. Изучение JUnit не займёт много времени, а вот польза от его знания огромная. Вы сможете покрывать тестами свой и чужой код. Очень часто новичкам поручают написание юнит-тестов для коллег, так что это может пригодится и напрямую в новой работе.
Frameworks
Раньше от Java Junior никто не ожидал знания Spring или Hibernate. Но времена меняются, и сегодня это вполне естественно. Изучать эти технологии самостоятельно непросто. Даже если всё кажется понятным, начинающие разработчики частенько забывают что к чему очень быстро. Порой даже приложения, самостоятельно написанные на Spring — не панацея. Поможет только активная работа.
Выводы
Надеемся, мы не слишком вас напугали количеством технологий, которые вам предстоит изучить. Не всё из этого нужно знать досконально, к тому же, разбираться со всем этим — весьма интересно. Не зря же вы решили стать программистом, не так ли? Так что продолжайте учить Java и не теряйте мотивацию. Успехов!