• Что из всего зоопарка технологий Java стоит использовать в своем проекте?

    Возможно вас устроит Jooq в качестве ActiveRecord и SQL конструктора.
    В большинстве случаев EclipseLink, Hibernate, eBean, iBatis довольно слоупочны.
    Особое внимание нужно уделять кэшированию модели - тут ehCache правит балом.
    Можно использовать offheap кэширование - Apache DirectMemory.
    Большинство CRUD'а может быть описано через restfull api, тут поможет Swagger.

    В последнее время j2ee стал синонимом глючности и слоупочности.
    Не стоит кидаться без веских оснований...

    Если очень хочется J2EE - можно пробовать Grails, Vaadin, ZK.

    Сижу на Play2 + angularjs и частично AIR / Flex уже довольно долгое время, очень доволен.
    Советую рассмотреть переход на Flex для построения интерфейсов.
    AIR отлично подходит для мобильных приложений.
    Ответ написан
    Комментировать
  • Стоит ли переходить работать с php на java?

    Я бы смотрел в сторону Angular, Play2, swagger, Jooq, Apache DirectMemory и не заморачивался с энтерпрайсом. Как показывает практика J2EE стэк не очень подходят для фриланса. Конечно есть исключения - можно глянуть Grails, Vaadin и ZK для RAD'а.
    У Grails ужасно низкий порог вхождения, я на него подсаживал рельсозависимых и джангистоманов; там уровень поддержки на несколько порядков лучше чем в большинстве решений из миров php/ruby/python.

    J2EE сейчас немного парализован, и с его использованием в продакшене связано не мало рисков. В первую очередь участились случаи взлома серьёзных учреждений которые используют JBoss и WebLogic. Сейчас как-то стало совсем непопулярно использовать сервлеты ...

    JSF / ADF сейчас отмирает.
    Spring очень простая и нужная штука если разобраться, правда есть свои проблемы и иногда лучше обойтись без него.

    По шаблонам проектирования, важно понимать: mvc, mvp (document-view), mvvm, cqrs-es, disruptor, proactor / reactor. Все остальное, "банальное" типа Factory, Builder, Facade можно подчерпнуть из книжек... в вэбе такое почти не используется, но для понимания остальных шаблонов нужно разобраться.

    В большинстве случаев мне приходится реализовывать CQRS-ES в Play2 через Angular + sse. Есть свои сложности с http кэшированием, и кэшированием модели... часто использую prerender.io для клиентов без JS'а и поисковых роботов. Вэбсокеты (Socket.io) работают медленнее (задержки выше, инициализация длительнее) чем sse, иногда приходится откатываться на флеш и long-polling, но это все по ходу дела приходится самому дописывать руками. Есть много классных решений типа restangular, правда большинство из них ещё довольно сыроваты - доверяю тому что сам пишу.
    Ответ написан
    3 комментария
  • Порекомендуйте 3G USB модем для Raspberry Pi

    CRImier
    @CRImier
    Скорость приёма и передачи рулит. Насчёт плюшек можно смотреть по поводу кард-ридера и разъёма для внешней антенны — иногда незаменимая штука. Я сам использую E3131. Одна беда — он не предоставляет последовательных портов, а представляется USB-Ethernet, вся конфигурация и подключение происходит через веб-браузер. Это может быть как хорошо (устройства с экраном), так и неприменимо (без экрана). Решайте, какое использование Вам надо =)
    Ответ написан
    Комментировать
  • Выбор Java фреймворка для веб-разработки?

    malexejev
    @malexejev
    Зависит от приложения и архитектурных требований.

    Во-первых, компонентный или action-based?

    Компонентные — легко писать (i.e. «разрабатывать большие сложные гуи») но долго разрабатывать кастомные компоненты, приложение будет в среднем тяжелее (медленнее) и будет жрать больше памяти (особенно JSF имплементации с conversation state сохраненным в HttpSession) на одного юзера. Кроме того, их нередко сложно кластеризовать из-за плохого использования сессии библиотеками.
    Из компонентных: JSF (XxxFaces), Tapestry 5, GWT. Тапестри 5 не советую — имел опыт разработки большого публичного сайта на нем. Посоветовал бы попробовать GWT — слышал максимум положительных отзывов от людей, кто что-либо на нем делал. Опять-таки, лично я не советую JSF — сразу потеряете контроль за тем, что находится у вас в сессии, приложение станет «тяжелым».

    Action-based фреймворки: чуть медленнее разработка, легко сделать приложение stateless и получить простую кластеризацию, приложение получается легковесным и быстрым.
    Посоветую такие комбинации: Spring MVC + FreeMarker, Spring MVC + Velocity, Spring MVC + JSP 2 (EL-based). Слышал положительные вещи про Stripes (но он очевидно менее популярен, чем Spring MVC) и Play (всем хорош, кроме странных архитектурных закидонов — например, предлагается пихать бизнес-логику в модели, а не в выделенный сервис-леер. одно это скорее всего будет для вас критично).

    Потом, что еще надо учесть —
    1) HTML это не XML. Если движок шаблонов использует XML — это уже не очень хорошо. DOCTYPE, browser-specific комменты придется вставлять через хаки.
    2) streaming, not buffering. Правильная работа с вебом — писать в outputStream по ходу, а не копить строчку и потом выбрасывать ее целиком. Почти все компонентные фреймворки грешат лишней буферизацией, многие action-based тоже. Отсюда завышенные требования к памяти, OOME при генерации тяжелых страниц, etc.
    3) Обратите особое внимание на то, как в выбранном фреймворке сделаны Layouts — они должны быть удобные (ie. ближе к Django-style) и имплеменчены без буферинга (см. п. 2)
    4) Если ваш фреймворк диктует вам одну конкретную прошитую javascript-библиотеку — подумайте дважды. Для intranet приложения это может сработать. Для публичного — я бы взял другой фреймворк. GWT вроде используют в паблике, но я лично с ним не работал.
    5) Если к сервису понадобится REST Api, возьмите сразу фреймворк, в котором это есть, а не надейтесь на авось.

    В целом так. Дадите больше требований к приложению — могу посоветовать что-то более конкретное.
    Ответ написан
    6 комментариев