Основные понятия в разработке Java EE

SNAPSHOT


Вопрос. Что значит приставка «-snapshot» в релизе «x.x.x-snapshot»?

  • Ответ 1. SNAPSHOT это зафиксированное состояние в системе управления версиями. Делаются ежедневно(или еженедельно, как разработка двигается). SNAPSHOT-версии могут оказаться вовсе не рабочими
  • Ответ 2. SNAPSHOT иногда означает, что это почти окончательный вариант данной версии. Что-то наподобие release candidate. Если обычная версия это полностью законченный продукт, то версии SNAPSHOT могут получать обновления, т.к. предполагается, что продукт ещё находится в стадии разработки. Более подробно можно почитать на английском SO здесь.
  • Ответ 3. SNAPSHOT означает, что исходники будут дорабатываться в пределах данной версии. Условно говоря, если твоё приложение использует некую библиотеку, помеченную как SNAPSHOT, то её автор, найдя баг или просто внеся дополнительный функционал, а может и удалив что-то, может залить новый jar’ник библиотеки (артефакта), при этом не поменяв версию. Совесть автора будет чиста, а вот твоё приложение, заново потянув библиотеку из репозитория может уже не собраться.

METADATA/meta data


Вопрос. Что такое METADATA/Метаданные?

  • Ответ 1. Метаданные — это субканальная информация об используемых данных.
  • Ответ 2. Структурированные данные, представляющие собой характеристики описываемых сущностей для целей их идентификации, поиска, оценки, управления ими или набор допустимых структурированных описаний, которые доступны в явном виде и предназначение которых может помочь найти объект.
  • Ответ 3. Термин используется в контексте поиска объектов, сущностей, ресурсов.
  • Ответ 4. Данные из более общей формальной системы, заданную с описывающей свойства системы данных.
  • Ответ 5. Информация о содержащейся на веб-странице свойств информации (создателе и т. п.). Пример: Имя автора правки в тексте. Этот термин в широком смысле слова используется для любой информации о данных: именах таблиц, колонок в таблице в реляционных базах данных, номер версии в файле программы (то есть как информативная часть в бинарном файле) и т. п.

WEB-INF


Вопрос. Что хранится в папке WEB-INF в проекте Java EE?

  • Ответ 1. Папка WEB-INF была создана специально, что-бы разграничить файлы классов и библиотеки классов используемые приложением от остальных html, jpg и прочих файлов, к которых пользователь должен иметь прямой доступ по протоколу http.
  • Ответ 2. Наличие папки WEB-INF — это одно из требований при развертке проекта Java EE:
    • Контейнер сервлетов (например, Tomcat) — если вы используете Apache Tomcat, корневой каталог приложения должен быть помещен в папку webapp. Это может быть другим, если вы используете другой контейнер сервлетов или сервер приложений.
    • API-интерфейс Java Servlet — Java Servlet Java Servlet API заявляет, что ваш корневой каталог приложения должен иметь следующую структуру:
      ApplicationName
      |
      |--META-INF
      |--WEB-INF
            |_web.xml       <-- Here is the configuration file of your web app(where you define servlets, filters, listeners...)
            |_classes       <--Here goes all the classes of your webapp, following the package structure you defined. Only 
            |_lib           <--Here goes all the libraries (jars) your application need

       

    • Ваш домен приложения — теперь, когда вы выполнили требования к контейнеру Servlet (или серверу приложений) и требованиям API Java Servlet, вы можете организовать другие части вашего веб-сервера на основе того, что вам нужно:
      • вы можете поместить свои ресурсы (файлы JSP, текстовые файлы, файлы сценариев) в корневой каталог приложения. Но тогда люди могут обращаться к ним напрямую из своего браузера, вместо того, чтобы их запросы обрабатывались по некоторой логике, предоставленной вашим приложением. Таким образом, чтобы ваши ресурсы не были доступны напрямую, вы можете поместить их в каталог WEB-INF, содержимое которого доступно только для сервера;
      • если вы используете некоторые фреймворки, они часто используют файлы конфигурации. Большинство этих фреймворков (классы, директории, …).
  • Ответ 3. Вы должны помещать WEB-INF любые страницы или части страниц, которые вы не хотите публиковать. Обычно JSP или facelets находятся вне WEB-INF, но в этом случае они легко доступны для любого пользователя. Если у вас есть некоторые ограничения авторизации, для этого можно использоваться WEB-INF.
  • Ответ 4. WEB-INF/lib может содержать сторонние библиотеки, которые вы не хотите упаковывать на системный уровень (JAR могут быть доступны для всех приложений, запущенных на вашем сервере), но только для этого конкретного приложения.
  • Ответ 5. Что касается WEB-INF/classes — он существует в любом веб-приложении, потому что это папка, в которой размещены все скомпилированные источники (а не JARS, а скомпилированные .java-файлы, которые вы написали сами).
  • Ответ 6. Вообще говоря, многие файлы конфигурации также входят в WEB-INF.
  • Ответ 7. Размещение файлов в WEB-INF соблюдается по соображениям безопасности. Например, если несанкционированному лицу разрешен доступ к корневому JSP-файлу непосредственно из URL-адреса, он может перемещаться по всему приложению без какой-либо проверки подлинности и получать доступ ко всем защищенным данным.

META-INF


Вопрос. Что хранится в папке META-INF в проекте Java EE?

  • Ответ 1. Вообще говоря, вы не должны вводить ничего в META-INF самостоятельно.
  • Ответ 2. Следующие файлы / каталоги в каталоге META-INF распознаются и интерпретируются платформой Java 2 для настройки приложений, расширений, загрузчиков классов и служб:
    • MANIFEST.MF — файл манифеста, который используется для определения данных, связанных с расширением и пакетом.
    • INDEX.LIST — файл генерируется новой -iопцией «» инструмента jar, которая содержит информацию о местоположении для пакетов, определенных в приложении или расширении. Он является частью реализации JarIndex и используется загрузчиками классов для ускорения процесса загрузки классов.
    • x.SF — файл подписи для файла JAR. «X» обозначает имя базового файла.
    • x.DSA — Файл блока подписи, связанный с файлом подписи с тем же именем базового файла. Этот файл хранит цифровую подпись соответствующего файла подписи.
    • services/ — в этом каталоге хранятся все файлы конфигурации поставщика услуг.
  • Папка META-INF — это домашний файл MANIFEST.MF . Этот файл содержит метаданные о содержимом JAR. Например, есть запись под названием Main-Class, которая указывает имя класса Java со статическим main () для исполняемых JAR-файлов.

 

Вам также может понравиться

Об авторе WebSofter

Web - технологии

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...