Pull to refresh

Быстрая разработка веб-приложений на Java

Website development *Java *
Tutorial
Как вы разрабатываете веб-приложение на Java?
После каждого изменения, как вы его запускаете и проверяете? Сколько времени занимает редеплой приложения и рестарт контейнера?

Мне довелось видеть разные варианты: от полной пересборки WAR-файла до использования плагинов для IDE типа MyEclipse, WTP и «коннекторов» для сервлет-контерйнеров. У некоторых из них есть явные недостатки, другие вполне работают — но есть способ проще!

Запускалка


Этот способ разработки позволяет максимально просто и гибко настроить приложение с минимальным временем редеплоя. Вам надо всего лишь написать один простенький Java-класс с main-методом, который запустит сервер Jetty сразу с нужными приложениями (т.н. Embedded Mode).

под катом - примеры кода и обзор альтернативных решений
Total votes 42: ↑38 and ↓4 +34
Views 129K
Comments 43

Java hosting — GlassFish 3.1.1 in Jelastic Cloud

Jelastic corporate blog
GlassFish in Jelastic Cloud Последнее обновление облачной платформы Jelastic вышло вне графика и в основном нацелено на поддержку GlassFish. Честно говоря, выпуск промежуточного релиза обусловлен многочисленными запросами на поддержку данного сервера. Естественно, мы хотели угодить нашим пользователям. Разработчики из Oracle оценили нашу инициативу и даже написали об этом в корпоративном блоге.
Как создать окружение с GlassFish и о планах на будущее
Total votes 25: ↑22 and ↓3 +19
Views 3.8K
Comments 17

WebSocket: Реализация web-приложения с использованием Jetty Web Socket. Часть 1

Java *
Sandbox
Добрый день, Хабражитель!

Поздравляю всех и каждого с великим Днем Программиста! Желаю рабочего кода, уверенных сокетов и самых продвинутых пользователей!

Работая над автоматизацией концертного агентства, мне на каком-то этапе разработки понадобилась система уведомлений. Доступ к автоматизации происходит через написанное мною web-приложение. И, соответственно, моментальные уведомления должны приходить в браузер пользователя.

Для реализации такой задачи есть три решения:
  • «бесконечный iframe»,
  • используя XMLHttpRequest (a.k.a. Ajax),
  • используя WebSocket.

Первое решение я сразу «отметаю» (причины объяснять не буду, web-разработчики меня поймут).

Второе решение нравится гораздо больше, но у него есть свои минусы:
  • браузер отправляет запрос каждую секунду создавая лишнюю нагрузку на:
    • сервер;
    • ОС, на которой работает браузер;
    • и еще раз на сервер, так как сервер постоянно выполняет запрос БД на выборку последних уведомлений.
  • тяжело отследить онлайн-статус пользователя (то есть нужно, например, хранить сессии в БД и постоянно мониторить каждую на timeout).

Третье решение — как раз то, что доктор прописал.

Итак, WebSocket.
Читать дальше →
Total votes 32: ↑31 and ↓1 +30
Views 83K
Comments 29

Jelastic PaaS — major update: horizontal scaling, Java 7, Jetty, HTTPS

Jelastic corporate blog
Java Elastic Cloud Platform

Спешу поделиться большими новостями про большое обновление Jelastic — облачной платформы для Java приложений. Последний релиз действительно большой. В нем были добавлены долгожданные
Читать дальше →
Total votes 35: ↑35 and ↓0 +35
Views 1.4K
Comments 40

Jelastic — Java cloud platform for hosted service providers

Jelastic corporate blog


Это наш новый промо-ролик для хостинговых компаний. Он раскрывает не все наши преимущества и функциональность, но довольно понятно и вкратце объясняет что мы делаем и зачем. На текущий момент у нас есть два крупных партнера — это хостинговые компании в Европе и в США. Скоро будут объявлены официальные пресс релизы по этому поводу. Есть ряд заинтересованных хостеров в Японии, Австралии и других странах. Jelastic старается сделать облачный хостинг более распространенным решением, дабы дать разработчикам максимальную свободу и независимость при выборе поставщика облачных услуг.
Total votes 27: ↑24 and ↓3 +21
Views 1.2K
Comments 11

Jelastic — Cloud Java Hosting. Статистика использования серверов Tomcat, GlassFish и Jetty. Популярность Java 6 vs Java 7

Jelastic corporate blog
Как и обещали ранее, предоставляем статистику по серверам веб-приложений для Java. Статистические данные отображают текущий срез использования серверов в облачной Java Hosting платформе Jelastic. В статистической выборке участвовало более 2000 окружений. Справедливости ради, стоит отметить что сервера GlassFish и Jetty были добавлены позже. Это обстоятельство влияет на конечную статистику. Тем не менее, мы должны показать текущее состояние, для того чтобы провести анализ изменений в следующем месяце.



Распределение серверов по регионам
Читать дальше →
Total votes 31: ↑28 and ↓3 +25
Views 4.8K
Comments 5

Jelastic PaaS — статистика использования баз данных, серверов и JVM в ноябре

Jelastic corporate blog
Мы продолжаем делиться с вами статистикой использования программного стека на платформе Jelastic. Какими же были предпочтения девелоперов в прошлом месяце?

Статистика использования баз данных MySQL, MariaDB, PostgreSQL и MongoDB

Начнем с SQL баз. Как и прежде MySQL остается неоспоримым лидером. PosgreSQL занимает второе почетное место, за ней следует MariaDB. Единственная среди наших NoSQL баз, MongoDB показала очень хороший результат в ноябре.



Если сравнить текущие данные с октябрьскими, то можно сделать вывод, что количество фанов каждой из баз практически не изменилось.
Ситуация в регионах (Европа и Северная Америка).



Текущие цифры
Читать дальше →
Total votes 34: ↑32 and ↓2 +30
Views 1.8K
Comments 18

Session replication and sticky sessions in Java PaaS

Jelastic corporate blog
Рады с вами поделиться нашим очередным достижением: теперь Jelastic предоставляет возможность использовать репликацию сессий между серверами приложений. Включить репликацию очень просто — всего один клик и вы обладатель High Availability (HA) окружения. Давайте рассмотрим подробнее, как это работает и какие преимущества вы получаете.
В текущем решении, Jelastic настраивает репликацию сессий между парами серверов. Эти пары образуют кластеры.

Когда юзер впервые обращается к приложению, балансер перенаправляет запрос к одному из инстансов в одном из кластеров.

На протяжении сессии пользователь продолжает работу с одним и тем же инстансом (работают так называемые Sticky Sessions). Если один из инстансов упал, запросы пользователей, которые обрабатывались в нем, автоматически перебрасываются на другой инстанс этого же кластера. Благодаря репликации, второй инстанс уже имеет все сессии упавшего «коллеги», так что конечные пользователи абсолютно ничего не заметят.
Читать дальше →
Total votes 29: ↑27 and ↓2 +25
Views 2.6K
Comments 9

Цена высокой доступности

Jelastic corporate blog
Теперь, когда Jelastic предоставляет функции высокой доступности, сам собой возникает вопрос: как это повлияет на количество используемых ресурсов?
Мы решили поделиться с вами этой информацией. Во-первых, это пока у нас бесплатная бета, но через несколько недель мы все же выйдем на коммерческий режим и за потребляемые ресурсы надо
будет платить. А во-вторых, и для хостинга вне Jelastic’a все равно вам может захотеться построить отказоустойчивую конфигурацию, так что вопрос ресурсопотребления таковой – не праздный.

Давайте посмотрим, как возрастает потребление ресурсов серверами в конфигурации отказоустойчивого кластера (с репликацией сессий) на примерах серверов, доступных сейчас в Jelastic.

GlassFish

image Начнем с GlassFish. Этот сервер обладает множеством преимуществ: полная поддержка промышленной кластеризации, широкий спектр функций, множество модулей, высокая надежность, административная панель и т.д. Если мы взглянем на следующую таблицу, то может показаться, что GlassFish достаточно «прожорлив», но это полностью оправдано его функциональностью.

image
Читать дальше →
Total votes 9: ↑7 and ↓2 +5
Views 4K
Comments 6

Java Agent in Jelastic

Jelastic corporate blog
imageХотим похвастаться еще одной «обновкой» — теперь можно разворачивать приложения-агенты в облаке Jelastic с помощью -javaagent аргумента. Спасибо нашему другу Антону Архипову за то, что он предложил добавить эту фичу и, конечно же, всем пользователям, которые активно голосовали за нее на нашем сайте.

Java агент выступает в роли «перехватчика» перед вашим главным методом, выполняется в той же JVM, загружается класслоадером той же системы и подчиняется тем же правилам безопасности и контексту. Идея состоит в том, что агенты не запускаются непосредственно для решения задачи, а активизируются самостоятельно. Сейчас приложения-агенты становятся все более популярными и используются для мониторинга и наблюдения, работ по закупкам, добычи и анализа данных, ну и, конечно, для персонального использования.
Читать дальше →
Total votes 3: ↑3 and ↓0 +3
Views 2.8K
Comments 0

Bomberman Online — HTML5 мультиплеер онлайн игра от хабраюзеров. Тестируем нагрузку!

Self Promo
Bombermine Online — результат последних двух недель тестирования и подготовки движка для большого кол-ва игроков онлайн.

Движок написан на Java + Jetty (бекэнд). Фронтэнд — HAProxy + Nginx + Node.js. Клиентсайд — GWT, который транслируется в HTML5/canvas + javascript + websockets. Хостится всё в облаке.

На данный момент рекорд — 50 игроков онлайн. Настроен весь необходимый софт для мониторинга нагрузки. После хабраэффекта обещаем выложить отчёт. Ждём гостей.

Ну а под катом: видео геймплея и немного предыстории создания движка
Total votes 208: ↑195 and ↓13 +182
Views 15K
Comments 179

Bomberman Online и хабраэффект — 450 игроков на одной карте. Отчёт и детали игрового движка

IT systems testing *Java *Game development *


Как и обещали в топике-анонсе нашей игры, выкладываем отчёт о хабраэффекте и детали игрового движка.
Читать дальше →
Total votes 180: ↑166 and ↓14 +152
Views 33K
Comments 95

Рецепт настройки удалённого мониторинга контейнеров Tomcat и Jetty штатными средствами JDK

Java *
Проводя уже около 6 лет собеседования с Java-разработчиками заметил, что из приходивших кандидатов вообще никто не знает, что можно штатными средствами JDK удалённо мониторить состояние JVM с контейнерами сервлетов.
Поэтому далее пошаговый рецепт, как настроить и использовать эту замечательную возможность
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Views 29K
Comments 12

«Java-Оскар» нашел своего нового обладателя

Jelastic corporate blog Java *
Победители премии Duke's Choice Award 2012 были объявлены командой Oracle в преддверье самого крупного ежегодного события в мире Java – конференции JavaOne в Сан-Франциско, и мы среди них! Проект Jelastic победил в номинации «Технологический лидер». Было очень приятно разделить пьедестал почёта с другими победителями, среди которых Hadoop Project, Parleys.com и Liquid Robotics. Это не только наша победа, это победа всех хабраюзеров, ведь наш проект зародился на Хабре и постоянно развивается благодаря Вашему активному фидбэку. Огромное спасибо за поддержку!

image
Читать дальше →
Total votes 31: ↑29 and ↓2 +27
Views 9.7K
Comments 19

Визуализируем геоинформацию из логов на web-карте в реальном времени

Ajax *JavaScript *Java *
Tutorial


Дабы не было двусмысленностей, обозначу суть. При приёме на новую работу мне дали тестовое задание, которое кратко можно описать так: «Написать аналог Glow для геовизуализации событий входа пользователей в кастомерку интернет-магазина». Проще говоря, необходимо мониторить лог системы на предмет возникновения определенных событий и в случае оных выполнять (в данном случае) отображение точки на карте, которая будет определяться IP-адресом пользователя. Цель реализации: создать приятную на вид «игрушку» для презентационных целей, способную погрузить смотрящего в нирвану гармонии и эстетического наслаждения. Основным условием было использование в процессе разработки стека Java-технологий, чем обусловлено принятие многих решений. Кроме этого, было решено реализовать это в виде одностраничного сайта. А поскольку с Java и web я был знаком крайне поверхностно (писал в основном на C/C++), пришлось многому научиться. Что ж, будем разбираться вместе.
Статья рассчитана на интересующихся и начинающих, однако не «разжевывает» простые вещи, с которыми можно ознакомиться с помощью документации или специализированных статей. Наиболее полезные ресурсы, ссылка на исходники (распространяются по лицензии BSD) и ссылка на рабочую версию приведены в конце статьи.

Читать дальше →
Total votes 37: ↑36 and ↓1 +35
Views 16K
Comments 24

Jelastic плагин для IntelliJ IDEA

Jelastic corporate blog Programming *Java *
Tutorial
imageПривет Хабравчанам! Как и обещали в предыдущем посте, закончили работу над плагином для IntelliJ IDEA. Так что теперь не только любители Eclipse могут разворачивать проекты в облако прямо с IDE, но и пользователи самой интеллектуальной среды разработки для Java. Специальный плагин позволяет логиниться в Jelastic, разворачивать приложения, управлять ими и просматривать логи. Работать с плагином очень легко и удобно, но все же давайте рассмотрим основные возможности с помощью краткой инструкции.
Читать дальше →
Total votes 20: ↑18 and ↓2 +16
Views 13K
Comments 2

Node.js vs Java + Rhino + Jetty + FreeMarker

JavaScript *Java *
Sandbox

Хоть Node.js и обзавелся с момента своего появления множеством модулей, он все еще существенно уступает по возможностям мощному набору библиотек Java. Так отчего бы не воспользоваться потенциалом Java для разработки web-приложений на JavaScript? Давайте посмотрим, как можно построить удобный JavaScript MVC framework на Java.

Mozilla Rhino


Прежде всего, начнем с носорогов. Для компиляции/интерпретации JavaScript будем использовать движок Mozilla Rhino, обеспечивающий отличную интеграцию кода ECMAScript в Java-приложения. Начиная с J2SE 6 Rhino включается в JRE в составе Java Scripting API, однако версия в JRE значительно устаревшая и, кроме того, с некоторыми неприятными особенностями реализации от Sun, поэтому лучше воспользоваться свежим build-ом.

Прежде всего, helloworld.js:
print('Hey you!');

Предполагая, что библиотеки Rhino распакованы в ./lib, запускаем пример следующим образом:
java -Djava.ext.dirs=./lib org.mozilla.javascript.tools.shell.Main helloworld.js

Читать дальше →
Total votes 41: ↑36 and ↓5 +31
Views 19K
Comments 35

Статистика использования баз данных, серверов, версий Java и PHP в облаке

Jelastic corporate blog PHP *Java *
Всем привет! По многочисленным просьбам наших пользователей и читателей выкладываем статистические данные по использованию баз данных, серверов приложений, а также версий Java и PHP в облаке Jelastic. Данные собирались довольно простым образом: мы просто подсчитали количество наших пользователей, которые использовали тот или иной программный стек при создании окружений на платформе Jelastic за прошлый месяц (все тестовые аккаунты, конечно же, исключили). Также в данной статье можно отследить тренды за последний год для баз данных и всего, что касается Java, и за последние 5 месяцев для серверов приложений и версий PHP (так как поддержка PHP была реализована в конце января этого года).

Базы данных

Как видим, победитель среди баз данных вполне предсказуем – это MySQL (65%). С большим отрывом второе место занимает «сестра» MySQL – MariaDB, которую используют 12% наших пользователей. Тройку лидеров замыкают Postgres и Mongo – по 11% у каждой. Ну, и аутсайдер, нашего состязания — CouchDB, которая набрала всего один процент.

Database market share June 2013
Читать дальше →
Total votes 24: ↑21 and ↓3 +18
Views 15K
Comments 22

Java-based конфигурирование embedded Jetty/Spring MVC/Spring Security

Programming *Java *
Recovery mode
Кому-то нравится исключительно xml-конфигурация, так как позволяет собрать всю настройку проекта если не в одном файле, то в одной папке с конфигурационными файлами точно, кому-то нет. К примеру, я считаю, что времена persistence.xml ушли безвозвратно — отображения сущностей для ДБ удобнее прописывать в классах сущностей, а маппинги контроллеров и методов удобнее назначать непосредственно в классах контроллеров. Вывод очевиден: если разработчик не страдает анахронизмом, то так или иначе проект будет иметь смешанную настройку — часть в аннотациях, часть в xml-файлах. Это не хорошо и не плохо, это данность времени — все привыкли к web.xml, application.xml, springmvc-servlet.xml и т.д., но при этом активно пользуются аннотациями @ Controller, @ Repository, @ Autowired, @ Value, @ ResponseBody и т.д. Начиная с версии 3 Spring добавил возможность использования Java-based конфигурации, что позволило полностью отказаться от xml-файлов в настройке проекта. Ранее на Хабре была публикация с анализом преимуществ и недостатков одних способов перед другими, с рядом плюсов xml-конфигурации я полностью согласен.

Однако в данной публикации речь не о преимуществах одних или недостатков других, и тем более не попытка агитации за новые технологии и возможности, это только лишь консолидированный отчет о сборке веб-проекта с нуля до рабочего проекта. И главное — с включением в проект embedded сервера Jetty. На самом деле отдельных фрагментов по настройке как встроенного Jetty, так и контекстов Spring Application, MVC, Security, навалом. Но чтобы разобраться в тонкостях этих настроек, не внедрять сложную структуру и не городить костыли, потребовалось кое-какое время и просмотр большого числа документации и исходников. Но даже имея значительный опыт настройки, пришлось столкнуться с рядом затруднений, после решения которых пришла идея опубликовать все это в одном месте.
Далее много текста и кода
Total votes 16: ↑9 and ↓7 +2
Views 32K
Comments 7

Простая веб-служба со встроенным Jetty

Website development *
Sandbox


Развитие информационных технологий все более и более вовлекает использование инфраструктуры Интернет. Распределенные и мобильные приложения все чаще используют обмен информацией по протоколу HTTP. При этом архитектура Клиент-Сервер остается самой распространённой и простой для освоения, создания и эксплуатации. Принцип архитектуры Клиент-Сервер прост — сервер предоставляет ресурс, а клиент использует этот ресурс.

Данная статья представляет собой попытку понятного описания создания простой веб-службы. Простой, практичный и детально описанный пример часто приносит больше пользы в изучении технологии нежели усердное чтение литературы. В статье рассматривается создание веб-службы простого калькулятора на основе REST, JSON, используя Eclipse и встроенной сервер Jetty.
Читать дальше →
Total votes 9: ↑6 and ↓3 +3
Views 38K
Comments 6
1