Jakarta EE
Тази статия се нуждае от вниманието на редактор с по-задълбочени познания. Ако смятате, че имате необходимите знания, подобрете тази страница. |
Jakarta EE, в миналото известна като Java Platform, Enterprise Edition или Java EE, е изчислителна платформа, използвана най-често за създаването на големи проекти в Java общността. Платформата предоставя API среда за изпълнение, за разработване и управление на бизнес софтуер, включително мрежови и уеб услуги в голям мащаб, които са сигурни и надеждни. Java EE е разширеният вариант на Java Platform Standard Edition (Java SE)[1]. Осигурява API за обектно-релационните планирания, многослойни архитектури и уеб услуги. В платформата се включват главно дизайнерски компоненти, работещи на сървър. Софтуерът за Java EE е написан основно на езика Java. Платформата подчертава конвенцията над конфигурацията[2] и поясненията. XML може да се използва за презаписване на нотациите или да се отклони от началните настройки на платформата.
История на версиите
[редактиране | редактиране на кода]Платформата е била позната като Java 2 Platform, Enterprise Edition или J2EE, до момента, в който името е сменено на Java Platform,
Enterprise Edition или Java EE във версия 5. Сегашната версия е наименувана Jakarta EE.
- J2EE 1.2 (12 декември 1999)
- J2EE 1.3 (24 септември 2001)
- J2EE 1.4 (11 ноември 2003)
- Java EE 5 (11 май 2006)
- Java EE 6 (10 декември 2009)
- Java EE 7 (28 май 2013[3], 5 април 2013 според официалния документ)
- Jakarta EE 8 (10 септември 2019)
- Jakarta EE 9 (очаквано: 31 август 2020)
Стандарти и спецификации
[редактиране | редактиране на кода]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 предлага трансакции, сигурност, едновременност и управление на компонентите, които обслужва, за да позволи на разработчиците да се концентрират върху бизнес логиката на компонентите.
Основни интерфейси (APIs)
[редактиране | редактиране на кода]Java EE APIs включва няколко технологии, които разширяват функционалността на базата на Java SE APIs.
- Java EE 7 Platform Packages
- Java EE 6 Platform Packages
- Java EE 5 Platform Packages
javax.servlet.*
[редактиране | редактиране на кода]Спецификацията на servlet определя набор от интерфейси, които обслужват главно HTTP заявки. Тя включва JavaServer Pages (JSP) спецификация[4].
javax.websocket.*
[редактиране | редактиране на кода]Интерфейсът за спецификация WebSocket определя набор от интерфейси, които обслужват WebSocket връзки[5].
javax.faces.*
[редактиране | редактиране на кода]Този пакет дефинира основата на JavaServer Faces (JSF) API. Java Server Faces е технология за изграждане на потребителски интерфейси от компоненти[6].
javax.faces.component.*
[редактиране | редактиране на кода]Този пакет определя компонентната част на Java Server Faces API. Тъй като Java Server Faces е предимно компонентно ориентирана технология, това е един от основните ѝ пакети. Прегледът на пакет съдържа UML диаграма на йерархията на компонентите[7].
javax.el.*
[редактиране | редактиране на кода]Този пакет определя класовете и интерфейсите за Java EE Expression Language. Expression Language (EL) е език, първоначално проектиран да отговаря на специфичните нужди на разработчиците на уеб приложения. Той се използва специално в Java Server Faces да се свързват компоненти c бийнове и да именуваме бийнове в CDI, но може да се използва по време на цялата платформа[8].
javax.enterprise.inject.*
[редактиране | редактиране на кода]Тези пакети определят анотациите за вкарване на Contexts and Dependency Injection (CDI) APIs[9].
javax.enterprise.context.*
[редактиране | редактиране на кода]Тези пакети определят контекстните анотации и интерфейси за Contexts and Dependency Injection (CDI) API[10].
javax.ejb.*
[редактиране | редактиране на кода]Спецификацията Enterprise JavaBean (EJB) определя набор от леки APIs, поддържани от обектния контейнер (EJB container) за да се изпълняват финансови операции (с помощта на JTA), отдалечено извикване на процедури (използвайки RMI и RMI-IIOP), контрол за едновременност, вмъкване на зависимости (dependency injection) и контрол на достъп за бизнес обекти. Този пакет съдържа класовете Enterprise JavaBeans и интерфейсите, които определят договорите между предприятието и неговите клиенти и между предприятието и контейнер EJB[11].
javax.validation.*
[редактиране | редактиране на кода]Този пакет съдържа анотациите и интерфейси за поддръжка на декларативно валидиране, предлагани от Bean Validation API. Bean Validation осигурява единен начин за осигуряване на ограничения върху Bean класове (например JPA model classes), които могат да се прилагат с Cross-layer оптимизация. В Java EE, JPA спазва Bean Validation ограниченията в слоя Persistence, докато JSF го прави в слоя View[12].
javax.persistence.*
[редактиране | редактиране на кода]Този пакет съдържа договорите между persistence доставчик и управляваните класове и клиентите на Java Persistence (JPA) API[13].
javax.transaction.*
[редактиране | редактиране на кода]Този пакет предлага Java Transaction API (JTA), който съдържа интерфейсите и анотациите, които си взаимодействат с поддръжката за финасови операции, предлагана от Java EE. Въпреки че това API се абстрахира от детайлите на наистина ниско ниво, интерфейсите, също се считат донякъде на ниско ниво и се предполага, че обикновения Java EE разработчик на приложения или разчита на прозрачна обработка на финансови операции от по-високо ниво EJB абстракции, или използва анотациите, предоставени от това API в комбинация с CDI, управлявани beans класове[14].
javax.security.auth.message.*
[редактиране | редактиране на кода]Този пакет предлага ядрото на Java Authentication SPI (JASPIC), който съдържа интерфейсите и класовете за изграждане на модули за заверка за сигурни Java EE приложения. Authentication модули са отговорни за взаимодействието с потребителя (например пренасочване към форма или към доставчик на OpenID), проверка на входа на потребителя (например чрез LDAP търсене, заявка към база данни) и извличане на набор от групи / роли, в които заверения потребител участва или има (например като отново извършим LDAP търсене или заявка към база данни)[15].
javax.enterprise.concurrent.*
[редактиране | редактиране на кода]Този пакет предлага интерфейси за взаимодействие директно с управляваните по подразбиране нишки на Java EE платформата. Обслужване от изпълнител от по-високо ниво работещ на същата нишка, може да се използва по избор. Същите интерфейси могат да бъдат използвани за потребителски дефинирани управлявани нишки, но това зависи от специфичната конфигурация на продавача и не се покрива от спецификацията на Java EE[16].
javax.jms.*
[редактиране | редактиране на кода]Този пакет определя Java Message Service (JMS) API. За програмите на Java API JMS осигурява общ начин за създаване, изпращане, получаване и четене на съобщения от системата за съобщения на предприятието[17].
javax.batch.api.*
[редактиране | редактиране на кода]Този пакет определя входното API за Java EE Batch приложения. Batch Applications API предвижда средства за изпълнение на продължително изпълняващи се фонови задачи, които вероятно са свързани с голям обем от данни, и които може да се наложи да бъдат периодично изпълнявани[18].
javax.resource.*
[редактиране | редактиране на кода]Този пакет дефинира Java EE Connector Architecture (JCA) API. Java EE Connector Architecture (JCA) е Java-базирано технологично решение за свързване на сървъри за приложения и ентърпрайз информационни системи (EIS), като част от корпоративни решения за интегриране на приложения (EAI). Това е API за ниско равнище, насочен към доставчици, с които разработчиците обикновено нямат пряк контакт[19].
Уеб профили
[редактиране | редактиране на кода]В опит да се ограничи отпечатъка на уеб контейнерите и във физическо, и в концептуално отношение, уеб профилът е създаден като подразделение на спецификациите на Java EE. Уеб профилът на Java EE съдържа следните спецификации:
Спецификации | Java EE 6[20] | Java EE 7[21] |
---|---|---|
Сървлет (Servlet) | 3.0 | 3.1 |
JavaServer Страници(JSP) | 2.2 | 2.3 |
Обединен език за изразяване(EL) | 2.2 | 3.0 |
Поддръжка на отстраняване на грешки за други езици(JSR-45) | 1.0 | 1.0 |
Стандартен библиотечен таг за JavaServer Страници(JSTL) | 1.2 | 1.2 |
JavaServer Faces(JSF) | 2.0 | 2.2 |
Java API за RESTful Уеб Услуги(JAX-RS) | 1.1 | 2.0 |
Java API за WebSocket(Websocket) | няма данни | 1.0 |
Java API за JSON обработка(JSON-P) | няма данни | 1.0 |
Общи анотации за Java платформата(JSR-250) | 1.1 | 1.2 |
Enterprise JavaBeans(EJB) | 3.1 Lite | 3.2 Lite |
Java трансакционно API(JTA) | 1.1 | 1.2 |
Java Persistence API(JPA) | 2.0 | 2.1 |
Bean валидиране | 1.0 | 1.1 |
Управляеми Beans | 1.0 | 1.0 |
Прехващачи(Interceptors) | 1.1 | 1.2 |
Контекст и зависимо вмъкване за Java EE платформа | 1.0 | 1.1 |
Зависимо вмъкване за Java | 1.0 |
Сертифицирани сървъри на приложенията
[редактиране | редактиране на кода]Приложения за сървъри | Java EE 7
сертифициран |
Java EE 7 сертифициран
Уеб |
Java EE 6
сертифициран |
Java EE 6
Уеб сертифициран |
Java EE 5
сертифициран |
J2EE 1.4
сертифициран |
Лиценз |
---|---|---|---|---|---|---|---|
GlassFish сървър с открит код | Да v4.0[22] | Да v4.0[23] | Да v3.x и
нагоре[24] |
Да v3.x | Да v2.1.x[25] | безплатен софтуер | |
Oracle GlassFish Сървър | Да v3 | Да v9.0 | Да v8.2 | патентован софтуер | |||
Oracle WebLogic Сървър | Да v12.2.1[26][27][28] | Да v12c | Да v10.3.5.0 | Да v9.0 | патентован софтуер | ||
WildFly | Да v8.0.0 Final[29][30] | Да v8.0.0 Final | Да v7.1[31] | Да v7.0 и v6.0[32] | Да v5.1[33][34] | Да v4.x | безплатен софтуер |
JBOSS enterprise
платформа за приложения |
Да v6.0[35] | Да v5 | безплатен софтуер | ||||
IBM WebSphere сървър на приложения | Да v8[36] | Да v7 | Да | патентован софтуер | |||
IBM WebSphere Application Server Liberty | Да v8.5.5.6[37] | Да v8.5.5[38] | патентован софтуер | ||||
IBM WebSphere Application Server Свободна версия | Да v3 | Да v2.1 | патентован софтуер | ||||
Apache Geronimo | Да v3.0-бета | Да v2.0 | Да v1.0 | безплатен софтуер | |||
TmaxSoft JEUS | Да v8.0[39][40] | Да v7[41][42] | Да v6.0 | Да v5 | патентован софтуер | ||
Hitachi Сървърно приложение | Да v10.0[43][44] | Да v9[45] | патентован софтуер | ||||
Fujitsu Interstage сървър на приложения | Да v1 Azure[46] | Да | патентован софтуер | ||||
NEC webOTX | Да[47] | Да | патентован софтуер | ||||
Caucho Resin Сървър | Да v4.0[48] | Да | патентован софтуер | ||||
Apache TomEE[49][50] | Да | безплатен софтуер | |||||
OW2 Silpas | Да v6.0[51] | безплатен софтуер | |||||
OW2 JOnAS | Да v5.3[52] | Да | Да | безплатен софтуер | |||
SAP NetWeaver | Да v2.x[53] | Да | Да | патентован софтуер | |||
Oracle containers for Java EE | Да | патентован софтуер | |||||
Oracle iPlanet Уеб сървър | Да | патентован софтуер | |||||
Oracle сървър на приложения | Да | патентован софтуер | |||||
Pramati сървър | Да v5.0 | патентован софтуер | |||||
Trifork T4 | Да | патентован софтуер | |||||
Sybase[54] сървър на приложения | Да | патентован софтуер |
Примерен код
[редактиране | редактиране на кода]Примерният код по-долу показва как различни технологии в 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>
Backing Bean клас
[редактиране | редактиране на кода]За да спомогне за визуализацията, 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;
}
}
DAO клас
[редактиране | редактиране на кода]В 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 клас
[редактиране | редактиране на кода]За дефиниране на 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;
}
}
Източници
[редактиране | редактиране на кода]- ↑ „Differences between Java EE and Java SE – Your First Cup: An Introduction to the Java EE Platform“. Docs.oracle.com. 1 април 2012. Посетен на 18 юли 2012
- ↑ jdevelopment.nl, архив на оригинала от 12 май 2016, https://web.archive.org/web/20160512162811/http://jdevelopment.nl/minimal-3tier-java-ee-app-xml-config/, посетен на 27 април 2016
- ↑ jcp.org
- ↑ javax.servlet.*
- ↑ javax.websocket.*
- ↑ javax.faces.*
- ↑ javax.faces.component.*
- ↑ javax.el.*
- ↑ javax.enterprise.inject.*
- ↑ javax.enterprise.context.*
- ↑ javax.ejb.*
- ↑ javax.validation.*
- ↑ javax.persistence.*
- ↑ javax.transaction.*
- ↑ javax.security.auth.message.*
- ↑ javax.enterprise.concurrent.*
- ↑ javax.jms.*
- ↑ javax.batch.api.*
- ↑ javax.resource.*
- ↑ jcp.org
- ↑ jcp.org
- ↑ www.oracle.com
- ↑ www.oracle.com
- ↑ glassfish.dev.java.net, архив на оригинала от 20 декември 2012, https://archive.today/20121220022558/https://glassfish.dev.java.net/public/comparing_v2_and_v3.html, посетен на 27 април 2016
- ↑ glassfish.dev.java.net, архив на оригинала от 20 декември 2012, https://archive.today/20121220022558/https://glassfish.dev.java.net/public/comparing_v2_and_v3.html, посетен на 27 април 2016
- ↑ www.oracle.com
- ↑ blogs.oracle.com
- ↑ docs.oracle.com
- ↑ lists.jboss.org
- ↑ issues.jboss.org
- ↑ planet.jboss.org
- ↑ jbossas.jboss.org
- ↑ JBoss AS is now EE5 certified, архив на оригинала от 20 септември 2008, https://web.archive.org/web/20080920223001/http://sacha.labourey.com/2008/09/15/jboss-as-is-now-ee5-certified/, посетен на 27 април 2016
- ↑ Java EE Compatibility
- ↑ Business Wire (2012-06-20). „Red Hat Launches JBoss Enterprise Application Platform 6 to Help Enterprises Move Application Development and Deployment to the Cloud“. Business Wire. Посетен на 18 юли 2012.
- ↑ „What's new in WebSphere Application Server V8“ Ibm.com. Посетен на 18 юли 2012.
- ↑ developer.ibm.com
- ↑ www.oracle.com
- ↑ blogs.oracle.com
- ↑ www.oracle.com
- ↑ „Java EE6 Web Application Server, WAS Software“ Архив на оригинала от 2012-07-02 в Wayback Machine.. Us.tmaxsoft.com. Посетен на 18 юли 2012.
- ↑ „Tested Configurations, Java EE 6 – TMAX JEUS 7“. Oracle.com. 7 септември 2010. Посетен на 18 юли 2012.
- ↑ blogs.oracle.com
- ↑ oracle.com
- ↑ „Java EE 6 – Tested Configurations, Java EE 6 – Hitachi uCosminexus Application Server v9.0“. Oracle.com.
- ↑ „Tested Configurations, Java EE6 – Fujitsu Interstage“. Oracle.com. 7 септември 2010. Посетен на 18 юли 2012.
- ↑ www.oracle.com
- ↑ www.caucho.com
- ↑ „MarketWatch.com“. MarketWatch.com. Посетен на 18 юли 2012.
- ↑ „Apache TomEE“. Openejb.apache.org. Посетен на 18 юли 2012.
- ↑ „Please Welcome Siwpas as Java EE Certified Option!“. Oracle.com. Посетен на 7 декември 2015.
- ↑ jonas.ow2.org, архив на оригинала от 15 октомври 2013, https://web.archive.org/web/20131015132408/http://jonas.ow2.org/xwiki/bin/view/Blog/JOnAS+530+RC1+released, посетен на 27 април 2016
- ↑ blogs.oracle.com
- ↑ EAServer
Външни препратки
[редактиране | редактиране на кода]- Oracle Technology Network's Java EE
- Oracle's Java EE Compatibility page
- Кратък онлайн урок за начинаещи.
Вижте също
[редактиране | редактиране на кода]Тази страница частично или изцяло представлява превод на страницата Java EE в Уикипедия на английски. Оригиналният текст, както и този превод, са защитени от Лиценза „Криейтив Комънс – Признание – Споделяне на споделеното“, а за съдържание, създадено преди юни 2009 година – от Лиценза за свободна документация на ГНУ. Прегледайте историята на редакциите на оригиналната страница, както и на преводната страница, за да видите списъка на съавторите.
ВАЖНО: Този шаблон се отнася единствено до авторските права върху съдържанието на статията. Добавянето му не отменя изискването да се посочват конкретни източници на твърденията, които да бъдат благонадеждни. |