Что такое библиотеки в java
Перейти к содержимому

Что такое библиотеки в java

  • автор:

Java библиотеки и фреймворки

Для ускорения процесса разработки java-приложения широко используют библиотеки (java library) и фреймворки (java framework). С точки зрения Java библиотека представляет собой файл jar, используемый для определения бизнес-логики программы и построения интерфейсной части. Библиотеку необходимо определенным образом прописать в CLASSPATH и подключить к приложению.

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

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

Различие между библиотекой и фреймворком

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

Другое ключевое отличие фреймворка от библиотеки заключается в инверсии управления. Так при обращении к библиотеке управление получает один из методов класса после вызова. Во фреймворке пользовательский код может реализовывать конкретное поведение, встраиваемое в более общий, абстрактный код фреймворка. При этом фреймворк вызывает функции класса пользовательского кода.

Фреймворк Java Server Faces (JSF), описание

Web framework JSF (Java Server Faces) написан на Java и предназначени для web-приложений. Он существенно облегчает разработку пользовательских интерфейсов для Java EE приложений. Данный web framework основывается на использовании компонентов в отличие от прочих MVC-фреймворков, которые управляются запросами. При использовании классов JavaBean состоянием визуальных компонентов можно управлять : сохранить значение при переходе пользователя на другую страницу, и затем восстанавить, при возвращении назад.

Широкое распространение для формирования интерфейса в JSF получили технологии JSP и Facelets.

Платформа Java Server Faces включает:

  • набор API для :
    • представления компонент пользовательского интерфейса и управления их состоянием,
    • обработки событий,
    • валидации поступаемой информации,
    • определения правил навигации,
    • поддержки интернационализации (i18n),
    • поддержки доступности (accessibility).

    В последнем на данный момент релизе JSF 2.2 от 21.05.2013 выполнена поддержка различных атрибутов HTML 5 и объединение с Java EE 7. В JSF 2.0 в качестве обработчика представления используется технология Facelets которая пришла на замену JSP.

    Подробное описание web framework’а JSF представлено в разделе WEB технологии.

    Фреймворк Stuts2, описание

    Web framework Struts2 поставляется с открытым исходным кодом и предназначен для создания WEB-приложений в технологии Java2EE. Основой Struts является Java Servlet API, который он расширяет. В архитектурном плане данный фреймворк реализует, или, точнее, дает возможность реализовать шаблоный подход MVC. Struts2 имеется чёткое разделение моделей бизнес-логики, представления HTML-страницы и контроллера, отвечающего за передачу данных от модели к представлению и обратно.

    Framework Struts2 включает стандартный контроллер — сервлет ActionServlet и различные средства для управления страницами представления (действия, интерцепторы). Разработчик приложения отвечает за написание кода модели и формирование конфигурационного файла struts-config.xml, который связывает воедино модель, представление и контроллер.

    Запросы из браузера поступают на сервер (контроллер) в виде «action» (действия), определённых в конфигурационном файле. Когда контроллер получает запрос, он передаёт его соответствующему action-классу. Последний взаимодействует с кодом модели и, согласно правилам навигации, определяет страницу для отправления клиенту. Информация передаётся между моделью и представлением в виде особых JavaBeans. Богатая библиотека тегов позволяет получать данные из бинов и записывать их без Java-кода.

    Web framework Struts2 поддерживает интернационализацию i18n, облегчает валидацию данных полученных из веб-формы и предоставляет механизм использования шаблонов «tiles».

    Struts2 не является доработкой предыдущей версии Struts, это абсолютно новый фреймворк построенный на основе Webwork с использованием Model-View-Controller (MVC).

    Подробное описание web framework’а Struts2 представлено в разделе WEB технологии.

    Фреймворк Google Web Toolkit, описание

    Google Web Toolkit (GWT) — это свободный Java фреймворк, обеспечивающий WEB разработчикам создание Ajax-приложений. Основная особенность GWT — это компиляция исходного Java-приложения в JavaScript реализацию (при желании с обфускацией). Фреймворк позволяет почти всю разработку клиента и сервера реализовать на основе Java, и лишь на последнем этапе создать соответствующие JavaScript’ы.

    Используя framework GWT, можно быстро разрабатывать и отлаживать AJAX приложения на языке Java с использованием инструментария отладки Java.

    GWT включает XML парсер, поддерживает интернационализацию и интеграцию с JUnit, включает интерфейс для удаленного вызова процедур, содержит небольшой пакет виджетов для разработки элементов графического интерфейса пользователя (GUI). Большой набор визуальных компонентов типа GXT (Ext-GWT), SmartGWT позволяют существенно упростить и ускорить разработку интерфейсной части WEB-приложения.

    IDE разработки WEB-приложений, как правило, имеют соответствующие плагины для работы с GWT. Отладка GWT-приложения разделена на две части. Отладка серверной части приложения осуществляется как отладка обычного Java WEB приложения. Для отладки же клиентской части понадобится gwt dev-plugin для браузера.

    Подробное описание фреймворка GWT с инcталляцией плагина GWT SDK в IDE Eclipse представлено на странице Фреймворк GWT.

    Фреймворк Spring, описание

    Spring — это универсальный фреймворк с открытым исходным кодом для платформы Java. Также существует фреймворк и для платформы .NET, названный Spring.NET.

    Несмотря на то, что Spring не обеспечивает какую-либо конкретную модель программирования, он получил широкое распространёние в Java-сообществе главным образом как альтернатива и замена модели Enterprise JavaBeans.

    Spring был выпущен под лицензией Apache 2.0 license в июне 2003 года. Релиз Spring 3.1 вышел в декабре 2011. Текущая версия — 4.2.

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

    Особенности ядра Spring позволяют использовать его в любом Java-приложении. Существует множество расширений и усовершенствований для построения WEB приложений на платформе Java Enterprise Edition. По этим причинам Spring приобрёл большую популярность и признаётся разработчиками как стратегически важный фреймворк.

    Наиболее известен Spring как источник расширений функциональности (свойств), нужных для эффективной разработки сложных бизнес-приложений вне тяжеловесных программных моделей. Этот фреймворк предлагает последовательную модель и делает её применимой к большинству типов приложений, которые уже созданы на основе платформы Java. Считается, что Spring реализует модель разработки, основанную на лучших стандартах индустрии, и делает её доступной во многих областях Java.

    Более подробно с описанием Spring можно познакомиться на странице Википедии.

    Библиотека Hibernate, описание

    Библиотека Hibernate предназначена для решения задач объектно-реляционного отображения (object-relational mapping — ORM) при программировании на Java. Она относится к свободно программному обеспечению с открытым исходным кодом (open source), распространяемое на условиях GNU Lesser General Public License.

    Hibernate предоставляет легкий в использовании каркас для работы с объектно-ориентированной моделью данных в традиционных реляционных СУБД. Библиотеку можно использовать как в процессе проектирования системы классов и таблиц «с нуля», так и для работы с уже существующей базой данных.

    Hibernate не только обеспечивает связь между классами Java и таблицами базы данных, а также соответствие типов данных Java с типами данных SQL, но также предоставляет средства для автоматической генерации и обновления набора таблиц, построения запросов и обработки полученных данных. Таким образом, библиотека позволяет значительно уменьшить время разработки, которое обычно тратится на ручное написание SQL-запросов с использованием JDBC-кода.

    Одним из основных достоинств Hibernate является автоматическая генерация SQL-запросов и обработка результирующего набора данных по преобразованию объектов (сериализация объектов), максимально облегчая перенос (портирование) приложения на любые базы данных SQL. То есть, Hibernate обеспечивает прозрачную поддержку сохранности данных (persistence) для «POJO» (Plain Old Java Object). POJO класс Java содержит только поля, без дополнительной логики их обработки, и доступ ко всем полям осуществляется только через методы get/set. Пример простого класса POJO приведен на странице описания компонента JavaBean.

    Более подробное описание библиотеки Hibernate с инcталляцией плагина Hibernate Tools в IDE Eclipse представлено на странице Библиотека Hibernate.

    Библиотека Swing, описание

    Библиотека Swing предназначениа для создания графического интерфейса desktop’ых приложений, разрабатываемых на языке Java. Swing был создан компанией Sun Microsystems и содержит ряд графических компонентов (widget), таких как кнопки, поля ввода, таблицы и т.д.

    Swing относится к библиотеке классов JFC (Java Foundation Classes), которая представляет собой набор библиотек для разработки графических оболочек. В состав JFC входят, в частности, библиотека Java 2D и первая библиотека Java для создания пользовательских интерфейсов AWT (Abstract Window Toolkit).

    Начиная с версии Java 1.2 (1998 год) Swing включён в Java Runtime Environment.

    Look and Feel

    Архитектура Swing разработана таким образом, что можно изменять «look and feel» (L&F) приложения. «Look» определяет внешний вид компонентов, а «Feel» — их поведение. JRE предоставляет следующие L&F:

    • CrossPlatformLookAndFeel — родной для приложений Java L&F, иначе называется Metal; используется по умолчанию и обеспечивает стандартное поведение компонентов и их внешний вид, вне зависимости от платформы.
    • SystemLookAndFeel — родной для системы L&F; системный L&F определяется во время выполнения. Для Windows используется «Windows» L&F, который имитирует особенности конкретной системы, на которой запущен. Для Linux и Solaris используется «GTK+», если установлен GTK+ 2.2 или более поздняя версия, в противном случае используется «Motif».
    • Synth — это основа для создания собственных L&F.
    • Multiplexing — предоставляет возможность использования различных L&F одновременно.

    Таким образом, компоненты Swing поддерживают специфические динамически подключаемые виды и поведения (plugable look-and-feel), благодаря которым возможна адаптация интерфейса приложения к графическому интерфейсу платформы. То есть к компоненту можно динамически подключить другой, специфический для операционной системы. Таким образом, приложения, использующие Swing, могут выглядеть как «родные» приложения для данной операционной системы.

    Сравнение с AWT

    Swing предоставляет более гибкие интерфейсные компоненты, по сравнению с более ранней библиотекой AWT. В отличие от AWT, компоненты Swing разработаны для кросс-платформенной работы, в то время как компоненты AWT повторяют интерфейс исполняемой платформы без изменений.

    AWT использует только стандартные элементы операционной системы (ОС) для отображения, то есть для каждого элемента создается отдельный объект ОС (окно), в связи с чем, AWT не позволяет создавать элементы произвольной формы (возможно использовать только прямоугольные компоненты). Элементы управления на основе AWT всегда отображаются поверх Swing-элементов, т.к. все Swing компоненты отображаются на поверхности контейнера.

    Принцип Lightweight

    Принцип «Lightweight» означает, что Swing компоненты прорисовываются самими компонентами в родительском окне (например, на JFrame), без использования компонентов операционной системы. В отличие от «тяжелых» компонентов AWT, Swing приложение может иметься только одно окно.

    В приложении могут сочетаться компоненты Swing и AWT. Но это может порождать некоторые проблемы — в частности, компоненты AWT всегда перекрывают Swing элементы, а также закрывают собой всплывающие меню JPopupMenu и JComboBox. Для предотвращения этого, у данного типа компонентов имеются методы setLightWeightPopupEnabled (boolean), позволяющие запретить использование «легковесных» всплывающих элементов. При установке данного свойства в true AWT элементы не будут перекрывать меню.

    Основным минусом таких «легковесных» (lightweight) компонентов является относительно медленная работа. Положительная сторона — универсальность интерфейса созданных приложений на всех платформах.

    Описание библиотеки Swing более подробно с примерами рассматривается на странице Библиотека Swing

    Библиотека SWT, Standard Widget Toolkit

    Информация о SWT и ее использования в java-приложениях рассматривается на странице Библиотека SWT

    Что такое библиотеки классов Java?

    Packages Vertex Academy

    В этой статье мы очень обзорно познакомимся с такими понятиями:

    • библиотеки классов Java
    • пакеты в Java
    • классы
    • методы

    В обычной жизни, если Вы пойдёте в библиотеку или книжный магазин, естественно, Вы там увидите огромное количество книг, которые отвечают на самые разные вопросы: по истории, математике, химии, социлогии и т.д. И не надо всё выдумывать с нуля — взял книгу и получил ответы/решения на многие вопросы.

    Причём все книги разложены строго по полочкам:

    • на этой полочке книги по алгебре
    • на этой полочке книги по геометрии
    • на этой полочке книги по матанализу
    • и т.д.

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

    В этой виртуальной библиотеке Java информация разбита по пакетам («packages») — это своеобразный аналог полочек в книжном магазине. В каждом пакете протестированный код по какому-то отдельно взятому направлению.

    Например, есть такие пакеты:

    • java.applet
    • java.lang — это основной пакет языка Java
    • java.util
    • java.io
    • java.net
    • и т.д.

    Если совсем любопытно, все пакеты Вы можете найти на сайте Oracle по ссылке: https://docs.oracle.com/javase/8/docs/api

    Давайте посмотрим на схематическое изображение библиотеки в Java.

    Biblioteka Vertex Academy

    Как видите, слева изображены разные пакеты («packages»):

    • java.applet
    • java.lang
    • java.util
    • и т.д.

    А что же в каждом пакете? В пакете лежат классы . Чтобы проиллюстрировать это, мы показали на примере пакета java.lang. Для примера на схеме изображён один из классов пакета java.lang — класс Math.

    Детально что такое классы мы разберём в отдельной статье, когда мы с Вами дойдём до темы объектно-ориентированного программирования (ООП) в Java. А сейчас Вам будет достаточно понимать, что класс — это готовое решение, которое мы можем использовать при написании наших программ.

    В классе есть методы (действия), которые мы можем выполнять с помощью класса. Например, в классе Math есть такие методы:

    • sqrt () — выведение квадратного корня
    • sin () — вычисление синуса угла
    • cos () — вычисление косинуса угла
    • и т.д.

    То есть, если нам необходимо посчитать квадратный корень, нам не надо писать код, который пошагово программировал бы вычисление квадратного корня. А такой код бы потянул на очень и очень много строк кода. А мы просто берём из пакета java.lang класс Math, а в нём метод который нам нужен для вычисления квадратного корня sqrt () и всё — в одну строчку кода мы получим нужное нам решение.

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

    Постепенно Вы познакомитесь с различными классами и их методами из библиотеки Java, и главное — как же их использовать в своём коде. А пока нам важно было очень обзорно понять данную тему. И данную миссию мы с Вами выполнили.

    Надеемся, что наша статья была Вам полезна. Также есть возможность записаться на наши курсы по Java в Киеве. Обучаем с нуля. Детальную информацию Вы можете найти у нас на сайте.

    • ← Настройка программного окружения на Ubuntu
    • Настройка программного окружения на Windows →

    Java: Стандартная библиотека

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

    Для новичков эта информация часто выглядит так: «Сходи туда, не знаю куда, принеси то, не знаю что». То есть непонятно, как узнавать про эти методы, когда ты ничего не знаешь вообще. Как ни странно, не существует способа раз и навсегда познать все, что нужно познать. Любой разработчик в процессе своего профессионального взросления знакомится со все более интересными методами, решающими его задачи более элегантно, и таким образом пополняет свой арсенал.

    Вот некоторые советы, как узнавать о новых методах:

    • Всегда четко отслеживайте, с каким типом данных вы сейчас работаете. Почти всегда вы найдете необходимый метод в соответствующем разделе документации — например, для работы со строками нужно изучать строковые методы
    • Периодически открывайте раздел со стандартными методами по изучаемой тематике и просто пробегайтесь по ним, изучая сигнатуры и способы использования
    • Чаще читайте чужой код, особенно код библиотек, которые вы используете. Он весь доступен на GitHub

    Задание

    Напишем код в стиле «повтори за учителем». Рассчитаем количество дней между двумя датами используя встроенные возможности Java. Попробуйте «поиграть» с датами.

    // С даты LocalDate dateFrom = LocalDate.of(2017, Month.MAY, 24); // По дату LocalDate dateTo = LocalDate.of(2017, Month.JULY, 29); // Количество дней между этими датами long noOfDaysBetween = ChronoUnit.DAYS.between(dateFrom, dateTo); System.out.println(noOfDaysBetween); 

    Упражнение не проходит проверку — что делать? ��

    Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:

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

    В моей среде код работает, а здесь нет ��

    Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.

    Мой код отличается от решения учителя ��

    Это нормально ��, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.

    В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.

    Прочитал урок — ничего не понятно ��

    Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.

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

    Полезное

    Мой топ-10 фреймворков и библиотек Java

    Аватарка пользователя Sergey Golitsyn

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

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

    Ниже представлен мой джентельменский набор Java-библиотек/фреймворков (иногда используются куски переводов базовых технических объяснений).

    Чем отличается фреймворк от библиотеки

    Фреймворки Java — по сути, блоки предварительно написанного кода, в которые программист может добавлять свой код для решения конкретных проблем. Это каркас программной системы (или подсистемы). Он может включать:

    • вспомогательные программы;
    • библиотеки кода;
    • язык сценариев;
    • другое ПО, облегчающее разработку и объединение разных компонентов большого программного проекта.

    Обычно объединение происходит за счёт использования единого API. Фреймворки Java сокращают объём написания кода с нуля, который программистам приходится делать, чтобы найти решение.

    Библиотеки — это код, предназначенный для решения конкретной проблемы.

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

    Все эти определения нужны, чтобы дать базовое представление о том, о чём мы будем говорить дальше.

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

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

    Мой топ-10 фреймворков и библиотек Java

    1. Spring Framework

    Spring Framework — одна из самых мощных и широко используемых платформ Java. Благодаря своей концепции внедрения зависимостей и особенностям аспектно-ориентированного программирования Spring покорила мир разработки.

    Это платформа с открытым исходным кодом, используемая для корпоративных приложений. Фреймворк обычно используется для Enterprise Java. Среда чрезвычайно универсальна и может использоваться для создания большинства типов приложений Java. С помощью Spring разработчики могут создавать слабосвязанные модули, в которых зависимости обрабатываются фреймворком, а не зависят от библиотек в коде.

    Spring чаще всего используют в разработке веб-приложений. Его применяет ряд технологических гигантов, включая Netflix и Amazon. Главное преимущество фреймворка заключается в том, что он чрезвычайно лёгкий и не требует вызова веб-сервера. С точки зрения эффективности это одна из самых популярных платформ Java. Spring чрезвычайно прост и, как правило, может использоваться даже новичками. Он также обеспечивает обратную совместимость и возможность тестирования.

    Фреймворк Spring является исчерпывающим и охватывает множество функций, включая безопасность и настройку подключения к БД, которые легко изучить. Кроме того, поскольку это самый популярный веб-фреймворк, вы можете найти множество документации и активное сообщество.

    Основные концепции

    Внедрение зависимостей (DI) (инверсия управления) — в этом принципе вместо того чтобы последовательно брать управление потоком приложение передаёт управление внешнему контроллеру, который управляет потоком. Внешний контроллер — это события. Когда происходит какое-то событие, поток приложения продолжается. Это придаёт гибкость приложению. В Spring IoC выполняется с помощью DI, которые бывают трёх типов — внедрение установщика, внедрение метода и внедрение конструктора.

    В Spring объекты называются bean-компонентами. Существует BeanFactory, которая управляет и настраивает эти bean-компоненты. Вы можете думать о BeanFactory как о контейнере, который создаёт экземпляры.

    Большинство приложений используют XML (beans.xml) для конфигурации. ApplicationContext, который является надмножеством BeanFactory, используется для более сложных приложений, которым требуется распространение событий, декларативные механизмы и интеграция с аспектно-ориентированными функциями Spring.

    2. Hibernate

    Hibernate — это структура объектно-реляционного сопоставления. Основным преимуществом фреймворка Hibernate является то, что он очень эффективен, когда дело доходит до решения часто встречающейся проблемы при работе с базами данных на Java — несоответствия между обработкой данных объектно-ориентированными языками программирования и системами управления реляционными базами данных. Это достигается путём разработки постоянных классов и предоставления программисту возможности эффективно взаимодействовать с базой данных с минимальными изменениями кода.

    Возможность выполнять операции с базой данных объектов в Java является проблемой, когда дело доходит до большинства других фреймворков. Но Hibernate очень эффективно решает эту проблему. Он используется рядом крупных компаний, включая IBM, Oracle и Accenture из-за его преимуществ в переносимости. Его можно использовать бесплатно, исходный код полностью открыт.

    Хотя Hibernate не является фреймворком полного стека, он полностью изменил наш взгляд на базу данных. Как и SQL, запросы в Hibernate называются HQL (Hibernate Query Language).

    Hibernate напрямую сопоставляет классы Java с соответствующими таблицами базы данных и наоборот. Основным файлом в спящем режиме является файл hibernate.cfg.xml, который содержит информацию о сопоставлении классов Java с конфигурацией базы данных.

    Hibernate решает две основные проблемы с JDBC — JDBC не поддерживает отношения на уровне объектов, и если вы когда-нибудь решите перейти на другую базу данных, старые запросы могут не работать, что означает много изменений, то есть время и деньги.

    Hibernate предоставляет уровень абстракции, так что код слабо связан с базой данных. Такие вещи, как установление соединения с базой данных, выполнение операций CRUD берёт на себя Hibernate. Поэтому разработчикам не нужно это реализовывать, что делает код независимым от используемой базы данных.

    • полностью открыт;
    • уменьшает избыточность через JDBC API;
    • повышает производительность и удобство обслуживания;
    • поддерживает API-интерфейсы Persistence;
    • обеспечивает связь между приложением и любой базой данных.

    3. Vaadin

    Фреймворк Vaadin специально ориентирован на доступность UX. Он позволяет программисту создавать настраиваемые веб-приложения, предоставляя ему оптимизированную и простую в использовании платформу для разработки. Vaadin также предоставляет доступ к DOM непосредственно с виртуальной машины Java. Важной особенностью фреймворка является тот факт, что взаимодействие, которое происходит между сервером и браузером, полностью автоматизировано.

    Данные могут быть связаны с использованием как MVC, так и MVP через платформу Vaadin. Он поставляется со встроенной поддержкой инфраструктуры Spring, а также поддерживает языки JVM, такие как Scala и Kotlin. Он также имеет поддержку WebSocket, которая обеспечивает автоматическую связь между сервером и клиентом. Как Java, так и HTML можно использовать для построения представлений во фреймворке Vaadin. Он имеет интуитивно понятный пользовательский интерфейс с поддержкой взаимодействий перетаскивания, что значительно упрощает весь процесс веб-разработки для программистов любого уровня подготовки.

    Vaadin — это флагманский продукт, а также платформа, на которой разработчики могут выполнять реализацию веб-интерфейса HTML5 с использованием Java. Это платформа с открытым исходным кодом, которая включает в себя веб-фреймворк Java и набор веб-компонентов, а также средства запуска приложений и инструменты. Эти веб-компоненты составляют ядро ​​Vaadin и могут быть настроены для получения высокопроизводительного и универсального кода для настольных и мобильных приложений.

    Vaadin Flow — это фактическая часть инфраструктуры Java-платформы Vaadin, которая заботится о взаимодействии клиент-сервер, а также о маршрутизации. С помощью Vaadin Flow вы можете полностью написать веб-приложение на Java без суеты JS или CSS. Компоненты пользовательского интерфейса заботятся о действиях пользователя в браузере, используя автоматическую связь с браузером и сервером. Вы можете легко интегрировать компоненты Vaadin в любую IDE, которую используете, плюс это кроссплатформенный фреймворк, поэтому не нужно беспокоиться о переносе кода на другую платформу.

    • Java API для всех веб-компонентов;
    • безопасная веб-разработка только для Java;
    • две встроенные темы: Lumo и Material;
    • переключение между тёмным или светлым режимами;
    • альтернативы стилей из Java;
    • поддержка кнопки «Назад» и ссылок на контент;
    • навигация без перезагрузки всей страницы;
    • поддержка JVM;
    • по умолчанию получает встроенную поддержку Spring Framework;
    • может автоматически устанавливать связь клиент-сервер с помощью веб-сокета;
    • есть маршрутизатор с вложенным маршрутом, а также поддержка параметров;
    • поддерживает привязку данных через MVC и MVP.

    4. gRPC

    gRPC — это абстрактная спецификация. Она описывает абстрактную RPC (remote procedure call), то есть удалённый вызов процедуры, которая обладает определёнными свойствами.

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

    Также она предполагает, что описание сообщений и самих сервисов осуществляется через некий Interface Definition Language или IDL. Также спецификация описывает wire-протокол поверх HTTP/2, то есть gRPC предполагает работу только поверх HTTP/2.

    5. Play

    Play — это среда Java, предназначенная для веба и мобильных приложений. Основное применение — в приложениях, требующих большого масштабирования. Платформа также совместима с рядом языков помимо Java, такими как Python и Ruby. Play не основан на корпоративных стандартах Java. Обычно он используется для веб-приложений на основе создания контента, а также для приложений Scala.

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

    Play — это нетрадиционный и уникальный тип фреймворка, который следует подходу соглашения, а не конфигурации. Он основан на шаблоне MVC и представляет собой платформу веб-приложений с открытым исходным кодом.

    Play похож на Django, Ruby on Rails или архитектуру ASP.NET и не обязательно соответствует веб-стандартам J2EE.

    • высокая производительность за счёт асинхронной обработки;
    • без контейнера, без состояний и построенный на реактивных принципах;
    • использует статически типизированный язык, поэтому большинство ошибок обнаруживается во время компиляции, что позволяет избежать множества ошибок на ранних этапах жизненного цикла разработки;
    • Scala исследует истинное ООП вместе с некоторыми концепциями функционального программирования. Его совместимость с Java делает систему отличной и мощной;
    • вместе с Play2 была выпущена новая мощная система сборки sbt, которая упрощает интеграцию с проектами Maven, а также создание простых файлов JAR;
    • встроены обширные библиотеки доступа к реляционным базам данных для общих функций.

    Play написан с использованием языка программирования Scala. Предлагает разработку веб-приложений и мобильных приложений. Он следует архитектуре MVC. Play скомпилирован в Java bytecode, и это делает его одним из самых мощных фреймворков.

    Некоторые преимущества использования Play Framework:

    • мощные инструменты для консоли и сборки;
    • встроенные инструменты тестирования;
    • поддержка IDE для Eclipse и IntelliJ IDEA;
    • гибкость и отказоустойчивость;
    • поддерживает неблокирующие операции ввода-вывода;
    • помогает в создании высокопроизводительных приложений;
    • поддерживает «горячее кодирование» и «соглашение по конфигурации»;
    • может выдавать сообщения об ошибках.

    6. MapStruct

    Совсем недавно в поле моего зрения попала библиотека MapStruct, которая изменила мой мир. Я всегда не очень любил писать builder или свой метод для перекладывания значений из entity в ДТО. Для тех, кто так же, как и я, не любит писать этот шаблонный код, приходит на помощь MapStruct. Эта библиотека генерирует код, который будет автоматически мапить один класс в другой. Это невероятно ускоряет разработку и тестирование кода.

    7. Lombok

    Эта библиотека предназначена для генерации кода. Она способна генерировать код для достаточно популярных use-cases. Стоит лишь поставить необходимые аннотации.

    Достаточно спорная библиотека. Кто-то её любит, кто-то ненавидит, но никого она не оставляет равнодушным.

    8. Apache POI

    На основе этой библиотеки можно создать внутренний фреймворк для удобной и гибкой генерации отчётов. Библиотека поддерживает различные форматы документов, например Word и Excel.

    9. Liquibase/ FlyWay

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

    10. Testcontainers

    Просто невероятная по своей мощности библиотека, которая позволяет запускать контейнеры в Docker для тестирования. У меня она нашла применение в интеграционных тестах. Есть возможность поднять настоящую базу данных с использованием миграций FlyWay/Liquibase и проверить полный флоу работы системы. Тест-контейнеры можно кастомизировать, а также писать свои.

    Подведение итогов

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

    Есть много других Java-фреймворков, которые не являются фреймворками полного стека или веб-разработки, но полезны в каждом приложении — например, log4j для ведения журнала, Junit и Selenium для тестирования и т.д. Об этом важно знать, хотя вы можете просто изучить их на ходу вместе с другими фреймворками, которые вы видели в приведенном выше списке.

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *