У меня есть проект, основной домен которого резко меняется.Можно использовать 50% основных функций с этого сайта и просто добавить 50% новых функций, но я начинаю считать, что, возможно, быстрее будет просто переделать продукт в Rails.Скорость разработки очень важна.
Есть некоторые вещи, которые мне действительно нравятся в java - производительность и масштабируемость очень хорошие.Я не дурацкий Java-разработчик, поэтому мои приложения работают очень хорошо - лучше, чем сайты Rails, которые я видел.Я всегда принимал идею о том, что люди, вероятно, просто тратят немного больше денег на проблему, когда дело доходит до использования Rails, которая, вероятно, в конечном итоге работает сама по себе из-за безумных преимуществ производительности.
Я на самом деледовольно гибкий с Java.Я знаю, что мне все еще потребуется больше времени, чтобы добавить базовую сущность в систему, но я быстр в этом, и я не против этого.По крайней мере, это легко и просто сделать.
Что я имею в виду:
- необходимость запустить / остановить сервер только для исправления маршрута, исключение отложенной загрузки, контроллернеправильное представление и т. д.
- смирившись с тем фактом, что модульные / интеграционные тесты иногда дают результаты, отличные от производственной среды (поскольку аннотации на контроллерах не могут быть протестированы, или во время исключений при отложенной загрузке возникаютасинхронные вызовы службы или тому подобное).Знание того, правильно ли ваш Джексон выполняет маршалинг ваших данных, - это еще одна вещь, только для Tomcat, потому что она обрабатывается Spring.Есть много вещей, которые идут не так после того, как вы проверили все, что можете, и это откровенно раздражает меня до чертиков.
- мириться со случайной проблемой maven / classloader, которая не поднимает его уродливую головупока вы не развернетесь в Tomcat.Это создает ложное впечатление, что все в порядке, когда вы находитесь в IDE.
- необходимо приложить больше усилий для миграции баз данных, чем когда-либо рубиновые люди.
- с ошибками в фреймворке в Spring в этом блоке (это случалось примерно 5 раз в этом проекте с 2009 года) или в Hibernate.Мне также не нравится обновлять Spring Security и заставлять их постоянно менять конфигурацию, apis и библиотеки тегов снова и снова.Это раздражает.
- тратит столько времени на загрузку 58 МБ военных файлов на сервер!На загрузку у меня уходит 12 минут, когда мне нужно развернуть изменения.Если я забыл сделать «mvn clean» перед загрузкой, Spring может жаловаться, что существует 2 бина с одним и тем же именем, потому что я переместил один в новый пакет ... и затем мне придется заново загрузить весь тупой файл войны снова.Почему «чистый» запуск по умолчанию не выполняется, когда вы делаете «mvn package» для?!?!Иногда эти платформы и инструменты используют самые глупые настройки по умолчанию.Это так часто встречается в мире Java.
- Необходимо потратить час (а), чтобы выяснить, где фреймворк хочет подключить вашу собственную пользовательскую реализацию для чего-то.Это очень раздражает.Вы можете потратить 2 часа, просматривая Google и дрянную документацию, пытаясь выяснить, как переопределить механизм аутентификации Spring Security, например ... и затем потратить только 5 минут на написание фактической реализации.Конечно, они написали параграфы за параграфами, объясняющие архитектуру и то, как это круто, но никому нет до этого дела.Для чего-то такого распространенного, почему бы просто не привести пример исходного кода и покончить с этим?
- Ожидание 10-15 секунд для запуска Spring, когда вы захотите запустить интеграционные тесты.Это перетаскивание.
Есть несколько вещей, которые мне нравятся в Java.Доступ на основе ролей очень прост в Spring Security.Аутентификация никогда не бывает такой большой выгодой, но мне нравится реализация внутри Spring.
Мне также нравятся объекты поддержки формы Spring и @ModelAttribute.Это огромные победы, когда дело доходит до контроллеров, и я не знаю, может ли Rails сделать это.Мне, честно говоря, никогда не нравилось передавать параметры запроса в каждом действии - на самом деле Spring MVC намного проще в использовании, когда дело доходит до этого обычного раздувания.
Возможность кэшировать действительно массивные структуры в памяти и сохранять их в памятиПри запуске приложение также крайне желательно, особенно для этого приложения на самом деле.У меня есть тезаурус в памяти и средство проверки грамматики, которое нужно вызывать сотни раз за запрос, так что в памяти это почти самый быстрый вариант для меня.
Даже, тем не менее, я думаю, что могу восстановить то, что имеючерез 2-3 недели, а затем добавьте все новые функции через несколько недель с помощью рельсов.
С другой стороны, все действительно хорошо разработанные CSS, HTML и JavaScript могут быть перенесены с оченьнебольшие проблемы.
Я хотел бы получить несколько советов по этому вопросу, прежде чем я продолжу.
PS: Я мог бы также пойти в Spring-ROO ... но это также было бы значительной переделкой.Я никогда не использовал JPA - я использовал Hibernate напрямую.Я также не использую JSP - я использую Freemarker.