Мне так надоело изучать еще одну веб-инфраструктуру Java через день.
JSP, Struts, Wicket, JSF, JBoss Seam, Spring MVC, чтобы назвать лишь некоторые из них - все эти бесчисленные фреймворки пытаются решить те же проблемы. Тем не менее, ни один из них не решает основные проблемы - почему все еще все больше появляются новые и новые.
Большинство из них выглядят очень яркими и блестящими при первом впечатлении, потому что они упрощают выполнение простых вещей.
Но, как только дело доходит до реализации реального случая использования в мире, в проблему попадают проблемы.
Часто рамки не дают никакой помощи, но препятствуют одному и ограничивают варианты, заставляя вещи реализовываться в соответствии с собственной логикой и средой.
Короче говоря, я вижу следующие недостатки при использовании рамки:
- В основном есть крутая кривая обучения, и сначала вам нужно понять, порой, достаточно академические концепции и знать смысл и расположение кучи конфигурационных файлов, прежде чем вы сможете начать.
- Документация обычно более или менее ужасная, либо отсутствует общедоступная доступная онлайн-ссылка, является беспомощной устаревшей, смущает разные несовместимые версии или все это вместе и часто не дает никаких полезных примеров.
- Структура состоит из циллионов классов, что делает практически невозможным понимание предполагаемого использования только при просмотре источников.
- Поэтому вам нужно купить несколько "XYZ в действии для манекенов за 21 день", которые имеют плохой пользовательский интерфейс, потому что им не хватает полнотекстового поиска и тяжело переносить.
- Чтобы действительно использовать одну из этих фреймворков, вам нужно научиться наизусть, как все может быть сделано так, как этого требует инфраструктура, запоминая адекватные классы и имена методов, пока ваша голова не будет наполнена глупой и бесполезной информацией, которую вы не можете использовать для чего-либо еще.
- Есть большие накладные расходы, замедляющие производительность ваших приложений и заставляя ваш мозг чувствовать себя онемевшим, когда пытаетесь понять, что на самом деле происходит.
- В реальном мире обычно нет времени, чтобы хорошо познакомиться с чем-то новым из-за давления быть продуктивным. Как следствие этого обучения, делая подход, вы всегда смотрите только на самый быстрый способ выполнить следующую задачу, а не понимать новый инструмент и возможности.
- Аргумент о том, что по стандарту позволит людям, которые являются новыми для быстрого запуска проекта, недействителен в моем представлении, потому что каждый проект использует другую структуру даже в пределах одной компании (по крайней мере, в моем случае).
Мне кажется, что следующая цитата из Альберта Эйнштейна здесь очень хорошо подходит:
"Мы не можем решать проблемы, используя тот же вид мышления, который мы использовали, когда мы их создали".
Вернувшись в старые добрые времена программирования PHP, когда кодирование по-прежнему было забавным и продуктивным, я использовал для написания своих собственных фреймворков для большинства вещей и просто скопировал их и перенял их из одного проекта в другой.
Такой подход очень хорошо зарекомендовал себя, что привело к быстрой разработке, отсутствию накладных расходов и структуре, которая на самом деле была более сильной, чем большинство инфраструктур Java, но с несколькими сотнями строк кода в одном файле плюс некоторые простые правила mod_rewrite.
Это, безусловно, не решает все проблемы веб-разработки, но это было просто, быстро и прямо.
Несмотря на то, что он был полностью адаптирован к требованиям текущего проекта, он также был легко расширяемым и имел очень высокую производительность из-за нулевой накладной.
Итак, почему все эти хлопоты с использованием этих фреймворков, почему бы не выбросить их всех и вернуться к корням?
Что я должен сказать моему боссу, когда мы снова начнем следующий проект с новой картой?
Или, может быть, рамки, которые действительно имеют значение?
Или некоторые скрытые преимущества, которые я проигнорировал?