Класс против пакета против модуля против компонента против контейнера против сервиса против платформы в мире Java [закрыто]

Я новичок в мире Java (7 лет на низком уровне C).

Когда я начал читать сайты, связанные с Java:

http://wiki.apidesign.org/wiki/Main_Pagehttp://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/

Я смущен существующей терминологией:

класспакетмодульсоставная частьконтейнероказание услугфреймворкПлатформа

Я нашел много ресурсов об определении терминов (и многое другое):

Фреймворк против Инструментария против БиблиотекиРазница между рамкой и контейнером?Каковы контейнеры в JavaОпределение контейнера Javahttp://martinfowler.com/articles/injection.html (Инверсия управляющих контейнеров и шаблон внедрения зависимостей)http://www.cafeaulait.org/course/week8/36.html (Что такое контейнер AWT?)http://en.wikipedia.org/wiki/Web_containerhttp://netbeans.org/features/platform/ (Платформа NetBeans)Что подразумевается под «структурой приложения»?Что такое программный каркас?В чем разница между фреймворком и библиотекой?В чем разница между библиотекой классов и фреймворкомhttps://stackoverflow.com/questions/11576018/what-is-the-difference-between-a-javascript-framework-and-a-libraryВ чем основное различие между фреймворком и инструментарием?http://blog.orderharmony.com/2011/07/libraries-vs-frameworks.htmlhttp://www.javacodegeeks.com/2012/04/frameworks-vs-libraries-as-inheritance.htmlРазница между библиотекой, платформой и фреймворком?В чем разница между платформой и фреймворком?в чем разница между фреймворком и платформойРазница между модулем, библиотекой и фреймворком

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

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

ОБНОВЛЕНИЕ 2019 Изhttps://www.artima.com/lejava/articles/reuse3.html (мое выделение)

Билл Веннерс: В чем разница между фреймворком, платформой и инструментарием и каковы разные требования гибкости?

Эрих Гамма: СПлатформа Я ассоциируюдолгосрочная стабильность, Это безопасно строить на вершине платформы. Платформа делаетсовместимость гарантии. Каркасы часто не имеют такого качества, и я виделмного рамок неудачи в отношениистабильность, Если вы посмотрите на Eclipse, да, он включает в себя фреймворки, наборы инструментов и предоставляет API-интерфейсы платформы. Все это поставляется в виде плагинов.Фреймворки абстрагируются и обеспечивают более высокий уровень функциональности по умолчанию, Для этогорамки должны быть под контролем, Эта потеря контроля может привести к тому, что иногда называют каркалитом.

Билл Веннерс: И инструментарий не потому, что ...

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

Другая цитата отвечает на мой наивный вопрос, сколько классов делает что-то каркасом:

https://www.artima.com/lejava/articles/reuse.html

Эрих Гамма: ... JUnit - это, например, небольшой фреймворк. Это «Привет, мир» фреймворков. У вас естьTest, TestCase, TestSuite и отношения определены. Кроме того, вы подключаетесь к фреймворкам, создавая подклассы. Они используют так называемый голливудский принцип «не звоните нам, мы вам позвоним». Фреймворк позволяет вам определить ваше собственное поведение и перезвонит вам, когда придет ваша очередь что-то делать. То же самое с JUnit, верно? Он перезванивает, когда хочет выполнить тест для вас, но все остальное делается в рамках.

 gavenkoa31 окт. 2012 г., 13:01
Привет! Хватит закрывать))
 Dominik Sandjaja31 окт. 2012 г., 13:05
Вы пытаетесь понять весь мир Java и всю его терминологию без конкретного проекта и без написания одной строки кода Java? Вы пытались сначала прочитать учебники по Oracle Java?
 Pops31 окт. 2012 г., 16:14
Я ценю то, что вы пытаетесь сделать, но запрос большого списка определений действительно не тот вопрос, для решения которого предназначен Stack Overflow. Если вы абсолютнодолжен задайте, по крайней мере, опубликуйте отдельный вопрос для каждого термина, для которого нужно определение, и объясните, что вы уже знаете о термине (по вашим словам, а не просто по ссылке).
 gavenkoa31 окт. 2012 г., 13:19
Я пишу интерфейсы JNI и выпускаю несколько библиотек безопасности Java, но в нем используются только алгоритмические (если / для / пока) возможности Java 1.1. Никаких предприятий ... И когда я писал, я прочитал несколько ссылок, чтобы избежать написания глупого кода. Трудно прийти в мир JAVA EE.
 Romski31 окт. 2012 г., 13:03
Хватит пытаться понять и начать делать. Начните с уроков по Java, и вы ответите на некоторые вопросы по умолчанию. Остальное станет понятно с опытом

Ответы на вопрос(2)

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

Пакет: Это файл класса (.java), который разделен по функции или имени. так что это также помогает для именования.

Модуль: Большие приложения обычно состоят из нескольких частей, которые более тесно связаны друг с другом, чем с внешней стороной. Следовательно, хотелось бы дать этим частям больше доступа друг к другу, чем во внешнем мире. Можно также пожелать, чтобы эти части повторно использовались во многих точках системы, не беспокоясь о синхронизации общих данных. эта часть называется модулем в Java. WAR, jar и т. Д. Называются модулем на языке Java.

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

Контейнер: Компонент выполняется в контексте, называемом контейнером. Контейнер является важным компонентом веб-приложений в технологии Java EE на основе Java. Он отвечает за поддержку отдельных компонентов на стороне сервера, которые включают в себя сервлеты Java, страницы сервера Java (JSP) и лица сервера Java (JSF). Способ предоставления услуг и доступа к ним определяется договором, который является соглашением между веб-приложением и контейнером. Это обеспечивает значительный уровень безопасности в инфраструктуре Java EE, поскольку клиентские приложения не знают о существовании контейнера и, следовательно, к нему нельзя получить прямой доступ. Таким образом, веб-контейнер отвечает за инициализацию компонентов веб-приложения и вызов клиентских запросов к компонентам.

Обслуживание: Сервис - это эволюция распределенных вычислений, основанная на парадигме проектирования запрос / ответ для синхронных и асинхронных приложений. Бизнес-логика или отдельные функции приложения являются модульными и представляются в виде сервисов для приложений потребителя / клиента.

Фреймворк: Фреймворки накладывают определенную структуру на код, который их использует, а библиотеки - нет. В программном обеспечении фреймворк представляет собой набор многократно используемого программного обеспечения, которое служит основой для приложения. Frameworks помогает программистам быстро создавать приложения. Раньше было очень сложно разрабатывать сложные веб-приложения. Теперь очень легко разработать такое приложение, используя различные виды фреймворков, таких как Struts, Struts 2, Hibernate, JSF, Spring и т. Д.

Платформа: Платформа относится ко всей среде разработки и исполнения Java от Sun. Java-программы выполняются механизмом исполнения (виртуальной машиной Java), который находится на целевом компьютере. Поскольку Java содержит свою собственную операционную среду, она была названа «платформой» в отличие от других языков программирования, которые после компиляции запускаются сами по себе. См. Java, Java 2, виртуальная машина Java и среда выполнения Java.

 pratik patel05 февр. 2014 г., 12:55
хороший ответ disha
 gavenkoa31 окт. 2012 г., 13:45
Спасибо за подробный ответ.
Решение Вопроса

class Класс - это план создания объектов в объектно-ориентированном программировании на основе классов; Вы должны изучить основы ООП и понять, что такое объект, что такое класс, что такое наследование, полиморфизм, инкапсуляция, прежде чем узнавать что-либо еще о Java.

package Пакет - это пространство имен; это позволит вам справиться с конфликтами имен. Это в основном позволяет вам иметь два класса с именем Employee, если они находятся в разных пакетах.

module Вероятно, это относится к тому, как библиотеки Java распространяются и используются - JAR, WAR, EAR.

component Может рассматриваться как базовый класс GUI в AWT (или JComponent в Swing) или может рассматриваться как тип EJB - POJO (Plain Old Java Object), который удовлетворяет некоторым требованиям; это может иметь другие значения и зависит от контекста.

container В корпоративных приложениях вы, очевидно, в конечном итоге используете несколько библиотек и Java EE; Дело в том, что библиотека Java EE обеспечивает только интерфейс API, а не реализацию. Затем приложение, которое вы написали и создали, развертывается вcontainer сервер, который поставляется с реализацией Java EE API. Существует два типа контейнеров: веб-контейнеры (только для реализации веб-специфических технологий) и полные контейнеры Java EE (поставляется с реализацией веб-сайтов и других технологий Java EE - сервисы именования, постоянство, транзакции и т. Д.).

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

platform В Java нет особого значения; его можно рассматривать как базовую платформу для разработки (Windows, Linux) или с облачной тенденцией, это может относиться к платформе как услуга, где поставщик облачных услуг поставляется с инфраструктурой и другим базовым программным обеспечением (ОС, база данных, контейнер).

 gavenkoa31 окт. 2012 г., 13:28
Так что кажется, что разработчики библиотек или фреймворков могут звонитьконтейнер как набор связанныхмодули?
 gavenkoa31 окт. 2012 г., 21:56
Спасибо за ответ!
 m3th0dman31 окт. 2012 г., 14:03
На самом деле, нет; Контейнер можно рассматривать как систему, которая поставляется с реализацией для некоторых API (и других средств, специфичных для других поставщиков). Обычно он предоставляет транзакции, синхронизацию, постоянство и другие средства для приложения, позволяя программисту обрабатывать только бизнес-логику.

Ваш ответ на вопрос