Janino 2.7.8

Лицензии: Бесплатный ‎Размер файла: 1.05 MB
‎Рейтинг пользователей: 2.7/5 - ‎6 ‎Голосов

О Janino

Janino — это супер-маленький супер-быстрыйкомпиллер, который читает файл Java-выражения, блока или источника и генерирует почтовый индекс Java, который загружается и выполняется непосредственно. Он предназначен не для разработки, а как встроенный компилятор для целей компиляции времени, таких как оценщики выражений или «квота;серверные страницы»; двигатели, такие как JSP. Вариантов размещения Основная цель дизайна состояла в том, чтобы сохранить компилятор небольшой и простой, частично жертвуя полнотой. Мне не нравится идея носить с собой огромные библиотеки для простых приложений. Смотрите Parser для списка реализованных и отсутствующих языковых функций. Когда вам нужен эффективный оценщик выражения? Скажем, вы строите систему электронной коммерции, которая вычисляет стоимость доставки для элементов, которые пользователь положил в свою корзину. Поскольку вы не знаете модель стоимости доставки продавца во время реализации, вы можете реализовать набор моделей стоимости доставки, которые приходят на ум (плоская плата, по весу, по количеству элементов, ...) и выбрать один из тех, на время выполнения. На практике вы наверняка обнаружите, что модели стоимости доставки, которые вы реализовали, редко соответствуют тому, чего хочет купец, поэтому вы должны добавить пользовательские модели, которые являются специфическими для продавца. Если модель продавца изменяется позже, необходимо изменить код, переработать и перераспространить программное обеспечение. Поскольку это так негибко, выражение стоимости доставки должно быть указано во время времени времени времени, а не во время компиляции. Это означает, что выражение должно быть отсканировано, проверено и оценено во время времени, поэтому вам нужен оценщик выражения. Простой оценщик выражения разбирает выражение и создает «квоту;синтаксисное дерево»;. Выражение «квота;a» b q qquot;, например, будет компиляция в «квоту;Сум»; объект, который первый оперенд является параметром «квота;а»квота; а кто второй оперенд – это «квота;Продукт»; объект, который оперирует, являются параметрами «квота;b»; Такое синтаксисное дерево можно оценить относительно быстро. Тем не менее, производительность времени выполнения примерно в 100 раз хуже, чем у родного Java-кода.