Сколько часов в день нужно уделять, чтобы стать Java Middle?
Вопрос в корне неверный, как и подход.
    Для начала разработчики джуниор, мидл, сеньор отличаются не столько знанием большого количества технологий, сколько знанием определенных корнер кейсов в каких-то технологиях, так же они отличаются умением построить и спроектировать ту или иную часть системы, или систему целиком, зависит от опыта, который кстати тоже бывает разный.  
    Я бы сказал что не менее важны и так называемые софт скиллы, по сути это можно назвать именно опытом. Опытом общения с бизнесом и командой, умением передавать знания новым сотрудникам и так далее. Да и зацикленность на технологии тоже не самая лучшая черта, всё-таки для разных задач есть разные инструменты, и задача действительно опытного разработчика их подобрать, это я вам как человек который пишет именно на Java говорю. 
    Суть в том, что большинство этих умений невозможно получить в искуственной среде, ну не сможете вы изобразить давление бизнеса на себя, когда надо сделать какую-то фичу быстро, а лучше "вчера", а в таких ситуация аккурат и появляются различия и сразу видно насколько человек подходит хорошо к написанию кода который он пишет, как ведёт он с другими людьми в такой стрессовой ситуации, ну и так далее. 
    Я бы вам советовал уделить обучению год, но уделить крепко и серьезно, а потом искать позицию джуниор разработчика, а дальше уже продолжать обучение (это прийдется делать всегда) ну и получать реальный опыт в реальных условиях.
    Вышло сумбурно, я не писатель, но надеюсь помог.
2 года при условии:
а) были участником в группе разработчиков >2 крупных проектов и вы внесли в проект свой весомый вклад;
и\или
б) были разработчиком и тим-лидом 2-3 проектах, от начала до конца.
Примечание: все что вы указали, это только плюс вам в ходе выполнения пункта а) и\или б)