Я разрабатываю серверные продукты, используя веб-сайты в качестве интерфейсов. Лежащая в основе логика обычно сложна, однако пользовательские интерфейсы ОЧЕНЬ просты (большинство из них представляют собой простые CRUD-операции с таблицами mysql. Самый сложный запрос обычно требует нескольких объединений, и все обычно выполняется без сохранения состояния, за исключением пользователя). реквизиты для входа).
До сих пор я проектировал свои проекты таким образом:
Как я уже говорил, обычно наши веб-сайты ДЕЙСТВИТЕЛЬНО просты, поэтому для простоты я создал базовый API и базовый веб-сайт поверх Code Igniter; как я уже сказал, эта часть приложения очень проста и покрывается моими собственными общими классами.
Проблема
У меня две основные проблемы:
Вопрос
Следующий проект, с которым мне предстоит столкнуться, будет намного проще реализовать с помощью сервера с учетом состояния, такого как Tomcat. Я также хотел бы иметь возможность объявлять классы в области приложения (или что-то подобное, что делает их экземпляры только один раз при запуске Tomcat, если инфраструктура не поощряет эту практику).
Какие фреймворки Java наиболее подходят для моей проблемы и общей ситуации? Мой план состоит в том, чтобы сделать seed-проект, чтобы сделать мои проекты однородными, однако, может быть, лучше использовать инструменты генерации, каков ваш опыт в этом? .У меня есть время поэкспериментировать с фреймворком, прежде чем приступить к самому проекту.
Прямо сейчас мои коллеги, которые программируют Tomcat, в настоящее время используют смесь следующего:
У меня нет опыта работы со стойками, но это выглядит просто, поэтому моей первой мыслью было следовать их схеме, чтобы сделать проекты более однородными, что является побочным преимуществом в том, что люди, которым я могу задавать вопросы, сидят рядом со мной, однако, это выглядит например, он производит слишком много шаблонов, и что изменение некоторых вещей становится утомительным после процесса автоматической генерации, но это может быть просто отсутствие опыта.
Как я уже сказал, наши конечные точки очень просты, поэтому я бы предпочел легкую структуру. Я знаю, что лучший фреймворк — это тот, с которым вам удобнее всего, и что, если мои коллеги знают конкретный фреймворк, гораздо лучше просто подыграть, но, как я уже сказал, у меня нет опыта работы с java-фреймворками, поэтому я Мне все равно предстоит его изучить, поэтому мне нужны мнения, основанные на опыте.
ПОБОЧНЫЙ вопрос: как я уже говорил, большинство моих проектов имеют конечную точку REST Api. PHP выглядит идеально для этого, так как не требует принудительного ввода типов, однако с произвольными структурами данных Java не так прост, как PHP. Я помню со времен Java, что использовал библиотеку Google Gson для обработки кодирования/декодирования JSON, и, кажется, она все еще в моде прямо сейчас. Раньше он удовлетворял мои потребности. Есть мысли по этому поводу?
побочный вопрос 2: Представьте себе следующий сценарий: у меня есть анализатор Tika для извлечения простого текста из документов. Моя первая мысль — создать экземпляр синтаксического анализатора Tika в области приложения, а затем при необходимости вызывать его методы. В C мне нужно было бы обрабатывать параллелизм самостоятельно, правильно ли это делает Tomcat? каковы наилучшие практики с tomcat? Сегодня вечером я буду интенсивно читать документацию по Tomcat, так что, вероятно, я смогу ответить себе на этот вопрос достаточно скоро.
У вас довольно много требований, и я никогда не слышал о некоторых фреймворках, которые вы упомянули. (Например, я никогда не писал ни строчки на PHP.) Тем не менее, я бы порекомендовал вам (мета)фреймворк Spring.
Pivotal (предприятие, стоящее за Spring) описывает Spring следующим образом:
Ключевым элементом Spring является инфраструктурная поддержка на уровне приложений: Spring фокусируется на «подключении» корпоративных приложений, чтобы команды могли сосредоточиться на бизнес-логике на уровне приложений без ненужных привязок к конкретным средам развертывания.
Кроме того, есть Spring Boot , который дает вам возможность запустить свой проект. Учебник по созданию простого REST-сервера можно найти здесь .
Если вы ищете простой, легкий в освоении фреймворк, Spring не для вас. Но на мой взгляд, это больше, чем фреймворк, потому что он предоставляет целую экосистему фреймворков, которые можно комбинировать в соответствии с вашими потребностями.
Например, есть Spring Data и Spring Data REST , которые автоматически (более или менее) создают REST API и необходимые операции CRUD.
К сожалению, у меня нет опыта разработки интерфейсов и Spring, но есть Spring MVC , который поддерживает создание интерфейсов.
Spring также можно упаковать как WAR и развернуть на сервере Tomcat.
ДГойко