Эрнэст Фарукшин, я могу поехать в лес, нарубить бревен, сделать избушку. Но без знаний она у меня будет херовая, хотя жить мне в ней и придется. Я лучше посмотрю, как строятся избушки, что можно делать, а что нельзя. Для этого мне не нужно строить избу! Мне нужно учиться! Рубить срубы, конопатить, делать стропила, окна и двери, обмениваться опытом. Вот тогда я и себе избу соберу и другим помогу.
Научитесь делать сруб и захотите избу, возьмите готовые двери, окна и крышу.
Эрнэст Фарукшин, да, можно, и нужно. Но не делайте из этого проект, умоляю. Напишите отдельные компоненты, потестируйте, поэкспериментируйте, посмотрите, посмотрите похожие реализации.
Но вот что ошибочно - сразу писать то, что уже написано сотню раз! Вы ведь не изучили ни спринг, ни сокеты, ни сервлеты, ни основные библиотеки.
Да, вы напишете все, постепенно, самостоятельно. Причем, увы, знаний не получите!
Для того, чтобы изучить сокеты - GUI не нужен! Для изучения DI - не нужно знать рефлегсию, а для рефлексии не нужно писать свой DI. Это как с сортировкой - можно сделать и попробовать разные алгоритмы, чтобы понять, как они работают, но не нужно писать свой метод Collections.sort() со своими алгоритмами.
Можно написать свой парсер http, но не нужно в него загонять свои сокеты, и уж тем более делать на его основе свой сервер, тем более, если вы это делаете в первый раз!
Это все равно, что с нуля сделать автомобиль, все детали вытачивая на станке, от колес до цилиндров и тормозных дисков.
Эрнэст Фарукшин, ну так авторизовался, открыл сокет, работаем. Сокет слетел - авторизовываемся заново.
Но если после авторизации передать какой нибудь ключ, то его можно прихранить на клиенте и восстановить сессию без авторизации по этому ключу. Но тогда сервер должен проверить этот ключ на валидность и время жизни, и продолжить сессию с новым сокетом. Это все спокойно делается через куки например., если сервер - http.
Эрнэст Фарукшин, с каждым запросом браузер и так отправляет куки! С каждым запросом авторизацию делать не нужно. Просто, если это не браузер, сохраняйте сессию и куки на клиенте. Если открыли долгоживущий сокет, то внутри авторизации не нужно.
Эрнэст Фарукшин, у меня за последний год ровно два таких проекта! Где для себя один написал подобие интерпретатора языка pascal, собственный xml-парсер и базу данных. А второй - сделал подобие spring и osgi.
А вот сейчас матом - все это говно попало в их проекты, которые они вели 3 и 2 года подряд. Как результат - полностью переписываем эти проекты, с нуля! Потому как ни один кусок этого говно-макаронного кода взять не получилось. Вот блин, ни один класс!
С первым проектом из 500 классов осталось 20 новых, интерпретатор заменили на groovy, стандартный парсер и встроенную базу, паскалевские скрипты полностью переписали (а это пол проекта).
Второй проект сейчас тоже в полной переработке. Меняем на нормальный DI и OSGI!
Не пишите свои велосипеды никогда!
Эрнэст Фарукшин, в результат напишете свой велосипед, который ни расширить ни поддержать в дальнейшем никто кроме вас не сможет. Не нравится спринг, возьмите другие библиотеки, благо их есть и много - apache shiro например.
Эрнэст Фарукшин, если постоянно держать открытый сокет, то не нужно ничего туда-сюда гонять. Но если сокет сломается, то ключ в куке поможет восстановить авторизацию без аутентификации.
Дмитрий Свиридов, Нет, не javascript.
Clojure компилируется в java-классы и живет внутри JVM. Доступны все библиотеки, которые доступны и для java (hibernate, spring и т.д.)
А вот Clojurescript компилируется через clojure в javascript и живет в браузере на фронте :-)
Оля, во первых, от шаблонов отказываться совсем не нужно, как передаете формы в шаблон, так м передавайте.
Во вторых, просто не отправляйте формы через post или get, а отправляйте их черех ajax. Для этого можно использовать jquery - одна js-функция строк на 10, которая будет собирать форму в json и отправлять ее на отдельный view. Этот универсальный обработчик вешается на все кнопки submit с параметрами!
В третьих - переделывать архитектуру не нужно, нужнл для каждой формы сделать эндпоинт с приемом собранного по полям json. Например вот готовый Рецепт