Чому бібліотеки не можуть функціонувати поза середовищем сервера додатків?
Насправді вони можуть. Більшість бібліотек можна використовувати безпосередньо в автономному режимі (в Java SE) або включати в .war (практично це майже завжди Tomcat). Деякі частини Java EE, як-от JPA, мають у своїх специфікаціях чіткі розділи, що вказують, як вони повинні працювати та використовуватися в Java SE.
У будь-якому випадку, тут поставлено під сумнів не стільки середовище сервера додатків, скільки наявність усіх інших бібліотек та інтеграційний код, який їх об'єднує.
Через це анотації будуть проскановані лише один раз для всіх ваших класів замість кожної бібліотеки (EJB, JPA тощо), виконуючи це сканування знову і знову. Крім того, анотації CDI можуть бути застосовані до EJB-бобів, а менеджери організацій JPA можуть бути введені в них.
Чому мені потрібно щось масове, як JBoss, просто для складання простого коду для надсилання електронного листа?
У цьому питанні є кілька помилок:
- Для компіляції вам потрібна лише банка API, яка нижче 1 Мб для веб-профілю, і трохи більше 1 МБ для повного профілю.
- Для запуску вам очевидно потрібна реалізація, але "масовий" - це завищення речей. Наприклад, OpenJDK становить близько 75 Мб, а TomEE (реалізація веб-профілю, що підтримує пошту) становить лише 25 Мб. Навіть GlassFish (реалізація повного профілю) становить лише 53 Мб.
- Пошта відмінно працює від Java SE (і, отже, Tomcat), а також використовуючи окремий mail.jar та activation.jar .
Чому бібліотеки Java EE не є "стандартними" і не включаються до регулярного завантаження JVM та / або SDK?
Java EE певним чином була однією з перших спроб розбити вже масову JDK на шматки, якими простіше керувати та завантажувати. Люди вже скаржаться, що графічні класи (AWT, Swing) та аплети знаходяться всередині JRE, коли все, що вони роблять, це запускати деякі команди на безголовому сервері. І тоді ви також хочете включити всі бібліотеки Java EE в стандартний JDK?
З можливим випуском підтримки модульності ми просто матимемо невелику базу JRE з багатьма речами, які можна встановити окремо як пакети. Можливо, одного дня багато чи навіть усі класи, які зараз складають Java EE, також будуть таким пакетом. Час покаже.
Чому так багато пропозицій Java EE, коли дійсно є лише два основних аромати стандартної Java (Oracle JVM / SDK | OpenJDK JVM / JDK)?
Існує більше ніж два аромати Java SE. Існує принаймні IBM JDK, попередній BEA (JRocket, який об'єднується в Oracle / Sun один через придбання), різні інші реалізації з відкритим кодом та низка реалізацій для вбудованого використання.
Причина, по якій Java SE та EE є специфікацією, полягає в тому, що багато постачальників та організацій можуть її впроваджувати, і, таким чином, це заохочує конкуренцію та зменшує ризик блокування постачальника.
Це дійсно не відрізняється від компіляторів C і C ++, де у вас є багато конкуруючих пропозицій, а також всі, які дотримуються стандарту C ++.
Чому версія бібліотеки Java EE не синхронізується зі стандартними випусками бібліотеки Java (Java EE 6 проти Java 7)
Java EE будується на Java SE, тому він відстає. Однак версії відповідають. Java EE 5 вимагає Java SE 5. Java EE 6 вимагає Java SE 6 тощо. Просто тоді, коли Java SE X є поточною, Java EE X-1 є поточною.