Как и на все вопросы такого рода, ответ «это зависит». Факторы, которые следует учитывать, включают в себя, насколько вы комфортно владеете языком / структурой и какие функции требуются проекту. Сказав это, я построил сайты, используя несколько фреймворков, каждый из которых имеет свои сильные и слабые стороны:
Grails
Если мне нужно быстро создать сайт для чего-нибудь профессионального , Grails, вероятно, будет моим первым выбором. GORM далеко и далеко наиболее простым и интуитивно понятным ОРМ , что я пробовал, парадигма MVC очень хорошо выполняется, есть 0 конфигурация для запуска не кодирования (не беспокоиться о URL, DB патчи, что угодно), очень быстрой итерации (только обновления страницы), бесшовная интеграция с Java (хорошая вещь в мире бизнеса) и несколько замечательных плагинов (например, Searchable - вещь прекрасная). Самым большим недостатком является то, что хостинг может быть трудно найти (и дорого).
Рубин на рельсах
Мой опыт работы с RoR очень похож на опыт Grails: MVC хорошо выполнен. С положительной стороны, у него более широкое сообщество, поэтому он-лайн ресурсы (документация, FAQ, примеры кода и т. Д.) Очень многочисленны, есть МНОГИ плагинов, Ruby немного более гибок / выразителен / «фанк», и это гораздо проще найти хостинг (особенно для личных проектов); с другой стороны, управление / настройка зависимостей - отстой (я использовал RubyGems в Windows, Ubuntu, Fedora и OSX и столкнулся с нетривиальными проблемами в каждой из них), конфигурация / издержки немного больше, чем в Grails (в частности, имеет дело с rout.rb и тоннами файлов миграции db), и, очевидно, у RoR есть некоторые серьезные проблемы с масштабируемостью.
PHP (включая фреймворк CakePHP)
Если мне нужно быстро что-то взломать или создать сайт для личного использования, то я, вероятно, пойду с PHP. PHP далеко и далеко самый простой язык , чтобы узнать и развертывание: скачать любого из удобных пакетов ЛАМПЫ там, нажмите пару раз, и начать рубили. Сообщество больше, чем сообщество RoR, поэтому документации достаточно, и есть бесчисленное множество плагинов (их легко «установить», просто вставив файл php и обновив страницу). Язык прост в изучении, но некоторые вещи в PHP просто странные, и требуется много дисциплины, чтобы избежать уродливого кода. Инфраструктура CakePHP обеспечивает хорошую парадигму MVC, которая помогает поддерживать порядок, и по большей части находится на одном уровне с RoR, хотя лично я нашел ее немного более неинтуитивной.
Java (сервлеты, JSP, JSTL, Struts, Velocity)
Я создал много сайтов с использованием технологий Java-сервлетов, и я могу честно сказать, что в настоящее время нет веских причин выбирать их для любого нового сайта. У них есть крутая кривая обучения, тонны конфигурации для борьбы (XML ад), медленная итерация из-за необходимости постоянно перераспределять вещи (если вы не используете JRebel), подробный код и отсутствие «халявы» с точки зрения функциональности. Я играл с Play! Framework и Spring Roo немного, и оба делают очень классные вещи с более или менее «чистым» Java-кодом и заслуживают дальнейшего изучения.