Я, как добросовестный джуниор, изучил Java Core, далее начал изучать Java Web. Написал несколько простых веб-приложений. Но поскольку обучался самостоятельно, то имеются некоторые пробелы в знаниях. Я знаю, что я могу написать веб-сайт на Java, но не понимаю до конца, как он работает.
Как работает Tomcat или Jetty, например(1).
Зачем нужно указывать artifact в конфигах IDE и что это такое(2).
Чем отличается WAR и WAR exploded(3).
Зачем нужен web.xml, конкретно определение я знаю, и понимаю примерно что делает, но полного понимания на техническом уровне нет(4).
В конце концов, вот мы определяем pom.xml, web.xml, java классы в нашем приложении, что дальше делает наша IDE, чтобы всё это собралось и заработало(5).
В чем разница между так называемым контейнером сервлетов и полноценным сервером для java-сайта(6).
Хотелось бы полностью понимать, как и почему сайт работает, и какую роль играет в нём каждая часть.
Посоветуйте какую-нибудь техническую литературу на вышеперечисленные и смежные темы.
Устроиться на работу. Нормально освоить JEE можно только имея 3-5 лет работы на реальных проектах. Парадокс, но хорошей литературы на эту тему, не предполагающей опыта, я не видел.
Почему 3-5 лет. Что может быть такого в этой экосистеме что так долго надо учить я никак не пойму.
Ну вот человек хорошо умеет программировать на другом ООП языке, к примеру C#. Что учить в EE или Spring ? Я не понимаю. Если хорошему программисту надо долго изучать EE или Spring, читать доки по фреймворкам не поможет, значит что то не так... Искуственно усложено
человек хорошо умеет программировать на другом ООП
Как минимум у такого человека есть 3-5 лет базового опыта. Впрочем, я видел множество мидлов с пятилетним опытом, но так толком и не понимающих SOLID.
Что учить в EE или Spring ?
Во-первых, они не столько сложны, сколь объёмны. Основы можно освоить сравнительно быстро, если хорошо знаешь язык, платформу и понимаешь назначение изучаемых технологий. Но всё-всё я и через 16 лет работы не знаю. Во-вторых, чтобы понять например DI/IoC, нужно столкнутся с проблемами для решения которых они были придуманы. А это проблемы кровавого энтерпрайза, и у джуна дома или в какой-нибудь web-студии нет никакого способа пощупать этот класс проблем. Только длительная поддержка легайси в крупной компании способна действительно открыть глаза, а не просто создать иллюзию понимания. Интересная статья на эту тему.
На самом деле вы тут вопросов написали на целую книгу. Просто так и не ответить.
Если вкратце, то
1) Реализуют Servlets API (описанную в JEE), каждый по своему. Но в целом, просто обрабатывают запрос и отправляют его на сооветствующий (определенный в конфиге) сервлет. Предлагаю поизучать исходники - код открытый.
2) Что такое конфиги IDE? Артифакт я так понимаю - это из Maven? или нет?
4) web.xml - это конфигурационный файл томката. Насколько, я знаю другие серверы определяют свои файлы.
6) А что вы подразумеваете под полноценным сервером для java сайтов? Приведите примеры.
2) Скриншот из IDE: https://imgur.com/a/KjuZFOV
4) Насколько я знаю, web.xml содержит в себе информацию о том, как надо развёртывать приложение и используется не только тмкатом, но и другими серверами.
6) Томкат позиционируется как контейнер сервлетов, а, например, WildFly (JBoss) - как полноценный Java EE сервер.
Здравствуйте!
Я и сам сейчас на любительском уровне изучаю java EE и фреймворк Spring.
Материалов много, но если честно понимание приходит со временем. Я например, для саморазвития взял небольшой проект и работаю над реализацией в spring. Конечно же встречаются проблемы и тут уже мне помогает и литература, и тостер и stackoverflow.
azerphoenix, Хороший и Одновременно плохой выбор. Программирование в общем будешь лучше понимать чем при JS. С другой стороны сейчас очень просто непонимая многих вещей пойти кодить на JS.
И крайне сложно найти вакансию на Spring или EE после первого изучения.
Насколько я знаю первый порог в Android намного адекватнее бекенда.
Pantene742, само собой знания в создании android приложений имеются. Разработал парочку приложений для личного использования.
сложно найти вакансию
Если честно, я не ищу вакансию. У меня совсем другая специализация. А программирование - хобби. Или даже возможность реализовать некоторые свои идеи.
В чем у меня сейчас имеется проблема, так это javascript))) Думаю, изучить фреймворк для spa. Скорее VueJs (для простоты).
azerphoenix, Ну для простоты и одновременного прокачивания JS лучше React. Vue и Angular очень много абстракций. Вот идельно знать React и что то одно из двух остальных. React для простых проектов которых большинство, а Ангулар для обьемных и очень обьемных.