Существует немного проектов/API/библиотек с открытым исходным кодом, которые мы используем в нашем проекте (Spring, Struts, iBatis
и т.д.) и я хочу понять их дизайн и как они работают внутренне.
Что лучший способ состоит в том, чтобы понять эти проекты? Обратите внимание, что я уже пользуюсь этими библиотеками в своем проекте. И я знаю взаимодействие/конфигурации ввода - вывода для этих библиотек. То, что я не понимаю, - то, как эти API/библиотеки работают внутренне.
Проблемы, с которыми я сталкиваюсь:
Заранее спасибо!!
ОБНОВЛЕНИЕ: Мне нужны некоторые исходные данные на плагинах затмения, которые могут помочь мне в получении обзора/диаграммы классов библиотеки
Я всегда использую для этого одну и ту же стратегию: я никогда не пытаюсь «понять» кодовую базу в целом и обычно стараюсь следить за потоком запросов. Я прочитал достаточно документации, чтобы определить, что необходимо для использования приложения, и я прочитал тот код (весь исходный код должен быть загружен в вашу среду IDE).
Например, в struts вы будете устанавливать фильтр сервлетов в web.xml. Начните читать фильтр и следуйте по пути, по которому один запрос проходит через ваш стек.
Точно так же для spring есть две основные точки входа, фильтр и getBean, обе из которых упоминаются в начале документации. Прочтите эти два.
Для обоих этих случаев вы очень быстро найдете один или два класса, которые представляют «ядро» фреймворка. Прочтите их очень хорошо и позвольте реальным вариантам использования и потребностям стимулировать ваше дальнейшее исследование.
Подход к «пониманию» библиотеки с открытым исходным кодом (или любой другой базы кода, если на то пошло) путем попытки найти все части обычно не очень хороший способ приблизиться к этим вещам, обычно он просто ни к чему не приведет, потому что много из этих вещей содержат слишком много кода. Следуя потоку запросов, я обнаружил, что создание диаграмм также может сильно отвлекать, это имеет тенденцию отвлекать внимание от понимания (и, поскольку мое понимание быстро растет, большинство из них устарели еще до того, как попадают в принтер).
Хороший вопрос !!!, что я сделал, особенно в случае Spring, помимо ознакомления с документацией и их API, - это прикрепил исходники проекта к моему проекту на Eclipse , таким образом я могу перемещаться по исходному коду, а не только по API. Это было весьма полезно, особенно в случае проекта Spring-Security, были некоторые концепции, которые я просто не мог понять, пока не изучил исходный код.
Это одно из преимуществ использования библиотек с открытым исходным кодом.
С уважением.
Лучше всего для этих троих обратиться к официальной документации (убедитесь, что вы просматриваете ту версию, которую вы используете) или получить книгу по технологии.
Большинство API не имеют класса с главным методом; они выполняются в веб-сервере и вызываются самим сервером. Если только они не работают как собственный сервер, у них не будет главного метода.
Инструменты, такие как Structure101 ( http://www.headwaysoftware.com/products/structure101/index.php ) и Lattix ( http: // www .lattix.com / ) позволяет анализировать код и создавать диаграммы архитектуры / матрицы зависимостей.
Это не совсем диаграмма классов - основное внимание уделяется слоям. Таким образом, точкой входа обычно является самый верхний уровень.
Но опять же, как я указал выше, вы заметите, что некоторые библиотеки представляют собой беспорядок, и эти инструменты не будут достаточно полезными.
См. Онлайн-демонстрацию S101: http://www.structure101.com/java/ Это, например, архитектура проекта Sonar: http://www.structure101.com/java/tracker/sonar/1.11.1/arch.html