LilacServer – коробка для создания сайтов на Java

LilacServer - всё необходимое в одной коробке

В данной статье мне хотелось бы рассказать о новом программном продукте, который на днях стал доступным конечным пользователям. Автором этого программного продукта являюсь я, и поэтому мне вдвойне приятно поделиться с читателями информацией, которая наверняка кому-нибудь покажется интересной и полезной. Я работал над этим проектом 4 года (а то и больше, смотря от какого момента считать).

Итак, что же такое LilacServer?
Это веб-сервер, написанный на Java с использованием технологии Java NIO. Главным отличием его от прочих веб-серверов, созданных на Java (например, Tomcat или Resin), состоит в том, что это не только веб-сервер…

LilacServer – это веб-сервер, шаблонизатор и фреймворк в одном программном продукте.

1. Веб-сервер


Как и было сказано выше, написан на Java с использованием Java NIO, и оттого обладает высокой производительностью и стрессоустойчивостью. Каких-то специальных аппаратных требований не предъявляет. Может быть установлен как под Linux (в комплекте есть скрипты под CentOS и Debian), так и под Windows (в комплекте есть враппер для установки в качестве сервиса). На shared-хостинге, скорее всего, установить не получится. Необходим, как минимум, VPS.

Инсталлятор оформлен в виде jar-архива, поддерживающего как графический, так и текстовый режимы установки.

Скриншот инсталлятора

Особенностью настройки веб-сервера является полное отсутствие каких-либо конфигурационных файлов. Все управление осуществляется с помощью специального веб-интерфейса. Помимо обычного функционала по настройке параметров веб-сайтов, в веб-интерфейсе есть встроенный менеджер файлов и он-лайн редактор.

Скриншот веб-интерфейса

2. Шаблонизатор


В LilacServer есть встроенный шаблонизатор. Правильнее даже сказать так: шаблонизатор – это основа всего программного продукта.

Для построения шаблонов страниц используется язык Lilac. Это декларативный язык, сходный с Prolog-ом и Erlang-ом. Данные представляются в виде списков. Единственная доступная операция над списками – это «взятие головы». Для непосвященных звучит пугающе, но в конечном итоге это означает, что для проектирования шаблонов не используются ни циклы, ни условные переходы (в языке их просто нет).

Все операции языка оформляются в виде директив. Всего директив 7 (точнее, 6 + 1). Директивы хранятся в файлах с расширением .lilac. Шаблон страницы собирается по частям, в зависимости от пути к странице. Существуют специальные файлы с директивами – это config.lilac и index.lilac.

3. Фреймворк


Для создания программных модулей используется язык Java и собственный LilacServer API. Данный API несовместим со стандартным Java Servlet API, однако набор объектов и названия методов во многом совпадают.

LilacServer – это шаблонно-ориентированный программный продукт. Это значит, что нужные программные компоненты вызваются из шаблонов (а не наоборот: когда вызывается программа, загружающая требуемые шаблоны). На практике это означает, что возможно создание шаблонизированного сайта без написания какого-либо кода на Java. То есть, если какому-нибудь веб-сайту не требуется программная составляющая, то LilacServer API можно не использовать.

Классы LilacServer API включены в программный комплекс LilacServer и не требуют отдельной установки. Для разработки программ требуется Java SE JDK. При необходимости можно использовать любые сторонние библиотеки, сервер их автоматически подгрузит.

4. Плюшки (а как же без них!)


  1. встроенные возможности по локализации
    LilacServer позволяет создавать многоязычные сайты с помощью стандартных средств. Код локализации может быть задан в имени домена, в первой части URI, а так же в параметре запроса;
  2. поддержка баз данных
    LilacServer поддерживает работу с базами данных по протоколу JDBC. Разработчику требуется лишь установить нужный набор драйверов, и в настройках веб-сайта указать параметры подключения к базе. Всю дальнейшую работу по обслуживанию подключений берет на себя веб-сервер и LilacServer API;
  3. кэширование
    LilacServer осуществляет кэширование как правил, так и программного кода. Параметрами кэширования можно управлять в настройках веб-сайта;
  4. ограничение доступа
    LilacServer с помощью специальной директивы позволяет ограничивать доступ к отдельным страницам и разделам веб-сайта. Для авторизации пользователей применяется метод аутентификации Digest;
  5. сессии
    LilacServer обладает встроенными средствами для отслеживания сеансов пользователей. В LilacServer API для этого есть специальный класс;
  6. multipart-формы и загрузка файлов
    LilacServer обладает встроенными средствами для обработки multipart-форм и загрузки файлов на веб-сервер (как ни странно, Java Servlet API до сих пор этим похвастаться не может). В LilacServer API для этого есть специальный класс;
  7. разделение кода и представления
    LilacServer полностью соответствует данной парадигме MVC: в нем реализовано полноценное разделение логики приложения от его представления.

Помимо вышеперечисленных, есть еще много интересных особенностей и функций.

5. Документация и поддержка


Официальный веб-сайт: LilacServer.com
(прямая ссылка на русскоязычную версию сайта: lilacserver.com/ru )
Данный ресурс создан на самом LilacServer и вполне демонстрирует возможности как программного продукта, так и LilacServer API.

Вот что можно найти на данном сайте:

  • дистрибутив LilacServer, доступный абсолютно всем для бесплатного скачивания и установки;
  • подробнейшую документацию по инсталляции, программированию и созданию веб-сайтов с помощью этого продукта;
  • форум, на котором можно задавать вопросы, если что-либо из документации остается непонятным;
  • демонстрационный веб-сайт, который можно не только потыкать и пощупать, но и полностью скачать для подробного изучения;
  • форму для обратной связи с автором;

а также многое другое, не менее полезное.

Уверен, мое информационное сообщение будет полезным для веб-разработчиков, а особенно тем, кто активно использует в работе язык Java. Более подробные сведения по возможностям программного продукта LilacServer можно узнать здесь.

Благодарю всех за внимание!
Share post

Similar posts

AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 42

    +5
    Так и не понял, в чем же приемущества по сравнению с уже привычными легковесными серверами, или даже с полноценными апп серверами?
    Новые решения это хорошо, но показали бы Вы подробнее плюсы, ради которых имеет смысл пробовать ваш продукт.

    Так же отсуствие конфигов не всегда хорошее решение, часто бывает что подключиться к машине и поправить файл проще, чем тыкаться в веб морду.
      –1
      Преимущество во встроенном шаблонном движке.
      Есть еще система, которая может похвастаться возможностью оперативно создать веб-сайт по шаблонам, не написав при этом ни строчки кода на Java?
      А тут — запросто. И это будет полноценный Java-сайт, который при необходимости можно расширить программными компонентами.
      Посмотрите (скачайте) демо-сайт, вам все станет понятно.
        +1
        Если мне необходимо было бы написать простой сайт, для которого и бизнесс логики не надо, то я предпочел бы иной инструмент, нежели java, думаю для сайта-визитки хватило бы и html+js либо чего-то аналогичного.
        Или у вас есть возможность создания сложных шаблонов с бизнесс-логикой, на вашем сайте подобного не увидел, если есть, то инетресно посмотреть.
          0
          Шаблоны можно создавать сколь угодно сложные, под любую задачу.
          Бизнес-логика реализуется на Java (JavaSE, JavaEE, любые нужные библиотеки на выбор).
          • UFO just landed and posted this here
              0
              Именно.
              Я вообще думал, что раскрыл в статье эту мысль.
                +2
                К сожалению, статья полна каких-то очень странных противоречий, например:
                • «шаблонно-ориентированный программный продукт. Это значит, что нужные программные компоненты вызваются из шаблонов»
                • «разделение кода и представления»
                • «LilacServer полностью соответствует данной парадигме MVC»

                Первое (то, что движок — template-driven), означает, что, как минимум, часть логики все-таки _не_ в программном коде, а в шаблонах. То есть разделения кода и представления (шаблонов) на самом-то деле нет. MVC это соответствовать не может точно так же просто по определению — раз он template-driven, но никакого Controller, с которого все начинается, нет. Есть View, он же шаблон, который нечто вызывает. Выделенного Model, насколько я вижу, тоже как бы нет — вы же не занимались созданием data abstraction layer?
                  –1
                  Здесь речь идет лишь о парадигме «разделение кода и представления». LilacServer ей полностью соответствует: выполняется код на Java, отдает готовые данные, которые затем форматируются в шаблоне.
                  Разумеется, я не создавал очередной MVC-движок (зачем заново изобретать Velocity).
          +2
          Преимущество во встроенном шаблонном движке.

          Почему вы считаете это преимуществом?

          Есть еще система, которая может похвастаться возможностью оперативно создать веб-сайт по шаблонам, не написав при этом ни строчки кода на Java?
          Любая приличная CMS. А если не ставить задачу чтобы решение было именно на Java (тем более мы же не собираемся всё равно писать код), то есть масса готовых решений на том же PHP. Тысячи их!

          И это будет полноценный Java-сайт, который при необходимости можно расширить программными компонентами.
          Такое ощущение, что само по себе то, что внутри Java — является преимуществом :)
          +1
          Это просто игрушки для программистов.
            0
            Зря вы так, какая-то из таких игрушек может стать чем-то очень мощным и революционным.
              0
              С такой лицензией — очень вряд ли. Да и в целом начинание весьма сомнительное.
                0
                Сейчас железка на +500 л.с. для php стоит дешевле такого мощного и революционного.
                Я вот тоже мечтаю о сайтах на С++, но понимаю, что совершенно незачем.
            0
            Если мне необходимо было бы написать простой сайт, для которого и бизнесс логики не надо, то я предпочел бы иной инструмент, нежели java, думаю для сайта-визитки хватило бы и html+js либо чего-то аналогичного.
            Или у вас есть возможность создания сложных шаблонов с бизнесс-логикой, на вашем сайте подобного не увидел, если есть, то инетресно посмотреть.
              0
              прошу прощения, не туда написал)
              +1
              Мне не совсем понятно как разворачивать ваше решение на linux сервере, на котором нет иксов в 85% случаев.

              Есть ли уже намеки в виде плагинов на интеграцию с популярными IDE? Eclipse, Idea, Netbeans…
                0
                Не проблема. LilacServer.com и работает под Debian без иксов.
                Сервер инсталлируется из шелла, в текстовом режиме. Настраиваем на нужный IP-адрес, имя хоста указываем опционально.
                Запускаем веб-сервер. Заходим из браузера по нужному IP/хосту.
                Логинимся.
                Настраиваем.
                  0
                  По поводу интеграции…
                  Рук пока что хватило на создание подсветки синтаксиса для наиболее популярных редакторов. На сайте можно скачать в разделе «Разное».
                  Какие-нибудь плагины для Eclipse, Netbeans и т.д. вполне можно написать. Наверное, возьмусь. В зависимости от интереса публики.
                +1
                demo.lilacserver.com/en/guestbook/
                Ну что же вы.
                Могли бы хоть фильтрацию ввода прикрутить.
                  0
                  Там БД автоматом делает переодический респаун. Не волнуйтесь.
                  Из админки можно тоже делать все что угодно.

                  Мне хотелось сделать код как можно проще и доступнее для понимания.
                    +2
                    Но, вообще, конечно, фильтрацию тегов надо воткнуть.
                    Спасибо!
                  0
                  Мне не до конца понятно, каким образом можно локально девелопить у себя все. Можно ли прикрутить сервер в embedded режиме (по типу embedded jetty/tomcat)?

                  Сколько длится старт/стоп сервера?
                    0
                    Старт-стоп очень быстрый. Причем возможно делать рестарт непосредственно из веб-интерфейса (например, это происходит при смене прослушиваемого порта).
                    Что вы имеете в виду под локальным девелопментом? Чтобы можно было у себя на рабочем компе скомпилировать приложение, и готовые классы автоматом отправились на удаленный веб-сервер? Ну, тут, скорее, нужен какой-нибудь плагин для Eclipse или NetBeans. Его пока нет.
                      0
                      В сегодняшным апп сервере есть такая вещь, как релоад контекста. Вам бы почитать про класслоадеры.
                        0
                        Извините. В любом сегодняшнем, конечно.
                    0
                    Spring lite?
                      +2
                      Как эксперимент очень даже неплохо )
                      Вот еще один веб-сервер на Java: Rootage
                        0
                        Всё бы ничего, но лицензия пугает.
                          0
                          А что там с лицензией? Она вполне стандартная.
                          Да, это не опен-сорс. В остальном все бесплатно.
                          +4
                          Купить нехилый вдс, заморочить с закрытой системой, чтобы получить «корпоративный сайт» с 5 страничками — это для тех кто не ищет простых путей…
                            0
                            LilacServer.com крутится на VDS-е за 12 баксов в месяц. Насколько я что-нибудь понимаю в веб-строительстве, это не сайт с 5-ю страничками.
                            Вечером гляну логи, какая нагрузка была из-за этой статьи.
                              +1
                              Поясняю: решения такого уровня (ресурс из коробки за 5 минут) нужны как раз для проектов типа «корпоративный сайт» в 5 страничек и покупать для этого вдс, настраивать его, ковырять новую систему, довольно накладно и чтобы развернуть такую систему требуется человек с довольно высокой квалификацией тем более со знанием java. Обычно эту нишу занимает php c его более низкими издержками, следовательно разворачивать на вашей системе будет дороже. Построение более серьезной системы на вашей платформе смысла не имеет, мало того, что ввиду закрытости сильного сообщества не будет, так нужно будет еще изучать новый апи, проще взять готовый костяк например appfuse который поддерживает много популярных java фреймворков.
                            +1
                            Что-то новое всегда интересно, но вот наличие в классах страниц (VGS_GuestBook.java) низкоуровневых методов, считывающих побайтно какие-то файлы и раскладывающие их в переменные переносит меня мысленно во времена exe-файлов, работающих под CGI и написанных на Delphi.
                              0
                              Все дело в том, что это демонстрационный сайт. Его нужно скачать, инсталлировать, запустить в работу и убедиться, что все функционирует именно так, как и обещано. Разумеется, хранить данные проще в БД, но тогда инсталляция была бы сложнее.
                              В «Учебнике разработчика» есть статья, как переделать гостевую книгу под хранение в базе данных.
                                +1
                                Понятно, что демонстрационный. Но разве не должен демонстрационный сайт показывать всю мощь фреймворка? Потому что имхо такой «демонстрационный сайт» можно написать без всякого фреймворка и даже оптимальнее…
                                  0
                                  Всю мощь фреймворка показывает lilacserver.com
                              +2
                              Подскажите, а кто является целевой аудиторией продукта?
                              Для всяких сайтов-визиток — не подойдет, так как есть варианты дешевле.
                              Для серьёзных клиентов — не подойдет, так как это типичный «Vendor Lock-in» без серьезных преимуществ.
                                –1
                                Целевая аудитория — это разработчики, которым нужны нестандартные решения, работающие быстро. Насколько их много наберется — не знаю. Посмотрим.
                                Не очень понял фразу «Типичный Vendor Lock-in». Что-то очень много вопросов задают по поводу open-source.
                                Зачем вам копаться в исходном коде сервера? Да, исходники Tomcat или Apache открыты. Ну и что с того? Многим разработчикам жизненно важно в них лезть?
                                  +3
                                  Многим разработчикам жизненно важно в них лезть?
                                  Многим разработчикам жизненно важно иметь возможность заменить один компонент ПО на другой если по каким-то причинам старый перестал устраивать. Фраза «Типичный Vendor Lock-in» означает именно это — ваш продукт является настолько монолитным, настолько «вещью в себе» и стоит так далеко от каких-либо стандартов, что переключиться на какое-либо другое решение в будущем (другой сервер, другой фреймворк, другой шаблонизатор) будет слишком дорого.
                                    +4
                                    Целевая аудитория — это разработчики, которым нужны нестандартные решения, работающие быстро.
                                    Быстро в плане разработки или в плане времени работы приложения?

                                    Сами по себе нестандартные решения никому не нужны. Разве что поиграться :)
                                      +1
                                      Я разработчик web-приложений на Java. Сидим сейчас на Jetty. Исходный код Jetty у меня всегда подгружен в Eclipse, рассылку jetty-dev читаю перед сном. Патчей, пока, отсылать не доводилось (не дорос ещё), но тестировать чужие патчи уже приходилось. И баг один с тем как Jetty работает с JSP отправлял.

                                      А как иначе оптимизировать всё? Вот недавно наш сервис 13K TPS на двух серверах выдержал (в нагрузочном тесте). Вряд ли бы я смог этого добиться без доступа к исходникам Jetty.

                                      Так что исходники сервера приложений нужны. По крайней мере некоторым разработчикам.
                                    0
                                    В дополнению к вышесказанному за возможность изменения системных параметров только из веб-морды любители автоматизации скажут вам большое «спасибо». Вообщем в след. раз прежде чем тратить годы жизни на не приспособленный к выживанию продукт, вы бы хоть провели исследование, для чего вы это делаете и кому это может быть нужным. Тут же очевидные ляпы в реализации, кто угодно мог их вам рассказать, если бы вы спросили.

                                    Only users with full accounts can post comments. Log in, please.