Статьи

Мой переход от ColdFusion к разработке на Java

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

Выход из школы, решение реальных бизнес-задач с использованием технологий было само по себе проблемой. Из-за своей довольно простой природы ColdFusion не помешал добиться цели. Это позволило мне применить и основные принципы разработки приложений. Однако со временем я начал замечать, что набор инструментов, предлагаемый языком, был не таким богатым, как у других технологий разработки, таких как, например, Java.

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

ColdFusion — облегчение элементарных задач

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

Пока я еще работал с ColdFusion, мой опыт давал мне частичные подсказки о том, какие ресурсы хранит Java. Поскольку ColdFusion сам по себе является интерпретируемым языком более высокого уровня, который работает поверх Java, стало возможным использовать Java под ним творчески. Например, следующий фрагмент кода позволяет удалить дубликаты из массива ColdFusion в одном операторе1.

1
2
3
myArray = createObject("java", "java.util.ArrayList").init(
  createObject("java", "java.util.HashSet").init(myArray)
);

Эти методы, однако, были в целом недокументированы. Вы уже должны знать некоторые хитрости в Java, чтобы применить их в ColdFusion. И если это так, почему бы не потратить время на улучшение в Java? Я считаю, что ColdFusion значительно прогрессировал со временем, но только для того, чтобы раскрыть и реализовать то, что Java уже освоил.

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

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

Когда вы берете только хорошие стороны, ColdFusion является «просто еще одной» серверной технологией, которая также приносит организационную культуру или создает организационную культуру, которая, на мой взгляд, не идеальна в долгосрочной перспективе.

быстрота

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

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

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

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

механическая обработка

Еще один момент, на который стоит обратить внимание, это уровень сложности и полезности инструментов разработки. И для своей разработки ColdFusion, и для Java я использовал Eclipse в качестве интегрированной среды разработки. Eclipse традиционно известен как Java IDE. Тем не менее, благодаря своей расширяемости, разработка ColdFusion может быть облегчена с помощью плагина. Хотя поддержка этого модуля в сообществе отличная, он не подходит для инструментов проверки кода и отладки, доступных для Java. Я склонен думать, что разница связана с тем, что Java является скомпилированным языком, тогда как ColdFusion интерпретируется во время выполнения.

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

Последние мысли

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

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

Ресурсы

Ссылка: Мой переход от ColdFusion к разработке Java от нашего партнера JCG Дмитрия Колесникова в блоге