Есть ли проблемы с совместимостью, так что если приложение работает с 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.
Взгляните на llvm инфраструктурный проект компилятора. Это используется в большом количестве проектов реального мира. LLVM является низкоуровневой виртуальной машиной, легкой создать код для и легкий перевести в собственный код.
Ваш испускаемый код выглядит достаточно близким к C - whay не, имеют Ваш компилятор, испускают C и используют компилятор C в качестве бэкенда - это - способ, которым работал исходный C++ cfront компилятор.
Я рекомендовал бы выложить код Паскаля и использовать Свободного Паскаля.
Это исходно компилируется, компиляция сверкает быстро, и можно быть нацелены на множество платформ.
Для почему бы не предназначения для другого высокоуровневого языка как для промежуточного вывода например, Вы могли сгенерировать код C и использовать любой компилятор C для компиляции этого. Это использовалось многими высокоуровневыми языками в прошлом.
Другая немного более низкая опция уровня состояла бы в том, чтобы сгенерировать код IL и использовать время выполнения.NET. Если компилятор записан в.NET, можно использовать Отражение. Испустите пространство имен для генерации блока.NET, который может затем быть выполнен в любой среде.NET.
Генерация кода является моим бизнесом :-)
Комментарии к нескольким опциям:
СБРОС:
LLVM:
C как выходной язык
Сводка: что-либо кроме C - разумный выбор. Для лучшей комбинации гибкости, качества и ожидаемой долговечности, я, вероятно, рекомендовал бы LLVM. Но Ваш пример кода очень близко к C - так, чтобы могло быть преимущество.
Полное раскрытие: Я аффилирован с C - проект.
NekoVM разработан, чтобы принять IL высокого уровня, подобный Вашему и затем выполнить его. Предложение Neil Butterworth для использования C является также хорошим выбором.
У Вас может быть лучшая удача при выборе стопки компилятора и использовании промежуточного кода, поддерживаемого тем стеком. Например, gcc использует RTL, язык межрегистровых пересылок как общий знаменатель для всех языков, поддерживаемых gcc. Я подозреваю, что .NET имеет что-то подобное, это используется для вещей как IronPython.
Если Вы хотите использовать что-то, что предоставляет виртуальную машину для оценки кода, MIPS SPIM vm поддерживает архитектуру Motorola 68000 и действительно легок работать с.
Так как Ваш код C
- выход, Вы могли попробовать C--
. Это a C
как язык для бэкендов компилятора. IIRC, это используется одним из компиляторов майора Haskell.
Если можно терпеть зависимость от JVM, то довольно просто генерировать байт-код с помощью ASM.
Если Вы не можете, то молния гну может использоваться для непрерывной генерации кода (меньший и более простой, чем LLVM, но без оптимизаций).