Преимущества использования программного обеспечения Беижсофт.

Во первых, ПО базирующееся на Беижсофт библиотеках будет работать везде. Все части - ОРМ, генератор отчетов в ПДФ (PDF), ВЕБ-интерфейс работают и на обычной Джава (на МС Виндоус, ЮНИКС подобных ОС), и на Андроиде.

Во вторых, это производительность. Все части работают быстро даже на слабых устройствах, к примеру на смартфоне. Беижсофт ВЕБ-интерфейс базируется на JSP. JSP сервер-сайд ВЕБ технология аналогична PHP, ASPX и прочим подобным. Данный тип сервер-сайд технологии является доминирующим. JSP быстрее чем PHP (и других скриптовых языков) за счет компиляции "на лету" промежуточного скомпилированного байт-кода в процессорный код. Генератор отчетов кэширует TTF шрифты и внедряет в PDF файл только используемые символы. Стандартные ОРМ используют "lazy initialization/лэзи инициализацию" для извлечения данных модели из базы данных. То есть они используют несколько СКЛ запросов для извлечения всех данных модели. Беижсофт ОРМ позволяет извлекать необходимые данные в одном СКЛ запросе (с ДЖОИНами). Один такой большой запрос (именно с ДЖОИНами) работает быстрее чем несколько маленьких при извлечении одинаковых данные.

В третьих, с помощью данного ПО вы можете программировать сложные бизнес приложения быстро. Вы можете убедиться в этом создав приложение приведенное в следующих статьях. Также посмотрите на очень сложное приложение Беижсофт-ИСП которое создано на данных библиотеках. Беижсофт генератор отчетов не может рисовать диаграммы, графики и штрих-коды. Его программирование заняло у меня 3 месяца. ПДФ имеет встроенные средства для рисования линий и фигур. Программирование библиотеки для отрисовки диаграмм или штрих-кодов не займет много времени. Это рядовая задача даже для АйТи студента. Программирования отчетов без визуального редактора производится несложно и быстро (используйте готовые шаблоны). На практике "метиться" с точностью до миллиметра в визуальном редакторе тяжелее.

В четвертых, данное ПО и все используемое ПО сторонних производителей имеют свободные лицензии. BSD 2-Clause лицензия говорит:

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

* Гарантия работоспособности. Есть довольно известная ошибка "отказ работоспособности на больших данных", т.е. когда Ваша база данных "выросла". Вы можете проверить данную ошибку на СКуЭЛайт версии Беижсофт-ИСП и демонстрационной базе данных bobs-pizza-ws6.sqlite (пользователь/пароль admin/admin) из https://sourceforge.net/projects/beige-accounting/ . Просто откройте ВЕБ-магазин (он содержит 4000 авто) - Авто и примените фильтр "Производитель В списке (Ford, Honda) / Цвет В списке (Красный) / Упорядочит по Цена Возрастание" - на данном фильтре программа зависнет надолго, другой приведенный демо-фильтр (смотрите скриншоты в Bob's web-store example. Part 1, catalog.) работает 1 минуту. Затем сделайте ПостгреСКуЭл или МайСиКвэл версию Беижсофт-ИСП и импортируйте данные из СКуЭЛайт версии (смотрите Import an EIS database by using WEB-service), и проверьте что список авто работает быстро при любом фильтре.

Почему стоит выбрать Беижсофт-ВЕБ? Создание ВЕБ-страниц динамически на стороне сервера и на стороне клиента (в браузере).

Страницы формируются динамически обычно либо на стороне сервера, либо непосредственно в браузере. Обе технологии появились давно.

На стороне сервера: CGI-BIN (C, PERL,...), PHP, ASP, JSP, ASPX, основанные на JEE Apache Velocity и Wicket; новые JEE Thymeleaf... Они генерируют HTML страницы целиком - данные и разметка.

На стороне клиента (в браузере): а) ДжаваСкрипт (JS): основанные на JEE GWT and JSF, Angular; новые Node, React, Vue, ... ; б) плагины браузера. Сервер посылает динамически только данные (обычно как JSON ответ) и статический HTML шаблон (обычно содержит только JS библиотеки), любая серверная технология (PHP, JSP...) может делать это, т.е. извлекает данные и посылает как JSON ответ. На стороне клиента плагин браузера или JS библиотека посылает запрос на данные, далее отрисовывает виджеты (формы, списки) в HTML странице. Смотрите пример формирования списка данных средствами JS библиотеки: https://js.devexpress.com/Demos/WidgetsGallery/Demo/DataGrid/Overview/AngularJS/Light/. Благодаря Гугл все используют его HTML документы. Гугл продвинул JS значительно. Поэтому данная технология создания ВЕБ-интерфейсов занимает большую долю.

Во многих случаях обе технологии используются в одном ВЕБ-приложении, т.е. построение ВЕБ-интерфейса динамически и на стороне сервера, и на стороне клиента. К примеру Беижсофт-ИСП для ВЕБ-магазина использует только JSP, даже без AJAX. Но платежный шлюз ПэйПал использует JS создаваемый ВЕБ-интерфейс.

Беижсофт-ВЕБ использует серверные JSP для генерации HTML страниц полностью либо их частей (в любом случае данные с HTML разметкой). Беижсофт-ВЕБ использует AJAX запросы и JSON ответы и модифицирует HTML страницу (данные и разметку) частями, например когда вы нажимаете Записать, тогда посылается AJAX запрос, затем полученный JSON мульти-целевой ответ используется для обновления формы, подлежащего списка, вывода сообщения (например "редактирование успешно") и прочее что включено в полученный JSON ответ. Использование AJAX и JSON позволяет уменьшить траффик, т.е. это быстрее чем обновление всей страници после отправки формы. Пример beige-web/src/main/webapp/WEB-INF/jsp/esj.jsp:

<%@ page language="java" contentType="application/json; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<jsp:include page="tml/var.jsp"/>
<jsp:useBean id="usdDp" class="java.util.HashMap" scope="request"/>
<c:set var="ent" value="${rvs.uvs.ent}" scope="request"/>
<c:set var="frPlNm" value="frmMnPl" scope="request"/>
<c:set var="frAct" value="srv" scope="request"/>
<c:import url="/WEB-INF/jsp/tml/ed.jsp" varReader="rdEdEn" charEncoding="UTF-8">
{"mlTrRsp":
  [{"trgNm": "${frPlNm}", "cont": "${utJsp.toJsonStrCls(rdEdEn)}",
    "trgPrNm": null, "jscr": null}
    <c:set var="jscr" value="${hldUvd.setJs(rvs,usdDp,frPlNm)}bsOpnDlg('${frPlNm}EdDlg');"/>
    <c:if test="${not empty rvs.msgSuc}">
      <c:set var="jscr" value="${jscr}bsShwSuc('${i18n.getMsg(rvs.msgSuc, rvs.upf.lng.iid)}');"/>
    </c:if>
    <c:if test="${not empty rvs.msgWrn}">
      <c:set var="jscr" value="${jscr}bsShwWrn('${i18n.getMsg(rvs.msgWrn, rvs.upf.lng.iid)}');"/>
    </c:if>
    <c:if test="${not empty rvs.msgErr}">
      <c:set var="jscr" value="${jscr}bsShwErr('${i18n.getMsg(rvs.msgErr, rvs.upf.lng.iid)}');"/>
    </c:if>
    <c:if test="${not empty numJsAf}">
      <c:set var="jscr" value="${jscr}${numJsAf}"/>
    </c:if>
    <c:set var="lsPlNm" value="lstMnPl" scope="request"/>
    <c:set var="prfFlOrFrm" value="${lsPlNm}" scope="request"/>
    <c:set var="rndLst" value="lj" scope="request"/>
    <c:import url="/WEB-INF/jsp/tml/lst.jsp" varReader="rdEnts" charEncoding="UTF-8">
      ,{"trgNm": "${lsPlNm}lst", "cont": "${utJsp.toJsonStrCls(rdEnts)}",
        "trgPrNm": null, "jscr": "${utJsp.toJsonStr(jscr)}"}
    </c:import>
  ]
}
</c:import>
Данный ответ обновляет форму (созданную jsp/tml/ed.jsp из переданного бизнес-сервисом модели данных) в HTML странице внутри DIV цели с идентификатором ID=${frmMnPl}. Тоже самое происходит со списком. JSON ответ также содержит инструкции ДжаваСкрипт, например для вывода сообщения об ошибке/успехе и для открытия модальной формы.

Какая технология лучше? Во первых, игнорируйте пёстрые слова вроде "новейший", "продвинутый"... Обычное соревнование дает абсолютно точный ответ, просто проверте разные технологии (библиотеки) на реальных сложных задачах. Например формы накладной и ее строки в Беижсофт-ИСП меняются очень сильно в зависимости от: а) налогооблагаемая или нет, б) включен ли НДС c) считать НДС построчно/по документу д) совокупная ли ставка НДС е) НДС зависит от региона покупателя. Данные методы НДС используются в других странах. У нас так-же были местные налоги за товар (где-то до 2000?). Каталог ВЕБ-магазина может показывать позиции согласно довольно сложной бизнес-логики. Также попытайтесь сделать универсальный генератор ВЕБ-интерфейса (автоматически генерирует формы и списки модели данных) такой как Беижсофт-ВЕБ. Многочисленные библиотеки для ВЕБ-интерфейсов просто кишат, но они обычно не производят хорошего впечатления при более глубоком рассмотрении. Чего стоит ширпотреб что поддерживает идентификатор БД (первичного ключа) лишь одного вида - автоматическое целое число или ГУИД. Беиж-ВЕБ легко поддерживает любые идентификаторы, в т.ч. составные (ГУИД не реализован ввиду его проблемной мультиплатформенности и более быстрого и мультиплатформенного аналога, но если нужно то реализовать его недолго, правда СКЛАЙТ будет хранить его текстовое представление).

Недостатки генерации ВЕБ-интерфейса на стороне клиента:

Недостатки генерации ВЕБ-интерфейса на стороне сервера:

Для генерации ВЕБ-Интерфейса оптимальным и безопасным способом HTML5+ (или расширение) должно работать без JS. Должен быть ограниченный, строго-типизированный, узко-функциональный язык. Например, изменение числового поля с идентификатором ID=quantity вызовет процедуру "calculation: #total=#quantity*#price", и поля ввода #total and #price должны быть числового типа. Также округление и интернационализацию должен осуществлять сам HTML5+ (не JS). Язык также должен иметь специализированные макро-команды (описание) для создания виджетов на стороне браузера, и должен работать быстро без JIT-компилятора. Так-что отключение JS не повлияет на такие приложения. Если вы посмотрите на Беиж-ВЕБ исходный код, то увидите что он готов для такого HTML5+ (или плагина) генерации на стороне клиента, т.е. нужно лишь создать новые JSP страници генерирующие такоие HTML5+ и JSON ответы с только данными(более оптимален чем XML). Сервлеты и бизнес-сервисы остануться такими-же.