Salom! Hozirgi vaqtda Java tilini biladigan dasturchi uchun rivojlanishning eng mashhur yo'nalishi bu veb-ishlab chiqishdir. Albatta, ushbu mutaxassislik uchun o'qish uchun zarur bo'lgan texnologiyalar ro'yxati mavjud. Asosiylaridan biri bahor . Buning o'rniga Java EE ni o'rganishingiz mumkin, deb bahslashishingiz mumkin . Bu, albatta, to'g'ri, lekin hozirda yangi loyihalarning katta qismi Spring dan foydalanadi , bu esa uni Java veb-ishlab chiquvchisi uchun deyarli standart, majburiy texnologiyaga aylantirdi. Va agar siz bozor ehtiyojlarini qondirishni istasangiz, uni o'rganishingiz kerak bo'ladi. Bugun men bahor haqida gapirmoqchiman , ya'ni u haqidagi tasavvuringizni biroz kengaytirish uchun: uning yaratilish tarixi, Java EE stekidan asosiy farqlari haqida gapiring va Spring stekining asosiy komponentlari haqida qisqacha ma'lumot bering . Qani boshladik!
1. Bahor qanday va qachon paydo bo'lgan va vaqt o'tishi bilan u nimaga aylangan
Hammasi 2002-yil oktabr oyida , Rod Jonson “Mutaxassislar uchun birma-bir J2EE dizayni va rivojlanishi” kitobini yozganida boshlandi: Wrox tomonidan nashr etilgan ushbu kitobda muallif oʻsha davrdagi Java rivojlanishining korporativ holatini tasvirlaydi va bir qator omillarga ishora qiladi. Java EE va komponentlarga asoslangan (Enterprise Java Bean)EJB kamchiliklari . Shu bilan birga, Rod Jonson oddiy Java sinflari (POJO - oddiy eski Java ob'ektlari) va qaramlik in'ektsiyasiga asoslangan oddiyroq echimni taklif qiladi. Kitobda u EJB dan foydalanmasdan qanday qilib yuqori sifatli, kengaytiriladigan onlayn bron qilish dasturini yaratishingiz mumkinligini tushuntiradi. Bular. u ilovalarni ishlab chiqishning murakkabligini qanday olib tashlashni va ilgari faqat EJB yordamida mumkin bo'lgan hamma narsaga erishish uchun oddiy JavaBeans-dan foydalanishni aniq ko'rsatdi. Biroq, Spring dasturining ko'lami server tomonida ishlaydigan dasturiy ta'minot komponentlarini ishlab chiqish bilan cheklanmaydi. Har qanday Java ilovasi soddaligi, sinovdan o'tishi va bo'sh ulanish nuqtai nazaridan ramkaning afzalliklaridan foydalanishi mumkin. Uning J2EE ishlab chiqish dizayni bir zumda xitga aylandi. Kitobning bir qismi sifatida bepul taqdim etilgan dastur kodlarining katta qismi qayta foydalanishga yaroqli edi va tez orada bir qator ishlab chiquvchilar undan o'z loyihalarida foydalanishni boshladilar. Wrox kitobning manba kodi va yamoqlari bilan veb-sahifasiga ega edi. Shuningdek, ular kitob uchun onlayn forum tashkil qilishdi. 2003 yil fevral oyida dasturchilar Yurgen Xeller va Jann Karoff Rod Jonsonni ramka kodiga asoslangan ochiq manba loyihasini yaratishga ko'ndirishdi. Shu paytdan boshlab Rod, Yurgen va Yann butunlay yangi narsalarni yaratish uchun hamkorlikni boshladilar. Aslida, yangi ramka uchun "Bahor" nomini o'ylab topgan Yann Karoff edi. Bu erda nazarda tutilgan narsa bahor bahorga o'xshaydi: an'anaviy J2EE "qishidan" keyin yangi boshlanish.
2003 yil iyun oyida Spring 0.9 Apache 2.0 litsenziyasi ostida chiqarildi.
Spring 1.0 2004 yil mart oyida chiqarilgan. Qizig'i shundaki, Spring 1.0 chiqarilishidan oldin ham oldingi versiya 0.9 juda yaxshi qabul qilingan va keng tarqalgan.
2004-yil avgust oyida Rod Jonson, Yurgen Xeller, Keyt Donald va Kolin Sampaleanu bahor konsalting, o‘qitish va qo‘llab-quvvatlash kompaniyasi interfeysi21 ga asos solgan .
2006 yil oktyabr: XML konfiguratsiya fayllarini soddalashtiradigan Spring 2.0 chiqarildi.
2007 yil noyabr oyida chiqarilgan Spring 2.5 annotatsiya konfiguratsiyasini taqdim etdi.
2012-yil dekabr oyida chiqarilgan Spring 3.2 Java konfiguratsiyasini taqdim etdi, Java 7, Hibernate 4, Servlet 3.0-ni qo‘llab-quvvatladi, shuningdek, kamida Java 1.5-ni talab qildi.
Yann Karoff jamoani erta tark etdi. Rod Jonson bahorgi jamoani 2012 yilda tark etgan. Yurgen Xeller hamon Bahorni rivojlantirish guruhining faol a'zosi.
2014-yilda chiqarilgan Spring 4.0 Java 8 uchun qo‘shimcha yordam berdi.
Shuningdek, 2014 yilda Spring Boot dunyoga taqdim etildi.
Spring 5.0 2017 yilda chiqarilgan. Spring 5-ni qo'llab-quvvatlaydigan Spring Boot 2.x kabi.
Aslida, bizning sevimli ramkamiz hozir biz bilgan narsaga aylandi.
2. Bahor va Java EE
Keling, veb-ishlab chiquvchilar uchun ikkita asosiy Java steklarini kichik taqqoslaymiz: Spring va Java EE.
Java EE
Afzalliklar
Kamchiliklar
Java EE-da yozilgan ilovalar yanada ishonchli, xavfsiz va kengaytiriladigan deb hisoblanadi
Java EE - sanoat tomonidan tasdiqlangan API standarti
Asosan, xuddi Spring kabi izohlar va CDI (kontekst va qaramlik kiritish) asosida
EJB konteynerlari va POJOlar asosida amalga oshirish
Ko'p sonli tranzaktsiyalarga ega murakkab ilovalar JEE tomonidan juda yaxshi ishlaydi
Kengaytirilgan monolit dastur uchun muvaffaqiyatli foydalanish
Java EE o'ziga xos uslub va sintaksisni o'z ichiga olgan o'zining OOP tiliga ega
Yangi boshlanuvchilar uchun tushunish qiyin bo'lgan juda murakkab dastur ishlab chiqish muhiti (va ba'zan keksa odamlar uchun ham)
Loyihaning yakuniy qiymati, jumladan, loyihalash, joylashtirish va ilovalarni ishlab chiqish juda katta bo'lishi mumkin
Oracle tomonidan litsenziyalangan Java EE ommaviy bozor ilovalarini yaratish uchun keng moslashuvchan, tarqatiladigan muhitni talab qiladigan tashkilotlar va kompaniyalar uchun mo'ljallangan. Spring kabi, Java EE ma'lumotlar bazasiga kirish (JDBC, JPA), masofaviy muhandislik chaqiruvi (RMI), ma'lumot (JMS), veb-ma'muriyat, XML ishlov berish uchun qo'shimcha kutubxonalarni o'z ichiga oladi va korporativ JavaBeans, portletlar, Servletlar, Java Server sahifalari uchun standart API'larni tavsiflaydi, Java EE ning asosiy maqsadi turli API-lardan foydalangan holda joriy ilovalarni yaratishda ishlab chiquvchilar duch keladigan asosiy muammolarni hal qilishdir. Shu bilan birga, Java EE-dagi ishlanmalar yuqori darajadagi murakkablikka ega, bu nafaqat yangi boshlanuvchilar uchun barni juda yuqori darajada oshiradi. Tajribali mutaxassislar uchun allaqachon yozilgan funksionallikni tushunish qiyin bo'lishi mumkin, shuning uchun Java EE-ni ishlab chiqish uzoqroq davom etadi va shunga mos ravishda qimmatroq. Java EE haqida qisqacha aytishimiz mumkin: Murakkab, lekin moslashuvchan. Keling, bahor haqida bir oz gaplashaylik .
Bahor
Afzalliklar
Kamchiliklar
Ob'ektlarning o'zaro ta'sirini samarali tashkil qilish imkonini beradi
Java EE ga qaraganda oddiyroq
IOC va AOP asosida amalga oshiriladi , bu ilovalarning erkin ulanishini ta'minlaydi
XML, Groovy yoki izoh konfiguratsiyasi asosida ishlaydi
Oddiy eski Java obyektlaridan foydalanishga imkon beradi - POJOlar, ishlab chiquvchilarga dastur serveri kabi korporativ konteyner kerak emas.
Java dasturchilarini yuqori darajadagi modullilik bilan ta'minlaydi
Java EE kutubxonalarini amalga oshirishni ta'minlaydi, lekin o'ziga xos tarzda, ulardan foydalanishni ancha osonlashtiradi
Ochiq kodli litsenziya
Spring Boot dasturni dastlabki sozlashni sezilarli darajada osonlashtiradi
Bahor dastur kodini sinab ko'rish odatda oson
Bahorni rivojlantirish nisbatan qiyin, chunki u aniq diqqat markaziga ega emas
Yangi Java dasturchisi uchun Spring ramkasini o'rganish qiyin bo'lishi mumkin (lekin Java EE dan osonroq)
Bahor Java EE ga qaraganda sekinroq
Spring - bu yirik biznes uchun ochiq kodli Java asosidir. Bahor ramkasi J2EE g'oyalarini eng oddiy amalga oshirishni ta'minlash va POJO-ga asoslangan dasturlash modeli imkoniyatlarini kengaytirish orqali mukammal dasturlash amaliyotlaridan foydalanishga qaratilgan. Bular. Java EE ko'proq rasmiy standartdir, Spring esa bu standartni o'ziga xos tarzda amalga oshiradigan ramkadir.
Taqqoslash natijalari
Mening tushunishimga ko'ra, Java EE va Spring JDBC va Hibernate kabi, bu erda JDBC tezroq texnologiya, lekin ayni paytda juda ko'p keraksiz kodlarga ega. Va Hibernate allaqachon JDBC-dan foydalanadi, lekin shu bilan birga rivojlanishni sezilarli darajada soddalashtiradi va kamaytiradi (ba'zi cheklovlar qo'ygan bo'lsa ham). Ulardan qaysi biri yaxshiroq ekanligini aniq aytish mumkin emas. Bu ham savolni biroz eslatadi: qaysi biri yaxshiroq - ArrayList yoki LinkedList. Axir, javob bir xil bo'ladi - vaziyatga qarab. Ularning har biri o'zining kuchli va zaif tomonlariga ega va siz ulardan qaysi biri eng ko'p foyda keltirishini tushunib, diqqat bilan tanlashingiz kerak.
3. Bahor komponentlari
Xo'sh, endi bahorni tashkil etuvchi ramkalar haqida bir oz gaplashaylik.
Bahor ramkasi
Bu har qanday o'rnatish platformasida Java-ga asoslangan zamonaviy korporativ ilovalar uchun keng qamrovli dasturlash va konfiguratsiya modelini ta'minlovchi asosiy moduldir. U ko'plab asosiy (asosiy) Spring texnologiyalarini o'z ichiga oladi :
AOP - Aspect-oriented Programming - end-to-end mantiqni amalga oshirishga qaratilgan aspektga yo'naltirilgan dasturlash;
MVC va WebFlux - veb-o'zaro aloqa uchun ramkalar;
JDBC , ORM - ma'lumotlar bazalari bilan o'zaro ishlash texnologiyalari;
Test - Spring konteyner ma'lumotlarini shaffof, murakkab bo'lmagan sinovdan o'tkazish uchun funksionallik;
SpEL - Spring Expression Language - Bahor ifodasi tili;
va hokazo.
Bahorgi etik
Ilovaning dastlabki sozlamalarini minimallashtirish va Spring ilovasi elementlarini avtomatik sozlash orqali Spring -ga asoslangan ilovalarni yaratishni soddalashtiradi. Spring boot-ni 5 daqiqada ishga tushirishga misol
Bahor ma'lumotlari
Ma'lumotlarga kirish texnologiyalari, relyatsion va relyatsion bo'lmagan ma'lumotlar bazalaridan foydalanishni sezilarli darajada soddalashtiradi (takroriy kodni olib tashlaydi va ma'lumotlar bilan o'zaro aloqani soddalashtiradi). Ushbu maqolada Spring Data-ni ulash bo'yicha yaxshi qo'llanma mavjud.
Bahor buluti
U mikroservis arxitekturasida, mikroservislarning bir-biri bilan o'zaro ta'sirini soddalashtirishda va AWS , Azure va boshqalar kabi bulutli platformalarda ilovalarni joylashtirishni avtomatlashtirishda qo'llaniladi. Bahor buluti bo'yicha batafsil o'quv qo'llanmasini bu erda ko'ring , lekin men sizni ogohlantiramanki, bu mavzu oson emas va yuqori darajaga yaqin mutaxassislarga qaratilgan.
Bahor xavfsizligi
Ilova uchun kuchli va moslashtirilgan autentifikatsiya (autentifikatsiya) va kirishni boshqarish (avtorizatsiya) vositasini taqdim etadi. Spring Security-ni ilovangizga ulashning oddiy misolini ushbu postda topishingiz mumkin .
Spring GraphQL
Ushbu modul GraphQL Java-da qurilgan Spring ilovalarini qo'llab-quvvatlaydi. GraphQL - bu API uchun so'rovlar tili bo'lib, u mijozlarga kerakli ma'lumotlarning cheklangan to'plamini so'rash imkonini beradi, bu esa o'z navbatida cheklangan miqdordagi so'rovlarda ma'lumotlarni to'plash imkonini beradi. Agar siz JPA bilan allaqachon tanish bo'lsangiz, shunga o'xshash (yoki bir xil) kontseptsiyaga ega EntityGraph bilan allaqachon tanishgan bo'lishingiz mumkin. Bu yerda GraphQL haqida ko'proq o'qishingiz mumkin .
Bahorgi sessiya
Spring ramkasining ushbu qismi foydalanuvchi seansi ma'lumotlarini boshqarish uchun API va ilovalarni taqdim etadi (foydalanuvchi sessiyasi ma'lumotlari Redis , MongoDb , HazelCast va boshqalar kabi doimiy xotirada saqlanadi ). Bahor sessiyasidan foydalanish misolini bu yerda topishingiz mumkin .
Bahor integratsiyasi
Ushbu modul bahorga asoslangan ilovalarda xabar almashishni soddalashtirish va deklarativ adapterlar orqali tashqi tizimlar bilan integratsiyani qo'llab-quvvatlash uchun mo'ljallangan. Ushbu adapterlar masofadan boshqarish, xabar almashish va rejalashtirish uchun Spring qo'llab-quvvatlashiga qaraganda yuqori darajadagi mavhumlikni ta'minlaydi. Batafsil maqola .
Bahorgi dam olish
REST API-ni ishlab chiqishni soddalashtiradigan boy vositalar to'plamini taqdim etadi: so'rovlarni yo'naltirish, JSON/XML ni kerakli turdagi ob'ektlarga aylantirish uchun vositalar va boshqalar. Bahorda RESTful xizmatining namunasini ushbu materialda topish mumkin .
Bahor veb oqimi
Spring Web Flow Spring MVC-ga asoslangan va veb-ilovaning "oqimlarini" amalga oshirish imkonini beradi. Bunday oqimlar foydalanuvchini ba'zi biznes topshiriqlarini bajarish orqali boshqaradigan bosqichlar ketma-ketligini qamrab oladi. Ular bir nechta HTTP so'rovlarini qamrab oladi, statistik ma'lumotlarga ega, tranzaksiya ma'lumotlari bilan ishlaydi, qayta foydalanish mumkin va tabiatan dinamik va bardoshli bo'lishi mumkin. Spring Web Flow-ni ulash misolini ingliz tilidagi ushbu qo'llanmada ko'rish mumkin .
Bahor veb-xizmatlari
Ushbu modul shartnoma asosidagi SOAP xizmatlarini ishlab chiqishni osonlashtirish uchun mo'ljallangan, bu sizga XML foydali yuklarini boshqarishning ko'p usullaridan biri yordamida moslashuvchan veb-xizmatlarni yaratish imkonini beradi. SOAP - Simple Object Access Protocol - Simple Object Access Protocol.
Modul Spring va ayniqsa Spring MVC bilan ishlashda HATEOAS tamoyiliga amal qiladigan REST kontrollerlarini yaratishni osonlashtirish uchun ba'zi API-larni taqdim etadi. HATEOAS - Gipermedia dastur holati mexanizmi sifatida - Gipermedia dastur holati mexanizmi sifatida. Ushbu Bahor kutubxonasidan foydalanishni bu yerda ko'rishingiz mumkin .
Bahor to'plami
Ushbu modul korporativ tizimlarning kundalik ishlashi uchun zarur bo'lgan ma'lumotlarni paketli qayta ishlash funksiyasini ta'minlaydi (ma'lumotlar katta qismlarga bo'linganda - partiyalar). Spring Batch katta hajmdagi yozuvlarni qayta ishlash uchun zarur bo'lgan qayta foydalanish mumkin bo'lgan xususiyatlarni taqdim etadi, jumladan, jurnalga olish/kuzatuv, tranzaktsiyalarni boshqarish, ishni qayta ishlash statistikasi, ishni qayta boshlash, o'tkazib yuborish va resurslarni boshqarish. Spring Batch haqida qiziqarli sharhni ushbu havolada topishingiz mumkin .
Bahor AMQP
Modul AMQP-ga asoslangan xabar almashish echimlarini ishlab chiqish uchun asosiy Spring tushunchalarini qo'llaydi. U xabarlarni jo'natish va qabul qilish uchun yuqori darajadagi abstraksiya sifatida shablonni taqdim etadi. Shuningdek, u tinglovchi konteyneri bilan xabarga asoslangan POJO'larni qo'llab-quvvatlaydi. AMQP - Advanced Message Queuing Protocol - Advanced Message Queuing Protocol. Loyiha ikki qismdan iborat: spring-amqp - bu asosiy abstraktsiya va bahor-quyon - RabbitMQ uchun amalga oshirish . Spring yordamida RabbitMQ ulanishiga misol
Apache Kafka uchun bahor
Ushbu loyiha Kafka asosidagi xabar almashish yechimlarini ishlab chiqishda asosiy Spring kontseptsiyalarini qo'llaydi . Shablon xabarlarni jo'natish uchun yuqori darajadagi abstraksiya sifatida taqdim etiladi. Shuningdek, u kerakli izohlar va tinglovchilar konteyneri bilan xabarga asoslangan POJO-larni qo'llab-quvvatlaydi. Bu erda Spring AMQP bilan aniq o'xshashlik bor, lekin bu modul Kafka uchun maxsus moslashtirilgan. Bahor Kafkani ulash misolini bu erda ko'rish mumkin .
Spring CredHub
Cloud Foundry platformasida ishlaydigan CredHub serveridan hisob ma'lumotlarini saqlash, olish va o'chirish uchun mijoz tomonidan yordam beradi . CredHub - har xil turdagi hisob ma'lumotlarini xavfsiz saqlash, yaratish, olish va o'chirish uchun API taqdim etadi. Spring CredHub CredHub API uchun Java ulanishini ta'minlaydi, bu esa Spring ilovalarini CredHub bilan integratsiyalashni osonlashtiradi.
Bahor FLO
Bu JavaScript kutubxonasi bo'lib, u quvurlar uchun oddiy HTML5 o'rnatilgan vizual dizaynerni va oqim va ommaviy ma'lumotlarni kuzatish uchun oddiy grafiklarni taklif qiladi. Ushbu texnologiyaning namoyishi havoladagi videoda .
Bahor LDAP
Ushbu kutubxona LDAP operatsiyalarini soddalashtiradi va Spring JdbcTemplate-ga asoslangan. Ramka kontekstni qidirish va yopish, natijalarni ko'rish, qiymatlarni kodlash/dekodlash, filtrlar va boshqa ko'p narsalarni (Spring Jdbc bilan bir xil tamoyillar asosida qurilgan) Spring LDAP dasturining misolini bu erda topish mumkin .
Bahor Roo
Ushbu modul bahorga asoslangan ilovangizni yaratishi va boshqarishi mumkin bo'lgan RAD vositasini taqdim etadi. Uning maqsadi Java dasturchilarining samaradorligini oshirishdir. U ilovangizning biznes mantig'ini yoza olmaydi, lekin u konfiguratsiya va infratuzilmani boshqarishi mumkin.
Kutubxona Spring Shell bankalariga tayanib va o'z buyruqlaringizni qo'shish orqali to'liq xususiyatli qobiq (shuningdek, buyruq qatori sifatida ham tanilgan) dasturini yaratishni osonlashtiradi (ular bahor fasollarida usullar sifatida keladi). Buyruqlar qatori ilovasini yaratish, masalan, loyihangiz REST API bilan ishlash yoki mahalliy fayl mazmuni bilan ishlash uchun foydali bo'lishi mumkin. Batafsil bu yerda va bu yerda o'qing .
Bahor davlat mashinasi
Ushbu modul dastur ishlab chiquvchilarga Spring ilovalari bilan davlat mashinasi tushunchalaridan foydalanish imkonini beradi . Ushbu funksiyadan foydalanishning batafsil misolini bu erda va bu erda topishingiz mumkin .
Bahor ombori
Spring Vault tanish Spring abstraktsiyalari va sirlarga kirish, saqlash va bekor qilish uchun mijoz tomonidan yordam beradi. Bu foydalanuvchini infratuzilma bilan bog'liq muammolardan xalos qilib, Vault bilan o'zaro aloqada bo'lish uchun past darajadagi va yuqori darajadagi abstraktsiyalarni taklif qiladi . Spring Vault dasturini amalga oshirishga misol "Bularning barchasini o'rganishim kerakmi?" — hayron boʻlib soʻraysiz. Qo'rqmang! Bu unday emas! Aniqrog'i, unchalik emas. Bu bahorda mavjud texnologiyalarning to'liq ro'yxati edi. Yangi boshlanuvchilar bilishi kerak bo'lgan texnologiyalar ro'yxati ancha sodda:
Bahor yadrosi
Bahorgi etik
Spring Web (MVC va REST)
Bahor ma'lumotlari (Spring ORM, Spring JDBC, Spring JPA)
Bahor sinovi
Ko'pincha loyihalarda topiladigan boshqa texnologiyalar ham mavjud, ammo ularning murakkabligi tufayli ular bilan odatda yashil novicelar emas, balki ko'proq tajribali ishlab chiquvchilar shug'ullanadi. Biroq, yangi boshlanuvchilar uchun hech bo'lmaganda umumiy tushunchaga ega bo'lish foydalidir:
Bahor xavfsizligi
Bahor AOP
Bahor buluti
Boshqa texnologiyalar kamroq qo'llaniladi, shuning uchun siz faqat ma'lum bir loyiha ustida ishlash uchun ularni jiddiy o'rganishingiz kerak. Aytgancha, Java dasturchisi bilishi kerak bo'lgan to'liq nazorat ro'yxatini mening boshqa maqolamda topishingiz mumkin. Bugun hammasi shu, tez orada ko'rishguncha!
GO TO FULL VERSION