Apa sebenarnya Java EE?

162

Saya telah melakukan Java SE selama beberapa tahun sekarang dan pindah ke Java EE. Namun, saya mengalami kesulitan memahami beberapa aspek Java EE.

  1. Apakah Java EE hanya spesifikasi? Apa yang saya maksud adalah: Apakah EJB Java EE?

  2. Apakah EJB / Spring implementasi yang berbeda dari Java EE?

Saya minta maaf untuk bertanya tetapi saya memiliki beberapa kesulitan untuk memahami apa itu Java EE.

Bisakah seseorang menjelaskan apa itu Java EE? Dan EJB?

Frank Zimmer
sumber
2
Anda harus memotong pertanyaan ini dalam dua pertanyaan, satu adalah duplikat, yang lain saya pikir tidak dijawab di tautan di sana.
Kheldar
2
Sebenarnya, apakah Anda membaca wiki tag [java-ee] ?
Paŭlo Ebermann

Jawaban:

187

Apakah Java EE hanya spesifikasi? Apa yang saya maksud adalah: Apakah EJB Java EE?

Java EE memang spesifikasi abstrak . Siapa pun terbuka untuk mengembangkan dan menyediakan implementasi spesifikasi kerja. The beton implementasi yang disebut server aplikasi, seperti WildFly , TomEE , GlassFish , Liberty , WebLogic , dll Ada juga wadah servlet yang mengimplementasikan hanya JSP / Servlet bagian dari API Java EE besar, seperti Tomcat , Jetty , dll.

Kami, Java EE pengembang, harus menulis kode menggunakan spesifikasi (yaitu mengimpor hanya javax.* kelas dalam kode kita bukan kelas khusus implementasi seperti org.jboss.wildfly.*, com.sun.glassfish.*, dll) dan kemudian kita akan dapat menjalankan kode kami pada pelaksanaan apapun (dengan demikian, pada setiap server aplikasi). Jika Anda terbiasa dengan JDBC, pada dasarnya konsepnya sama dengan cara kerja driver JDBC. Lihat juga ao. Secara sederhana, apa itu pabrik?

The Java EE SDK Download dari Oracle.com pada dasarnya berisi server GlassFish bersama sekelompok dokumentasi dan contoh dan opsional juga NetBeans IDE. Anda tidak memerlukannya jika Anda menginginkan server dan / atau IDE yang berbeda.

EJB adalah bagian dari spesifikasi Java EE. Lihat, itu ada di Java EE API . Server aplikasi Java EE yang lengkap mendukungnya, tetapi kontainer JSP / Servlet sederhana tidak.

Lihat juga:


Apakah EJB / Spring implementasi yang berbeda dari Java EE?

Tidak, seperti yang dikatakan, EJB adalah bagian dari Java EE. Spring adalah kerangka kerja mandiri yang menggantikan dan meningkatkan banyak bagian Java EE. Spring tidak selalu membutuhkan Java EE untuk dijalankan. Wadah servlet tanpa tulang seperti Tomcat sudah cukup. Sederhananya, Spring adalah pesaing Java EE. Misalnya "Spring" (mandiri) bersaing EJB / JTA, Spring MVC bersaing JSF / JAX-RS, Spring DI / IoC / AOP bersaing CDI, Spring Security bersaing JAAS / JASPIC, dll.

Kembali selama masa J2EE / EJB2 lama, API EJB2 mengerikan untuk diimplementasikan dan dipelihara. Musim semi adalah alternatif yang jauh lebih baik untuk EJB2. Tetapi sejak EJB3 (Java EE 5), API EJB jauh lebih baik berdasarkan pelajaran yang dipetik dari Spring. Sejak CDI (Java EE 6), sebenarnya tidak ada alasan untuk melihat lagi kerangka kerja lain seperti Spring untuk membuat pengembang lebih mudah untuk mengembangkan antara lain lapisan layanan.

Hanya ketika Anda menggunakan wadah servlet tanpa tulang seperti Tomcat dan tidak dapat beralih ke server Java EE, maka Spring lebih menarik karena lebih mudah untuk menginstal Spring pada Tomcat. Tidak mungkin menginstal misalnya wadah EJB di Tomcat tanpa memodifikasi server itu sendiri, Anda pada dasarnya akan menciptakan kembali TomEE.

Lihat juga:

BalusC
sumber
2
Jadi Java EE dapat dikatakan mendefinisikan dukungan apa yang harus ada untuk menjalankan aplikasi JEE?
James P.
4
@ James: Ya. Cukup semuanya di Java EE API adalah abstrak. Java SE API juga memiliki beberapa bagian abstrak, misalnya JDBC, JAXP, JAXB, dll.
BalusC
3
"Sebenarnya tidak ada alasan untuk melihat lagi kerangka kerja lain seperti Spring untuk membuat pengembang lebih mudah." -> Info Sangat Berharga.
jacktrades
@BalusC: Hai, Apakah tautan resmi Java Java EE .... rusak, jika Anda memberikan tautan yang mirip dengan itu, itu akan sangat membantu bagi seseorang.
Abdul Rahman
Untuk menjalankan framework Spring lengkap, kontainer Servlet akan mencukupi, kontainer Servlet adalah [server web + kontainer web (mengimplementasikan servlet api)] di mana untuk menjalankan Java EE, Anda memerlukan server aplikasi seperti Glassfish. Wadah servlet tidak akan cukup. Wadah servlet adalah bagian dari server aplikasi. Bagaimana saya mengerti ini?
pertukaran berlebihan
11

Java Enterprise Edition (Java EE) adalah spesifikasi payung yang merujuk sejumlah spesifikasi lebih rinci lainnya, di mana Enterprise JavaBeans (EJB) adalah salah satu yang lebih penting.

Baca ini - ini menjelaskan perbedaan antara Java EE dan Spring

Terima kasih...

Prabath Siriwardena
sumber
4
  • Sumber - Java 2 Platform, Enterprise Edition (J2EE) mendefinisikan standar untuk mengembangkan aplikasi perusahaan multitier berbasis komponen. J2EE menyederhanakan membangun aplikasi perusahaan yang portabel, dapat diskalakan, dan yang terintegrasi dengan mudah dengan aplikasi dan data lama.

  • Sumber - Teknologi Enterprise JavaBeans (EJB) adalah arsitektur komponen sisi server untuk Platform Java, Enterprise Edition (Java EE). Teknologi EJB memungkinkan pengembangan aplikasi terdistribusi, transaksional, aman dan portabel yang cepat dan mudah berdasarkan teknologi Java.

  • Apakah Java EE hanya spesifikasi? Apa yang saya maksud adalah: Apakah EJB Java EE?

    • Java EE adalah spesifikasi.

    • EJB adalah arsitektur komponen sisi server untuk Java EE

  • Apakah EJB / Spring implementasi yang berbeda dari Java EE?

    • EJB dan Spring keduanya merupakan kerangka kerja yang berbeda mengikuti Java EE.
Srikanth Venkatesh
sumber
6
Mungkin tidak terlalu berguna untuk mengutip teks kuno (2005) dari versi spesifikasi kuno (J2EE). OP secara khusus meminta Java EE, yang merupakan inkarnasi modern J2EE.
Arjan Tijms
-5

Sederhananya - JavaEE adalah sebuah platform.

Itu terdiri dari banyak spesifikasi yang hanya API. Implementasi konkret spesifik dari API ini adalah apa yang disebut 'Implementasi Referensi'

  1. EJB hanyalah satu spesifikasi dalam platform JavaEE
  2. Tidak, Spring adalah kerangka kerja aplikasi yang dapat memungkinkan Anda / memiliki dukungan bagi Anda untuk mengembangkan aplikasi JavaEE

EJB adalah Enterprise Java Beans

Pengembang perangkat lunak
sumber
4
Jawaban ini tidak menambahkan apa pun ke jawaban sebelumnya. Selain itu, itu tidak akurat: hanya satu implementasi konkret adalah Referensi, yang lain tidak. Minor satu: Spring terintegrasi dengan JavaEE, tetapi dapat bekerja tanpanya baik-baik saja.
Tair 6/15
@tair Ya hanya 1 implementasi konkret yang dianggap sebagai 'Referensi' untuk misalnya JPA memiliki banyak implementasi tetapi hanya EclipseLink yang merupakan RI. Ketika saya menyebutkan RI, saya bermaksud di berbagai API. Saya pikir Anda salah mengerti jawaban saya di atas. Juga, ya, Spring terintegrasi dengan JavaEE yang saya sebutkan di atas.
SoftwareDeveloper