HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Программисты не пишут весь код с нуля. Большая его часть приходит с библиотеками и фреймворками, которые подключатся к проекту как зависимости. Так говорят потому что код проекта теперь зависит от этих библиотек. Откуда берутся эти зависимости и как их подключать, на эти вопросы мы ответим в этом уроке.</p>
1 <p>Программисты не пишут весь код с нуля. Большая его часть приходит с библиотеками и фреймворками, которые подключатся к проекту как зависимости. Так говорят потому что код проекта теперь зависит от этих библиотек. Откуда берутся эти зависимости и как их подключать, на эти вопросы мы ответим в этом уроке.</p>
2 <p>Откуда вообще берутся такие библиотеки? Иногда их делают обычные программисты, такие же как и мы с вами. Иногда за библиотеками стоят компании, как большие так и маленькие. Исходный код этих библиотек почти всегда хранится на github.com и доступен для изучения.</p>
2 <p>Откуда вообще берутся такие библиотеки? Иногда их делают обычные программисты, такие же как и мы с вами. Иногда за библиотеками стоят компании, как большие так и маленькие. Исходный код этих библиотек почти всегда хранится на github.com и доступен для изучения.</p>
3 <p>Возьмем для примера библиотеку<em>Apache Commons Lang</em>. Она содержит множество полезных функций на все случаи жизни начиная от генерации случайных чисел, до обработки строк. Исходный код этой библиотеки доступен<a>здесь</a>. Посмотрите<a>файл с методами для строк</a>. Он содержит более 9 тысяч строчек кода. Правда половина из них комментарии, но все равно внушительно.</p>
3 <p>Возьмем для примера библиотеку<em>Apache Commons Lang</em>. Она содержит множество полезных функций на все случаи жизни начиная от генерации случайных чисел, до обработки строк. Исходный код этой библиотеки доступен<a>здесь</a>. Посмотрите<a>файл с методами для строк</a>. Он содержит более 9 тысяч строчек кода. Правда половина из них комментарии, но все равно внушительно.</p>
4 <p>Предположим, что мы решили воспользоваться методом capitalize() для того, чтобы капитализировать строку - привести первый символ строки к верхнему регистру. Выглядит он так:</p>
4 <p>Предположим, что мы решили воспользоваться методом capitalize() для того, чтобы капитализировать строку - привести первый символ строки к верхнему регистру. Выглядит он так:</p>
5 <p>Как добавить этот метод к себе в проект? Чтобы разобраться с этим вопросом, надо знать как вообще распространяются библиотеки в Java. Существует специальное хранилище<a>Maven Central</a>(иногда говорят, что это каталог), куда любой разработчик, может выложить свою библиотеку. Здесь можно найти практически все публичные библиотеки для Java. Сам сайт, правда, выглядит страшновато, но им и не придется много пользоваться.</p>
5 <p>Как добавить этот метод к себе в проект? Чтобы разобраться с этим вопросом, надо знать как вообще распространяются библиотеки в Java. Существует специальное хранилище<a>Maven Central</a>(иногда говорят, что это каталог), куда любой разработчик, может выложить свою библиотеку. Здесь можно найти практически все публичные библиотеки для Java. Сам сайт, правда, выглядит страшновато, но им и не придется много пользоваться.</p>
6 <p><em>Maven Central популярный, но не единственный источник пакетов. Есть и другие. В компаниях часто используются свои каталоги</em></p>
6 <p><em>Maven Central популярный, но не единственный источник пакетов. Есть и другие. В компаниях часто используются свои каталоги</em></p>
7 <p>У каждого проекта в каталоге есть<a>своя страница</a>. Здесь можно увидеть доступные версии, популярность, наличие критичных ошибок и тому подобное. Сами библиотеки распространяются в виде JAR-файлов, которые можно скачать прямо с сайта.</p>
7 <p>У каждого проекта в каталоге есть<a>своя страница</a>. Здесь можно увидеть доступные версии, популярность, наличие критичных ошибок и тому подобное. Сами библиотеки распространяются в виде JAR-файлов, которые можно скачать прямо с сайта.</p>
8 <p>Попробуем скачать и подключить JAR библиотеки Apache Commons Lang к нашему коду. По порядку:</p>
8 <p>Попробуем скачать и подключить JAR библиотеки Apache Commons Lang к нашему коду. По порядку:</p>
9 <ol><li>На странице библиотеки нажимаем на последнюю доступную версию и попадаем на страницу конкретной версии</li>
9 <ol><li>На странице библиотеки нажимаем на последнюю доступную версию и попадаем на страницу конкретной версии</li>
10 <li>На этой странице находим поле<em>Files</em>и нажимаем на ссылку<em>jar</em>. Браузер предложит скачать файл.</li>
10 <li>На этой странице находим поле<em>Files</em>и нажимаем на ссылку<em>jar</em>. Браузер предложит скачать файл.</li>
11 <li>Скачиваем этот файл и кладем рядом с кодом в проект</li>
11 <li>Скачиваем этот файл и кладем рядом с кодом в проект</li>
12 </ol><p>Создадим класс, в котором капитализируем строку и выведем ее на экран:</p>
12 </ol><p>Создадим класс, в котором капитализируем строку и выведем ее на экран:</p>
13 <p>После этого директория с кодом будет выглядеть так:</p>
13 <p>После этого директория с кодом будет выглядеть так:</p>
14 <p>Осталось запустить код. Для этого нужно указать компилятору где искать классы пакета<em>org.apache.commons.lang3</em>. Технически классы располагаются внутри файла<em>commons-lang3-3.14.0.jar</em>. И мы можем напрямую указать этот файл через<em>classpath</em>:</p>
14 <p>Осталось запустить код. Для этого нужно указать компилятору где искать классы пакета<em>org.apache.commons.lang3</em>. Технически классы располагаются внутри файла<em>commons-lang3-3.14.0.jar</em>. И мы можем напрямую указать этот файл через<em>classpath</em>:</p>
15 <h2>Именование пакетов</h2>
15 <h2>Именование пакетов</h2>
16 <p>В Maven Central есть определенные правила по именованию пакетов, которые стали стандартом де-факто во всей индустрии. Эти же правила применяются и при разработке локальных проектов. Даже редакторы требуют такой структуры. Речь идет про GroupId и ArtifactId.</p>
16 <p>В Maven Central есть определенные правила по именованию пакетов, которые стали стандартом де-факто во всей индустрии. Эти же правила применяются и при разработке локальных проектов. Даже редакторы требуют такой структуры. Речь идет про GroupId и ArtifactId.</p>
17 <p>GroupId - уникальный идентификатор, используемый для всех проектов компании. Даже если у вас нет компании, его все равно надо задавать. По задумке GroupId это домен, который вы контролируете, например,<em>org.apache</em>или<em>io.hexlet</em>(в нашем случае). Если у вас нет такого домена, но вы хотите что-то поделать локально, то задайте в редакторе любой домен, какой вам нравится.</p>
17 <p>GroupId - уникальный идентификатор, используемый для всех проектов компании. Даже если у вас нет компании, его все равно надо задавать. По задумке GroupId это домен, который вы контролируете, например,<em>org.apache</em>или<em>io.hexlet</em>(в нашем случае). Если у вас нет такого домена, но вы хотите что-то поделать локально, то задайте в редакторе любой домен, какой вам нравится.</p>
18 <p>ArtifactId - Имя jar-файла без указания версии. В примере выше это<em>commons-lang3</em>. Обычно ArtifactId cовпадает с именем проекта.</p>
18 <p>ArtifactId - Имя jar-файла без указания версии. В примере выше это<em>commons-lang3</em>. Обычно ArtifactId cовпадает с именем проекта.</p>
19 <p>Полный путь к пакету проекта строится как<em>GroupId.ArtifactId</em>. Для библиотеки Apache Commons Lang это<em>org.apache.commons-lang3</em>.</p>
19 <p>Полный путь к пакету проекта строится как<em>GroupId.ArtifactId</em>. Для библиотеки Apache Commons Lang это<em>org.apache.commons-lang3</em>.</p>
20 <h2>Итого</h2>
20 <h2>Итого</h2>
21 <p>Подводя итог, мы видим, что библиотеки распространяются в виде пакетов, упакованных в JAR-файлы. Одна библиотека - один JAR. JAR-файлы подключаются к проекту через добавление в<em>classpath</em>.</p>
21 <p>Подводя итог, мы видим, что библиотеки распространяются в виде пакетов, упакованных в JAR-файлы. Одна библиотека - один JAR. JAR-файлы подключаются к проекту через добавление в<em>classpath</em>.</p>