Mengapa pustaka tidak dapat berfungsi di luar lingkungan server aplikasi?
Sebenarnya mereka bisa. Sebagian besar pustaka dapat langsung digunakan mandiri (di Java SE) atau disertakan dalam .war (hampir selalu Tomcat). Beberapa bagian Java EE, seperti JPA, memiliki bagian eksplisit dalam spesifikasinya masing-masing yang memberi tahu cara kerja dan penggunaan di Java SE.
Jika ada, bukan hanya lingkungan server aplikasi yang dipertaruhkan di sini, tetapi keberadaan semua perpustakaan lain dan kode integrasi yang menyatukannya.
Karena itu, anotasi akan dipindai hanya sekali untuk semua kelas Anda, bukan setiap perpustakaan (EJB, JPA, dll) melakukan pemindaian ini berulang kali. Karena itu, penjelasan CDI dapat diterapkan ke biji EJB dan pengelola entitas JPA dapat disuntikkan ke dalamnya.
Mengapa saya membutuhkan sesuatu yang besar seperti JBoss hanya untuk mengkompilasi kode sederhana untuk mengirim email?
Ada beberapa hal yang salah dengan pertanyaan ini:
- Untuk kompilasi Anda hanya membutuhkan API jar, yang di bawah 1MB untuk Profil Web, dan sedikit di atas 1MB untuk profil lengkap.
- Untuk menjalankan Anda jelas membutuhkan implementasi, tetapi "masif" terlalu melebih-lebihkan. OpenJDK misalnya berukuran sekitar 75MB dan TomEE (implementasi Profil Web yang berisi dukungan email) hanya 25MB. Bahkan GlassFish (implementasi Profil Lengkap) hanya 53MB.
- Mail bekerja dengan sangat baik dari Java SE (dan dengan demikian Tomcat) juga menggunakan mail.jar mandiri dan activation.jar .
Mengapa pustaka Java EE tidak "standar" dan disertakan dalam unduhan JVM reguler dan / atau SDK?
Java EE adalah salah satu upaya pertama untuk membagi JDK yang sudah besar menjadi beberapa bagian yang lebih mudah untuk dikelola dan diunduh. Orang-orang sudah mengeluh bahwa kelas grafis (AWT, Swing) dan Applet ada di dalam JRE ketika yang mereka lakukan hanyalah menjalankan beberapa perintah di server tanpa kepala. Dan kemudian Anda juga ingin memasukkan semua pustaka Java EE di JDK standar?
Dengan rilis dukungan modularitas, kami hanya akan memiliki JRE basis kecil dengan banyak hal yang dapat diinstal secara terpisah sebagai paket. Mungkin suatu saat nanti banyak atau bahkan semua kelas yang sekarang membuat Java EE akan menjadi paket seperti itu juga. Waktu akan menjawab.
Mengapa ada begitu banyak penawaran Java EE padahal sebenarnya hanya ada dua rasa utama dari Java standar (Oracle JVM / SDK | OpenJDK JVM / JDK)?
Ada lebih dari dua rasa Java SE. Setidaknya ada JDK IBM, BEA sebelumnya (JRocket, yang digabungkan menjadi Oracle / Sun karena akuisisi), berbagai implementasi open source lainnya, dan banyak implementasi untuk penggunaan yang disematkan.
Alasan di balik Java SE dan EE menjadi spesifikasi adalah karena banyak vendor dan organisasi dapat menerapkannya dan dengan demikian mendorong persaingan dan mengurangi risiko vendor lock-in.
Ini benar-benar tidak berbeda dengan kompiler C dan C ++, di mana Anda memiliki banyak penawaran yang bersaing dan semuanya mengikuti standar C ++.
Mengapa versi pustaka Java EE tidak sinkron dengan rilis pustaka Java standar (Java EE 6 vs. Java 7)
Java EE dibangun di atas Java SE, sehingga tertinggal. Versi memang sesuai. Java EE 5 membutuhkan Java SE 5. Java EE 6 membutuhkan Java SE 6 dan seterusnya. Hanya saja kebanyakan saat Java SE X sudah ada, maka Java EE X-1 sudah ada.