Как переносить устаревший веб-сайт Java / J2EE на современный язык сценариев (PHP, Python / Django и т. Д.)?

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

Каков самый простой способ сделать это? Существуют ли какие-либо автоматизированные инструменты, которые могут преобразовать основную часть бизнес-логики?

Вот что вам нужно сделать.

Во-первых, убедитесь, что вы можете ходить до запуска. Создайте что-то простое, возможно, касательно вашего основного проекта.

НЕ строите часть окончательного проекта и надейтесь, что он «перейдет» в окончательный проект. Это не работает хорошо. Зачем? Вы сделаете немые ошибки. Но вы не можете удалить или переработать их, потому что вы должны развить эту ошибку в конечном проекте.

Затем выберите aa framework. Какие? Во-вторых? Да. Во-вторых. Пока вы на самом деле ничего не делаете с некоторыми скриптовыми языками и фреймворками, у вас нет реальной полезной концепции того, что вы делаете. Как только вы что-то создали, у вас теперь есть информированное мнение.

«Подождите», – говорите вы. «Чтобы сделать шаг 1, мне пришлось выбрать структуру». Правда. Шаг 1, однако, содержит решения, которые вы можете отменить. Выбор неправильной структуры для шага 1 не имеет долгосрочных негативных последствий. Это просто учеба.

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

НЕ планируйте полное преобразование как один массивный проект. Он никогда не работает. Это делает большую работу более сложной, чем необходимо.

Мы будем использовать Django в качестве примера. У вас будут шаблоны, функции просмотра, определения моделей, сопоставление URL и другие сведения.

Для каждой сборки выполните следующие действия:

  1. Преобразуйте существующую модель в модель Django. Это никогда не будет соответствовать вашему устаревшему SQL. Вам придется переосмыслить свою модель, исправить старые ошибки, исправить старые ошибки, которые вы всегда хотели исправить.

  2. Напишите модульные тесты.

  3. Создайте утилиту преобразования для экспорта старых данных и импорта в новую модель.

  4. Создайте страницы администратора Django, чтобы прикоснуться и почувствовать новые данные.

  5. Выберите репрезентативные страницы и переработайте их в соответствующие шаблоны. Вы можете использовать некоторые старые JSP-страницы. Однако не тратьте слишком много времени на это. Используйте HTML-код для создания шаблонов Django.

  6. Планируйте функции URL и просмотра. Иногда эти функции просмотра будут использовать старые классы действий. Не «конвертировать». Переписывайте с нуля. Используйте свой новый язык и рамки.

Единственное, что стоит сохранить, это данные и операционная концепция. Не пытайтесь сохранить или преобразовать код. Это вводит в заблуждение. Вы можете конвертировать unittests из JUnit в Python unittest.


Я дал этот совет несколько месяцев назад. Во время обработки мне приходилось выполнять некоторые коучинг и обзор. Пересмотренный сайт запущен и работает. Отсутствие перехода от старой технологии; они предложили переписать с нуля. Разработчик счастлив. Сайт работает хорошо.

Если у вас уже есть большая бизнес-логика, реализованная на Java, то я вижу две возможности для вас.

Первый заключается в использовании языка высокого уровня, который работает в JVM и имеет веб-структуру, такую ​​как Groovy / Grails или JRuby и Rails . Это позволяет напрямую использовать всю бизнес-логику, реализованную на Java, без необходимости перепроектировать весь сайт. Вы должны иметь возможность использовать улучшенную производительность инфраструктуры в отношении веб-разработки и по-прежнему использовать существующую бизнес-логику.

Альтернативный подход состоит в том, чтобы превратить ваш бизнес-логический уровень в набор сервисов, доступных по стандартным RPC mechanisim – REST, SOAP, XML-RPC или другим простым протоколам XML (YAML или JSON) через HTTP (см. Также DWR ), чтобы front end может сделать эти вызовы RPC вашей бизнес-логике.

Первый подход, использующий язык высокого уровня для JVM, вероятно, менее реструктурирован, чем второй.

Если ваша цель – полная миграция Java, то любой из этих подходов позволит вам сделать это на небольших шагах – вы можете обнаружить, что такой гибрид лучше, чем целая распродажа – JVM имеет много библиотек и хорошо интегрируется во множество других систем.

Использование автоматизированного инструмента для «порта» веб-приложения почти наверняка гарантирует, что будущая эффективность программирования будет минимизирована – не улучшится.

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

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

Многие рекомендации, приведенные здесь, предполагают, что вы – и только вы – полностью переписываете приложение. Вероятно, это не так, и он немного меняет ответ

Если у вас уже есть J2EE, правильный ответ – Grails. Это просто: у вас, вероятно, уже есть Hibernate и Spring, и вам понадобится возможность переворачиваться между вашим старым кодом и вашим новым с минимальным количеством боли. Это точно сильная сторона Грового, и в этом отношении она даже более гладкая, чем JRuby.

Кроме того, если у вас уже есть приложение J2EE, у вас уже есть разработчики Java. В этом случае изучение Groovy похоже на падение с лестницы – буквально. За исключением анонимных внутренних классов, Groovy является чистым супермножеством Java, а это значит, что вы можете писать Java-код, называть его Groovy и делать с ним. По мере того, как вы становитесь все более и более удобными в использовании Groovy, вы можете интегрировать их в свой код Java-ish Groovy. До слишком долгого времени вы будете писать очень код Groovy и даже не осознали переход.