JavaRush /Java Blog /Random-ID /Apa yang perlu Anda ketahui tentang Spring: sejarah, modu...

Apa yang perlu Anda ketahui tentang Spring: sejarah, modul utama, perbandingan dengan Java EE

Dipublikasikan di grup Random-ID
Halo! Saat ini, arah pengembangan paling populer bagi pengembang yang memiliki pengetahuan tentang Java adalah pengembangan web. Tentu saja, untuk spesialisasi ini ada daftar teknologi yang diperlukan untuk dipelajari. Salah satu yang utama adalah Musim Semi . Anda mungkin berpendapat bahwa Anda bisa mempelajari Java EEApa yang perlu Anda ketahui tentang Spring: sejarah, modul utama, perbandingan dengan Java EE - 1 saja . Hal ini tentu saja benar, tetapi sekarang sebagian besar proyek baru menggunakan Spring , yang menjadikannya teknologi default dan wajib bagi pengembang web Java. Dan jika Anda ingin memenuhi kebutuhan pasar, Anda harus mempelajarinya. Hari ini saya ingin berbicara tentang Spring , yaitu, untuk sedikit memperluas visi Anda tentangnya: berbicara tentang sejarah pembuatannya, perbedaan utama dari tumpukan Java EE dan memberikan gambaran singkat tentang komponen utama tumpukan Spring . Mari kita mulai! Apa yang perlu Anda ketahui tentang Spring: sejarah, modul utama, perbandingan dengan Java EE - 2

1. Bagaimana dan kapan Musim Semi muncul dan apa perkembangannya seiring berjalannya waktu

Semuanya dimulai pada bulan Oktober 2002 , ketika Rod Johnson menulis buku “Expert One-onOne J2EE Design and Development”: Apa yang perlu Anda ketahui tentang Spring: sejarah, modul utama, perbandingan dengan Java EE - 3Dalam buku ini, yang diterbitkan oleh Wrox , penulis menggambarkan keadaan pengembangan perusahaan Java pada saat itu dan menunjukkan sejumlah kekurangan Java EE dan lingkungan berbasis komponen (Enterprise Java Bean)EJB . Pada saat yang sama, Rod Johnson mengusulkan solusi yang lebih sederhana berdasarkan kelas Java reguler (POJO - objek Java lama) dan injeksi ketergantungan. Dalam buku tersebut, ia menjelaskan bagaimana Anda dapat membuat aplikasi reservasi online berkualitas tinggi dan terukur tanpa menggunakan EJB. Itu. dia dengan jelas mendemonstrasikan cara menghilangkan kerumitan pengembangan aplikasi dan memungkinkan penggunaan JavaBeans sederhana untuk mencapai segala sesuatu yang sebelumnya hanya mungkin dilakukan menggunakan EJB. Namun, cakupan Spring tidak terbatas pada pengembangan komponen perangkat lunak yang berjalan di sisi server. Aplikasi Java apa pun dapat memanfaatkan keunggulan kerangka kerja dalam hal kesederhanaan, kemampuan pengujian, dan penggabungan yang longgar. Desain pengembangan J2EE -nya langsung menjadi hit. Sebagian besar kode aplikasi, yang disediakan secara gratis sebagai bagian dari buku ini, dapat digunakan kembali, dan sejumlah pengembang segera mulai menggunakannya dalam proyek mereka. Wrox memiliki halaman web untuk buku tersebut dengan kode sumber dan tambalan. Mereka juga menyediakan forum online untuk buku tersebut. Pada bulan Februari 2003, pengembang Jürgen Heller dan Jann Karoff meyakinkan Rod Johnson untuk membuat proyek sumber terbuka berdasarkan kode kerangka kerja. Sejak saat itu, Rod, Jurgen dan Yann memulai kolaborasi mereka untuk menciptakan sesuatu yang benar-benar baru. Faktanya, Yann Karoff-lah yang mencetuskan nama “Spring” untuk kerangka baru tersebut. Yang dimaksud di sini adalah Musim Semi seperti musim semi: awal baru setelah “musim dingin” J2EE tradisional.
  • Pada bulan Juni 2003, Spring 0.9 dirilis di bawah lisensi Apache 2.0.
  • Spring 1.0 dirilis pada Maret 2004. Menariknya, bahkan sebelum rilis Spring 1.0, versi sebelumnya 0.9 diterima dengan sangat baik dan diadopsi secara luas.
  • Pada bulan Agustus 2004, Rod Johnson, Jürgen Heller, Keith Donald dan Colin Sampaleanu mendirikan interface21 , sebuah perusahaan konsultasi, pelatihan dan dukungan Spring.
  • Oktober 2006: Spring 2.0 dirilis, yang menyederhanakan file konfigurasi XML.
  • Spring 2.5, dirilis pada November 2007, memperkenalkan konfigurasi anotasi.
  • Spring 3.2, dirilis pada bulan Desember 2012, memperkenalkan konfigurasi Java, mendukung Java 7, Hibernate 4, Servlet 3.0, dan juga memerlukan setidaknya Java 1.5.
  • Yann Karoff meninggalkan tim sejak awal. Rod Johnson meninggalkan tim musim semi pada tahun 2012. Jürgen Heller masih menjadi anggota aktif tim pengembangan Spring.
  • Spring 4.0, dirilis pada tahun 2014, menambahkan dukungan untuk Java 8.
  • Juga pada tahun 2014, Spring Boot diperkenalkan ke dunia.
  • Musim semi 5.0 dirilis pada tahun 2017. Seperti Spring Boot 2.x yang mendukung Spring 5.
  • Sebenarnya, beginilah framework favorit kita menjadi seperti yang kita kenal sekarang.

2. Musim semi vs Java EE

Mari kita membuat perbandingan kecil dari dua tumpukan Java utama untuk pengembang web: Spring dan Java EE. Apa yang perlu Anda ketahui tentang Spring: sejarah, modul utama, perbandingan dengan Java EE - 4
Jawa EE
Keuntungan Kekurangan
  • Aplikasi yang ditulis dalam Java EE dianggap lebih andal, aman, dan terukur
  • Java EE adalah standar API yang disetujui industri
  • Terutama berdasarkan anotasi dan CDI (injeksi konteks dan ketergantungan), seperti Spring
  • Implementasinya berdasarkan container EJB dan POJO
  • Aplikasi yang kompleks dengan jumlah transaksi yang besar ditangani dengan sangat baik oleh JEE
  • Berhasil digunakan untuk aplikasi monolitik yang dapat diskalakan
  • Java EE memiliki bahasa OOP sendiri yang berisi gaya dan sintaksis tertentu
  • Lingkungan pengembangan aplikasi yang sangat kompleks yang sulit dipahami oleh pemula (dan terkadang juga bagi orang tua)
  • Biaya akhir proyek, termasuk desain, penerapan, dan pengembangan aplikasi, mungkin mahal
Java EE, dilisensikan oleh Oracle, dirancang untuk organisasi dan perusahaan yang memerlukan lingkungan yang dapat beradaptasi dan didistribusikan secara luas untuk membangun aplikasi pasar massal. Seperti Spring, Java EE menyertakan perpustakaan tambahan untuk akses database (JDBC, JPA), pemanggilan teknik jarak jauh (RMI), informasi (JMS), administrasi web, pemrosesan XML dan mencirikan API standar untuk JavaBeans perusahaan, portlet, Servlet, Halaman Server Java, dll. Apa yang perlu Anda ketahui tentang Spring: sejarah, modul utama, perbandingan dengan Java EE - 5Tujuan mendasar dari Java EE adalah untuk mengungkap masalah utama yang dihadapi oleh pengembang mengenai membangun aplikasi saat ini menggunakan berbagai API. Pada saat yang sama, pengembangan di Java EE memiliki tingkat kompleksitas yang tinggi, sehingga meningkatkan standar yang sangat tinggi tidak hanya untuk pemula. Dan mungkin sulit bagi spesialis berpengalaman untuk memahami fungsionalitas yang sudah ditulis, sehingga pengembangan di Java EE membutuhkan waktu lebih lama dan, karenanya, lebih mahal. Tentang Java EE secara singkat kita dapat mengatakan ini: Kompleks, namun fleksibel. Nah, sekarang mari kita bicara sedikit tentang Musim Semi . Apa yang perlu Anda ketahui tentang Spring: sejarah, modul utama, perbandingan dengan Java EE - 6
Musim semi
Keuntungan Kekurangan
  • Memungkinkan Anda mengatur interaksi objek secara efektif
  • Lebih sederhana dari Java EE
  • Diimplementasikan berdasarkan IOC dan AOP , yang memastikan penggabungan aplikasi yang longgar
  • Bekerja berdasarkan konfigurasi XML, Groovy, atau anotasi
  • Memungkinkan Anda menggunakan objek Java lama biasa - POJO, pengembang tidak memerlukan wadah perusahaan seperti server aplikasi
  • Memberi pengembang Java modularitas tingkat tinggi
  • Menyediakan implementasi perpustakaan Java EE, tetapi dengan caranya sendiri, membuat penggunaannya lebih mudah
  • Lisensi Sumber Terbuka
  • Spring Boot sangat menyederhanakan pengaturan awal aplikasi
  • Kode aplikasi pegas umumnya mudah diuji
  • Musim semi relatif sulit dikembangkan karena kurang memiliki fokus yang jelas
  • Untuk pengembang Java baru, mempelajari kerangka Spring dapat menjadi tantangan (tetapi masih lebih mudah daripada Java EE)
  • Musim semi lebih lambat dari Java EE
Spring adalah kerangka Java open source untuk bisnis besar. Kerangka kerja Spring bertujuan untuk memberikan implementasi ide J2EE yang paling sederhana dan memanfaatkan praktik pemrograman yang sangat baik dengan memperluas kemampuan model pemrograman berbasis POJO. Itu. Java EE lebih merupakan standar resmi, sedangkan Spring lebih merupakan kerangka kerja yang mengimplementasikan standar ini dengan caranya sendiri.

Hasil perbandingan

Dalam pemahaman saya, Java EE dan Spring seperti JDBC dan Hibernate, di mana JDBC adalah teknologi yang lebih cepat, tetapi pada saat yang sama dengan banyak kode yang tidak diperlukan. Dan Hibernate sudah menggunakan JDBC, tetapi pada saat yang sama menyederhanakan dan mengurangi pengembangan secara signifikan (walaupun menerapkan beberapa batasan). Tidak mungkin untuk mengatakan dengan pasti mana yang lebih baik. Ini juga mengingatkan pada pertanyaan: mana yang lebih baik - ArrayList atau LinkedList. Bagaimanapun, jawabannya akan sama - tergantung situasinya. Masing-masing dari mereka memiliki kekuatan dan kelemahannya sendiri, dan Anda harus memilihnya dengan hati-hati, mempertimbangkan situasi Anda dan memahami mana di antara mereka yang akan membawa manfaat paling besar saat ini. Apa yang perlu Anda ketahui tentang Spring: sejarah, modul utama, perbandingan dengan Java EE - 7

3. Komponen Pegas

Nah, sekarang mari kita bicara sedikit tentang framework yang membentuk Spring.

Kerangka pegas

Ini adalah modul inti yang menyediakan pemrograman komprehensif dan model konfigurasi untuk aplikasi perusahaan modern berbasis Java—pada platform penerapan apa pun. Ini berisi banyak teknologi inti (inti) Spring :
  • inti - fungsionalitas dasar yang mengimplementasikan konsep IoC (inversi kontrol) dan DI (injeksi ketergantungan) ;
  • AOP - Pemrograman Berorientasi Aspek - pemrograman berorientasi aspek yang bertujuan untuk mengimplementasikan logika ujung ke ujung;
  • MVC dan WebFlux - kerangka kerja untuk interaksi web;
  • JDBC , ORM - teknologi untuk berinteraksi dengan database;
  • Pengujian - fungsionalitas untuk pengujian data kontainer Spring yang transparan dan tidak rumit;
  • SpEL - Bahasa Ekspresi Musim Semi - Bahasa ekspresi musim semi;
  • dll.

sepatu bot musim semi

Menyederhanakan pembuatan aplikasi berbasis Spring dengan meminimalkan pengaturan aplikasi awal dan mengonfigurasi elemen aplikasi Spring secara otomatis. Contoh memulai booting Spring dalam 5 menit

Data Musim Semi

Secara signifikan menyederhanakan penggunaan teknologi akses data, database relasional dan non-relasional (menghilangkan kode berulang dan menyederhanakan interaksi dengan data). Artikel ini berisi tutorial bagus tentang menghubungkan Spring Data.

Awan Musim Semi

Ini digunakan dalam arsitektur layanan mikro, menyederhanakan interaksi layanan mikro satu sama lain dan mengotomatiskan penerapan aplikasi pada platform cloud seperti AWS , Azure , dll. Lihat tutorial mendetail tentang Spring Cloud di sini , tetapi saya akan memperingatkan Anda bahwa topik ini bukanlah topik yang mudah dan ditujukan untuk spesialis yang mendekati tingkat senior.

Keamanan Musim Semi

Menyediakan alat otentikasi (autentikasi) dan kontrol akses (otorisasi) yang kuat dan dapat disesuaikan untuk suatu aplikasi. Anda dapat menemukan contoh sederhana menghubungkan Spring Security ke aplikasi Anda di posting ini . Apa yang perlu Anda ketahui tentang Spring: sejarah, modul utama, perbandingan dengan Java EE - 8

Grafik Musim SemiQL

Modul ini menyediakan dukungan untuk aplikasi Spring yang dibangun di GraphQL Java. GraphQL adalah bahasa kueri untuk API yang memungkinkan klien menanyakan kumpulan data terbatas yang mereka perlukan, yang pada gilirannya memungkinkan data dikumpulkan dalam sejumlah kueri terbatas. Jika Anda sudah familiar dengan JPA, Anda mungkin pernah menemukan EntityGraph, dengan konsep serupa (atau sama). Anda dapat membaca lebih lanjut tentang GraphQL di sini .

Sesi Musim Semi

Bagian dari kerangka Spring ini menyediakan API dan implementasi untuk mengelola informasi sesi pengguna (data sesi pengguna disimpan dalam penyimpanan persisten seperti Redis , MongoDb , HazelCast , dll.). Contoh penggunaan Spring Session dapat ditemukan di sini .

Integrasi Musim Semi

Modul ini dirancang untuk menyederhanakan pengiriman pesan dalam aplikasi berbasis Spring dan mendukung integrasi dengan sistem eksternal melalui adaptor deklaratif. Adaptor ini memberikan tingkat abstraksi yang lebih tinggi daripada dukungan Spring untuk jarak jauh, pengiriman pesan, dan penjadwalan. Artikel terperinci .

Istirahat musim semi

Menyediakan seperangkat alat yang menyederhanakan pengembangan REST API: alat untuk merutekan permintaan, untuk mengonversi JSON/XML menjadi objek dengan tipe yang diperlukan, dll. Contoh layanan RESTful di Spring dapat ditemukan di materi ini .

Aliran Web Musim Semi

Spring Web Flow didasarkan pada Spring MVC dan memungkinkan Anda mengimplementasikan "aliran" aplikasi web. Alur tersebut merangkum serangkaian langkah yang memandu pengguna melalui penyelesaian beberapa tugas bisnis. Mereka menjangkau beberapa permintaan HTTP, bersifat stateful, bekerja dengan data transaksional, dapat digunakan kembali, dan bersifat dinamis dan tahan lama. Contoh menghubungkan Spring Web Flow dapat dilihat pada panduan ini dalam bahasa Inggris .

Layanan Web Musim Semi

Modul ini dirancang untuk mempermudah pengembangan layanan SOAP berbasis kontrak dengan memungkinkan Anda membuat layanan web yang fleksibel menggunakan salah satu dari banyak cara untuk memanipulasi muatan XML. SOAP - Simple Object Access Protocol - Protokol sederhana untuk mengakses objek.

HATEOAS musim semi

Modul ini menyediakan beberapa API untuk memudahkan pembuatan pengontrol REST yang mengikuti prinsip HATEOAS saat bekerja dengan Spring dan khususnya Spring MVC. HATEOAS - Hypermedia Sebagai Mesin Negara Aplikasi - Hypermedia sebagai mesin negara aplikasi. Anda dapat melihat penggunaan perpustakaan Spring ini di sini .

Gelombang Musim Semi

Modul ini menyediakan fungsionalitas untuk pemrosesan data batch (ketika data diproses dalam jumlah besar - batch), penting untuk operasi sehari-hari sistem perusahaan. Spring Batch menyediakan fitur yang dapat digunakan kembali yang diperlukan untuk menangani rekaman dalam jumlah besar, termasuk pencatatan/pelacakan, manajemen transaksi, statistik pemrosesan pekerjaan, memulai ulang pekerjaan, melewatkan, dan manajemen sumber daya. Anda dapat menemukan ikhtisar menarik tentang Spring Batch di tautan ini .

AMQP musim semi

Modul ini menerapkan konsep inti Spring untuk pengembangan solusi perpesanan berbasis AMQP. Ini menyediakan template sebagai abstraksi tingkat tinggi untuk mengirim dan menerima pesan. Ini juga menyediakan dukungan untuk POJO berbasis pesan dengan wadah pendengar. AMQP - Protokol Antrian Pesan Tingkat Lanjut - Protokol Antrian Pesan Tingkat Lanjut. Proyek ini berisi dua bagian: spring-amqp adalah abstraksi dasar, dan spring-rabbit adalah implementasi untuk RabbitMQ . Contoh dengan koneksi RabbitMQ menggunakan Spring Apa yang perlu Anda ketahui tentang Spring: sejarah, modul utama, perbandingan dengan Java EE - 9

Musim semi untuk Apache Kafka

Proyek ini menerapkan konsep inti Spring pada pengembangan solusi perpesanan berbasis Kafka . Templat disediakan sebagai abstraksi tingkat tinggi untuk mengirim pesan. Ini juga menyediakan dukungan untuk POJO berbasis pesan dengan anotasi yang diperlukan dan wadah pendengar. Ada kemiripan yang jelas di sini dengan Spring AMQP, namun modul ini diadaptasi secara khusus untuk Kafka. Contoh penghubung Spring Kafka dapat dilihat di sini .

CredHub Musim Semi

Memberikan dukungan sisi klien untuk menyimpan, mengambil, dan menghapus kredensial dari server CredHub yang berjalan pada platform Cloud Foundry . CredHub - Menyediakan API untuk menyimpan, membuat, mengambil, dan menghapus berbagai jenis kredensial dengan aman. Spring CredHub menyediakan pengikatan Java untuk CredHub API, sehingga memudahkan integrasi aplikasi Spring dengan CredHub.

FLO musim semi

Ini adalah perpustakaan JavaScript yang menawarkan desainer visual HTML5 sederhana yang dapat disematkan untuk saluran pipa dan grafik sederhana untuk memantau streaming dan data batch. Demo teknologi ini ada di video di tautan .

LDAP musim semi

Pustaka ini menyederhanakan operasi LDAP dan didasarkan pada Spring JdbcTemplate. Kerangka kerja ini memungkinkan pencarian dan penutupan konteks, melihat hasil, pengkodean/dekode nilai, filter, dan banyak lagi (dibangun berdasarkan prinsip yang sama dengan Spring Jdbc) Contoh implementasi Spring LDAP dapat ditemukan di sini .

Musim Semi Roo

Modul ini menyediakan alat RAD yang dapat membuat dan mengelola aplikasi berbasis Spring Anda. Tujuannya adalah untuk meningkatkan produktivitas pengembang Java. Itu tidak dapat menulis logika bisnis aplikasi Anda, tetapi dapat menangani hal-hal konfigurasi dan infrastruktur.

Cangkang Musim Semi

Pustaka memudahkan pembuatan aplikasi shell (juga dikenal sebagai baris perintah) berfitur lengkap dengan mengandalkan toples Spring Shell dan menambahkan perintah Anda sendiri (yang disertakan sebagai metode di Spring beans). Membuat aplikasi baris perintah dapat berguna, misalnya, untuk berinteraksi dengan REST API proyek Anda atau untuk bekerja dengan konten file lokal. Baca lebih lanjut di sini dan di sini .

Mesin Negara Musim Semi

Modul ini memungkinkan pengembang aplikasi untuk menggunakan konsep mesin status dengan aplikasi Spring. Contoh detail penggunaan fungsi ini dapat ditemukan di sini dan di sini .

Gudang Musim Semi

Spring Vault menyediakan abstraksi Spring yang familier dan dukungan sisi klien untuk mengakses, menyimpan, dan mencabut rahasia. Ia menawarkan abstraksi tingkat rendah dan tingkat tinggi untuk berinteraksi dengan Vault , membebaskan pengguna dari masalah infrastruktur. Contoh implementasi Spring Vault Apa yang perlu Anda ketahui tentang Spring: sejarah, modul utama, perbandingan dengan Java EE - 10“Apakah saya perlu mempelajari semua ini?” - kamu bertanya dengan takjub. Jangan takut! Ini salah! Lebih tepatnya, tidak seperti itu. Ini adalah daftar lengkap teknologi yang tersedia di Musim Semi. Daftar teknologi yang perlu diketahui seorang pemula jauh lebih sederhana:
  • Inti Musim Semi
  • sepatu bot musim semi
  • Web Musim Semi (MVC dan REST)
  • Data Pegas (Pegas ORM, Pegas JDBC, Pegas JPA)
  • Tes Musim Semi
Ada juga teknologi lain yang sering ditemukan dalam proyek, namun karena kerumitannya, teknologi tersebut biasanya ditangani oleh pengembang yang lebih berpengalaman daripada pemula yang ramah lingkungan. Namun, berguna juga bagi pemula untuk setidaknya memiliki pemahaman umum tentang:
  • Keamanan Musim Semi
  • Musim semi AOP
  • Awan Musim Semi
Teknologi lain lebih jarang digunakan, jadi Anda hanya perlu mempelajarinya dengan serius untuk mengerjakan proyek tertentu. Omong-omong, Anda dapat menemukan daftar lengkap tentang apa yang harus diketahui pengembang Java di artikel saya yang lain. Itu saja untuk saya hari ini, sampai jumpa lagi! Apa yang perlu Anda ketahui tentang Spring: sejarah, modul utama, perbandingan dengan Java EE - 11
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION