Добавление многих фреймворков в Java-приложение - будет ли оно иметь негативные побочные эффекты? - PullRequest
2 голосов
/ 07 апреля 2009

Если добавить много зависимостей от фреймворка в Java-приложение, это резко увеличит его объем памяти, потому что он загружает все библиотеки при запуске, или это более ленивое поведение, которое загружает только необходимые классы, когда вам это действительно нужно (например импортировать выписки или даже позже)?

Может ли добавление многих зависимостей также иметь другие негативные побочные эффекты, о которых должен знать разработчик Java?

Ответы [ 4 ]

3 голосов
/ 07 апреля 2009

Классы будут загружаться только по мере необходимости (на которые ссылаются другие классы через import и т. Д.)

Головная боль с несколькими платформами заключается в том, что вам приходится управлять их общими зависимостями. например Framework A требует Logging Framework X, но Framework B требует Logging Framework Y.

Эти проблемы не являются непреодолимыми, но вы должны отслеживать их. Когда вы обновляете Framework A, у вас вполне может получиться волновой эффект, при котором вы должны обновить соответствующую зависимость. Это требует еще одного обновления компонента фреймворка и т. Д.

например. Framework A обновляется и требует обновления до Log4J. Это заставит вас обновить Framework B до версии, совместимой с вашим новым Log4J и т. Д.

Если у вас несколько требований к инфраструктуре, это может фактически указывать на требование о соответствующем подразделении вашего приложения (на различные развертываемые объекты / службы и т. Д.).

1 голос
/ 07 апреля 2009

Концептуально вы, вероятно, также добавляете большое количество перекрывающихся функций к своей базе кода при добавлении большого количества платформ. Эта перегрузка также может стать головной болью, и у вас будут разные люди, использующие разные версии одних и тех же функций (из разных сред) без видимой причины. Это может стать грязным.

0 голосов
/ 07 апреля 2009

Технически, если вы используете более одного фреймворка в java, и ваша система довольно большая, и если ваш фреймворк сократит накладные расходы на код java, то с ним можно работать. Например, если ваша система настолько велика, то вы можете использовать Hibernate для сопоставления объектных отношений с базой данных. Это уменьшит нагрузку на ваш код, такую ​​как вставка, обновление, удаление запросов. Но если ваша система не так велика, вы можете написать выше вручную, и это займет не так много времени для обработки, как спящий режим. То же самое в Spring или Struts2.

0 голосов
/ 07 апреля 2009

Если вас беспокоит размер распределенных приложений из-за большого количества зависимостей от сторонних файлов jar, вы всегда можете запутать / сжать его, что обычно уменьшает размер приложения на значительную величину. Я использовал Pro Guard в прошлом, и это также уменьшит размер зависимостей, которые у вас есть через запутывание и удаление неиспользуемых классов / методов / полей и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...