Java Гениев
87 subscribers
204 photos
77 videos
180 links
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Что если бы Java-разработчики могли создавать веб-приложения, не прибегая к помощи JavaScript? 🤔

👉
This media is not supported in your browser
VIEW IN TELEGRAM
IntelliJ IDEA EAP обеспечивает навигацию по журналам именно в том месте, где было зарегистрировано сообщение!

https://blog.jetbrains.com/idea/2024/02/intellij-idea-2024-1-eap-6/

👉
Бесплатный вебинар «Продвинутые аспекты Java collections framework» ☄️

05 марта в 18:00 проведем Бесплатный вебинар «Продвинутые аспекты Java collections framework».

В прямом эфире:

• Разберем тонкости при работе с массивами, списками и мапами
• Расскажем про разницу в производительности основных коллекций, use cases
• Ответим на популярные вопросы с собеседований на позицию Java Middle Developer

Ведущий: Роман Оборин
Опыт программирования на Java — 6 лет
Коммерческий опыт - 10 лет

Вебинар будет полезен Java разработчикам, которые заинтересованы перейти на позицию Middle, повысить уровень знаний Java collections, понять требования к разработчикам, подготовиться к техническому собеседованию.

Регистрация по ссылке:
https://clck.ru/399Qa3

💖 Эфир приурочен к старту курса Java Middle Developer. Для забронировавших место на курсе до 19 марта предлагаем скидку 35%, стоимость обучения составит 85 000 руб.

Обсудить индивидуальную программу обучения, записаться на интервью и задать вопрос можно в нашем...
Подборка Telegram каналов для программистов

Системное администрирование 📌
Типичный Сисадмин (фото железа, было/стало)
Книги для админов, полезные материалы
Все для системного администратора
Библиотека Системного Администратора
Чат системных администраторов
DevOps: Пишем о Docker, Kubernetes и др.
Новости Линукс Linux


Новости высоких технологий, науки и техники💡
Мир технологий (Technology World)

Полезный контент по программированию на Rust
Библиотека Go (Golang) разработчика

Программисты, дизайнеры, новости из мира IT.
Обучающие видео, книги по Физике и Математике

Библиотека PHP программиста 👨🏼‍💻👩‍💻
Подборки по Node js и все что с ним связано
Библиотека Ruby программиста

1C разработка 📌
Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌
Библиотека C/C++ разработчика
Книги для программистов C/C++
Учим C/C++ на примерах

Программирование Python 📌
Python академия. Учи Python быстро и легко🐍
Библиотека Python разработчика
Python подборки на русском и английском
Книги по Python Rus

Java разработка 📌
Библиотека Java разработчика
Книги по Java Rus
Учим Java на примерах

GitHub Сообщество 📌
Интересное из GitHub

Базы данных (Data Base) 📌
Все про базы данных

Мобильная разработка: iOS, Android 📌
Мобильная разработка
Подборки полезного материала по Kotlin

Фронтенд разработка 📌
Подборки для frontend разработчиков
Frontend советы, примеры и практика!
Подборки по React js и все что с ним связано

Разработка игр 📌
Все о разработке игр

Вакансии 📌
Системный Администратор
Вакансии в IT

Чат программистов📌


Библиотеки 📌
Книги для программистов Rus
Книги по программированию
Библиотека программиста
Книги для программистов
Книги для программистов

БигДата, машинное обучение 📌
Data Science, Big Data, Machine Learning, Deep Learning

Программирование 📌
Лекции, видеоуроки, доклады с IT конференций
Полезные советы по программированию

QA, тестирование 📌
Библиотека тестировщика

Шутки программистов 📌
Шутки программистов

Защита, взлом, безопасность 📌
Канал о кибербезопасности
Статьи из "Хакера"

Книги, статьи для дизайнеров 📌
Статьи, книги для дизайнеров

Английский 📌
Английский с нуля

Математика 📌
Канал по математике

Excel лайфхак📌
Бесплатный вебинар «Продвинутые аспекты Java collections framework» ☄️

05 марта в 18:00 проведем Бесплатный вебинар «Продвинутые аспекты Java collections framework».

В прямом эфире:

• Разберем тонкости при работе с массивами, списками и мапами
• Расскажем про разницу в производительности основных коллекций, use cases
• Ответим на популярные вопросы с собеседований на позицию Java Middle Developer

Ведущий: Роман Оборин
Опыт программирования на Java — 6 лет
Коммерческий опыт - 10 лет

Вебинар будет полезен Java разработчикам, которые заинтересованы перейти на позицию Middle, повысить уровень знаний Java collections, понять требования к разработчикам, подготовиться к техническому собеседованию.

Регистрация по ссылке:
https://clck.ru/399R3J

💖 Эфир приурочен к старту курса Java Middle Developer. Для забронировавших место на курсе до 19 марта предлагаем скидку 35%, стоимость обучения составит 85 000 руб.

Обсудить индивидуальную программу обучения, записаться на интервью и задать вопрос можно в нашем...
Pro Spring 6: An In-Depth Guide to the Spring Framework
Автор: Chris Schaefer (2023)

Эта книга выходит далеко за рамки основ: вы узнаете, как использовать новейший Spring Framework 6 для создания различных уровней и частей современных сложных корпоративных Java-прикладных систем, сверху донизу, включая доступ к данным, генерацию SQL с помощью jOOQ, персистентность с помощью Hibernate, транзакции, настройку безопасности, классические уровни web и презентаций и добавление некоторой реактивности.

Скачать

👉
ИИ-чатбот + веб-интерфейс менее чем за 20 строк на Java с использованием Spring AI и Vaadin 🤖

А в качестве нативного образа GraalVM, он запускается за 0,1 секунды!

https://github.com/marcushellberg/spring-ai-web

👉
Абстрактные классы и методы в Java: Объяснение!

Абстракция - это процесс сокрытия деталей реализации и представления пользователю только основных функций. Это позволяет сосредоточиться на том, что делает объект, а не на том, как он это делает.

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

1. Используйте абстрактные классы для моделирования иерархий связанных классов: Абстрактные классы - отличный способ представить группу связанных классов, имеющих общую функциональность. Создав абстрактный класс, определяющий общие методы и свойства, вы сможете избежать дублирования кода и сделать свой код более модульным и удобным для сопровождения.

2. Используйте абстрактные методы для определения общего поведения: Абстрактные методы полезны, когда вы хотите обеспечить определенное поведение для нескольких подклассов. Определив абстрактный метод в абстрактном классе, вы можете гарантировать, что все подклассы реализуют одно и то же поведение по-своему.

3. Не злоупотребляйте абстрактными классами и методами: Хотя абстрактные классы и методы могут быть мощными инструментами, важно не злоупотреблять ими. В целом, создавать абстрактный класс или метод следует только в том случае, если у вас есть четкая причина для этого. Чрезмерное использование может привести к излишней сложности и усложнить сопровождение кода.

4. Соблюдайте соглашения об именовании: При присвоении имен абстрактным классам и методам важно следовать стандартным соглашениям об именовании в Java. Абстрактные классы следует называть абстрактным существительным (например, "Shape"), а абстрактные методы - глаголом (например, "draw").

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

https://www.appsdeveloperblog.com/17-abstract-classes-and-methods-in-java/

👉
Настройка и мониторинг Java приложений

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

Речь пойдет о бизнес-приложениях с одним сервером Java-приложения и одним сервером базы данных PostgreSQL, в каждом из которых одновременно работают от 500 до 2000 сотрудников компании. Приложения разработаны на базе открытой и бесплатной платформы lsFusion (пример приложения), но большинство описанных проблем и настроек не являются специфическими именно для нее.

https://habr.com/ru/companies/lsfusion/articles/741978/

👉
Можно ли хранить данные в сервлете?

По спецификации наследник интерфейса Servlet реализует распределяемое (distributable) web-приложение. Значит, при необходимости, очередь поступающих запросов может быть разделена между несколькими экземплярами сервлета, возможно даже размещенными на отдельных серверах внутри кластера.

Чтобы обеспечить серверам приложений такую возможность, на сервлет накладывается ряд ограничений. Одно из них – сервлет не должен хранить пользовательское состояние в своих полях.

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

Для хранения данных между запросами существует специальный объект – сессия (класс HttpSession). Если будет принято решение масштабировать сервер, произойдет репликация сессии. При репликации все актуальные данные сессии переносятся на другие сервера кластера в сериализованном виде. Отсюда другое требование – данные в сессии должны быть сериализуемыми.

👉
🤝 Ты хочешь остаться разработчиком среднего уровня или стать сеньором?

Пройди тест по Java от OTUS

Проверь насколько хорошо ты знаешь Java и готов к прокачке!

Ответишь — пройдешь на продвинутый курс "Java Developer. Advanced" от OTUS по специальной цене, а также получишь доступ к записям открытых уроков курса.

👉 ПРОЙТИ ТЕСТ: https://vk.cc/cveYu7

🎫 Курс можно приобрести в рассрочку

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Media is too big
VIEW IN TELEGRAM
Работа с регулярными выражениями на Java

👉
Как ограничить upcasting типа-параметра?

Задача: запретить этому методу принимать параметры разных типов:
<T> void pair(T a, T b) {}

То есть, нужно разрешить вызывать pair(Foo, Foo), но запретить pair(Foo, Bar).

Upcasting – приведение к типу-родителю. String → Object, Integer → Number.

Дело в том, что у любых двух классов есть общий предок: как минимум Object. Если вызвать этот метод с параметрами String и Boolean – согласно правилам вычисления типа-границы, параметр T будет стерт в Object.

Использовать super тоже не поможет: для этого нужно знать заранее, какой именно тип будет передаваться.

Фокус в том, что на этапе компиляции это невозможно. Объект любого типа всегда является объектом типа-родителя (отношение is a). Это фундаментальное правило ООП, которое невозможно нарушить. К тому же, подобный метод нарушал бы принцип подстановки Лисков.

Единственная возможность добиться желаемого поведения – с помощью getClass() сравнивать классы объектов в рантайме.


👉
This media is not supported in your browser
VIEW IN TELEGRAM
GitHub Copilot Chat доступен в JetBrains IDE!

Это огромный прирост производительности для Java-разработчиков, который поможет вам оставаться в потоке во время работы над кодом, исправления ошибок, написания тестов или использования нового API!

https://github.blog/changelog/2024-03-07-github-copilot-chat-general-availability-in-jetbrains-ide/

👉
Реально ли с нуля создать приложение без опыта в программировании?
Да! 🤩

На бесплатном курсе Нетологии «Основы разработки на Java» вы за 4 занятия познакомитесь с основами синтаксиса Java, одного из самых популярных языков программирования, и напишете на нём свой первый код.
Вас ждёт много практики:

☑️настроите Java и создадите консольное приложение для загрузки фото с сайта NASA;

☑️интегрируете это приложение в Telegram-бота;

☑️запустите приложение в облаке и создадите хранилище данных.

Курс стартует 14 марта. Регистрируйтесь, чтобы получить представление об устройстве Java и понять, подходит ли вам профессия разработчика

Реклама. ООО "Нетология". Erid LatgBjiNQ
Ресурс для изучения Spring

Мы хотим, чтобы этот репозиторий стал ресурсом, где люди смогут найти лучшие ресурсы для изучения Spring. Мы ищем лучшие книги, курсы, видео и всё остальное, что вы нашли полезным в изучении Spring.

https://github.com/spring-office-hours/resources-learning-spring

👉
Android Studio 4.2 Development Essentials
Neil Smyth (2021)

Beginning with the basics, this book provides an outline of the steps necessary to set up an Android development and testing environment. An overview of Android Studio is included covering areas such as tool windows, the code editor and the Layout Editor tool. An introduction to the architecture of Android is followed by an in-depth look at the design of Android applications and user interfaces using the Android Studio environment.

Скачать

👉
Можно ли удалять части API?

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

Это масштабная и сложная проблема. В её решении помогает в первую очередь семантическое версионирование и механизм прекращения поддержки (deprecation).

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

Ранее мы уже писали об особенностях использования . Собираясь удалить компонент API, нужно прежде отметить его (forRemoval=true).

Обычно разработчики библиотеки дают пользователю запас времени на миграцию. Они предоставляют Deprecation policy – документ, в котором дают обещание, сколько времени (или версий) после появления компонент всё еще не будет удален.

Для поиска в коде использования deprecated компонентов комплект JDK содержит утилиту jdeprscan. Утилита javadoc собирает список устаревших компонентов в отдельную страницу deprecated-list.html.

👉
👩‍💻 Как собрать дамп памяти в Eclipse Memory Analyzer и провести экспресс анализ OutOfMememory — практический урок для разработчиков и тестировщиков на Java

🎙Спикер Александр Царев — Tech Lead в Сбере и кандидат технических наук.

На вебинаре вы:

- узнаете, что такое дамп памяти, как его собрать и какие инструменты существуют для этих целей;
- познакомитесь с инструментом Eclipse Memory Analyzer, с помощью которого можно исследовать дампы памяти;
- получите ответы на все свои вопросы.

📢📢 Занятие пройдёт 19 марта в 20:00 мск и будет приурочено к старту курса «Java Developer. Advanced». Доступна рассрочка на обучение!

➡️ Пройдите короткий тест прямо сейчас, чтобы занять место на открытом уроке и получить запись: https://vk.cc/cvq70h

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576