Telegram RegisterThe public register of Telegram
Telegram profile photo for Библиотека Java разработчика

Channel

Библиотека Java разработчика

@BookJava

On this record: Growth · Engagement · What this channel posts · Reactions · Advertising · Posts · Citations · Handles named that no longer answer · Cite this entry

10,133subscribers

-37 since we began measuring on 6 August 2026

Risers and fallers across the register · movement among entries of 10,000–31,623.

Register entry

Telegram ID-1001285566241
TypeChannel
Username@BookJava
Description📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate. По всем вопросам @evgenycarter РКН clck.ru/3KoGeP
CreatedBetween 1 March 2018 and 31 July 2021— estimated from Telegram’s id allocation, not measured. How this range is calculated.
First recorded6 August 2026
Last confirmed live22 August 2026
Measurements held15
Confirmed unchanged1 time, most recently 22 August 2026
On Telegramt.me/BookJava

Growth

10,13310,17010,151.56 August 2026 — 10,170 subscribers6 August 2026 — 10,169 subscribers7 August 2026 — 10,166 subscribers8 August 2026 — 10,161 subscribers9 August 2026 — 10,157 subscribers10 August 2026 — 10,154 subscribers11 August 2026 — 10,156 subscribers12 August 2026 — 10,155 subscribers13 August 2026 — 10,153 subscribers15 August 2026 — 10,144 subscribers16 August 2026 — 10,143 subscribers17 August 2026 — 10,142 subscribers18 August 2026 — 10,137 subscribers20 August 2026 — 10,134 subscribers22 August 2026 — 10,133 subscribers6 August 202622 August 2026
15 measurements spanning 16 days, net -37. Dots are measurements; the straight line between them is drawn to join them, not to claim we know the path taken in between — snapshots are recorded only when a count changes, so gaps mean “no change observed”, never “interpolated”. The vertical axis spans 10,127–10,176 and does not start at zero.
Measurement log — every subscribers count we have recorded
Measured (UTC)SubscribersChange
22 Aug 2026, 10:1510,133-1
20 Aug 2026, 21:3410,134-3
18 Aug 2026, 16:5810,137-5
17 Aug 2026, 18:1410,142-1
16 Aug 2026, 15:0610,143-1
15 Aug 2026, 00:1510,144-9
13 Aug 2026, 16:1710,153-2
12 Aug 2026, 19:1310,155-1
11 Aug 2026, 22:0210,156+2
10 Aug 2026, 21:4810,154-3
9 Aug 2026, 18:2310,157-4
8 Aug 2026, 20:2110,161-5
7 Aug 2026, 18:5210,166-3
6 Aug 2026, 21:1010,169-1
6 Aug 2026, 16:0710,170first reading

Engagement

31 posts held, back to 7 July 2026the reader has not yet reached the start of this channel’s public history, so older posts may sit further back, unread. Read across 26 pagesof Telegram’s post history, 20 posts per page.

ERR · 30 days
7.16%
avg views ÷ 10,133 subscribers
Avg views / post
726
19 posts measured
Reaction rate
0.841%
reactions ÷ views · ER floor
Posts in window
19
of 31 held

ERR is average views per post over the last 30 days divided by subscribers, the definition TGStat uses, so this figure is comparable with the one you will see elsewhere. It falls structurally as a channel grows: a high ERR on a small channel and a low one on a large channel describe reach mathematics, not quality. We publish the figure and the sample it came from and pass no verdict on it.

ER is defined industry-wide as (forwards + reactions + comments) ÷ views— note the denominator is views, not subscribers. Telegram’s public web preview carries views and reactions but not forward or comment counts, so the reaction rate above is the reactions term only and is therefore a floor: the true ER for this channel is higher by an amount we have not measured and will not estimate.

What these figures were computed from
WindowRolling 30 days · latest post in window 20 August 2026
Posts held31 (7 July 202620 August 2026)
Views total13,791
Reactions total116
Forwards / commentsnot exposed by the public surface — not measured, not estimated
Readings taken23 Aug 2026, 06:57 UTC

Views are a single reading per post, taken at the time above. A post published in the last day or two is still accumulating views, which pulls the 30-day average down slightly. That is a property of the standard definition rather than a fault in it, so we keep the definition rather than “correcting” the number into something nobody can reproduce.

Precision. Telegram publishes view counts on its public widget in short form — 8.12K, 3.7M — so any reading at or above 1,000 reaches us rounded to three significant figures, and only counts below 1,000 are exact. Averages and rates derived from them are shown to the same precision rather than to the unit: a figure like 3,701,250 would assert digits nobody measured.

Reaction counts are published per emoji and rounded the same way, so a total below 1,000 is exact and a larger one is a sum that may carry a rounded component from each emoji above 1,000. Because it is a sum, it does not look rounded — read a large reaction total as three significant figures per contributing emoji rather than as the figure it prints.

What this channel posts

Photos
1,070
Videos
603
Links
1,500

Lifetime counters from Telegram’s own channel header, read 23 August 2026 — not the date at the top of this page, which is when the subscriber count was last read. A count marked was rounded by Telegram before we ever saw it — t.me prints these counters in full below 1,000 and to three significant figures above, so ≈142,000 means somewhere between 141,500 and 142,499.

Video runtime
13m 19s
Average length
13m 19s

Measured directly from 1 video with a duration reading, out of the posts we hold for this channel — not this channel’s whole posting history, only the sample this register has actually read. An exact reading to the second, taken from the post itself rather than from Telegram’s own rounded chrome, so it carries no mark.

Reaction mix

170 reactions across 30 posts, in 12 distinct kinds. The most used accounts for 50.0% of them.

Every reaction kind recorded on the sample, most used first
ReactionCountShareShare, drawn
👍8550.0%
🔥2011.8%
👎148.24%
🤩137.65%
😁116.47%
🤡84.71%
74.12%
💩42.35%
🤮42.35%
🥴21.18%
10.588%
💊10.588%

No sentiment is inferred, and none should be read in. This table is ordered by count and by nothing else. Emoji do not carry stable meaning across languages or communities — 🙏 is thanks in one channel and mourning in another — so we publish which ones were pressed and how often, and pass no judgement on what an audience meant by them.

Precision. Telegram publishes reaction counts per emoji and short-forms each one — 4.34K, 1.2M — so any single kind at or above 1,000 reaches us at three significant figures, and only counts below 1,000 are exact. The shares above are ratios of those figures and carry the same error. This is also why the total here can differ slightly from a reaction total printed elsewhere on the page: both are sums of the same rounded parts, taken over samples with different edges.

Coverage. Reactions were read on 30 of the 31 sampled posts in this sample. Summed by Telegram’s own count on each post — not by adding up the per-emoji breakdown above — those same posts carry 170reactions in total: the kind of figure the paragraph above means by “a reaction total printed elsewhere on the page”.

Measured over the 31 most recent posts we hold, published 7 July 2026 to 20 August 2026, using the newest reading held for each. Telegram Stars are excluded: they are a payment, not a reaction, and they have their own section.

Advertising

Ad load
6.45%
2 of 31 posts carry an ad marker
Regulatory tokens
2
posts carrying an erid · 2 distinct tokens
Median views · ads
537
over 2 measured posts
Median views · rest
899
over 29 measured posts

An ad marker, not a judgement about a post. A post is counted here because it carries one of two explicit markings: an erid token, which Russian law has required on paid placements since 2022 and which is issued against a specific advertising contract, or a #реклама / #ad hashtag in the body, which is the channel declaring it itself. The first is documentary; the second is a self-declaration and is weaker. No classifier reads the text and decides — nothing on this site guesses that a post is an advertisement.

This is a floor, and it can only ever be a floor.A channel that runs paid placements without marking them produces no marker for us to count, and an unmarked ad is indistinguishable from an ordinary post on the public surface. The ad load above therefore means “the share of posts that declared themselves”, never “the share of posts that were paid for”. A low figure is not evidence of a channel that runs few ads.

Both figures are medians, and no ratio between them is published. Each is a view reading that actually occurred on a post, picked by percentile_disc rather than averaged, so one viral post cannot move it and no interpolated value is invented between two readings. The sample on one side is under five posts, which is too thin to compare. The two figures are shown side by side with the count behind each, and deliberately not divided into a headline like “ads get x% fewer views” — an arithmetic that is easy to print and, at this sample size, means nothing.

Advertising tokens recorded on this entry
eridPostsFirst seenLast seen
2Vtzqve7BEj118 August 202618 August 2026
2VtzqxCK4W614 August 20264 August 2026

A token repeated across several posts is one advertising contract placed more than once, which is what the identifier is for. The strings are reproduced exactly as they appeared in the post or in its click-through URL and are not validated against any registry — we record the marker a channel published, and whether it resolves to a real contract is a question for the register that issued it.

Measured over the 31 most recent posts we hold, published 7 July 2026 to 20 August 2026. Views are the latest single reading held for each post, and any reading at or above 1,000 is rounded by Telegram to three significant figures.

Recent posts

20 Aug 2026, 06:17 UTC398 views7 reactionsread 23 August 2026
Photo

💡 Не делай этого в @PostConstruct — особенно в проде Сейчас расскажу, почему инициализировать важную бизнес-логику в @PostConstruct — плохая идея. Типичный пример: @Component public class CacheLoader { private final SomeService service; public CacheLoader(SomeService service) { this.service = service; } @PostConstruct public void init() { service.loadDataIntoCache(); // ⚠️ о

👍5🔥2

18 Aug 2026, 16:02 UTC608 views33 reactionsread 23 August 2026
Photo

🧠 JVM-разработчики, стягиваемся в Москву 29 августа В последнюю субботу лета бэкенд- и JVM-комьюнити соберется на JVM Day, который устраивает Т-Банк. Ждут всех разработчиков, архитекторов и тимлидов, которые работают с Java, Kotlin и Scala. В программе: – Андрей Кулешов расскажет о том, что изменилось в мире JVM за год. – Сергей Петрелевич разберет Mechanical Sympathy. – Александр Ланцов покажет, какие модели конку

🤩13👍10😁10

18 Aug 2026, 15:15 UTC543 views2 reactionsread 23 August 2026

🧠 @Value в Spring — это ловушка, если вы используете списки или map'ы Многие знают, что можно заинжектить список строк из application.yml вот так: app: langs: - en - fr - de @Value("${app.langs}") private List<String> langs; Но знаете, что вы получите? ⚠️ ОШИБКУ. @Value не умеет парсить YAML-массивы. Он ожидает строку, и даже с CSV-строкой (en,fr,de) — всё не так очевидно: Spring не применяет C

2

18 Aug 2026, 11:07 UTC541 views1 reactionsread 23 August 2026
Photo

👩‍💻 Работа с Kafka через библиотеку Kafka Clients Приглашаем на открытый урок. 🗓 26 августа в 20:00 МСК 🆓 Бесплатно. Урок в рамках старта курса «Java разработчик. Продвинутый уровень». Kafka Clients это нижний уровень для работы с Kafka из Java. Все более высокоуровневые библиотеки основаны на нем. Данный открытый урок проходит в рамках курса Java разработчик. Продвинутый уровень. О чем поговорим: ✔️ Чтение и отп

👍1

18 Aug 2026, 09:00 UTC538 views3 reactionsread 23 August 2026
Photo

🧠 Нюанс с Optional.map() и методами, возвращающими Optional Многие Java-разработчики на автомате пишут что-то вроде: Optional<User> user = findUserById(id); // возвращает Optional<User> Optional<String> email = user.map(User::getEmail); // getEmail тоже возвращает Optional<String> ⚠️ Проблема: map() в Optional не "разворачивает" вложенные Optional. В этом примере email будет типа Optional<Optional<String>>, что

👍2🔥1

18 Aug 2026, 07:03 UTC537 views2 reactionsread 23 August 2026
Advertisementerid 2Vtzqve7BEjPhoto

Почему ты получаешь отказ после "норм собеса"? Дело не в знаниях - ты просто не знаешь, что реально проверяют на собеседованиях Отсюда: — непонимание, какие навыки надо качать, чтобы выйти на следующий грейд — ощущение стагнации и отсутствие роста в скиллах — долгое время на одной и той же зп Решение — знать, что от тебя ждёт интервьюер, и умение правильно донести свою мысль Для этого ребята из ШОРТКАТ (менторско

2

17 Aug 2026, 04:25 UTC612 views9 reactionsread 23 August 2026
Video

Java. Сортировки Java. Сортировка пузырьком. Java. О сортировке выбором. Java. Быстрая сортировка. Объяснение на пальцах) Java. Оценка сложности алгоритмов сортировки. Java. Сортировка слиянием. Java. Сортировка подсчетом. Java. Сортировка вставками. Java. Сортировка расческой. От пузырька до расчески. 📲 Мы в MAX 👉@BookJava

🔥6👍3

14 Aug 2026, 06:47 UTC729 views8 reactionsread 23 August 2026
Photo

🧠 Как в Java сломать equals() и потерять данные в HashMap Сегодня покажу, как неочевидный баг в equals()/hashCode() может привести к потере данных при работе с HashMap. Допустим, у вас есть Entity: public class User { private String id; private String name; // equals/hashCode только по id @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceo

👍6🥴2

12 Aug 2026, 09:04 UTC691 views5 reactionsread 23 August 2026
Photo

💡Сегодня покажу крутую фишку для оптимизации чтения больших коллекций из базы через JPA. 📌 Проблема: Когда загружаем большую коллекцию через @OneToMany, Hibernate часто делает это лениво (LAZY), но при первом доступе — забирает всю коллекцию целиком. Это может привести к OutOfMemoryError или резкому проседанию производительности. 📌 Решение: использовать пагинацию (batch-size) или запрос коллекции порциями. Как н

👍4🔥1

9 Aug 2026, 06:04 UTC804 views6 reactionsread 23 August 2026

Как работают instance initializer blocks. Пример с родительским и дочерним классами: class Parent { int a = 5; { System.out.println("Parent instance initializer"); a = 10; } Parent() { System.out.println("Parent constructor, a = " + a); } } class Child extends Parent { int b = 15; { System.out.println("Child instance initializer"); b = 25;

👍6

8 Aug 2026, 12:00 UTC726 views3 reactionsread 23 August 2026

🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://max.ru/sysadminof Книги для админов, полезные материалы https://max.ru/i_odmin_book Библиотека Системного Администратора https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др. https://max.ru/tipsysdmin Типичный Сисадмин https://max

👎3

5 Aug 2026, 10:17 UTC831 views5 reactionsread 23 August 2026

В Java instance initializer blocks (блоки инициализации экземпляра) выполняются в следующем порядке: - Они выполняются каждый раз, когда создается новый объект класса. - Выполнение происходит после вызова конструктора родительского класса (super()), но до тела конструктора текущего класса. Порядок инициализации: 1. Сначала инициализируются поля в порядке их объявления. 2. Затем выполняются instance initializer blo

👍3🔥2

Showing the 12 most recent of 31 posts we hold for @BookJava. View and reaction counts are the latest single reading for each post, not a live figure, and a recent post is still accumulating both. A view count marked was rounded by Telegram before we ever saw it — t.me prints views in full below 1,000 and to three significant figures above, so ≈1,200,000 means somewhere between 1,150,000 and 1,249,999. Unmarked counts are exact. Text is reproduced from the public post preview and truncated for length.

Citation-graph rank

Citation-graph rank — 1,079,500 of 1,584,420entries in the measured graph. A weighted position computed from the forward and mention edges below — republished posts weigh more than named mentions — and recomputed periodically, over the whole graph. Published only as this ordinal position, never as a score: a position is a fact, and a score printed beside one channel’s name would read as a verdict this register does not make. The two counts beneath stay separate for the same reason mentions are never summed with forwards anywhere else on this page — a named-by count costs nothing to manufacture. The top 100 by this measure, or how it is computed.

Mentions

Named by 4 registered channels — every channel on the register whose own posts have named this one, by its current username or any other username it currently holds, merged from two separately captured readings of the same fact so a namer caught by only one of them is not missed and a namer both caught is not counted twice. A username this channel has since dropped is not matched — that handle may belong to someone else now, and crediting today’s namer to yesterday’s owner would misattribute it.

A mention is a weaker signal than a forward and is counted separately for that reason — naming a channel is not republishing it, and a handle in a post body is easy to place deliberately. The post counts beside each row below are distinct posts in which the handle appeared, from posts we have read on both sides — the “Named by N registered channels” figure above is a different count, of distinct NAMING CHANNELS rather than posts, and is not the sum of the rows under it.

Cite this entry

A live page changes as we take new readings, so a citation should name the measurement it is based on, not just the URL. The line below cites the subscriber count as measured 22 August 2026 — this entry's latest reading, not the date you are reading this.

“Библиотека Java разработчика” (@BookJava), 10,133 subscribers as measured 22 August 2026. Telegram Register, tgregister.com/channel/BookJava.

Full measurement history, CC BY 4.0. Every reading this register holds for this entry, not just the latest one, as a dated, downloadable record: CSV · JSON. Free to use with attribution to tgregister.com. Each file carries its own generation timestamp, which is the figure to cite for exactly when the data was retrieved.