Навалились то все как
Конечно у static functions есть свои хорошие использования. Теперь по очереди:
То есть вызов FormUtil из JSP можно назвать "JSP имеет business logic"?
Вызов FormUtils из JSP не есть business logic. Business logic - это layer вашего application, который отвечает за конкретныю функциональность, а не за interfaces, например. Никакого хорошего определения в голову не лезет - уверен сейчас кто-нибудь напиишет лучше и понятнее. В нашем случае я бы сказал, что session.invalidate(); в getAction является частью business logic, tak kak it logs user out.
А где обычно храниться business logic? В данный момент FormUtil входит в состав WEB-INF/lib/...beans.jar
Business Logic - это концепт, а не что-то, что физически отличается от обычных классов.
На одном клиенте/компьютере может быть несколько клиентов/приложений, которые не могут различаться сервером автоматически, и которые могут иметь одну общую сессию. Но такое, конечно, редкость.
Придумать можно много чего. В большинстве случаев архитектура будет неправильной. К тому же Sabinу это только запутает.
Для простых программ MVC1 вполне работает. И статические функции -- это никакое не зло, а типичные библиотечные хелперы. Ничего они не ломают, не нужно сваливать их в одну кучу с глобальными переменными.
Нет ничего более постоянного, чем временный код. Нет такой маленькой плохо написанной программы, кототорая не переросла бы в большой headache. По крайбей мере из моего опыта.
Пожалуйста, объясните подробнее, почему Вы считаете, что static methods в большинстве случаев зло. По возможности аппелируя к личному опыту, а не к книгам, которые Вы прочитали про паттерны в Java или J2EE. Для меня будет весьма ценно, если вы сможете подкрепить утверждения "maintanance сложнее, extensibility хуже" описаниями конкретных проблем, с которыми Вам довелось столкнутся.
Я это все спрашиваю не из-за того, что собираюсь "зацепить" Вас. Я сравнительно недавно занимаюсь Java, но у меня уже сложилось впечатление, что большинство Java-программистов необоснованно избегают static methods, хотя стандартная библиотека Java использует их вовсю. Как например и Jakarta Commons.
Нащет Jakarta Commons не знаю - детально не приглядывался, но совневаюсь. Может какие-нибудь Common Utils. J2SE библиотечки тоже не ахти какой пример для подражания. Особенно то, что с первых версий идет.
Теперь о книгах. Всем кому интересна тема правильного программирования советую обзавестись "Expert One-on-One J2EE Design and Development" by Rod Johnson. На основе которой появился Spring Framework:
http://www.springframework.org. Spring Framework на мой взгляд является эталоном дизайна.
Ну и наконец из собственного опыта. Static functions создают немало неудобств когда используются не по делу и не там, где надо. Кстати раньше по неопытности я совсем не обрашал внимания. Если static function можно избежать, то ее надо избежать. Если у вас много static functions, скорее всего это говорит о том, что что-то в дизайне неправильно.
Wisdom has two parts: 1. Having a lot to say. 2. Not saying it.