Java библиотека – Telegram
Java библиотека
31.5K subscribers
2.38K photos
91 videos
10 files
2.19K links
Книги, статьи, мемы и многое другое для Java программиста!

По сотрудничеству и рекламе: @NadikaKir

Канал в перечне РКН: https://vk.cc/cJrT4A

Мы на бирже: https://telega.in/c/javalib/

Сообщество VK https://vk.com/javatutorial
Download Telegram
Какие существуют особенности использования вложенных классов: статических и внутренних? В чем заключается разница между ними?

• Вложенные классы могут обращаться ко всем членам обрамляющего класса, в том числе и приватным.
• Для создания объекта статического вложенного класса объект внешнего класса не требуется.
• Из объекта статического вложенного класса нельзя обращаться к не статическим членам обрамляющего класса напрямую, а только через ссылку на экземпляр внешнего класса.
• Обычные вложенные классы не могут содержать статических методов, блоков инициализации и классов. Статические вложенные классы - могут.
• В объекте обычного вложенного класса хранится ссылка на объект внешнего класса. Внутри статической такой ссылки нет. Доступ к экземпляру обрамляющего класса осуществляется через указание .this после его имени. Например: Outer.this.
👍17🔥21
Java Persistence API и Hibernate (2017) PDF

Java Persistence – механизм, помогающий обеспечить сохранность данных после завершения программы, что является главной чертой современных приложений. Hibernate – наиболее популярный инструмент Java для работы с базами данных, предоставляющим автоматическое прозрачное объектно-реляционное отображение, что значительно упрощает работу с SQL-базами данных в приложениях Java. Данная книга описывает разработку приложения с использованием Hibernate, связывая воедино сотни отдельных примеров. Вы сразу окунетесь в богатую моделями программирования среду Hibernate, которая основывается на отображениях, запросах, стратегиях выборки, транзакциях, диалогах, кэшировании и многом другом.

Здесь вы найдете хорошо иллюстрированное обсуждение лучших методик проектирования баз данных и методов оптимизации. Во втором издании авторы подробно описывают версию Hibernate 5 совместимый со стандартом Java Persistence 2.1.
8👍5🔥5
Что такое «локальный класс»? Каковы его особенности?

Local inner class
(Локальный класс) - это вложенный класс, который может быть декларирован в любом блоке, в котором разрешается декларировать переменные. Как и простые внутренние классы (Member inner class) локальные классы имеют имена и могут использоваться многократно. Как и анонимные классы, они имеют окружающий их экземпляр только тогда, когда применяются в нестатическом контексте.

Локальные классы имеют следующие особенности:

• Видны только в пределах блока, в котором объявлены;
• Не могут быть объявлены как private/public/protected или static;
• Не могут иметь внутри себя статических объявлений методов и классов, но могут иметь финальные статические поля, проинициализированные константой;
• Имеют доступ к полям и методам обрамляющего класса;
• Могут обращаться к локальным переменным и параметрам метода, если они объявлены с модификатором final.
👍22🔥1
Practical Spring Cloud Function: Developing Cloud-Native Functions for Multi-Cloud and Hybrid-Cloud Environments (2022) PDF, ePUB

Unlike other resources that target only programming communities, this book targets both programming and business communities. With programming models shifting more towards no-code and low-code, citizen programmers from the business side will welcome this book as a guide for how to design and optimize their information pipeline while lowering costs for infrastructure. Programmers, on the other hand, will welcome this book's business-centric programming view, which will get them a step closer to fulfilling real business requirements.

Practical Spring Cloud Function touches on the themes of portability, scalability, high performance and high availability. Each theme is explored via a real enterprise use case and code. The use cases target industries including energy (oil pipeline sensors), automotive (event-driven connected vehicles), and retail (conversational AI).
👍132
👩‍💻 Как можно создать потоки в Java?

Автор перечислит и покажет пять способов создать и запустить потоки (thread) в Java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥31
Computer Science: Основы программирования на Java, ООП, алгоритмы и структуры данных (2018) PDF

Преподаватели Принстонского университета Роберт Седжвик и Кевин Уэйн создали универсальное введение в Computer Science на языке Java, которое идеально подходит как студентам, так и профессионалам. Вы начнете с основ, освоите современный курс объектно-ориентированного программирования, и перейдете к концепциям более высокого уровня: алгоритмам и структурам данных, теории вычислений и архитектуре компьютеров.

И главное - вся теория рассматривается на практических и ярких примерах: прикладная математика, физика и биология, числовые методы, визуализация данных, синтез звука, обработка графики, финансовое моделирование и многое другое.
👍12🔥12
Что такое «анонимные классы»? Где они применяются?

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

Анонимные классы имеют несколько ограничений:

• Их использование разрешено только в одном месте программы - месте его создания;
• Применение возможно только в том случае, если после порождения экземпляра нет необходимости на него ссылаться;
• Реализует лишь методы своего интерфейса или суперкласса, т.е. не может объявлять каких-либо новых методов, так как для доступа к ним нет поименованного типа.

Анонимные классы обычно применяются для:

• создания объекта функции (function object), например, реализация интерфейса Comparator;
• создания объекта процесса (process object), такого как экземпляры классов Thread, Runnable и подобных;
• в статическом методе генерации;
• инициализации открытого статического поля final, которое соответствует сложному перечислению типов, когда для каждого экземпляра в перечислении требуется отдельный подкласс.
👍22🔥2
Java для всех (2020) PDF

Java — один из самых популярных и востребованных языков в мире. Алексей Васильев — автор многочисленных компьютерных бестселлеров — познакомит вас со всем необходимым для эффективной работы с этим языком. Вы изучите базовые типы, управляющие инструкции, особенности описания классов и объектов в Java, создание интерфейсов, лямбда-выражения, обобщенные классы. Каждая глава содержит примеры кода, которые в свою очередь снабжены как построчными пояснениями, так и подробным разбором примера программы. Примеры, используемые в этой книге, пригодятся вам в дальнейшей работе с языком Java. Программирование — это нестрашно! Даже если у вас нет никакого опыта, вы с легкостью освоите Java, воспользовавшись уникальной методикой Алексея Васильева, и перейдете на профессиональный уровень.
👍195
Каким образом из вложенного класса получить доступ к полю внешнего класса?

Статический вложенный класс имеет прямой доступ только к статическим полям обрамляющего класса.

Простой внутренний класс, может обратиться к любому полю внешнего класса напрямую. В случае, если у вложенного класса уже существует поле с таким же литералом, то обращаться к такому полю следует через ссылку на его экземпляр. Например: Outer.this.field.
👍19
Learning Recursion (2023) True PDF

In this book, Alvin Alexander brings his well-known, simple teaching style to the topic of recursion, also known as recursive programming. In the book you’ll learn how to write functions that call themselves. He covers the basics of recursion, and then covers the important topic of tail recursion.

The source code examples are written with the Scala 3 programming language, but he doesn’t use any special Scala techniques, so the code should be readable if you know other languages like C, C#, Java, Kotlin, Python, etc.

You’re about to jump into a series of lessons on recursive programming. Please note that some of these lessons may be overkill for some people. Basically what I do in the following chapters is introduce recursion in several different ways — for example, using code, using a conversation between two developers, and using images — so if one of those ways works for you, great!
👍85
Как работает сборщик мусора?

Механизм сборки мусора
- это процесс освобождения места в куче, для возможности добавления новых объектов.

Объекты создаются посредством оператора new, тем самым присваивая объекту ссылку. Для окончания работы с объектом достаточно просто перестать на него ссылаться, например, присвоив переменной ссылку на другой объект или значение null; прекратить выполнение метода, чтобы его локальные переменные завершили свое существование естественным образом. Объекты, ссылки на которые отсутствуют, принято называть мусором (garbage), который будет удален.

Виртуальная машина Java, применяя механизм сборки мусора, гарантирует, что любой объект, обладающий ссылками, остается в памяти — все объекты, которые недостижимы из исполняемого кода, ввиду отсутствия ссылок на них, удаляются с высвобождением отведенной для них памяти. Точнее говоря, объект не попадает в сферу действия процесса сборки мусора, если он достижим посредством цепочки ссылок, начиная с корневой (GC Root) ссылки, т.е. ссылки, непосредственно существующей в выполняемом коде.

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

Мусор собирается системой автоматически, без вмешательства пользователя или программиста, но это не значит, что этот процесс не требует внимания вовсе. Необходимость создания и удаления большого количества объектов существенным образом сказывается на производительности приложений и, если быстродействие программы является важным фактором, следует тщательно обдумывать решения, связанные с созданием объектов, — это, в свою очередь, уменьшит и объем мусора, подлежащего утилизации.
👍383
Final класс

Нельзя расширять класс, объявленный как final. Проще говоря, никакой класс не может наследоваться от данного.

Прекрасным примером final класса в JDK является String. Первый шаг к созданию неизменяемого класса — пометить его как final, и тогда нельзя будет его расширить.
15👍11
Java: быстрый старт (2021) PDF

Всегда хотели научиться программировать на Java, но не знаете, с чего начать? Или хотите быстро перейти с другого языка на Java? Уже перепробовали множество книг и курсов, но ничего не подходит? Серия «Быстрый старт» — отличное решение, и вот почему: сложные понятия разбиты на простые шаги — вы сможете освоить язык Java, даже если никогда раньше не занимались программированием; все фундаментальные концепции подкреплены реальными примерами; вы получите полное представление о Java: концепции объектно-ориентированного программирования, средства обработки ошибок, работа с файлами, лямбда-выражения и т. д.; в конце книги вас ждет интересный проект, который поможет усвоить полученные знания.
👍101
Что такое «пул строк»?

Пул строк
– это набор строк, хранящийся в Heap.

• Пул строк возможен благодаря неизменяемости строк в Java и реализации идеи интернирования строк;
• Пул строк помогает экономить память, но по этой же причине создание строки занимает больше времени;
• Когда для создания строки используются ", то сначала ищется строка в пуле с таким же значением, если находится, то просто возвращается ссылка, иначе создается новая строка в пуле, а затем возвращается ссылка на неё;
• При использовании оператора new создаётся новый объект String. Затем при помощи метода intern() эту строку можно поместить в пул или же получить из пула ссылку на другой объект String с таким же значением;
• Пул строк является примером паттерна «Приспособленец» (Flyweight).
👍27
Taming Thymeleaf: Practical guide to building a webapplication with Spring Boot and Thymeleaf (2022) PDF

Learn to build a production-grade web application with Spring Boot and Thymeleaf with this book.

Taming Thymeleaf will learn you about writing web applications with Spring Boot and Thymeleaf in no-time. The book teaches you step-by-step how to get started with those technologies and build a fully fledged web application including security, validation, internationalization, testing, ...

Thymeleaf is an amazing technology for building server-side HTML using the Java eco-system. Combined with Spring Boot, it is really a killer combo for a productive development environment. Learn how to structure your code so your application can evolve for years to come. As HTML will always be there, you can do this without having to re-write your frontend every six months for the latest javanoscript framework.
👍10😁42🔥1🤩1
👩‍💻 Java. Enum на примерах.

В данном видео автор рассказывает о Enum в языке программирования Java. Показывает разные варианты применения Enum на примерах.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥1🤩1
Java. Решение практических задач (2021) PDF, DJVU

Рассмотрены задачи, встречающиеся в повседневной работе любого разработчика в среде Java. Приведено более 300 приложений, содержащих свыше 1000 примеров. Продемонстрированы эффективные практические приемы и технические решения с учетом сложности кода, производительности, удобочитаемости и многого другого.

Рассмотрены строки, числа, объекты, массивы, коллекции и структуры данных, работа с датой и временем. Приведены задачи на логический вывод типов, а также файловый ввод/вывод. Представлены задачи, связанные с API рефлексии Java. Особое внимание уделено программированию в функциональном стиле, задачам с привлечением конкурентности, правилам работы с классом Optional, а также API HTTP-клиента и API протокола WebSocket.
👍20🔥52
Что произойдет со сборщиком мусора, если выполнение метода finalize() требует ощутимо много времени, или в процессе выполнения будет выброшено исключение?

Непосредственно вызов finalize() происходит в отдельном потоке Finalizer (java.lang.ref.Finalizer.FinalizerThread), который создаётся при запуске виртуальной машины (в статической секции при загрузке класса Finalizer). Методы finalize() вызываются последовательно в том порядке, в котором были добавлены в список сборщиком мусора. Соответственно, если какой-то finalize() зависнет, он подвесит поток Finalizer, но не сборщик мусора. Это в частности означает, что объекты, не имеющие метода finalize(), будут исправно удаляться, а вот имеющие будут добавляться в очередь, пока поток Finalizer не освободится, не завершится приложение или не кончится память.

То же самое применимо и выброшенным в процессе finalize() исключениям: метод runFinalizer() у потока Finalizer игнорирует все исключения выброшенные в момент выполнения finalize(). Таким образом возникновение исключительной ситуации никак не скажется на работоспособности сборщика мусора.
👍20🔥3
Java Concurrency на практике (2020) PDF, DJVU

Потоки являются фундаментальной частью платформы Java. Многоядерные процессоры — это обыденная реальность, а эффективное использование параллелизма стало необходимым для создания любого высокопроизводительного приложения. Улучшенная виртуальная машина Java, поддержка высокопроизводительных классов и богатый набор строительных блоков для задач распараллеливания стали в свое время прорывом в разработке параллельных приложений. В «Java Concurrency на практике» сами создатели прорывной технологии объясняют не только принципы работы, но и рассказывают о паттернах проектирования.
👍16🔥2