Тази статия се нуждае от вниманието на редактор с по-задълбочени познания. Ако смятате, че имате необходимите знания, подобрете тази страница. |
Jakarta EE, в миналото известна като Java Platform, Enterprise Edition или Java EE, е изчислителна платформа, използвана най-често за създаването на големи проекти в Java общността. Платформата предоставя API среда за изпълнение, за разработване и управление на бизнес софтуер, включително мрежови и уеб услуги в голям мащаб, които са сигурни и надеждни. Java EE е разширеният вариант на Java Platform Standard Edition (Java SE). Осигурява API за обектно-релационните планирания, многослойни архитектури и уеб услуги. В платформата се включват главно дизайнерски компоненти, работещи на сървър. Софтуерът за Java EE е написан основно на езика Java. Платформата подчертава конвенцията над конфигурацията и поясненията. XML може да се използва за презаписване на нотациите или да се отклони от началните настройки на платформата.
Платформата е била позната като Java 2 Platform, Enterprise Edition или J2EE, до момента, в който името е сменено на Java Platform,
Enterprise Edition или Java EE във версия 5. Сегашната версия е наименувана Jakarta EE.
Java EE се дефинира чрез нейните спецификации. Java Community Process спецификациите гласят, че разработчиците на софтуер, които допринасят за развитието на Java EE трябва да отговарят на изискванията за съответствие, за да декларират продуктите си.
Java EE включва много на брой API спецификации – RMI, e-mail, JMS, web services, XML, и други, и дефинира критерии за координирането им. Java EE също поддържа някои спецификации, присъщи единствено за компонентите на Java EE. Те включват Enterprise JavaBeans, connectors, servlets, JavaServer Pages и други технологии за Web услуги. Това позволява на разработчиците на софтуер да създават корпоративни приложения(enterprise applications), които са преносими и мащабируеми и се интегрират с утвърдени технологии. Сървърът за апликации на Java EE предлага транзакции, сигурност, едновременност и управление на компонентите, които обслужва, за да позволи на разработчиците да се концентрират върху бизнес логиката на компонентите.
Java EE APIs включва няколко технологии, които разширяват функционалността на базата на Java SE APIs.
Спецификацията на servlet определя набор от интерфейси, които обслужват главно HTTP заявки. Тя включва JavaServer Pages (JSP) спецификация.
Интерфейсът за спецификация WebSocket определя набор от интерфейси, които обслужват WebSocket връзки.
Този пакет дефинира основата на JavaServer Faces (JSF) API. Java Server Faces е технология за изграждане на потребителски интерфейси от компоненти.
Този пакет определя компонентната част на Java Server Faces API. Тъй като Java Server Faces е предимно компонентно ориентирана технология, това е един от основните ѝ пакети. Прегледът на пакет съдържа UML диаграма на йерархията на компонентите.
Този пакет определя класовете и интерфейсите за Java EE Expression Language. Expression Language (EL) е език, първоначално проектиран да отговаря на специфичните нужди на разработчиците на уеб приложения. Той се използва специално в Java Server Faces да се свързват компоненти c бийнове и да именуваме бийнове в CDI, но може да се използва по време на цялата платформа.
Тези пакети определят анотациите за вкарване на Contexts and Dependency Injection (CDI) APIs.
Тези пакети определят контекстните анотации и интерфейси за Contexts and Dependency Injection (CDI) API.
Спецификацията Enterprise JavaBean (EJB) определя набор от леки APIs, поддържани от обектния контейнер (EJB container) за да се изпълняват финансови операции (с помощта на JTA), отдалечено извикване на процедури (използвайки RMI и RMI-IIOP), контрол за едновременност, вмъкване на зависимости (dependency injection) и контрол на достъп за бизнес обекти. Този пакет съдържа класовете Enterprise JavaBeans и интерфейсите, които определят договорите между предприятието и неговите клиенти и между предприятието и контейнер EJB.
Този пакет съдържа анотациите и интерфейси за поддръжка на декларативно валидиране, предлагани от Bean Validation API. Bean Validation осигурява единен начин за осигуряване на ограничения върху Bean класове (например JPA model classes), които могат да се прилагат с Cross-layer оптимизация. В Java EE, JPA спазва Bean Validation ограниченията в слоя Persistence, докато JSF го прави в слоя View.
Този пакет съдържа договорите между persistence доставчик и управляваните класове и клиентите на Java Persistence (JPA) API.
Този пакет предлага Java Transaction API (JTA), който съдържа интерфейсите и анотациите, които си взаимодействат с поддръжката за финасови операции, предлагана от Java EE. Въпреки че това API се абстрахира от детайлите на наистина ниско ниво, интерфейсите, също се считат донякъде на ниско ниво и се предполага, че обикновения Java EE разработчик на приложения или разчита на прозрачна обработка на финансови операции от по-високо ниво EJB абстракции, или използва анотациите, предоставени от това API в комбинация с CDI, управлявани beans класове.
Този пакет предлага ядрото на Java Authentication SPI (JASPIC), който съдържа интерфейсите и класовете за изграждане на модули за заверка за сигурни Java EE приложения. Authentication модули са отговорни за взаимодействието с потребителя (например пренасочване към форма или към доставчик на OpenID), проверка на входа на потребителя (например чрез LDAP търсене, заявка към база данни) и извличане на набор от групи / роли, в които заверения потребител участва или има (например като отново извършим LDAP търсене или заявка към база данни).
Този пакет предлага интерфейси за взаимодействие директно с управляваните по подразбиране нишки на Java EE платформата. Обслужване от изпълнител от по-високо ниво работещ на същата нишка, може да се използва по избор. Същите интерфейси могат да бъдат използвани за потребителски дефинирани управлявани нишки, но това зависи от специфичната конфигурация на продавача и не се покрива от спецификацията на Java EE.
Този пакет определя Java Message Service (JMS) API. За програмите на Java API JMS осигурява общ начин за създаване, изпращане, получаване и четене на съобщения от системата за съобщения на предприятието.
Този пакет определя входното API за Java EE Batch приложения. Batch Applications API предвижда средства за изпълнение на продължително изпълняващи се фонови задачи, които вероятно са свързани с голям обем от данни, и които може да се наложи да бъдат периодично изпълнявани.
Този пакет дефинира Java EE Connector Architecture (JCA) API. Java EE Connector Architecture (JCA) е Java-базирано технологично решение за свързване на сървъри за приложения и ентърпрайз информационни системи (EIS), като част от корпоративни решения за интегриране на приложения (EAI). Това е API за ниско равнище, насочен към доставчици, с които разработчиците обикновено нямат пряк контакт.
В опит да се ограничи отпечатъка на уеб контейнерите и във физическо, и в концептуално отношение, уеб профилът е създаден като подразделение на спецификациите на Java EE. Уеб профилът на Java EE съдържа следните спецификации:
Примерният код по-долу показва как различни технологии в Java EE 7 се използват заедно, за да се създаде уеб форма за редактиране на даден потребител.
В Java EE (web), UI може да бъде изграден с помощта на Servlet, JavaServer Pages (JSP), или JavaServer Faces (JSF) с Facelets. Примерът по-долу използва JSF и Facelets. Не е ясно показано, че входните компонентите използват Java EE Bean Validation API, за да валидира ограничения.
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:f="http://xmlns.jcp.org/jsf/core">
<f:metadata>
<f:viewParam name="user_id" value="#{userEdit.user}" converter="#{userConvertor}" />
</f:metadata>
<h:body>
<h:messages />
<h:form>
<h:panelGrid columns="2">
<h:outputLabel for="firstName" value="First name" />
<h:inputText id="firstName" value="#{userEdit.user.firstName}" label="First name" />
<h:outputLabel for="lastName" value="Last name" />
<h:inputText id="lastName" value="#{userEdit.user.lastName}" label="Last name" />
<h:commandButton action="#{userEdit.saveUser}" value="Save" />
</h:panelGrid>
</h:form>
</h:body>
</html>
За да спомогне за визуализацията, Java EE използва понятие, наречено „Backing Bean“. Примерът по-долу използва contexts and Dependency Injection (CDI) и Enterprise JavaBean (EJB).
@Named
@ViewScoped
public class UserEdit {
private User user;
@Inject
private UserDAO userDAO;
public String saveUser() {
userDAO.save(this.user);
addFlashMessage("User " + this.user.getId() + " saved");
return "users.xhtml?faces-redirect=true";
}
public void setUser(User user) {
this.user = user;
}
public User getUser() {
return user;
}
}
В Java EE, Enterprise JavaBean (EJB) технологията е предназначена за изпълнение на бизнес-логика. За действителната персистентност, може да се използва JDBC или Java Persistence API (JPA). Примерът по-долу използва EJB и JPA. Не е ясно показано, че JTA се използва под обвивките от EJB за да контролира поведението при финансови операции.
@Stateless
public class UserDAO {
@PersistenceContext
private EntityManager entityManager;
public void save(User user) {
entityManager.persist(user);
}
public void update(User user) {
entityManager.merge(user);
}
public List<User> getAll() {
return entityManager.createNamedQuery("User.getAll", User.class)
.getResultList();
}
}
За дефиниране на Entity / Model класове, Java EE осигурява Java Persistence (JPA) API. За изразяване на ограничения на тези субекти, Java EE предоставя Bean Validation API. Примерът по-долу използва и двете технологии.
@Entity
public class User {
@Id
@GeneratedValue(strategy = IDENTITY)
private Integer id;
@Size(min = 2, message="First name too short")
private String firstName;
@Size(min = 2, message="Last name too short")
private String lastName;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
Тази страница частично или изцяло представлява превод на страницата Java EE в Уикипедия на английски. Оригиналният текст, както и този превод, са защитени от Лиценза „Криейтив Комънс – Признание – Споделяне на споделеното“, а за съдържание, създадено преди юни 2009 година – от Лиценза за свободна документация на ГНУ. Прегледайте историята на редакциите на оригиналната страница, както и на преводната страница, за да видите списъка на съавторите.
ВАЖНО: Този шаблон се отнася единствено до авторските права върху съдържанието на статията. Добавянето му не отменя изискването да се посочват конкретни източници на твърденията, които да бъдат благонадеждни. |