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

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

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

Ответы [ 4 ]

11 голосов
/ 14 октября 2008

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

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

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

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

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

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

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

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

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

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

  2. Написать юнит-тесты.

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

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

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

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

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


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

7 голосов
/ 14 октября 2008

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

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

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

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

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

6 голосов
/ 14 октября 2008

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

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

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

1 голос
/ 20 октября 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...