Получи случайную криптовалюту за регистрацию!

Java кабала

Логотип телеграм канала @java_kabal — Java кабала J
Логотип телеграм канала @java_kabal — Java кабала
Адрес канала: @java_kabal
Категории: Технологии
Язык: Русский
Количество подписчиков: 2
Описание канала:

Рассказываю про мир Java разработчиков. Делюсь опытом. Обучаю Java
По всем вопросам - @fonatik_kabal

Рейтинги и Отзывы

3.50

2 отзыва

Оценить канал java_kabal и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

1

4 звезд

0

3 звезд

0

2 звезд

1

1 звезд

0


Последние сообщения

2022-09-17 14:49:51 ​​Затронув тему библиотек, вкратце расскажу, что такое groupId, artifactId и version, и для чего это нужно.

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

groupId - это "идентификатор группы". Но что же на самом деле это такое? По факту это ваш домен. Например, если у вас есть организация mycompany и у вас есть собственный домен, например mycompany.ru, тогда вы можете использовать его в качестве groupId, только в зеркальном виде - ru.mycompany, что, собственно, логично, т.к. это помогает сортировать артифакты по уровню домена.
Что если у вас нет собственного домена? Maven central разрешает использовать адреса ваших github аккаунтов. Да, это валидно, если вы его подтвердите. Например, если мой гитхаб github.com/Kabal163, тогда groupId будет выглядить так: com.github.kabal163.
Помимо вашего домена, в группу могут входить дополнительные части, которые помогают идентифицировать, например, направление разработки или продукт. Опять таки, пример: у меня есть компания, и в ней несколько направлний разработки. В каждом направлении у меня есть множество библиотек. Чтобы идентифицировать их, я могу сделать так:
ru.mycompany.security
ru.mycompany.web
ru.mycompany.reactive
Таким образом, мы уже гарантируем, что никто в мире не сможет загрузить в публичный репозиторий библиотеку с таким же groupId как у вас (если только раньше этот домен не принадлежал кому-то еще).

artifactId - это непосредственно название вашей библиотеки, вашего артефакта. Например:
commons-lang3
lombok
spring-web

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

Таким образом, мы всегда имеем уникальный идентификатор библиотеки, по которому можем однозначно идентифицировать ее среди миллионов других.
3.7K views11:49
Открыть/Комментировать
2022-09-14 17:53:58 ​​В продолжение предыдущей темы: как подключать библиотеки.

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

Давайте представим, что мы хотим создать библиотеку, что нам нужно? Ну очевидно, в первую очередь написать исходный код - это непосредственно код нашей библиотеки. Ну окей, написали. Теперь нам нужно покрыть это дело тестами - но вот не задача, чтобы написать тесты, нам нужны зависимости в виде других библиотек, типа junit, spock, mockito и др.

Хаха, давайте сачканем, и пока пропустим тесты (но только в этом случае). Что дальше? Нам нужно скомпилировать все наше добро - ну ок, у нас вроде есть javac. Но что толку с кучи скомпилированных классов? Нам нужно их упаковать! Упаковать в JAR (Java Archive). Вы скажете: «Ну окей, руками создам архив и все туда сложу». Как бы да, никто не запрещает этого вам сделать, но дальше начинается самое интересное - нам нужно опубликовать нашу библиотеку. Это разумеется, тоже можно сделать руками, но вы скорее застрелитесь, чем будете после каждого изменения все перчечисленные действия производить руками!

На помощь к нам приходят системы по автоматической сборке проектов - Maven или Gradle. Вот о них-то вам и нужно будет почитать и разобраться как они работают. Maven попроще для старта, Gradle попизже. В общем, чем пользоваться - решать вам. В чем суть - эти ребята автоматизируют сборку проекта. Они компилируют проект, запускают тесты, упаковывают все в JAR и публикуют его в репозитории (о репозиториях далее).

Замечательно, мы написали библиотеку, в ней использовали Maven либо гредл, которые нам как минимум все скомпилировали и упаковали в JAR. Супер, у нас есть артифакт. Фактически, этот JAR вы уже можете дать своему товарищу, чтобы тот подключил его к проекту, но это полная дичь, и мы так делать не хотим. Мы хотим, чтобы все было автоматически.

Для этого нам необходимо разместить нашу библиотеку в репозитории. Что же такое этот репозиторий? Помните, вначале я сказал, что Maven придумали множество различных конвенцией? Так вот, репозитории это их рук дело. Физически репозиторий это директория на файловой системе. Т.е. у вас на компе есть «локальный репозиторий». Он есть у всех и создается автоматически. Находится в хоум директории в папке .m2

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

Оказывается, существуют еще некие «удаленные репозитории» (не от слова delete, а от слова remote). Удаленный репозиторий - это сервер, на котором можно хранить JAR. У него есть определенный API по которому с ним можно взаимодействовать и загружать на него свои библиотеки, и скачивать нужные вам.

Я думаю, вы уже начали догадываться, что тот кто пишет проект и хочет подключить вашу библиотеку к себе, тоже должен собирать свой проект при помощи Maven или Gradle. Эти ребята умеют взаимодействовать как с локальными, так и с удаленными репозиториями и умеют там находить зависимости, которые вам нужны. Для того, чтобы объяснить Maven или Gradle о том, что вам нужно подключить библиотеки (зависимости) к проекту - в специальном конфигурационном файле нужно объявить секцию dependencies в которой вы пишете полное название с версией нужно вам бибилиотеки - groupId, artifactId и version. Да, да, это тоже конвенции Maven.

Вуаля, система по автоматической сборке проектов найдет в удаленном репозитории нужную вам библиотеку и скачает ее в ваш локальный репозиторий, а умная IDE увидит ее и вы без проблем сможете ей воспользоваться.
3.9K views14:53
Открыть/Комментировать
2022-09-13 17:55:16 ​​И так значит... библиотеки...

Буквально вчера я написал о том, чтобы вы не делали свои велосипеды и использовали готовые решения - библиотеки. Я ожидали кучу реакций... а вы оказывается, не знаете что это такое. Давайте исправлять.

Библиотека - это готовый кусок кода, который за нас с вами кто-то написал, протестировал, скомпилировал, упаковал в jar и опубликовал в публичном репозитории. Теперь, все что нам с вами нужно сделать - это просто взять и подключить эту библиотеку к своему проекту (как это сделать, расскажу в следующей статье).

Давайте представим, какую проблему может решить библиотека? Например, у нас есть проект, и в проекте мы хотим проверять строки на пустоту. Например, если нам пришла пустая строка, тогда мы будем кидать исключение IllegalArgumentException. Но что такое пустая строка? null? empty? или пробельная строка? а переносы строк и табуляция?
В общем, если вы имеете ввиду все вышеперечисленное, тогда речь идет именно про BLANK строку. Чтобы самому не писать метод, который делать такое большое количество проверок, мы можем найти библиотеку, в которой уже есть такой метод. Мы находим такую библиотеку, подключаем ее к нашему проекту и вуаля. Мы можем использовать этот метод. Пример такой библиотеки - org.apache.commons:commons-lang3.

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

Поэтому, когда в очередной раз вы подумайте о том, что вам нужно написать какой-нибудь "умный, универсальный" метод, попробуйте погуглить, а нет ли такого уже на просторах интернета.
4.6K views14:55
Открыть/Комментировать
2022-09-12 16:45:16 ​​Прежде, чем писать свои собственные костыли, обязательно проверьте, нет ли уже готовой библиотеки, которая решает ваши проблемы.

Пример Apache Commons: огромное количество утилитных библиотек на все случаи жизни https://commons.apache.org/

Часто использую: Lang, Collections, IO
5.1K views13:45
Открыть/Комментировать
2022-09-11 15:04:22
Почему я до сих пор не начал учить программирование?
Anonymous Poll
42%
Вообще-то, я начал...
5%
Нуу... у меня нет времени
20%
Хмм... не знаю с чего начать
21%
Эмм... я начал.. но забил...
8%
Я пока сомневаюсь, надо ли оно мне
5%
Другая причина
1.1K voters1.9K views12:04
Открыть/Комментировать
2022-09-10 15:14:15 ​​Эстафета с исключениями

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

Давайте организуем соревнования – передачу эстафетной палочки. Что нам для этого нужно? Наверное, нам понадобится две сущность – эстафетная палочка и спортсмен. Давайте сделаем несколько спортсменов (штук 10), сделаем одну палочку и пусть они передают ее друг другу. У них при этом будет 2 метода:

1. Безопасная передача палочки. Палочка передается, и мы считаем, что ничто не предвещает беды. Однако спортсмен может споткнуться и упасть во время бега, тогда должно быть выкинуто исключение. Подумайте, какого типа тут должно быть исключение (check или unchecked).

2.Рисковая передача палочки – это когда спортсмен еще не добежал до своего товарища и швыряет ему эту палочку. Тогда другой спортсмен может не поймать ее. Подумайте, какого типа тут должно быть исключение.

Эти два метода должны выкидывать исключение с вероятностью 20%. Не забудьте в main методе обработать исключения.
2.6K views12:14
Открыть/Комментировать
2022-09-03 23:00:54
GC - Garbage Collection или сборка мусора. В Java, как и во многих других современных языках, существует механизм автоматизированного управления памятью.

Это значит, что нам не нужно руками освобождать память, если она нам больше не нужна. За нас это сделает Garbage Collector.

Для тех, кто уже начал интересоваться этой темой, рекомендую прочитать:
1. Оракловую документацию - https://docs.oracle.com/javase/9/gctuning/introduction-garbage-collection-tuning.htm
2. Визуализация алгоритмов сборки: https://spin.atomicobject.com/2014/09/03/visualizing-garbage-collection-algorithms/

Для более продвинутых - отличная статья, рассказывающая про важность memory locality и как это влияет на производительность: https://www.cs.cornell.edu/courses/cs3110/2014sp/lectures/26/memory.html
916 views20:00
Открыть/Комментировать
2022-09-02 11:45:40
Пишете unit тесты?
Anonymous Poll
16%
Издеваешься? Разумеется
18%
По настроению
66%
Мне бы понять, что такое Hello world
988 voters2.5K views08:45
Открыть/Комментировать
2022-09-01 09:55:48
Ищем джависта, бэйби!

А что ты сделал на Java в свои годы? Предлагаем заняться кое-чем большим и важным: помочь нам создать современный, технологичный и человечный мобильный банк — Яндекс Банк. Мы запускаемся уже в этом году и продолжаем набирать отряд первых.

Что нужно делать? Надеемся, это ты нам расскажешь, для этого мы и ищем толковых ребят. Ну а если конкретно: практически с нуля разрабатывать продуктовый движок, бизнес-логику и инфраструктуру финтех-сервисов. Главное — работать головой, а не по 12 часов.

Яндекс Финтех — это маленькая команда внутри большой компании. У нас есть, где развернуться, но нет риска превратиться в тыкву, как это часто бывает со стартапами. С нас — отсутствие стоячего болотца рутинных задач и безумной бюрократии. С тебя — опыт на боевых проектах и одна простая задачка.
1.6K views06:55
Открыть/Комментировать