Развиваться нужно в ту сторону которая интересна, java достаточно многообразна и в зависимости от вашего выбора будут зависеть ответы на остальные вопросы. Я бы не стал ориентироваться на востребованность, мое ИМХО нужно заниматься то чем нравится, и становиться профи в этом направлении, тогда не зависимо от текущей ситуации на рынке вакансий вы будете востребованы. Для примера, кому-то нужно "видеть" результаты своей работы, т.е. Чтобы они были осязаемыми, тогда совет идти в front end, например android, но я не уверен что для android-а java сейчас актуальна. Если видеть результаты не обязательно, то можно back end посмотреть, тут возможности гораздо шире, mainstream в данном направлении spring. По вопросу что нужно знать обязательно очень зависит от ситуации, поэтому присоединяюсь к devalone открываете вакансии и смотрите что требуется и качаетесь в этом направлении.