Pull to refresh

Отличный Java MVC фреймворк — Play Framework

Java *
Добрый день!

Не так давно, мне потребовался инструмент или фреймворк, для того чтобы в краткие сроки, создать небольшой сайт — витрину. Особых требований не было. Собственно, сама витрина и простейшая админка, с возможностью подредактировать параметры публикуемого контента. Главным требованием была скорость. Нужно было сделать это все за 1-2 дня, с учетом необходимости верстки дизайна.
Читать дальше →
Total votes 61: ↑52 and ↓9 +43
Views 47K
Comments 78

‘Hello World’ tutorial — Ваше первое приложение на Play framework (Часть 1)

Java *
Translation
Это очень поверхностное руководство, которое только познакомит с базовым функционалом Play framework на примере создания приложения ‘Hello World’.

Читать дальше →
Total votes 20: ↑16 and ↓4 +12
Views 20K
Comments 8

‘Hello World’ tutorial — Ваше первое приложение на Play framework (Часть 2)

Java *
Translation
Это очень поверхностное руководство, которое только познакомит с базовым функционалом Play framework на примере создания приложения ‘Hello World’.

(Часть 1)
Читать дальше →
Total votes 24: ↑20 and ↓4 +16
Views 14K
Comments 26

Мои 5 любимых фишечек в Play Framework

Website development *
Translation
Про Play уже писали на хабре: Отличный Java MVC фреймворк и ‘Hello World’ tutorial. В этой статье Томас Рёмер из компании ZeroTurnaround рассказывает о своих любимых фишечках в Play! framework.

В течение последнего года я разрабатывал два проекта с помощью Play! Framework. Это сервер лицензий JRebel и LiveRebel. Я перепробовал разные фреймворки для этих двух задач, и в конце концов мой выбор свёлся к двум кандидатам: Struts и Play! Framework. Play! казалась более рискованной, прикольной, бунтарской , в то время как Struts считалась чем-то вроде старой рабочей лошадки, которая работает и гарантированно добивается результата. После некоторых споров в команде мы решили рискнуть и попробовать Play!.. С тех пор я полюбил некоторые особенности Play! больше, чем другие, и хотел бы поделиться своей любовью.

Итак, мои 5 любимых фишечек в Play! Framework
Total votes 25: ↑18 and ↓7 +11
Views 7.2K
Comments 19

Развертывание приложений Play! framework в Google AppEngine

Java *


Play! framework набирает популярность и на Хабре уже есть следующие топики:
Отличный Java MVC фреймворк — Play Framework
‘Hello World’ tutorial — Ваше первое приложение на Play framework (Часть 1)
‘Hello World’ tutorial — Ваше первое приложение на Play framework (Часть 2)
Мои 5 любимых фишечек в Play Framework

Одна из замечательных возможностей Play! — развертывание приложения в облачную инфраструктуру App Engine от Google.

На приложения, которые исполняются в GAE накладываются довольно жесткие (по сравнению с обычными Play! приложениями) ограничения, в основном, это связано с модулем сохранения данных (JPA / Hibernate). Для того, чтобы приложение без проблем заработало в GAE следует отказаться от JPASupport/Model хелперов и использовать только базовые возможности JPA.
Альтернативой также может стать использование модуля Siena.

В данном топике я пошагово опишу процесс развертывания приложения Play! в Google AppEngine.
Процесс установки и использования описан применительно к ОС Linux, но существенных различий при использования других ОС возникнуть не должно.
Читать дальше →
Total votes 41: ↑36 and ↓5 +31
Views 4.9K
Comments 13

Использование Play! framework в Gedit

Java *
Последнее время Play! framework набирает особую популярность среди Java разработчиков. Конечно все мы мечтали о таком фреймворке для Java и вот он наконец появился.

Одной из фишек фреймворка является компиляция на лету, эту фичу они взяли и eclipse(jdt). Благодаря этому отпадает нужда в IDE и всяких ant'ах. Можно программировать в простом текстовом редакторе типа Gedit. Хотелось бы поделится с вами портом Play! framework Textmate бандла для Gedit. Проект выложен на github'е и базируется на gmate, списке плагинов и тем делающий Gedit схожим с Textmate. Буду рад вашей помощи в добавлении новых возможностей.

P.S. Скоро будет добавлен ppa для пользователей ubuntu.
Total votes 31: ↑23 and ↓8 +15
Views 1.5K
Comments 39

Play! in the Cloud

Jelastic corporate blog
imageУже длительный период времени мы предоставляем нашим пользователям возможность поучаствовать в усовершенствовании платформы Jelastic путем голосования за новые фичи. Согласно результатам голосования, мы реализовали в Jelastic поддержку одного из самых популярных фреймворков — Play!.

Давайте рассмотрим небольшой пример того, как задеплоить Play!-приложение в окружение Jelastic.
Читать дальше →
Total votes 7: ↑6 and ↓1 +5
Views 2.9K
Comments 0

Обзор Typesafe Stack 2.0 и введение в модель акторов на примере Akka 2.0

High performance *Java *Scala *
Sandbox
image

Typesafe Stack — современная программная платформа, которая обеспечивает возможность создания легко масштабируемых программных систем на Java и Scala. Стек функционирует на JVM, включает в себя фрэймворки Akka 2.0 и Playframework 2.0. Ядром платформы, которое обеспечивает практически неограниченную масштабируемость разрабатываемой системы, является библиотека Akka, реализующая многозадачность на основе модели акторов.
Читать дальше →
Total votes 25: ↑23 and ↓2 +21
Views 13K
Comments 9

Пишем первый проект на Play Framework 2.0

Website development *Java *Scala *
Sandbox
13 марта состоялся релиз второй версии scala/java-фреймворка Play. На хабре уже был обзор новых фич Play 2.0. В этой же статье я хочу восполнить пробел в отсутствии мануалов на русском языке по этому интересному фреймворку на примере создания простого приложения на Java, состоящего из списка категорий и привязанных к ним вакансий.

Статья рассчитана на тех, кто совсем не знаком с Play и хотел бы его «пощупать», не тратя много времени.
Читать дальше →
Total votes 21: ↑18 and ↓3 +15
Views 38K
Comments 15

Измерение производительности Play Framework 2.0

High performance *Java *Scala *

Измерение производительности Play Framework 2.0


Я уже рассказывал о программной платформе Typesafe Stack 2.0. В том посте шла речь об одном из компонентов платформы — фрэймворке Akka 2.0, реализующем модель акторов на JVM. Сегодня я хочу написать о возможностях другой составляющей Typesafe Stack — фрэймворке Play 2.0. Хотя о функциональности данного компонента уже рассказывали здесь и здесь, тема производительности решений под управлением Play 2.0 по-моему осталась не раскрытой.

Тестирование фрэймворка будет проводиться с помощью простейшего приложения разработанного на его основе. В результате выполнения тестов необходимо ответить на следующие вопросы. Какое максимально возможное количество одновременных подключений? Сколько оперативной памяти потребляют эти подключения? Сколько запросов в единицу времени может обработать тестируемое приложение?
Читать дальше →
Total votes 24: ↑21 and ↓3 +18
Views 6.9K
Comments 31

Впечатления от работы с Play! Framework 2.1 + Java

Website development *Java *
Шла четвёртая неделя тяжёлых боёв с Play! Framework 2.1 + Java. Победа неумолимо приближалась, но до полной капитуляции было далеко.
После обнадёживающих новостей про развитие Play! 2.1, например в LinkedIn, было решено попробовать его в одном новом проекте. Испытать его, так сказать, в деле. Что из этого получилось? Я бы сказал, что это была небольшая война между мной и Play! 2.1. Почему? Подробности под катом, а для нетерпеливых:

Краткий вывод

Для штурма надо было брать секретное оружие под кодовым названием Scala. Если встать лицом к лицу с Play! Framework 2.1 и крикнуть со всей силы: «Ты есть Scala-фреймворк!», то он испугается такой прямоты и скромно откроет свои двери в мир больших возможностей.
«Не знаете Scala?» — «Используйте Play 1.2».
«Хорошо разбираетесь в Scala?» — «Обязательно попробуйте Play 2.1. Но всё равно запаситесь терпением».

Подробные сводки с фронтов
Total votes 39: ↑36 and ↓3 +33
Views 61K
Comments 40

Автоматизация развертывания Play! Framework приложений на платформе OpenShift

Website development *Java *Openshift *
Tutorial
    

Привет, хабражители! Сегодня я хотел бы рассказать о том, как можно воспользоваться бесплатным решением от RedHat для размещения своих сайтов в облаке на примере Play! Framework. Не буду описывать отдельно каждый из продуктов, т.к. про них уже не раз писали, расскажу лишь об их взаимодействии и моей схеме для автоматизации сборки и развертывания.
Читать дальше →
Total votes 9: ↑6 and ↓3 +3
Views 6K
Comments 5

Реактивный манифест

System Analysis and Design *Concurrent computing *
Translation
В последние годы требования к приложениям значительно изменились. Десятки серверов, время отклика в несколько секунд, оффлайновое обслуживание, которое могло длиться часами, гигабайты данных — такими были большие приложения буквально несколько лет назад. Сегодня же приложения работают абсолютно на всём, начиная с простых мобильников и заканчивая кластерами из тысячи процессоров. Пользователи ожидают миллисекундного времени отклика и стопроцентного аптайма, в то время как данные выросли до петабайтов.

Первоначально эту нишу занимали крупные инновационные интернет-компании типа Google или Twitter, однако такие требования к приложениям начали всплывать во многих областях индустрии. Финансовые и телекоммуникационные компании первыми начали внедрять новые практики, чтобы удовлетворить новым требованиям, а теперь подтягиваются и остальные.

Новые требования требуют новых технологий. Предыдущие решения делали упор на управляемые сервера и контейнеры. Масштабирование достигалось засчёт покупки более крутых серверов и использования многопоточности. Для добавления новых серверов приходилось применять комплексные, неэффективные и дорогие проприетарные решения.

Однако прогресс не стоит на месте. Архитектура приложений эволюционировала в соответствии с изменившимися требованиями. Приложения, разработанные на основе этой архитектуры, мы называем Реактивными Приложениями. Такая архитектура позволяет программистам создавать событийно-ориентированные, масштабируемые, отказоустойчивые и отзывчивые приложения — приложения, работающие в реальном времени и обеспечивающие хорошее время реакции, основанные на масштабируемом и отказоустойчивом стеке и которые легко развернуть на многоядерных и облачных архитектурах. Эти особенности критически важны для реактивности.

Читать дальше →
Total votes 24: ↑21 and ↓3 +18
Views 49K
Comments 15

DSL на Scala для работы с Нtml-формами

NAUMEN corporate blog Scala *


Наверняка многим из вас знаком процесс создания и обработки HTML форм. Возможно, для типичного веб-приложения он вполне тривиален, но если вы работаете в корпоративном секторе, ситуация складывается немного иначе. Формы создания или редактирования клиентов, документов и многого другого становятся ежедневной рутиной. Java фреймворки, развиваясь, предлагают все более удобные API и компоненты для работы с ними. Но даже несмотря на это, многие наверняка задумывались, нельзя ли сделать работу с формами чуточку удобнее.
В первую очередь, конечно, хотелось бы, чтобы фреймворк максимально облегчал следующие задачи:
  • определение свойств полей формы, таких как тип, заголовок или валидность;
  • обработка данных формы после ее отправки;
  • рендеринг формы.

Причем, желательно, чтобы многие ошибки обнаруживались бы еще на стадии компиляции.

В этой статье я опишу процесс создания собственного DSL на языке Scala, а затем покажу, как новый способ описания форм применить в контексте Play Framework 2.
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Views 8.3K
Comments 2

Асинхронный HTTP в Play Framework

NAUMEN corporate blog Scala *
При написании собственных веб-приложений часто возникают такие ситуации, в которых приходится делать выбор между синхронным и асинхронным выполнением запросов. С одной стороны, идея синхронной работы выглядит вполне логичной: мы запускаем некоторый процесс, дожидаемся его завершения и после этого продолжаем работу. Но на деле такой подход хорош только в случае простых вычислений. Представьте, что в процессе выполнения вам нужно, к примеру, сделать сложный запрос к базе данных — а то и, еще лучше, отправить запрос к другому серверу и дождаться от него результатов. В этом случае дальнейшая работа потока будет остановлена на довольно продолжительное время — а это, понятное дело, далеко не всегда является приемлемым. Именно в таких случаях на помощь приходят асинхронные запросы. Давайте посмотрим, как работа с ними реализована в Play framework.
Подробности
Total votes 24: ↑22 and ↓2 +20
Views 8.2K
Comments 10

Как я проект с JavaScript на Scala переписывал

JavaScript *Scala *

Я никогда не смогу ходить! Потому что я ползаю.
—Цитаты великих

    Меня всегда учили прежде всего здороваться, так что — здравствуйте. Сегодня я расскажу про творческие (и не очень) муки, страдания и боль, которые я испытывал на протяжении определенного периода своей жизни, который я обозначу как ПРОЕКТ. Сначала он был на JavaScript (node.js), а теперь он на Scala (Play). Сразу скажу, что я — один из самых субъективных негодяев в обозримой Вселенной, поэтому некоторые обороты, высказывания и иже с ними могут быть восприняты уважаемыми читателями весьма неоднозначно. Короче, я предупредил. И у меня еще одна небольшая просьба — если уж взялись прочитать статью, то не кидайтесь сразу строчить разоблачающие комментарии. Дочитайте. Я не Пастернак, правду говорю. И вообще, почти все спорные моменты так или иначе освещаю, объясняю.
Ну что там
Total votes 130: ↑102 and ↓28 +74
Views 35K
Comments 56

Squeryl — простота и изящество

Programming *Scala *
Sandbox
Tutorial
Добрый день, хабр!

Решил написать небольшой обзор с примерами на легковесный ORM для Scala — Squeryl 0.9.5

Начнем с основных достоинств данного фреймворка.

1) Squeryl предоставляет DSL для SQL запросов. К примеру

def songs =  from(MusicDb.songs)(s => where(s.artistId === id) select(s))

def fixArtistName = update(songs)(s =>
  where(s.title === "Prodigy")
  set(
    s.title := "The Prodigy",
  )
) 


Синтаксис напоминает C# LINQ. Как вы могли заметить в запросах используются лямбда выражения, что значительно сокращает объем кода.

В данном примере метод songs возвращает объект Query[Song] который реализует интерфейс Iterable, что позволяет работать с ним как с обычной коллекцией.

Также стоит отметить, что запросы можно будет использовать в качестве подзапросов, для этого достаточно указать запрос в конструкции from вместо таблицы.
Подробности
Total votes 18: ↑17 and ↓1 +16
Views 8.1K
Comments 10

WebJars + RequireJS

JavaScript *Java *Scala *CoffeeScript *
День добрый, читатели Хабра!
В этой статье спешу вам рассказать (хоть и с опозданием) о том, что такое WebJars на примере приложения в Play Framework.

image В практически любом веб-приложении нельзя обойтись без сторонних javascript-библиотек. Самый простой способ добавить их: скачать и добавить в проект, а также добавить файл в git-репозиторий. Решение годное, но лично для меня наличие в проекте какой-либо статики малость раздражает. Есть другой метод: указывать ссылку на внешний хостинг js-библиотек такой как google, yandex. В принципе вариант, но в моей практике были случаи, когда необходимо было продолжить разработку а доступ в интернет оставлял желать лучшего либо его вообще не было, в итоге клиентская часть не функционировала. Наиболее годным решением мне видится добавления js библиотеки в качестве зависимости в проект, с подобным подходом вы могли сталкивать в Ruby on Rails.
Читать дальше →
Total votes 18: ↑14 and ↓4 +10
Views 15K
Comments 13

Защищенные социальные сети — миф или реальность?

Information Security *Cryptography *JavaScript *Scala *Angular *
В этой статье я хочу рассказать, как я придумал идею web-сервиса защищенных социальных сетей. Как её реализовывал и на каких технологиях. Поделюсь технологическими решениями проблем во время разработки сервиса.

image

Идея этого проекта у меня появилась после ознакомления с современным положением дел в области шифрования. Я столкнулся в двумя проблемами.

С одной стороны, это полная незащищенность пользователей от утечек информации из социальных сетей, мессенджеров и тд. Например Skype или Telegram хранит все переписки у себя на серверах и по требованию правительства предоставляют любые данных из этих переписок. Еще вспоминается, недавний взлом сайта знакомств для супружеских измен Эшли Мэдисон, где уплыли данные пользователей.

С другой стороны всем известно, что чем выше уровень защиты, тем менее приятнее пользоваться таким продуктом. Например, что бы подписать и зашифровать емайлы при помощи PGP, требует специальный софт и умение. Используя Telegram, ты обязан устанавливать их мессенджер и светить свою симку и к тому же режим секретного чата, только с одним пользователем, группового режима нет. Также сменив устройство, вы уже не посмотрите, о чем вы чатились ранее в секретом чате.
Читать дальше →
Total votes 18: ↑13 and ↓5 +8
Views 12K
Comments 59
1