пятница, 25 сентября 2009 г.

Мое знакомство с Django началось с того, что я попытался найти что нибудь на любимой java для быстрого стартапа (авторизация, CMS, ORM, администрирование базы). Что-то из того, что удалось найти был ужас, а что-то - ужас-ужас-ужас.
По порядку:

Java

  • appFuse -отличный проект, интеграция java, Spring, hibernate, dbunit, Apache Commons, JPA, JUnit, Log4J, ehcache, opensymphony, directwebremoting, jmock, Struts, ibatis, JSF, Tapestry ...:) причем со сборкой под maven и собственными maven plugins.

  • Некоторое время поковыряв удалось загрузить через maven-plugin исходники и покопаться в коде. Есть своя авторизация, куча фильтров- бери и переписывай как хочешь. Правда Spring security начинает мешать directwebremoting, обходиться статическим фильтром + несколько workarounds + разбираться во всем этом и переписывать под себя - не то о чем я мечтал..

  • JetSpeed-2 -передовой Java портал от Apache, сборка под maven(про Liferay во всех отзывах пишут что отстой так что и пробовать не стал). Загрузил, поиграл- по интерфейсу- ужас-ужас-ужас. И это- лучшее от зубров Java.


  • Alfresco-Labs, Jahia, OpenCms, Hippo - все не то. Что-то - коробочное для пользователей, что-то - не собирается или не кустомизируется.

В результате пришел к глубоко личному выводу, что под java ничего нужного мне нет... Пришлось копать глубже:

RoR vs Django

Про RoR vs Django нашел несколько хороших ссылок:
Объязательно к просмотру, особенно RoR vs PHP и vs Java,
Более глубокое 15-ти страничное сравнение. Правда оно писалось еще в те далекие времена, когда сообщество Django было django-users было 4180 против на 24.09.09- 15569 и google_trends был в пользу RoR, но времена меняются к лучшему:) Концепция Джанго мне гораздо ближе и я порадовался, что сделал верный выбор.

Jyton

Можно наследовать и наследоваться от родной Java, Django запустился даже без патчей , получил war (django-jython), который с ходу задеплоился в GlassfFish - лепота. Но потом пошли и минусы: маленькие Jyton 2.5, доп. сложность в пути HTTP и большие -поддерживаемые DB только PostgreSQL.

Grails

А как насчет G&G (Groovy on Grails)? Поставил IDEA 9 c расширенной поддержкой Grails- то что мне не хватало- прекрасный IDE, кликнул на String- попал в родную java-String. Кажется- вот оно- счастье где скрывалось. Ань нет. Сначала подебыжил- ужас. На Jave нельзя писать динамические языки с ссылками на функции. Затем сам фреймворк- он оказался построен поверх Spring, Spring MVC, Hibernate (почему Hibernate а не JPA? - в GlassFish например внизу TopLink- зачем мне 2 ORM?). Соответственно все это сжирает кучу ресурсов и с бесплатным хостинг ом можно попращаться. Затем идеология G&G близка к RoR- магическая генерация кода. Кустомизировал, поменял модель- перегенери и мержи. Не говоря уже о DRY- сколько там дублирования будет. Попытался сделать простую весчь- добавит в модель transient поле. Не помня уже с чем пришлось бороться но финальную точку поставила сортировка сгенеренной формы по этому полю- он полез в Hibernate и стал там ругаться.

Заключение:

При всем богатстве выбора.. Django. Есть в нем то, от чего я не в восторге, но "у каждого свои недостатки". И это уже тема следующего поста.