Контейнер сервлетов — программа, представляющая собой сервер, который занимается системной поддержкой сервлетов и обеспечивает их жизненный цикл в соответствии с правилами, определёнными в спецификациях. Может работать как полноценный самостоятельный веб-сервер, быть поставщиком страниц для другого веб-сервера, или интегрироваться в Java EE сервер приложений.
Контейнер сервлетов обеспечивает обмен данными между сервлетом и клиентами, берёт на себя выполнение таких функций, как создание программной среды для функционирующего сервлета, идентификацию и авторизацию клиентов, организацию сессии для каждого из них.
Наиболее известные реализации контейнеров сервлетов:
☕️ Apache Tomcat
☕️ Jetty
☕️ JBoss
☕️ WildFly
☕️ GlassFish
☕️ IBM WebSphere
☕️ Oracle Weblogic
Контейнер сервлетов обеспечивает обмен данными между сервлетом и клиентами, берёт на себя выполнение таких функций, как создание программной среды для функционирующего сервлета, идентификацию и авторизацию клиентов, организацию сессии для каждого из них.
Наиболее известные реализации контейнеров сервлетов:
☕️ Apache Tomcat
☕️ Jetty
☕️ JBoss
☕️ WildFly
☕️ GlassFish
☕️ IBM WebSphere
☕️ Oracle Weblogic
#вопросы_с_собеседований
В чём заключается разница между методами start() и run()?
В чём заключается разница между методами start() и run()?
Несмотря на то, что start() вызывает метод run() внутри себя, это не то же самое, что просто вызов run(). Если run() вызывается как обычный метод, то он вызывается в том же потоке и никакой новый поток не запускается, как это происходит в случае, когда вы вызываете метод start().
#вопросы_с_собеседований
Как из одного сервлета вызвать другой сервлет?
Как из одного сервлета вызвать другой сервлет?
Для вызова сервлета из того же приложения необходимо использовать механизм внутренней коммуникации сервлетов (inter-servlet communication mechanisms) через вызовы методов RequestDispatcher:
☕️ forward() - передаёт выполнение запроса в другой сервлет;
☕️ include() - предоставляет возможность включить результат работы другого сервлета в возвращаемый ответ.
Если необходимо вызывать сервлет принадлежащий другому приложению, то использовать RequestDispatcher уже не получится, т.к. он определен только для текущего приложения. Для подобных целей необходимо использовать метод ServletResponse - sendRedirect() которому предоставляется полный URL другого сервлета. Для передачи данных между сервлетами можно использовать cookies.
☕️ forward() - передаёт выполнение запроса в другой сервлет;
☕️ include() - предоставляет возможность включить результат работы другого сервлета в возвращаемый ответ.
Если необходимо вызывать сервлет принадлежащий другому приложению, то использовать RequestDispatcher уже не получится, т.к. он определен только для текущего приложения. Для подобных целей необходимо использовать метод ServletResponse - sendRedirect() которому предоставляется полный URL другого сервлета. Для передачи данных между сервлетами можно использовать cookies.
Прояви свои цифровые таланты на новом хакатоне Цифрового Прорыва по теме "Медицина, здравоохранение, наука".
Регистрируйся сейчас по ссылке: https://proglib.io/w/15f17fac
⠀
18 - 20 июня у тебя будет шанс:
⠀
💊 Разработать решение для Ростелекома, СБЕР AI, Университета Лобачевского & EPAM, iHerb, Правительства ЯНАО, МИАЦ и других.
💊 Познакомиться с признанными экспертами IT-отрасли.
💊 Поучаствовать онлайн или на оффлайн-хакаточках в Москве, Санкт-Петербурге, Нижнем Новгороде, Волгограде, Саратове, Новороссийске, Курске, Черкесске, Дубне и др.
💊 Выиграть хакатон и попасть в финал конкурса.
⠀
Общий призовой фонд до 4,5 млн. ₽, по 3 призовых места на каждый из 6 кейсов.
Приглашаем программистов, дизайнеров, аналитиков, тестировщиков, продактов, питчеров и других желающих развиваться в IT. Актуально как для новичков, так и для профи!
⠀
Участвуй в главном хакатоне июня 2021 года!
Регистрируйся сейчас по ссылке: https://proglib.io/w/15f17fac
⠀
18 - 20 июня у тебя будет шанс:
⠀
💊 Разработать решение для Ростелекома, СБЕР AI, Университета Лобачевского & EPAM, iHerb, Правительства ЯНАО, МИАЦ и других.
💊 Познакомиться с признанными экспертами IT-отрасли.
💊 Поучаствовать онлайн или на оффлайн-хакаточках в Москве, Санкт-Петербурге, Нижнем Новгороде, Волгограде, Саратове, Новороссийске, Курске, Черкесске, Дубне и др.
💊 Выиграть хакатон и попасть в финал конкурса.
⠀
Общий призовой фонд до 4,5 млн. ₽, по 3 призовых места на каждый из 6 кейсов.
Приглашаем программистов, дизайнеров, аналитиков, тестировщиков, продактов, питчеров и других желающих развиваться в IT. Актуально как для новичков, так и для профи!
⠀
Участвуй в главном хакатоне июня 2021 года!
#вопросы_с_собеседований
Какая разница между динамическим и статическим содержимым JSP?
Какая разница между динамическим и статическим содержимым JSP?
Статическое содержимое JSP (HTML, код JavaScript, изображения и т.д.) не изменяется в процессе работы веб приложения.
Динамические ресурсы созданы для того, чтобы отображать свое содержимое в зависимости от пользовательских действий. Обычно они представлены в виде выражений EL (Expression Language), библиотек JSP-тегов и пр.
Динамические ресурсы созданы для того, чтобы отображать свое содержимое в зависимости от пользовательских действий. Обычно они представлены в виде выражений EL (Expression Language), библиотек JSP-тегов и пр.
Java in easy steps (2017)
Автор: Mike McGrath
Количество страниц: 192
Данная книга научит вас легко создавать программы на Java. Она содержит отдельные главы, посвященные основным возможностям языка Java. Полные примеры программ с раскрашенным кодом иллюстрируют каждый важный аспект программирования на Java - и все это в простых шагах.
Скачать книгу
Автор: Mike McGrath
Количество страниц: 192
Данная книга научит вас легко создавать программы на Java. Она содержит отдельные главы, посвященные основным возможностям языка Java. Полные примеры программ с раскрашенным кодом иллюстрируют каждый важный аспект программирования на Java - и все это в простых шагах.
Скачать книгу
Telegram
Книги для программистов (reserved)
Java in easy steps (2017)
Автор: Mike McGrath
Автор: Mike McGrath
Чем CompletableFuture отличается от Future?
В Java 9 прогресс пошел дальше, и появилась библиотека Flow API. Это встроенная реализация реактивных стримов. Реактивный стрим, сильно упрощая, – это более общий случай, последовательность отложенных значений. Другая их реализация – популярная, но не входящая в стандарт библиотека Reactive Extensions (RxJava).
Future
– интерфейс, который представляет пока еще недовычисленный результат. Когда породившая его асинхронная операция заканчивается, он заполняется значением. Метод get
блокирует выполнение до получения результата, isDone
проверяет его наличие. К примеру результат выполнения задач в ExecutorService
, ForkJoinTask
, реализует интерфейс Future
.CompletableFuture
появился в Java 8. Это класс-реализация старого интерфейса Future
, а значит всё сказанное выше справедливо и для него. Вдобавок к этому, CompletableFuture
реализует работу с отложенными результатами посредством коллбэков. Метод thenApply
регистрирует код обработки значения, который будет автоматически вызван позже, когда это значение появится.В Java 9 прогресс пошел дальше, и появилась библиотека Flow API. Это встроенная реализация реактивных стримов. Реактивный стрим, сильно упрощая, – это более общий случай, последовательность отложенных значений. Другая их реализация – популярная, но не входящая в стандарт библиотека Reactive Extensions (RxJava).
Oracle
Reactive Programming with JDK 9 Flow API
Reactive programming is about processing an asynchronous stream of data items, where applications react to the data items as they occur. This article by Rahul Srivastava presents an example using the JDK 9 Flow API.
#вопросы_с_собеседований
Чем различаются JRE, JVM и JDK?
Чем различаются JRE, JVM и JDK?
JVM, Java Virtual Machine (Виртуальная машина Java) — основная часть среды времени исполнения Java (JRE). Виртуальная машина Java исполняет байт-код Java, предварительно созданный из исходного текста Java-программы компилятором Java. JVM может также использоваться для выполнения программ, написанных на других языках программирования.
JRE, Java Runtime Environment (Среда времени выполнения Java) - минимально-необходимая реализация виртуальной машины для исполнения Java-приложений. Состоит из JVM и стандартного набора библиотек классов Java.
JDK, Java Development Kit (Комплект разработки на Java) - JRE и набор инструментов разработчика приложений на языке Java, включающий в себя компилятор Java, стандартные библиотеки классов Java, примеры, документацию, различные утилиты.
Коротко: JDK - среда для разработки программ на Java, включающая в себя JRE - среду для обеспечения запуска Java программ, которая в свою очередь содержит JVM - интерпретатор кода Java программ.
JRE, Java Runtime Environment (Среда времени выполнения Java) - минимально-необходимая реализация виртуальной машины для исполнения Java-приложений. Состоит из JVM и стандартного набора библиотек классов Java.
JDK, Java Development Kit (Комплект разработки на Java) - JRE и набор инструментов разработчика приложений на языке Java, включающий в себя компилятор Java, стандартные библиотеки классов Java, примеры, документацию, различные утилиты.
Коротко: JDK - среда для разработки программ на Java, включающая в себя JRE - среду для обеспечения запуска Java программ, которая в свою очередь содержит JVM - интерпретатор кода Java программ.
#вопросы_с_собеседований
Что вы знаете об интерфейсе FileFilter?
Что вы знаете об интерфейсе FileFilter?
Хотите освоить востребованную профессию разработчика мобильных приложений? Участвуйте в бесплатном онлайн-интенсиве, который пройдёт 17–19 июня, в 19:00 по московскому времени.
Вы познакомитесь с основами мобильной разработки и научитесь работать с фреймворком Flutter. Создадите одно приложение сразу для двух платформ — iOS и Android.
Переходите по ссылке и регистрируйтесь: https://clc.am/P3Bekw
За 3 дня вы:
💡 узнаете, как работают мобильные разработчики и какие навыки нужны для начала карьеры;
💡 познакомитесь с основами мобильной разработки;
💡 научитесь создавать приложения на Flutter;
💡 узнаете, как писать сетевые запросы в Dart и парсить данные с помощью открытых API;
💡 научитесь использовать UI-виджеты для эффектного отображения данных;
💡 создадите несколько экранов и научитесь перенаправлять пользователя по ним.
📣 Спикер интенсива — Денис Александров, ведущий разработчик Arcadia. Он 12 лет занимается разработкой, 10 лет преподаёт, работал над AAA-играми, образовательными и финансовыми стартапами.
🎁 Все участники, сдавшие домашние задания, получат сертификат на 15 000 рублей для поступления на любой курс Skillbox!
Присоединяйтесь!
Вы познакомитесь с основами мобильной разработки и научитесь работать с фреймворком Flutter. Создадите одно приложение сразу для двух платформ — iOS и Android.
Переходите по ссылке и регистрируйтесь: https://clc.am/P3Bekw
За 3 дня вы:
💡 узнаете, как работают мобильные разработчики и какие навыки нужны для начала карьеры;
💡 познакомитесь с основами мобильной разработки;
💡 научитесь создавать приложения на Flutter;
💡 узнаете, как писать сетевые запросы в Dart и парсить данные с помощью открытых API;
💡 научитесь использовать UI-виджеты для эффектного отображения данных;
💡 создадите несколько экранов и научитесь перенаправлять пользователя по ним.
📣 Спикер интенсива — Денис Александров, ведущий разработчик Arcadia. Он 12 лет занимается разработкой, 10 лет преподаёт, работал над AAA-играми, образовательными и финансовыми стартапами.
🎁 Все участники, сдавшие домашние задания, получат сертификат на 15 000 рублей для поступления на любой курс Skillbox!
Присоединяйтесь!
#вопросы_с_собеседований
Для чего в стримах предназначен метод limit()?
Для чего в стримах предназначен метод limit()?
Метод limit() является промежуточной операцией, которая позволяет ограничить выборку определенным количеством первых элементов.
#вопросы_с_собеседований
Какое назначение у операторов PIVOT и UNPIVOT в Transact-SQL?
Какое назначение у операторов PIVOT и UNPIVOT в Transact-SQL?
3 причины выучить Java
Стать кодером может каждый, а зарплаты высокие даже у джунов.
По данным Stack Overflow, 40% программистов предпочитают Java. Язык по популярности обгоняет PHP, C# и Python. Разберёмся, почему сейчас самое время стать Java-разработчиком.
1️⃣ На Java работает более 3 млрд устройств. На нём написан знакомый всем Minecraft, его используют Netflix, Amazon и Ebay. Даже NASA разрабатывает на Java ПО для космических проектов 🚀
2️⃣ На HH открыто более 3 000 вакансий Java-разработчика, а зарплаты начинаются от 90 000 рублей. Компании разрешают удалёнку, поэтому вы сможете работать над проектами из дома или в путешествиях.
3️⃣ Java легко освоить с нуля. Язык не требует специальных знаний, а синтаксис позволяет решать сложные задачи простым путём. Поэтому на Java пишут мобильные приложения, серверы, корпоративные программы и проектируют умные дома.
Чтобы стать джуном, достаточно 4 месяцев обучения на курсе «Профессия Java-разработчик» от Skillbox.
Переходите по ссылке и регистрируйтесь. Первые 6 месяцев обучения бесплатно!▶️ https://clc.am/JI9LMQ.
Стать кодером может каждый, а зарплаты высокие даже у джунов.
По данным Stack Overflow, 40% программистов предпочитают Java. Язык по популярности обгоняет PHP, C# и Python. Разберёмся, почему сейчас самое время стать Java-разработчиком.
1️⃣ На Java работает более 3 млрд устройств. На нём написан знакомый всем Minecraft, его используют Netflix, Amazon и Ebay. Даже NASA разрабатывает на Java ПО для космических проектов 🚀
2️⃣ На HH открыто более 3 000 вакансий Java-разработчика, а зарплаты начинаются от 90 000 рублей. Компании разрешают удалёнку, поэтому вы сможете работать над проектами из дома или в путешествиях.
3️⃣ Java легко освоить с нуля. Язык не требует специальных знаний, а синтаксис позволяет решать сложные задачи простым путём. Поэтому на Java пишут мобильные приложения, серверы, корпоративные программы и проектируют умные дома.
Чтобы стать джуном, достаточно 4 месяцев обучения на курсе «Профессия Java-разработчик» от Skillbox.
Переходите по ссылке и регистрируйтесь. Первые 6 месяцев обучения бесплатно!▶️ https://clc.am/JI9LMQ.
PIVOT и UNPIVOT являются нестандартными реляционными операторами, которые поддерживаются Transact-SQL.
Оператор PIVOT разворачивает возвращающее табличное значение выражение, преобразуя уникальные значения одного столбца выражения в несколько выходных столбцов, а также, в случае необходимости, объединяет оставшиеся повторяющиеся значения столбца и отображает их в выходных данных. Оператор UNPIVOT производит действия, обратные PIVOT, преобразуя столбцы возвращающего табличное значение выражения в значения столбца.
Оператор PIVOT разворачивает возвращающее табличное значение выражение, преобразуя уникальные значения одного столбца выражения в несколько выходных столбцов, а также, в случае необходимости, объединяет оставшиеся повторяющиеся значения столбца и отображает их в выходных данных. Оператор UNPIVOT производит действия, обратные PIVOT, преобразуя столбцы возвращающего табличное значение выражения в значения столбца.
Что такое JDBC-драйвер? Какие бывают типы?
JDBC – Java DataBase Connectivity – соединение с базами данных на Java. Это стандарт взаимодействия с БД. Его интерфейс поставляется в стандартной JDK в виде пакета java.sql. Какой бы библиотекой для работы с базой данных вы ни пользовались, в ее основе почти всегда лежит низкоуровневый JDBC.
JDBC-драйвер – реализация JDBC для определенной базы данных. В приложении может быть зарегистрировано несколько разных драйверов. При соединении к базе, нужный выбирается исходя из URL соединения. Драйверы делятся на 4 типа:
Тип 1 – JDBC-ODBC мост. Делегирует работу с базой установленному в системе ODBC-драйверу. Платформозависимый. Не поддерживается с Java 8.
Тип 2 – Native API. Делегирует работу с базой библиотеке, установленной в системе. Платформозависимый. Библиотеки в отличие от ODBC специфичны для конкретной базы, поэтому такой драйвер обычно работает быстрее.
Тип 3 – драйвер сетевого протокола. Работает с промежуточным слоем (JavaEE сервером приложений), который транслирует запросы в сетевой протокол, с которым работает конкретная БД. Такой драйвер полностью реализован на Java.
Тип 4 – драйвер протокола БД/тонкий драйвер. Полная реализация протокола взаимодействия с базой данных. Отличается от типа 3 тем, что здесь логика протокола находится не на внешнем промежуточном слое, а прямо в самом драйвере.
JDBC – Java DataBase Connectivity – соединение с базами данных на Java. Это стандарт взаимодействия с БД. Его интерфейс поставляется в стандартной JDK в виде пакета java.sql. Какой бы библиотекой для работы с базой данных вы ни пользовались, в ее основе почти всегда лежит низкоуровневый JDBC.
JDBC-драйвер – реализация JDBC для определенной базы данных. В приложении может быть зарегистрировано несколько разных драйверов. При соединении к базе, нужный выбирается исходя из URL соединения. Драйверы делятся на 4 типа:
Тип 1 – JDBC-ODBC мост. Делегирует работу с базой установленному в системе ODBC-драйверу. Платформозависимый. Не поддерживается с Java 8.
Тип 2 – Native API. Делегирует работу с базой библиотеке, установленной в системе. Платформозависимый. Библиотеки в отличие от ODBC специфичны для конкретной базы, поэтому такой драйвер обычно работает быстрее.
Тип 3 – драйвер сетевого протокола. Работает с промежуточным слоем (JavaEE сервером приложений), который транслирует запросы в сетевой протокол, с которым работает конкретная БД. Такой драйвер полностью реализован на Java.
Тип 4 – драйвер протокола БД/тонкий драйвер. Полная реализация протокола взаимодействия с базой данных. Отличается от типа 3 тем, что здесь логика протокола находится не на внешнем промежуточном слое, а прямо в самом драйвере.