JavaRush /Blog Jawa /Random-JV /Ngopi #119. Introduction to Java Enterprise Edition (Java...

Ngopi #119. Introduction to Java Enterprise Edition (Java EE)

Diterbitake ing grup
Sumber: Dev.to Java Enterprise Edition (Java EE) minangka set spesifikasi lan dokumentasi kanggo basa Jawa sing nggambarake arsitektur platform server kanggo ngrampungake masalah perusahaan menengah lan gedhe. Ngopi #118.  Introduction to Java Enterprise Edition (Java EE) - 1Nalika sinau Java EE sampeyan bakal nemokake istilah ing ngisor iki:
  • Server aplikasi minangka implementasi konkrit saka spesifikasi Java EE abstrak. Conto: Payara Server (Glassfish), IBM OpenLiberty lan JBoss Wildfly.

  • A Java Specification Request (JSR) minangka panyuwunan resmi marang komunitas Jawa kanggo nambah lan nambah teknologi. Iku badan sing standarisasi API ing platform teknologi Jawa lan digunakake kanggo klompok API dadi pamblokiran, kayata JAX-RS (Java API kanggo RESTful Web Services). Kanggo saben JSR, mesthi ana implementasi referensi standar.

  • Implementasi referensi minangka implementasi konkrit / implementasi JSR abstrak. Contone, implementasine referensi kanggo JAX-RS diarani Jersey. Java EE dhewe minangka JSR. Mangkono, server aplikasi minangka kumpulan implementasi referensi Java EE JSR sing beda. Java EE yaiku JSR 366, lan salah sawijining implementasi referensi yaiku Glassfish 5.

  • Jakarta EE minangka jeneng anyar kanggo Java EE wiwit taun 2018. Saiki, Oracle wis nransfer platform Java ing manajemen Eclipse Foundation .

JavaEE dhasar

Ana telung API kunci ing Java EE:
  1. Java Persistence API (JPA). Tanggung jawab kanggo nyimpen lan njupuk informasi saka database relasional, sing bisa ditambahake kanggo nggarap database NoSQL. Iki minangka lapisan data ing aplikasi kasebut.

  2. Konteks lan Ketergantungan Injeksi (CDI API). Iki minangka cara standar kanggo nyuda kopling ing aplikasi. Ngatur macem-macem interaksi komponen kanggo njamin decoupling gratis.

  3. Java API kanggo RESTful Web Services (JAX-RS). Iki nyedhiyakake sumber daya liwat HTTP minangka layanan web.

Konteks lan Ketergantungan Injeksi API

Injeksi dependensi minangka wangun kontrol inversi khusus (strategi piranti lunak ing ngendi komponen individu nampa dependensi). Iki externalizes katergantungan ing aplikasi kanggo nggawe komponen kopling kurang.

Fitur saka CDI

  • Injeksi ketergantungan (Typesafe) ngidini sampeyan ngumumake dependensi ing jinis supaya kompiler nyekel kesalahan nalika runtime.

  • Konteks siklus urip yaiku kemampuan kanggo nyambungake siklus urip lan interaksi komponen stateful menyang komponen siklus urip sing wis ditetepake kanthi apik nanging bisa diperpanjang.

  • Interceptors ngidini sampeyan nyegat panjalukan kanggo ngakses cara tartamtu.

  • Acara minangka cara kanggo ngembangake aplikasi sing dipisahake banget. Acara bisa dipecat nalika metode Observers ngrungokake acara sing dipecat.

  • Service Provider Interface (SPI) minangka sakumpulan teknik, API, lan antarmuka sing bisa digunakake minangka ekstensi, kayata ing perpustakaan Apache.

Sawetara konsep CDI API:

  • CDI Bean Discovery minangka mekanisme ing ngendi kerangka injeksi dependensi ngurai lan nemokake kacang buncis kanggo ngontrol carane kacang ditemokake kanthi standar, yaiku, kacang buncis kanthi anotasi kayata @Annotated. Ana telung jinis mode panemuan kacang: ALL (kalebu kacang buncis tanpa cathetan), ANNOTATED, lan NONE.

  • Wadah CDI minangka cara pabrik ing ngendi kelas Java mlebu lan metu kanthi fungsi lan kemampuan. Iki minangka aplikasi sing ngatur kacang buncis.

  • Bean lan Contextual conto. Kacang buncis minangka cithakan sing digawe pangembang. Instance kontekstual minangka conto saka Bean sing digawe lan dikelola dening wadhah CDI.

Java Persistence API

JPA digunakake kanggo peta obyek menyang tabel database relasional. Java Persistence API ngetutake prinsip manifesto ORM. Manifes ORM (Manifes Pemetaan Relasional Objek):
  • Obyek, dudu tabel: Pangembang nulis obyek, dudu tabel.

  • Penak, ora nggatekke: ORM kudu trep. Pangembang kudu duwe kawruh minimal babagan basis data relasional. ORM dudu cara kanggo ndhelikake bodho, nanging penak.

  • Ora ngganggu lan transparan: ORM kudu nggawe supaya pangembang bisa ngontrol apa sing ana ing database lan duwe kontrol lengkap babagan apa sing disimpen. Data warisan, obyek anyar: ORM bakal ngidini sampeyan nggawe obyek anyar saka data warisan, yaiku mbangun maneh database warisan dadi obyek Jawa.

  • Cukup, nanging ora kakehan: ORM bakal nyedhiyakake kabeh alat kanggo ngatasi masalah umum amarga impedansi mismatch (istilah sing digunakake kanggo nyebut masalah sing muncul amarga beda antarane model database lan basa program). ORM ngirim ora abot banget.

  • Lokalitas lan mobilitas: Data iku lokal, nanging kudu bisa kanggo negara terus-terusan aplikasi kanggo pindhah menyang macem-macem bagean saka aplikasi.

  • API standar, implementasine pluggable: Ngandelake API standar, nanging bisa ngganti implementasine yen perlu.

Sawetara konsep JPA penting: Entitas JPA
  • Komponen paling modular saka obyek JPA yaiku obyek Jawa lawas polos (POJO). Saben obyek kudu duwe pengenal unik.

  • Entitas JPA biasane nggunakake anotasi kayata @MappedSuperClass, sing ngidini panggunaan superclass sing ngemot kolom entitas umum. Anotasi @AttributeOverride digunakake kanggo ngatasi entitas superclass. @Column digunakake kanggo ngatur pemetaan database. Anotasi @Transient bisa digunakake kanggo kolom ing kelas entitas sing ora kudu dipetakan menyang database.

  • Tipe akses yaiku proses panyedhiya kegigihan ngakses negara ing entitas. Akses lapangan dumadi nalika panyedhiya ngakses lapangan kelas langsung liwat refleksi. Akses properti dumadi nalika metode properti Java Bean digunakake kanggo ngakses status, yaiku, getter lan setter digunakake. Kanggo nggunakake akses properti, getter kudu dianotasi nganggo @Id. Tipe akses campuran nggunakake akses menyang kolom lan properti ing kelas entitas sing padha nggunakake anotasi @Access.

Java API kanggo layanan web RESTful

Watesan arsitektur REST:
  1. Klien lan server bebas saka siji liyane.

  2. Stateless: Saben panjalukan individu sing teka ing server iku otonom lan unik. Server ora nggawe asumsi saka panjalukan sadurunge.

  3. Cacheability: Sistem kudu ndhukung caching ing tingkat beda kanggo nambah kinerja lan skalabilitas.

  4. Antarmuka terpadu tegese klien kudu duwe antarmuka terpadu umum kanggo ngakses sumber daya ing server, uga kanggo sesambungan karo sumber daya ing server. Sistem multi-tier: Server bisa diimplementasikake ing macem-macem lapisan supaya klien ora perlu kuwatir babagan sistem multi-tier, kayata server sing ndhukung load balancing.

Sawetara konsep umum sing ana gandhengane karo JAX-RS:
  • Cara HTTP GET: njaluk sumber daya utawa sumber daya. Cara panyuwunan GET idempoten, tegese nggawe panjaluk sing padha karo metode kasebut bola-bali ora kudu ngganti kahanan sumber utawa data ing server.

  • Cara HTTP POST: Panyuwunan POST digunakake kanggo nggawe sumber daya anyar ing server. Iki nyebabake set data ing server diganti. POST biasane duwe awak sing payload utawa apa wae sing pengin digawe ing server diterbitake utawa dilampirake.

  • Cara HTTP PUT: Digunakake kanthi semantik kanggo nganyari sumber daya ing server.

  • Metode HTTP DELETE: Digunakake kanggo mbusak sumber daya ing server.

  • Jinis isi. Ana sawetara jinis konten sing bisa dikonsumsi lan digawe kanthi metode pitakon: XML, CSV, EXCEL, TEXT, lan JSON.

  • JAX-RS nduweni konsep nulis isi pesen. Iki minangka konstruksi API sing digunakake kanggo ngowahi jinis Java menyang jinis sing dikarepake klien. Anotasi @Produces bisa digunakake kanggo nemtokake jinis respon obyek Jawa diowahi.

  • Anotasi @Consumes ngandhani runtime JAX-RS jinis konten sing nggunakake metode sumber daya tartamtu. Runtime JAX-RS banjur ngowahi konten JSON sing dilewati minangka muatan menyang obyek Jawa sing jinise padha karo parameter metode.

  • JAX-RS Exception Mapper: Konstruksi API sing digunakake kanggo peta pengecualian kanggo respon HTTP. Anotasi @Provider digunakake kanggo ndaftarake solver pengecualian kanthi program JAX-RS runtime.

Iki introduksi banget prasaja kanggo Java EE. Kanggo mbangun aplikasi web nggunakake Java EE, sampeyan kudu nyilem luwih jero menyang saben API kunci.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION