Статьи

Веб-приложения с платформой Play


Платформа
Play определяет себя как
чистую альтернативу раздутым корпоративным стекам Java . Мне нравится это определение, и после того, как мне посоветовали его опробовать, я предложил Pomodoros для кодирования пары
приложений
Hello, World в Play.

Что говорят документы

Первые впечатления от документации очень хорошие: Play представляет собой интегрированную среду стека, уже интегрированную с Hibernate, memcached и другими инструментами. Это не обязательно лучший выбор в долгосрочной перспективе, но это блаженство для программиста PHP, который хочет испытать новую платформу без отладки исключений (если интеграция работает хорошо).

Фреймворк написан на чистом Java, поэтому может взаимодействовать с любым JAR. Однако он также поддерживает исходный код Scala, поэтому я выбрал его для своих экспериментов. Разработка веб-приложений Scala с нуля требует установки скучных скриптов для компиляции исходных файлов и развертывания правильных файлов JAR. Опять же, лучшее решение не обязательно заключается в том, чтобы все отдать на аутсорсинг, но в моем случае это путь наименьшего сопротивления.

Play также представляет собой систему без совместного использования ресурсов, такую ​​как PHP-приложения. Он автоматически масштабируется путем умножения экземпляров (если я правильно понял, не полагаясь на один сервер приложений.)

Привет мир на Яве

Загрузите и разархивируйте Play там, где вы хотите. Игра утилит командной строки будет использоваться для создания новых проектов, а также должен быть sylinked на нашем пути.

Утилита командной строки, на мой взгляд, лучше, чем автоматизация Eclipse: всегда можно повторно использовать и интегрировать эти утилиты в сценарии, хотя обычно это не так с функциями IDE. Более того, я хотел бы использовать фреймворк независимо от того, какая у меня IDE: когда я работал со SMILA, меня заставляли писать код в Eclipse.

Фреймворк управляет процессом компиляции и самого развертывания. Я не мог бы сказать это лучше.

Создать приложение и запустить его действительно легко, и не дает никаких исключений:

play new helloworld
play run helloworld

Если вы посмотрите на папку helloworld /, вы не увидите файлов .class. Исходный код компилируется Play после каждой модификации, пока он работает. Первоначально пустое приложение будет отображать страницу справки.

Основные характеристики

Маршруты легко добавить, хотя расширенный синтаксис требует небольшого изучения. Однако маршруты действительно интегрированы, и вы никогда не будете писать URL самостоятельно, а просто используете ссылку на URL как соответствующее ему действие с * class.method *.

Классы контроллера являются статическими, что немного странно, но не очень важно, так как я никогда не пишу в них много кода Они принимают параметры HTTP в качестве параметров метода (например, Symfony2):

    public static void sayHello(@Required String myName) {
        // call this with url?myName=...

Как видите, Play предоставляет аннотации для проверки входных данных, но не перенаправляет их из действия по умолчанию: у вас есть контроль над тем, что происходит после неудачной проверки.

Шаблоны отображаются путем передачи им их зависимостей данных; Play имеет простой язык шаблонов, который поддерживает наследование для предоставления макетов.

Мир учебник Hello для Java — приложений содержит некоторые скриншоты и весь код , вы хотите проверить.

Написание кода Scala

Поддержка Scala обеспечивается дополнительным модулем, который можно установить непосредственно через командную строку:

play install scala
play new helloworldscala --with scala
play run

Классы этого приложения будут написаны на Scala:

object Application extends Controller {
    import views.Application._

    def index = {
        html.index("Your Scala application is ready!")
    }

}

После добавления немного логики в контроллер, это выглядит так:

def sayHello = {
    val myName = params.get("myName")
    if(myName == "") {
        flash += ("error" -> "Oops, please enter your name!")
        Action(index)
    } else {
        html.sayHello(params.get("myName"))
    }
}

Модуль Scala имеет другой механизм шаблонов: у шаблона есть такие типы, как (String) => Html в случае одного параметра. Вы не будете расширять шаблон для создания макета, но включите его и передайте ему аргумент Html:

@main(title) {
    Hello, world
}

Этот шаблон будет печатать Hello, world внутри макета, который встроен в основной шаблон. Внешние шаблоны — это просто другие объекты, в которых вы можете передавать такие параметры, как заголовок страницы.

Scala привет мир пример обеспечивает такое же применение , как привет мир Java, но реализована с Scala кодом. Я прошел через это и снова достиг конца без исключений, что нелегко для разработчика PHP в мире JVM. Это, вероятно, означает, что фреймворк достаточно зрел, чтобы его могли использовать все, и точность написанной документации действительно выгодна для наивного разработчика. Даже исключения хорошо отображаются и сфокусированы:

Выводы

Play определенно будет моим выбором для веб-приложений на основе JVM. С ним легко работать, и он обещает не снижать производительность. Это, безусловно, самый быстрый способ получить код Scala, доступный через HTTP: вам даже не нужна IDE для начала работы.