JavaRush /Blog Jawa /Random-JV /Pambuka kanggo Java EE
zor07
tingkat
Санкт-Петербург

Pambuka kanggo Java EE

Diterbitake ing grup
Dina iki kita bakal ngomong babagan apa iku - Java EE: apa sing kalebu, apa fitur arsitektur aplikasi Java EE, lan kita bakal menehi katrangan babagan macem-macem teknologi platform iki. Topik dhewe iku ekstensif, nanging kita ora bakal mandheg ing dhasar. Ing pungkasan, kita bakal nggawe perbandingan cilik Jawa EE karo Spring Framework lan njawab pitakonan: "apa sing luwih apik kanggo sinau" (spoiler: mesthine sampeyan kudu sinau kabeh =) ) Pambuka Jawa EE - 1Ayo miwiti kanthi dhasar.

Java EE - apa iku?

Java EE minangka platform sing dibangun ing ndhuwur Java SE sing nyedhiyakake lingkungan API lan runtime kanggo ngembangake lan mbukak aplikasi jaringan skala gedhe, multi-tier, skalabel, dipercaya, lan aman. Aplikasi kasebut diarani aplikasi perusahaan amarga ngatasi masalah sing diadhepi bisnis gedhe. Nanging, perusahaan gedhe lan instansi pemerintah ora mung sing bisa entuk manfaat saka aplikasi kasebut lan keuntungan sing diwenehake Java EE. Solusi sing ditawakake platform Java EE migunani, lan kadhangkala mung perlu, kanggo pangembang individu lan organisasi cilik.

Pangembangan EE Jawa

Java EE dikembangake liwat Java Community Process (JCP), dibentuk ing taun 1998. Iki ngidini pihak sing kasengsem kanggo melu mbentuk versi spesifikasi platform basa Jawa ing mangsa ngarep. Basis proses iki yaiku JSR (Java Specification Request), dokumen resmi sing njlèntrèhaké spesifikasi lan teknologi sing diusulaké kanggo ditambahaké ing platform Java. Panjaluk kasebut ditindakake dening anggota komunitas - pangembang lan perusahaan biasa. Sing terakhir kalebu Oracle, Red Hat, IBM, Apache lan liya-liyane. Sing. wong lanang ngusulake fitur-fitur anyar lan barang-barang kanggo pertimbangan sing pengin kalebu ing Jawa. Lan banjur padha terus voting, ing basis kang kaputusan digawe ing apa kalebu ing versi sabanjuré. Riwayat versi Java EE katon kaya iki:
  • J2EE 1.2 (Desember 1999)
  • J2EE 1.3 (September 2001)
  • J2EE 1.4 (November 2003)
  • Java EE 5 (Mei 2006)
  • Java EE 6 (Desember 2009)
  • Jawa EE 7 (Mei)
  • Java EE 8 (Agustus 2017)
  • Jakarta EE 8 (September 2019)
Ing 2017, ana tonggak sejarah anyar ing pangembangan platform: Oracle nransfer kontrol pangembangan Java EE menyang Eclipse Foundation. Lan ing April 2018, Java EE diganti jeneng dadi Jakarta EE, sing kompatibel karo Java EE 8.

Arsitektur Aplikasi Java EE

Pambuka singkat. Supaya luwih gampang dimangerteni, ayo dirembug babagan struktur aplikasi Java EE lan sawetara istilah sing bakal digunakake maneh. Aplikasi Java EE nduweni struktur sing nduweni rong kuwalitas utama:
  • Kaping pisanan, multi-level. aplikasi Java EE multi-tiered, lan kita bakal pirembagan bab iki ing liyane rinci;
  • kapindho, nesting. Ana server Java EE (utawa server aplikasi), karo kontaner komponen dumunung nang. Iki kontaner house (bingo!) komponen.
Kanggo nerangake arsitektur aplikasi Java EE, ayo ngomong babagan lapisan. Apa tingkatan? Apa teknologi Java EE sing digunakake ing tingkat sing beda-beda? Sabanjure, kita bakal ngrembug babagan carane server aplikasi, wadhah komponen, lan komponen kasebut saling nyambungake. Nanging mbudidaya sing kabeh iki views saka sudhut sing beda ing bab sing padha, lan urutan ora dadi penting kene.

Tingkat aplikasi

Aplikasi multi-tier yaiku aplikasi sing dipérang miturut prinsip fungsional dadi modul terisolasi (tingkat, lapisan). Biasane (kalebu ing konteks pangembangan Java EE), aplikasi perusahaan dipérang dadi telung tingkat:
  • klien;
  • tingkat rata-rata;
  • tingkat akses data.
  1. Lapisan klien minangka aplikasi sing njaluk data saka server Java EE (lapisan tengah). Server, ing siji, proses panjalukan klien lan ngasilake respon kanggo. Aplikasi klien bisa dadi browser, aplikasi mandiri (seluler utawa desktop), utawa aplikasi server liyane tanpa antarmuka grafis.

  2. Tingkat tengah dipérang dadi tingkat web lan tingkat logika bisnis.

    1. Lapisan web kasusun saka sawetara komponen sing nyedhiyakake interaksi antarane klien lan lapisan logika bisnis.

      Teknologi Java EE ing ngisor iki digunakake ing tingkat web:

      • Teknologi JavaServer Faces (JSF);
      • Java Server Pages (JSP);
      • Basa Ekspresi (EL);
      • Servlets;
      • Konteks lan Dependency Injection kanggo Java EE (CDI).

    2. Lapisan logika bisnis kasusun saka komponen sing ngetrapake kabeh logika bisnis aplikasi kasebut. Logika bisnis minangka kode sing nyedhiyakake fungsi sing nyakup kabutuhan area bisnis tartamtu (industri keuangan, perbankan, e-commerce). Tingkat iki bisa dianggep minangka inti saka kabeh sistem.

      Teknologi sing melu ing tingkat iki:

      • Enterprise JavaBeans (EJB);
      • Layanan web JAX-RS RESTful;
      • entitas Java Persistence API;
      • Layanan Pesen Jawa.

  3. Tingkat akses data. Tingkat iki kadhangkala disebut tingkat sistem informasi perusahaan (EIS). EIS kasusun saka macem-macem server database, ERP (Enterprise Resource Planning) sistem perencanaan sumber daya perusahaan lan sumber data liyane. Lapisan logika bisnis ngakses lapisan iki kanggo data.

    Ing tingkat iki sampeyan bisa nemokake teknologi kayata:

    • Java Database Connectivity API (JDBC);
    • Java Persistence API;
    • Arsitektur Konektor EE Jawa;
    • Java Transaction API (JTA).

Server aplikasi, wadhah, komponen

Ayo deleng definisi Java EE saka Wikipedia. Java EE minangka set spesifikasi lan dokumentasi sing gegandhengan kanggo basa Jawa, nggambarake arsitektur platform server kanggo tugas perusahaan menengah lan gedhe. Kanggo luwih ngerti apa tegese "set spesifikasi" ing konteks iki, ayo digambar analogi karo antarmuka Jawa. Antarmuka Jawa dhewe ora duwe fungsi. Iku mung nemtokake sawetara kontrak miturut kang sawetara fungsi dipun ginakaken. Nanging kelas liyane ngleksanakake antarmuka. Kajaba iku, siji antarmuka bisa duwe sawetara implementasine, sing saben-saben bisa beda-beda ing sawetara rincian. Kanthi spesifikasi kabeh persis padha. Naked Java EE mung sakumpulan spesifikasi. Spesifikasi iki dileksanakake dening macem-macem server Java EE. Server Java EE minangka aplikasi server sing ngetrapake API platform Java EE lan nyedhiyakake layanan Java EE standar. Server Java EE kadhangkala disebut server aplikasi. Data server bisa ngemot komponen aplikasi, sing saben cocog karo level dhewe ing hirarki multi-level. Server Java EE nyedhiyakake macem-macem layanan kanggo komponen kasebut ing wangun wadhah. Kontainer minangka antarmuka antarane komponen sing dadi tuan rumah lan fungsionalitas independen platform tingkat rendah sing ndhukung komponen kasebut. Kontainer nyedhiyakake layanan khusus kanggo komponen sing dadi tuan rumah. Contone, manajemen siklus urip pembangunan, injeksi dependensi, konkurensi, lsp. Wadah ndhelikake kerumitan teknis lan nambah portabilitas. Ana papat jinis wadhah ing Java EE :
  1. Wadah Applet dileksanakake dening umume browser. Nalika ngembangake applet, sampeyan bisa konsentrasi ing sisih visual aplikasi, nalika wadhah nyedhiyakake lingkungan sing aman.

  2. Application Client Container (ACC) ngemot sakumpulan kelas Java, perpustakaan, lan file liyane sing dibutuhake kanggo ngetrapake fitur kayata injeksi, manajemen keamanan, lan layanan jeneng ing aplikasi Java SE.

  3. Wadah web nyedhiyakake layanan inti kanggo ngatur lan nglakokake komponen web (servlet, komponen EJB Lite, kaca JSP, saringan, pamireng, kaca JSF, lan layanan web). Iku tanggung jawab kanggo instantiating, initializing lan invoking servlets, lan ndhukung protokol HTTP lan HTTPS. Wadah iki digunakake kanggo nglayani kaca web menyang browser klien.

  4. Wadah EJB (Enterprise Java Bean) tanggung jawab kanggo ngatur lan nglakokake komponen model EJB sing ngemot lapisan logika bisnis aplikasi. Nggawe entitas kacang EJB anyar, ngatur siklus urip, lan nyedhiyakake layanan kayata transaksi, keamanan, konkurensi, distribusi, jeneng, utawa kemampuan invocation asinkron.

Uga ing Java EE ana papat jinis komponen sing implementasine saka spesifikasi Java EE kudu ndhukung:
  1. Applets minangka aplikasi antarmuka panganggo grafis (GUI) sing mlaku ing browser. Dheweke nggunakake API Swing sing sugih kanggo ngasilake antarmuka pangguna sing kuat.

  2. Aplikasi minangka program sing mbukak ing sisih klien. Biasane antarmuka pangguna grafis (GUI) lan digunakake kanggo pangolahan batch.

  3. Aplikasi web (sing dumadi saka servlet lan saringane, pamireng acara web, kaca JSP lan JSF) - mbukak ing wadhah web lan nanggapi panjalukan HTTP saka klien web. Servlet uga ndhukung SOAP lan titik pungkasan layanan web RESTful.

  4. Aplikasi perusahaan (dibangun karo Enterprise Java Beans, Java Message Service, Java Transaction API, Asynchronous Calls, Time Services) mbukak ing wadhah EJB. EJB sing dikelola kontainer nangani logika bisnis transaksional. Bisa diakses sacara lokal utawa adoh liwat RMI (utawa HTTP kanggo layanan web SOAP lan RESTful).

Diagram ing ngisor iki nuduhake arsitektur aplikasi Java EE sing khas: Pambuka Jawa EE - 2

Teknologi

Dadi, kita wis ngatur arsitektur. Struktur sakabèhé kudu cetha. Ing proses njlentrehake komponen arsitektur, kita ndemek sawetara teknologi Java EE kayata EJB, JSP, lan liya-liyane. Ayo dideleng kanthi luwih rinci. Tabel ing ngisor iki nuduhake teknologi sing digunakake utamane ing tingkat klien:
Teknologi tujuane
Servlet Kelas Java sing ngolah panjalukan klien kanthi dinamis lan ngasilake respon (biasane kaca HTML).
Java Server Faces (JSF) Kerangka kanggo mbangun aplikasi web kanthi antarmuka panganggo. Ngidini sampeyan nyakup komponen antarmuka panganggo (contone, kolom lan tombol) ing kaca, ngowahi lan validasi komponen kasebut, lan nyimpen data iki ing panyimpenan sisih server.
Teknologi Facelet Java Server Faces Iku subtipe saka aplikasi JSF sing nggunakake kaca XHTML tinimbang kaca JSP
Java Server Pages (JSP) Dokumen teks sing dikompilasi dadi servlet. Ngidini sampeyan nambah konten dinamis menyang kaca statis (kayata kaca HTML)
Pustaka Tag Standar Java Server Pages (JSTL) Pustaka tag sing ngemot fungsi inti ing konteks kaca JSP.
Basa Ekspresi Sakumpulan tag standar sing digunakake ing kaca JSP lan Facelets kanggo ngakses komponen Java EE.
Konteks lan Injeksi Ketergantungan kanggo Java EE (CDI) Nggantosi pesawat saka layanan sing diwenehake dening wadhah Java EE kanggo ngatur siklus urip komponen, uga nyuntikaken komponen menyang obyek klien ing cara aman.
Komponen Kacang Jawa Obyek sing tumindak minangka panyimpenan data sementara kanggo kaca aplikasi.
Tabel ing ngisor iki nuduhake teknologi sing digunakake ing tingkat logika bisnis:
Teknologi tujuane
Komponen Enterprise Java Beans (enterprise bean). EJB minangka kacang sing dikelola sing ngemot fungsi inti saka sawijining aplikasi.
Layanan web JAX-RS RESTful Iki minangka API kanggo ngembangake layanan web sing tundhuk karo gaya arsitektur REST.
Titik pungkasan layanan web JAX-WS API kanggo nggawe lan nggunakake layanan web SOAP.
Entitas Java Persistence API (JPA). API kanggo ngakses data ing nyimpen data lan ngowahi data kasebut dadi obyek basa pemrograman Jawa lan kosok balene.
Java EE ngatur kacang Kacang sing ngatur sing nyedhiyakake logika bisnis aplikasi nanging ora mbutuhake fitur transaksi utawa keamanan EJB.
Layanan Pesen Jawa Java Message Service (JMS) API minangka standar olahpesen sing ngidini komponen aplikasi Java EE nggawe, ngirim, nampa, lan maca pesen. Iki njamin komunikasi sing disebarake, dipercaya lan ora sinkron ing antarane komponen.
Tabel ing ngisor iki nuduhake teknologi sing digunakake ing lapisan akses data:
Teknologi tujuane
Java Database Connectivity API (JDBC) API tingkat rendah kanggo ngakses lan njupuk data saka toko data. Panggunaan khas JDBC yaiku nulis pitakon SQL marang database tartamtu.
Java Persistence API API kanggo ngakses data ing nyimpen data lan ngowahi data kasebut dadi obyek basa pemrograman Jawa lan kosok balene. Tingkat API sing luwih dhuwur tinimbang JDBC. Singidaken kabeh kerumitan JDBC saka pangembang ing hood.
Arsitektur Konektor EE Jawa API kanggo nyambungake sumber daya perusahaan liyane, kayata:
  • ERP (Enterprise Resource Planning, Enterprise Resource Planning System),
  • CRM (Inggris: Customer Relationship Management, customer relationship management system).
Java Transaction API (JTA) API kanggo nemtokake lan ngatur transaksi, kalebu transaksi lan transaksi sing disebarake ing pirang-pirang toko data.

Jawa EE vs Spring

Spring Framework dianggep minangka pesaing Java EE. Yen sampeyan ndeleng pangembangan rong platform kasebut, gambar sing menarik muncul. Versi pisanan Java EE digawe kanthi partisipasi IBM. Padha dadi kelangan, nanging kikuk, abot, lan ora trep kanggo nggunakake. Pangembang berjuang amarga kudu njaga file konfigurasi sing akeh lan alasan liyane sing nggawe rumit pembangunan. Ing wektu sing padha, Spring IoC lair. Iku perpustakaan cilik, ayu lan gampang kanggo nggunakake. Uga nggunakake file konfigurasi, nanging ora kaya Java EE, mung ana siji. Kesederhanaan Spring wis nyebabake kasunyatan manawa meh kabeh wong wiwit nggunakake kerangka iki ing proyeke. Lan banjur Spring lan Java EE wiwit dalan menyang bab sing padha, nanging saka ends beda. Pivotal Software, pangembang Spring, wiwit ngeculake proyek sawise proyek kanggo nutupi kabeh kabutuhan pangembang Java sing bisa lan ora mungkin. Mboko sithik, apa sing sadurunge disebut Spring pisanan dadi salah sawijining proyek, lan banjur rampung digabung karo sawetara proyek liyane ing Spring Core. Kabeh iki nyebabake komplikasi Spring sing ora bisa dihindari dibandhingake karo asline. Swara wektu, dadi angel banget kanggo nglacak kabeh tangle saka dependensi Spring, lan perlu ana perpustakaan kapisah sing bakal mbukak lan mbukak kabeh dhewe (saiki Spring Boot kinasih wis hiccupped nang endi wae). Kabeh wektu iki, JCP wis ngupayakake siji - kanggo nyederhanakake maksimal kabeh sing bisa ditindakake ing Java EE. Akibaté, ing EJB modern, kanggo njlèntrèhaké kacang buncis, iku cukup kanggo nemtokake siji anotasi ndhuwur kelas, kang menehi pangembang akses kanggo daya lengkap Enterprise Java Beans teknologi. Lan simplifications padha wis mengaruhi saben specifications ing Jawa EE. Akibaté, Spring lan Java EE kira-kira paritas saka segi fungsi. Ana sing luwih apik, ana sing luwih elek, nanging yen sampeyan ndeleng sacara global, ora ana bedane. Semono uga karo kerumitan pegaweyan. Spring lan Java EE minangka alat sing apik banget. Mbok menawa sing paling apik sing saiki ana kanggo mbangun aplikasi jaringan perusahaan ing Jawa. Nanging, Java EE umume mung bisa digunakake ing Enterprise Application Server (Tomcat dudu siji), lan aplikasi ing tumpukan Spring bisa mbukak apa wae (ing Tomcat sing padha), lan sanajan tanpa server (amarga bakal mbukak. ing dhewe dhewe). Iki ndadekake Spring alat becik kanggo ngembangaken aplikasi GUI ngarep-mburi cilik utawa arsitektur microservice. Nanging ngilangi katergantungan ing server aplikasi duweni pengaruh negatif ing skalabilitas aplikasi Spring. Lan Java EE uga cocog kanggo ngleksanakake aplikasi kluster monolithic keukur. Pangembang sing kenal karo Spring Framework saiki luwih akeh dikarepake ing pasar tenaga kerja. Iki kedadeyan historis: ing wektu Java EE rumit banget, Spring "entuk basis pelanggan." Nanging, ora ana jawaban sing jelas kanggo pitakonan apa sing kudu dipelajari Spring utawa Java EE. A pamula bisa diwenehi saran ing ngisor iki. Kenal (paling ora entheng) karo loro platform kasebut. Tulis proyek omah cilik ing Java EE lan Spring. Lan banjur delve luwih jero menyang framework sing bakal dibutuhake ing karya. Akibaté, ngoper antarane Spring lan Java EE ora bakal angel.

Asil

Mesthine, topik sing gedhe-gedhe ora bisa dibahas ing siji artikel! Sawise pirang-pirang istilah anyar, sampeyan bisa uga pengin "nerapake" kawruh iki kanggo conto nyata. Mula, kita bakal terus sinau Java EE: sampeyan bakal nemokake pelajaran praktis babagan nyetel lingkungan lokal kanggo pangembangan Java EE ing artikel sabanjure.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION