Forwarded from Библиотека Java разработчика
Что такое абстрактные классы и методы в Java
Абстрагирование – это процесс, в ходе которого от пользователя скрываются многие детали реализации, а предоставляются только те детали, которые действительно важны. Так удаётся сфокусироваться на том, что делает объект, а не как он это делает.
В Java абстрактные классы и методы – это основные инструменты для реализации абстракций. Абстрактные классы служат шаблонами для создания субклассов, а абстрактные методы можно сравнить с чертежами, описывающими поведение этих субклассов.
Если вы новичок в Java или хотите освежить знания о том, чем отличаются абстрактные классы или интерфейсы, то можете почитать руководство и на эту тему: Difference Between Interface and Abstract class in Java.
Rus https://habr.com/ru/companies/piter/articles/738508/
Eng https://www.appsdeveloperblog.com/17-abstract-classes-and-methods-in-java/
👉@BookJava
Абстрагирование – это процесс, в ходе которого от пользователя скрываются многие детали реализации, а предоставляются только те детали, которые действительно важны. Так удаётся сфокусироваться на том, что делает объект, а не как он это делает.
В Java абстрактные классы и методы – это основные инструменты для реализации абстракций. Абстрактные классы служат шаблонами для создания субклассов, а абстрактные методы можно сравнить с чертежами, описывающими поведение этих субклассов.
Если вы новичок в Java или хотите освежить знания о том, чем отличаются абстрактные классы или интерфейсы, то можете почитать руководство и на эту тему: Difference Between Interface and Abstract class in Java.
Rus https://habr.com/ru/companies/piter/articles/738508/
Eng https://www.appsdeveloperblog.com/17-abstract-classes-and-methods-in-java/
👉@BookJava
👍4
Think Java: How to Think Like a Computer Scientist
Автор: Allen B. Downey (2020)
Данная книга написана для людей с небольшим опытом или вообще без опыта программирования. Цель книги — не просто научить читателя программировать на Java, но и помочь начать мыслить как специалист в области информатики. Каждая краткая глава охватывает материал, предназначенный для изучения за одну неделю и включает в себя упражнения, которые помогут вам практиковаться.
Во время чтения книги вы:
✔️Начнете изучать сложные темы небольшими шагами с примерами;
✔️Поймёте, как правильно формулировать задачи, творчески думать о решениях и писать чистый читабельный код;
✔️Определите, какие методы разработки больше вам подходят и попрактикуетесь в отладке программ;
✔️Изучите связи между вводом и выводом, классами и методами, строками и массивами;
✔️Поработаете над упражнениями.
Скачать
👉 @java_360
Автор: Allen B. Downey (2020)
Данная книга написана для людей с небольшим опытом или вообще без опыта программирования. Цель книги — не просто научить читателя программировать на Java, но и помочь начать мыслить как специалист в области информатики. Каждая краткая глава охватывает материал, предназначенный для изучения за одну неделю и включает в себя упражнения, которые помогут вам практиковаться.
Во время чтения книги вы:
✔️Начнете изучать сложные темы небольшими шагами с примерами;
✔️Поймёте, как правильно формулировать задачи, творчески думать о решениях и писать чистый читабельный код;
✔️Определите, какие методы разработки больше вам подходят и попрактикуетесь в отладке программ;
✔️Изучите связи между вводом и выводом, классами и методами, строками и массивами;
✔️Поработаете над упражнениями.
Скачать
👉 @java_360
👍1
Forwarded from Библиотека Java разработчика
Адаптер (Adapter) — объект, обеспечивающий взаимодействие двух других объектов, один из которых использует, а другой предоставляет несовместимый с первым интерфейс.
Мост (Bridge) — структура, позволяющая изменять интерфейс обращения и интерфейс реализации класса независимо.
Компоновщик (Composite) — объект, который объединяет в себе объекты, подобные ему самому.
Декоратор (Decorator) — класс, расширяющий функциональность другого класса без использования наследования.
Фасад (Facade) — объект, который абстрагирует работу с несколькими классами, объединяя их в единое целое.
Приспособленец (Flyweight) — это объект, представляющий себя как уникальный экземпляр в разных местах программы, но по факту не являющийся таковым.
Заместитель (Proxy) — объект, который является посредником между двумя другими объектами, и который реализует/ограничивает доступ к объекту, к которому обращаются через него.
👉@BookJava
Мост (Bridge) — структура, позволяющая изменять интерфейс обращения и интерфейс реализации класса независимо.
Компоновщик (Composite) — объект, который объединяет в себе объекты, подобные ему самому.
Декоратор (Decorator) — класс, расширяющий функциональность другого класса без использования наследования.
Фасад (Facade) — объект, который абстрагирует работу с несколькими классами, объединяя их в единое целое.
Приспособленец (Flyweight) — это объект, представляющий себя как уникальный экземпляр в разных местах программы, но по факту не являющийся таковым.
Заместитель (Proxy) — объект, который является посредником между двумя другими объектами, и который реализует/ограничивает доступ к объекту, к которому обращаются через него.
👉@BookJava
👍2
Java to Kotlin: A Refactoring Guidebook
Авторы: Duncan McGregor, Nat Pryce (2021)
Книга учит миграции кода с Java на Kotlin. Получаемый код проще, выразительнее и его легче изменять. К концу чтения книги вы будете уверенно рефакторить код, научитесь писать на Kotlin приложения с нуля и управлять кодовой базой из двух языков по мере ее развития с течением времени.
Скачать
👉 @java_360
Авторы: Duncan McGregor, Nat Pryce (2021)
Книга учит миграции кода с Java на Kotlin. Получаемый код проще, выразительнее и его легче изменять. К концу чтения книги вы будете уверенно рефакторить код, научитесь писать на Kotlin приложения с нуля и управлять кодовой базой из двух языков по мере ее развития с течением времени.
Скачать
👉 @java_360
👍2
Forwarded from Библиотека Java разработчика
Media is too big
VIEW IN TELEGRAM
Java. Многопоточность. Как устроить Deadlock
В данном видео рассказывается о том, что такое Deadlock, и как намеренно создать взаимную блокировку потоков на языке программирования Java.
источник
👉@BookJava
В данном видео рассказывается о том, что такое Deadlock, и как намеренно создать взаимную блокировку потоков на языке программирования Java.
источник
👉@BookJava
👍3
Java: A Beginner's Guide, Eighth Edition
Herbert Schildt (2019)
Очередное издание бестселлера, обновленное с учетом всех новинок Java Platform, Standard Edition 9 (Java SE 9), позволит читателям в кратчайшие сроки приступить к программированию на языке Java. Опытнейший автор Герберт Шилдт уже в начале книги познакомит читателей с тем, как создаются, компилируются и выполняются программы, написанные на Java. Далее обсуждаются ключевые слова, синтаксис и языковые конструкции, составляющие основу Java. Также будут рассмотрены темы повышенной сложности, включая многопоточное программирование, обобщения, лямбда-выражения, Swing, JavaFX и ключевое нововведение Java SE 9 - модули. В качестве бонуса читателей ждет знакомство с JShell - новой интерактивной оболочкой Java.
Скачать
👉 @java_360
Herbert Schildt (2019)
Очередное издание бестселлера, обновленное с учетом всех новинок Java Platform, Standard Edition 9 (Java SE 9), позволит читателям в кратчайшие сроки приступить к программированию на языке Java. Опытнейший автор Герберт Шилдт уже в начале книги познакомит читателей с тем, как создаются, компилируются и выполняются программы, написанные на Java. Далее обсуждаются ключевые слова, синтаксис и языковые конструкции, составляющие основу Java. Также будут рассмотрены темы повышенной сложности, включая многопоточное программирование, обобщения, лямбда-выражения, Swing, JavaFX и ключевое нововведение Java SE 9 - модули. В качестве бонуса читателей ждет знакомство с JShell - новой интерактивной оболочкой Java.
Скачать
👉 @java_360
👍1
Getting Skilled with Java: Learn Java Programming from Scratch with Realistic Applications and Problem Solving Programmes
Автор: M Rashid Raza (2022)
Эта книга охватывает все, что вам нужно знать о программировании на Java. Книга демонстрирует настройку среды разработки и переменных окружения, установку JDK, написание программ с использованием ключевых возможностей Java, устранение неполадок, развертывание приложений и их комплектацию. Каждый из аспектов программирования объясняется в доступной для понимания форме. В конце каждой главы в книге приведены многочисленные упражнения и задачи по программированию для улучшения навыков кодирования и решения проблем.
Скачать
👉 @java_360
Автор: M Rashid Raza (2022)
Эта книга охватывает все, что вам нужно знать о программировании на Java. Книга демонстрирует настройку среды разработки и переменных окружения, установку JDK, написание программ с использованием ключевых возможностей Java, устранение неполадок, развертывание приложений и их комплектацию. Каждый из аспектов программирования объясняется в доступной для понимания форме. В конце каждой главы в книге приведены многочисленные упражнения и задачи по программированию для улучшения навыков кодирования и решения проблем.
Скачать
👉 @java_360
👍1
Practical Quantum Computing for Developers
Автор: Johan Vos (2022)
В этой книге рассматриваются такие основные темы, как физические компоненты квантового компьютера: кубиты, запутанность, логические элементы, схемы и то, чем они отличаются от традиционного компьютера. Кроме того, в "Практических квантовых вычислениях для разработчиков" обсуждаются квантовые вычисления в облаке с использованием IBM Q Experience, включая: композитор, квантовые оценки, эксперименты, схемы, симуляторы, реальные квантовые устройства и многое другое. Вы сможете проводить эксперименты в облаке на реальном квантовом устройстве.
В этой книге показано, как выполнять квантовое программирование с помощью QISKit, Python SDK и других API, таких как QASM. Вы научитесь писать код на этих языках и выполнять его на симуляторах (локальных или удаленных) или на реальном квантовом компьютере, предоставляемом IBM Q Experience
Скачать
👉 @java_360
Автор: Johan Vos (2022)
В этой книге рассматриваются такие основные темы, как физические компоненты квантового компьютера: кубиты, запутанность, логические элементы, схемы и то, чем они отличаются от традиционного компьютера. Кроме того, в "Практических квантовых вычислениях для разработчиков" обсуждаются квантовые вычисления в облаке с использованием IBM Q Experience, включая: композитор, квантовые оценки, эксперименты, схемы, симуляторы, реальные квантовые устройства и многое другое. Вы сможете проводить эксперименты в облаке на реальном квантовом устройстве.
В этой книге показано, как выполнять квантовое программирование с помощью QISKit, Python SDK и других API, таких как QASM. Вы научитесь писать код на этих языках и выполнять его на симуляторах (локальных или удаленных) или на реальном квантовом компьютере, предоставляемом IBM Q Experience
Скачать
👉 @java_360
👍2
Core Java, Volume I: Fundamentals
Cay S. Horstmann (2022)
Core Java, Volume I: Fundamentals, Twelfth Edition - это окончательное руководство по написанию надежного и удобного кода. Какую бы версию Java вы ни использовали - до Java 17 включительно - эта книга поможет вам достичь глубокого и практического понимания языка и API. На сотнях реалистичных примеров Кей С. Хорстманн показывает наиболее мощные и эффективные способы выполнения работы.
Эта книга предназначена для читателей, уже имеющих опыт программирования и желающих получить глубокое представление о языке и платформе Java. Вы подробно узнаете обо всех возможностях языка, включая последние усовершенствования в Java 17. Прикладные главы и примеры кода охватывают самые современные возможности обширной библиотеки Java. На протяжении 25 лет Core Java готовит серьезных программистов к серьезному программированию на Java.
Скачать
👉 @java_360
Cay S. Horstmann (2022)
Core Java, Volume I: Fundamentals, Twelfth Edition - это окончательное руководство по написанию надежного и удобного кода. Какую бы версию Java вы ни использовали - до Java 17 включительно - эта книга поможет вам достичь глубокого и практического понимания языка и API. На сотнях реалистичных примеров Кей С. Хорстманн показывает наиболее мощные и эффективные способы выполнения работы.
Эта книга предназначена для читателей, уже имеющих опыт программирования и желающих получить глубокое представление о языке и платформе Java. Вы подробно узнаете обо всех возможностях языка, включая последние усовершенствования в Java 17. Прикладные главы и примеры кода охватывают самые современные возможности обширной библиотеки Java. На протяжении 25 лет Core Java готовит серьезных программистов к серьезному программированию на Java.
Скачать
👉 @java_360
👍3
Core Java, Vol. II-Advanced Features
Cay S. Horstmann (2022)
Core Java является ведущим учебником и справочником для опытных программистов, которые хотят писать надежный Java-код для реальных приложений. Теперь Core Java, Volume II: Advanced Features, Twelfth Edition пересмотрен с учетом новых возможностей и усовершенствований, появившихся в выпуске Java 17 для долгосрочной поддержки. Как всегда, все главы полностью обновлены, устаревшие материалы удалены, а новые API подробно рассмотрены.
В этом томе основное внимание уделено продвинутым темам, которые необходимо знать программисту для профессиональной разработки программного обеспечения, и включены авторитетные материалы по корпоративному программированию, сетям, базам данных, безопасности, модулизации, интернационализации, обработке кода и нативным методам, а также полные главы по API Streams, XML и Date and Time. Кроме того, в главе Advanced Swing and Graphics рассматриваются методы, применимые как к пользовательским интерфейсам на стороне клиента, так и к генерации графики и изображений на стороне сервера.
Скачать
👉 @java_360
Cay S. Horstmann (2022)
Core Java является ведущим учебником и справочником для опытных программистов, которые хотят писать надежный Java-код для реальных приложений. Теперь Core Java, Volume II: Advanced Features, Twelfth Edition пересмотрен с учетом новых возможностей и усовершенствований, появившихся в выпуске Java 17 для долгосрочной поддержки. Как всегда, все главы полностью обновлены, устаревшие материалы удалены, а новые API подробно рассмотрены.
В этом томе основное внимание уделено продвинутым темам, которые необходимо знать программисту для профессиональной разработки программного обеспечения, и включены авторитетные материалы по корпоративному программированию, сетям, базам данных, безопасности, модулизации, интернационализации, обработке кода и нативным методам, а также полные главы по API Streams, XML и Date and Time. Кроме того, в главе Advanced Swing and Graphics рассматриваются методы, применимые как к пользовательским интерфейсам на стороне клиента, так и к генерации графики и изображений на стороне сервера.
Скачать
👉 @java_360
❤1👍1
Forwarded from Библиотека Java разработчика
Как работает инъекция прототипа в синглтон?
Допустим ситуацию, когда в singleton-компонент внедряется зависимость со скоупом prototype – когда будет создан её объект?
Если просто добавить к определению бина аннотацию
Примитивный способ получать новый объект при каждом обращении – отказаться от
Воспользоваться автоматическим внедрением зависимостей можно через внедрение метода (паттерн «Команда»). Автовайрится не сам объект, а производящий его метод.
Более красивый декларативный способ – правильно настроить определение бина. В аннотации
Лучший способ разобраться со скоупами – прочитать официальный гайд с иллюстрациями, и поэкспериментировать на практике. Для начала попробуйте пример с изображения ниже.
👉@BookJava
Допустим ситуацию, когда в singleton-компонент внедряется зависимость со скоупом prototype – когда будет создан её объект?
Если просто добавить к определению бина аннотацию
@Scope(SCOPE_PROTOTYPE
), и использовать этот бин в синглтоне через аннотацию @Autowired
– будет создан только один объект. Потому что синглтон создается только однажды, и обращение к прототипу случится тоже однажды при его создании (при внедрении зависимости).Примитивный способ получать новый объект при каждом обращении – отказаться от
@Autowired
, и доставать его из контекста вручную. Для этого нужно вызывать context.getBean(MyPrototype.class).Воспользоваться автоматическим внедрением зависимостей можно через внедрение метода (паттерн «Команда»). Автовайрится не сам объект, а производящий его метод.
Более красивый декларативный способ – правильно настроить определение бина. В аннотации
@Scope
кроме самого scopeName
доступен второй параметр – proxyMode
. По умолчанию его значение NO – прокси не создается. Но если указать INTERFACES
или TARGET_CLASS
, то под @Autowired
будет внедряться не сам объект, а сгенерированный фреймворком прокси. И когда проксируемый бин имеет скоуп prototype, то объект внутри прокси будет пересоздаваться при каждом обращении.Лучший способ разобраться со скоупами – прочитать официальный гайд с иллюстрациями, и поэкспериментировать на практике. Для начала попробуйте пример с изображения ниже.
👉@BookJava
👍3