Нужен компилятор бэкенда

Есть ли проблемы с совместимостью, так что если приложение работает с tomcat 7, то tomcat не может быть обновлен до tomcat 8 или даже 9.

blockquote>

Выбор версии tomcat основан на версии JDK ,

, см. https://tomcat.apache.org/whichversion.html [ 114]

Если вы планируете обновить tomcat: см.

https://www.mrc-productivity.com/docs/m-power-admin/instructions -for-upgrade-to-tomcat-9

сервер необходимо остановить из командной строки

blockquote>

Просто дважды щелкнуть [ 1111] startup.bat и shutdown.bat из установочной папки Tomcat.

7
задан Greg 21 March 2009 в 15:47
поделиться

9 ответов

Взгляните на llvm инфраструктурный проект компилятора. Это используется в большом количестве проектов реального мира. LLVM является низкоуровневой виртуальной машиной, легкой создать код для и легкий перевести в собственный код.

11
ответ дан 6 December 2019 в 05:06
поделиться

Ваш испускаемый код выглядит достаточно близким к C - whay не, имеют Ваш компилятор, испускают C и используют компилятор C в качестве бэкенда - это - способ, которым работал исходный C++ cfront компилятор.

6
ответ дан 6 December 2019 в 05:06
поделиться

Я рекомендовал бы выложить код Паскаля и использовать Свободного Паскаля.

Это исходно компилируется, компиляция сверкает быстро, и можно быть нацелены на множество платформ.

3
ответ дан 6 December 2019 в 05:06
поделиться

Для почему бы не предназначения для другого высокоуровневого языка как для промежуточного вывода например, Вы могли сгенерировать код C и использовать любой компилятор C для компиляции этого. Это использовалось многими высокоуровневыми языками в прошлом.

Другая немного более низкая опция уровня состояла бы в том, чтобы сгенерировать код IL и использовать время выполнения.NET. Если компилятор записан в.NET, можно использовать Отражение. Испустите пространство имен для генерации блока.NET, который может затем быть выполнен в любой среде.NET.

2
ответ дан 6 December 2019 в 05:06
поделиться

Генерация кода является моим бизнесом :-)

Комментарии к нескольким опциям:

  • СБРОС:

    • Pro: промышленная поддержка
    • Довод "против": необходимо вложиться в их систему типов в значительной степени полностью; в зависимости от того, что Вы хотите сделать с типами, это не может иметь значения
    • Довод "против": Только платформа Windows является действительно показываемым в прайм-тайм качеством
  • LLVM:

    • Pro: восторженное пользовательское сообщество с харизматическим лидером
    • Pro: много интересных повышений производительности
    • Довод "против": несколько сложный интерфейс
    • Довод "против": история дыр в разработке; поскольку LLVM назревает, ожидают, что дыры в разработке будут включены путем добавления к сложности интерфейса
  • C-

    • Pro: цель является фактическим письменным языком, не API; можно легко осмотреть, отладить и отредактировать C - код
    • Pro: дизайн является довольно сформировавшимся и довольно чистым
    • Pro: поддерживает точную сборку "мусора"
    • Pro: большинство пользователей сообщает, что это очень просто в использовании
    • Довод "против": очень малочисленная группа разработчиков
    • Довод "против": по состоянию на начало 2009, поддерживает только три аппаратных платформы (x86, PPC, ARM)
    • Довод "против": не поставлется со сборщиком "мусора"
    • Довод "против": будущее проекта сомнительно
  • C как выходной язык

    • Pro: легкие взгляды
    • Довод "против": почти невозможный получить достойную производительность
    • Довод "против": сведет Вас с ума в конечном счете; спросите длинную линию людей, которые попытались скомпилировать Haskell, ML, Modula-3, Схему и больше использования этой техники. В какой-то момент каждые из этих людей сдались и создали их собственный генератор собственного кода.

Сводка: что-либо кроме C - разумный выбор. Для лучшей комбинации гибкости, качества и ожидаемой долговечности, я, вероятно, рекомендовал бы LLVM. Но Ваш пример кода очень близко к C - так, чтобы могло быть преимущество.

Полное раскрытие: Я аффилирован с C - проект.

13
ответ дан 6 December 2019 в 05:06
поделиться

NekoVM разработан, чтобы принять IL высокого уровня, подобный Вашему и затем выполнить его. Предложение Neil Butterworth для использования C является также хорошим выбором.

1
ответ дан 6 December 2019 в 05:06
поделиться

У Вас может быть лучшая удача при выборе стопки компилятора и использовании промежуточного кода, поддерживаемого тем стеком. Например, gcc использует RTL, язык межрегистровых пересылок как общий знаменатель для всех языков, поддерживаемых gcc. Я подозреваю, что .NET имеет что-то подобное, это используется для вещей как IronPython.

Если Вы хотите использовать что-то, что предоставляет виртуальную машину для оценки кода, MIPS SPIM vm поддерживает архитектуру Motorola 68000 и действительно легок работать с.

2
ответ дан 6 December 2019 в 05:06
поделиться

Так как Ваш код C- выход, Вы могли попробовать C--. Это a C как язык для бэкендов компилятора. IIRC, это используется одним из компиляторов майора Haskell.

0
ответ дан 6 December 2019 в 05:06
поделиться

Если можно терпеть зависимость от JVM, то довольно просто генерировать байт-код с помощью ASM.

Если Вы не можете, то молния гну может использоваться для непрерывной генерации кода (меньший и более простой, чем LLVM, но без оптимизаций).

1
ответ дан 6 December 2019 в 05:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: