Преимущества и опасности использования библиотек и фреймворков Java с открытым исходным кодом

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


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


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


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


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


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


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


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


Есть также скрытые издержки: никто в здравом уме не хочет работать над устаревшим спагетти кодом — это наносит моральный ущерб и в тоже время ущерб способностям нахождения следующей, более высокооплачиваемой работы. Отсюда следуют и дополнительные расходы на нахождение и подготовку новых сотрудников. Лучшие люди уйдут первыми, останутся менее опытные разработчиками.


Таким образом, что можно сделать, когда сталкиваешься с устаревшими библиотеками и фреймворками с открытым исходным кодом:


  1. Ничего не делать, продолжать использовать устаревшие библиотеки и надеяться, что всё будет хорошо.
  2. Скипнуть весь проект и начать его заново.
  3. Удалять устаревающий код.

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

Tags:
open source

You can't comment this post because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author's username will be hidden by an alias.