JavaRush /Java блогы /Random-KK /Көктем туралы не білу керек: тарих, негізгі модульдер, Ja...
Константин
Деңгей

Көктем туралы не білу керек: тарих, негізгі модульдер, Java EE-мен салыстыру

Топта жарияланған
Сәлеметсіз бе! Қазіргі уақытта Java тілін білетін әзірлеушілер үшін ең танымал даму бағыты - веб-әзірлеу. Әрине, бұл мамандық үшін оқуға қажетті технологиялар тізімі бар. Солардың бірі – Көктем . Көктем туралы не білу керек: тарих, негізгі модульдер, Java EE-мен салыстыру - 1Оның орнына Java EE тілін үйренуге болады деп дауласуға болады . Бұл, әрине, дұрыс, бірақ қазір жаңа жобалардың басым көпшілігі Spring пайдаланады , бұл оны іс жүзінде Java веб-әзірлеушісі үшін әдепкі, міндетті технологияға айналдырды. Ал нарық сұранысына сай болғың келсе, оны зерделеуге тура келеді. Бүгін мен Көктем туралы айтқым келеді , атап айтқанда, ол туралы көзқарасыңызды кеңейту үшін: оның құрылу тарихы, Java EE стекінен негізгі айырмашылықтары туралы сөйлескім келеді және Spring стекінің негізгі компоненттеріне қысқаша шолу жасаңыз . Бастайық! Көктем туралы не білу керек: тарих, негізгі модульдер, Java EE - 2-мен салыстыру

1. Көктем қалай және қашан пайда болды және уақыт өте келе ол не болды

Мұның бәрі 2002 жылдың қазан айында , Род Джонсон «Сарапшы бір-бірден J2EE дизайны және дамуы» кітабын жазған кезде басталды: WroxКөктем туралы не білу керек: тарих, негізгі модульдер, Java EE-мен салыстыру - 3 басып шығарған бұл кітапта автор сол кездегі Java дамуының кәсіпорын жағдайын сипаттайды және бірқатар факторларды атап көрсетеді. Java EE және компонентке негізделген (Enterprise Java Bean)EJB кемшіліктері . Сонымен қатар, Род Джонсон кәдімгі Java сыныптарына (POJO - қарапайым ескі Java нысандары) және тәуелділік инъекциясына негізделген қарапайымырақ шешімді ұсынады. Кітапта ол EJB қолданбай жоғары сапалы, ауқымды онлайн брондау қосымшасын қалай жасауға болатынын түсіндіреді. Анау. ол қолданбаларды әзірлеудің күрделілігін қалай жоюға болатынын және бұрын тек EJB көмегімен мүмкін болған барлық нәрсеге қол жеткізу үшін қарапайым JavaBeans қолдануға мүмкіндік беретінін анық көрсетті. Дегенмен, Spring бағдарламасының ауқымы server жағында жұмыс істейтін бағдарламалық жасақтама компоненттерін әзірлеумен шектелмейді. Кез келген Java қолданбасы қарапайымдылық, сынау мүмкіндігі және бос байланыс тұрғысынан жақтаудың артықшылықтарын пайдалана алады. Оның J2EE әзірлеу дизайны бірден хит болды. Кітаптың бір бөлігі ретінде тегін берілген қолданба codeының көп бөлігі қайта пайдалануға жарамды болды және көп ұзамай бірқатар әзірлеушілер оны өз жобаларында қолдана бастады. Wrox-тың бастапқы codeы мен патчтары бар кітаптың веб-парағы болды . Олар сондай-ақ кітапқа арналған онлайн форум ұйымдастырды. 2003 жылдың ақпанында әзірлеушілер Юрген Хеллер мен Янн Кароф Род Джонсонды рамканың codeына негізделген ашық бастапқы жобаны жасауға көндірді. Осы сәттен бастап Род, Юрген және Янн мүлдем жаңа нәрсе жасау үшін бірлесіп жұмыс істей бастады. Шындығында, жаңа құрылым үшін «Көктем» атауын ойлап тапқан Янн Кароф болды. Бұл жерде Көктемнің көктем сияқты екендігі айтылады: дәстүрлі J2EE «қысынан» кейінгі жаңа бастама.
  • 2003 жылдың маусымында Spring 0.9 Apache 2.0 лицензиясы бойынша шығарылды.
  • Spring 1.0 2004 жылдың наурыз айында шығарылды. Бір қызығы, Spring 1.0 шығарылғанға дейін, алдыңғы 0.9 нұсқасы өте жақсы қабылданып, кеңінен қабылданды.
  • 2004 жылдың тамызында Род Джонсон, Юрген Хеллер, Кит Дональд және Колин Сампалеану Spring консалтингтік, оқыту және қолдау көрсетуші интерфейс21 компаниясын бірлесіп құрды .
  • 2006 жылдың қазаны: XML конфигурация файлдарын жеңілдететін Spring 2.0 шығарылды.
  • 2007 жылдың қарашасында шыққан Spring 2.5 annotation конфигурацияларын енгізді.
  • 2012 жылдың желтоқсанында шыққан Spring 3.2 Java конфигурациясын енгізді, Java 7, Hibernate 4, Servlet 3.0 нұсқаларына қолдау көрсетті, сонымен қатар кемінде Java 1.5 қажет болды.
  • Янн Кароф командадан ерте кетті. Род Джонсон 2012 жылы көктемгі командадан кетті. Юрген Хеллер әлі де көктемді дамыту тобының белсенді мүшесі.
  • 2014 жылы шыққан Spring 4.0 Java 8 қолдауын қосты.
  • Сондай-ақ 2014 жылы Spring Boot әлемге таныстырылды.
  • Spring 5.0 2017 жылы шығарылды. Spring 5-ті қолдайтын Spring Boot 2.x сияқты.
  • Шын мәнінде, біздің сүйікті шеңберіміз қазір біз білетін нәрсеге айналды.

2. Көктем және Java EE

Веб-әзірлеушілерге арналған екі негізгі Java стектерінің шағын салыстыруын жасайық: Spring және Java EE. Көктем туралы не білу керек: тарих, негізгі модульдер, Java EE-мен салыстыру - 4
Java EE
Артықшылықтары Кемшіліктер
  • Java EE тілінде жазылған қолданбалар сенімдірек, қауіпсіз және масштабталатын болып саналады
  • Java EE – бұл салада бекітілген API стандарты
  • Негізінен Spring сияқты annotationлар мен CDI (контекст және тәуелділік инъекциясы) негізінде
  • EJB контейнерлері мен POJO негізінде іске асыру
  • Транзакциялар саны көп күрделі қосымшаларды JEE өте жақсы өңдейді
  • Кеңейтілетін монолитті қолданба үшін сәтті пайдалану
  • Java EE-де белгілі бір стиль мен синтаксисті қамтитын өзіндік OOP тілі бар
  • Жаңадан бастаушылар үшін (кейде қарт адамдар үшін де) түсіну қиын болатын өте күрделі қолданбаларды әзірлеу ортасы
  • Жобаның соңғы құны, соның ішінде жобалау, орналастыру және қолданбаларды әзірлеу, тыйым салуы мүмкін
Oracle лицензиясы бар Java EE бағдарламасы жаппай нарықтық қосымшаларды құру үшін кең бейімделетін, таратылатын ортаны қажет ететін ұйымдар мен компанияларға арналған. Spring сияқты, Java EE дерекқорға кіруге (JDBC, JPA), қашықтан инженерлік шақыруға (RMI), ақпаратты (JMS), веб-әкімшілікке, XML өңдеуге арналған қосымша кітапханаларды қамтиды және кәсіпорын JavaBeans, портлеттер, Сервлеттер, Java server беттері үшін стандартты API интерфейстерін сипаттайды, т.б. Көктем туралы не білу керек: тарих, негізгі модульдер, Java EE - 5-пен салыстыруJava EE негізгі мақсаты әртүрлі API интерфейстерін пайдаланып ағымдағы қолданбаларды құруға қатысты әзірлеушілер тап болатын негізгі мәселелерді шешу болып табылады. Сонымен қатар, Java EE-дегі даму күрделіліктің жоғары деңгейіне ие, бұл жаңадан бастағандар үшін ғана емес, жолақты жоғары көтереді. Тәжірибелі мамандар үшін қазірдің өзінде жазылған функционалдылықты түсіну қиын болуы мүмкін, сондықтан Java EE-де әзірлеу ұзаққа созылады және сәйкесінше қымбатырақ. Java EE туралы қысқаша айтқанда мынаны айта аламыз: Күрделі, бірақ икемді. Ал, енді көктем туралы біраз әңгімелесейік . Көктем туралы не білу керек: тарих, негізгі модульдер, Java EE-мен салыстыру - 6
Көктем
Артықшылықтары Кемшіліктер
  • Объектілердің өзара әрекеттесуін тиімді ұйымдастыруға мүмкіндік береді
  • Java EE-ге қарағанда қарапайым
  • IOC және AOP негізінде жүзеге асырылады , бұл қосымшалардың бос қосылуын қамтамасыз етеді
  • XML, Groovy немесе annotation конфигурациясына негізделген жұмыстар
  • Қарапайым ескі Java нысандарын пайдалануға мүмкіндік береді - POJO, әзірлеушілерге қолданбалы server сияқты кәсіпорын контейнері қажет емес.
  • Java әзірлеушілеріне жоғары деңгейлі модульдік мүмкіндік береді
  • Java EE кітапханаларын іске асыруды қамтамасыз етеді, бірақ өзінше, оларды пайдалануды айтарлықтай жеңілдетеді
  • Ашық бастапқы code лицензиясы
  • Spring Boot қолданбаны бастапқы орнатуды айтарлықтай жеңілдетеді
  • Көктемгі қолданба codeын тексеру әдетте оңай
  • Көктемнің дамуы салыстырмалы түрде қиын, өйткені оның нақты фокусы жоқ
  • Жаңа Java әзірлеушісі үшін Spring құрылымын үйрену қиын болуы мүмкін (бірақ Java EE-ге қарағанда оңайырақ)
  • Көктем Java EE-ге қарағанда баяу
Spring - бұл ірі бизнеске арналған ашық бастапқы Java негізі. Көктемгі құрылым J2EE идеяларының ең қарапайым іске асырылуын қамтамасыз етуге және POJO негізіндегі бағдарламалау үлгісінің мүмкіндіктерін кеңейту арқылы тамаша бағдарламалау тәжірибесін пайдалануға бағытталған. Анау. Java EE - бұл ресми стандарт, ал Spring - бұл стандартты өзінше жүзеге асыратын құрылым.

Салыстыру нәтижелері

Менің түсінігімде Java EE және Spring JDBC және Hibernate сияқты, мұнда JDBC жылдамырақ технология, бірақ сонымен бірге қажет емес codeтары көп. Күту күйі қазірдің өзінде JDBC пайдаланады, бірақ сонымен бірге дамуды айтарлықтай жеңілдетеді және азайтады (кейбір шектеулер енгізсе де). Олардың қайсысы жақсы екенін нақты айту мүмкін емес. Бұл сонымен қатар сұрақты еске түсіреді: қайсысы жақсы - ArrayList немесе LinkedList. Өйткені, жауап бірдей болады - жағдайға байланысты. Олардың әрқайсысының өз күшті және әлсіз жақтары бар және сіз олардың арасынан мұқият таңдауыңыз керек, жағдайыңызды өлшеп, олардың қайсысы қазір көбірек пайда әкелетінін түсінуіңіз керек. Көктем туралы не білу керек: тарих, негізгі модульдер, Java EE - 7-мен салыстыру

3. Серіппе компоненттері

Ал, енді көктемді құрайтын фреймворктар туралы аздап сөйлесейік.

Көктемгі шеңбер

Бұл кез келген орналастыру платформасында заманауи Java негізіндегі кәсіпорын қолданбалары үшін кешенді бағдарламалау және конфигурациялау үлгісін қамтамасыз ететін негізгі модуль. Ол көктемнің көптеген негізгі (негізгі) технологияларын қамтиды :
  • негізгі – IoC (басқару инversionсы) және DI (тәуелділік инъекциясы) тұжырымдамаларын жүзеге асыратын негізгі функционалдылық ;
  • AOPAspect-Oriented Programming – түпкі логиканы жүзеге асыруға бағытталған аспектіге бағытталған бағдарламалау;
  • MVC және WebFlux - веб өзара әрекеттесу үшін фреймворктар;
  • JDBC , ORM – мәліметтер қорымен әрекеттесу технологиялары;
  • Тест – Spring контейнер деректерін мөлдір, күрделі емес тестілеуге арналған функционалдылық;
  • SpEL - Spring Expression Language - Spring Expression Language;
  • және т.б.

Көктемгі аяқ киім

Бастапқы қолданба орнатуды азайту және Spring қолданбасының элементтерін автоматты түрде конфигурациялау арқылы Spring негізіндегі қолданбаларды жасауды жеңілдетеді. Көктемгі жүктеуді 5 minutesтан кейін іске қосу мысалы

Көктемгі деректер

Деректерге қол жеткізу технологияларын, реляциялық және реляциялық емес деректер қорын пайдалануды айтарлықтай жеңілдетеді (қайталанатын codeты жояды және деректермен өзара әрекеттесуді жеңілдетеді). Бұл мақалада көктемгі деректерді қосу бойынша жақсы оқулық бар.

Көктемгі бұлт

Ол микросервис архитектурасында қолданылады, микросервистердің бір-бірімен әрекеттесуін жеңілдетеді және AWS , Azure және т.б. сияқты бұлттық платформаларда қолданбаларды орналастыруды автоматтандыру. Spring Cloud туралы егжей-тегжейлі оқулықты мына жерден қараңыз , бірақ мен бұл тақырып оңай емес және жоғары деңгейге жақын мамандарға бағытталғанын ескертемін.

Көктемгі қауіпсіздік

Қолданба үшін қуатты және теңшелетін аутентификация (аутентификация) және қол жеткізуді басқару (авторизация) құралын қамтамасыз етеді. Spring Security қолданбасын қосудың қарапайым мысалын осы посттан таба аласыз . Көктем туралы не білу керек: тарих, негізгі модульдер, Java EE - 8-мен салыстыру

Spring GraphQL

Бұл модуль GraphQL Java негізінде құрылған Spring қолданбаларына қолдау көрсетеді. GraphQL - бұл API интерфейстеріне арналған сұрау тілі, ол клиенттерге қажетті деректердің шектеулі жиынтығын сұрауға мүмкіндік береді, бұл өз кезегінде деректерді сұраулардың шектеулі санында жинауға мүмкіндік береді. Егер сіз JPA-мен бұрыннан таныс болсаңыз, ұқсас (немесе бірдей) тұжырымдамасы бар EntityGraph-ді кездестірген боларсыз. GraphQL туралы толығырақ мына жерден оқи аласыз .

Көктемгі сессия

Spring құрылымының бұл бөлігі пайдаланушы сеансы ақпаратын басқаруға арналған API интерфейстерін және іске асыруды қамтамасыз етеді (пайдаланушы сеансының деректері Redis , MongoDb , HazelCast және т.б. сияқты тұрақты жадта сақталады ). Көктемгі сессияны пайдалану мысалын мына жерден табуға болады .

Көктемгі интеграция

Бұл модуль көктемге негізделген қолданбаларда хабар алмасуды жеңілдетуге және декларативті адаптерлер арқылы сыртқы жүйелермен интеграцияны қолдауға арналған. Бұл адаптерлер қашықтан басқаруға, хабар алмасуға және жоспарлауға арналған Spring қолдауына қарағанда абстракцияның жоғары деңгейін қамтамасыз етеді. Егжей-тегжейлі мақала .

Көктемгі демалыс

REST API әзірлеуін жеңілдететін құралдардың бай жиынтығын ұсынады: сұраныстарды бағыттау, JSON/XML форматын қажетті түрдегі нысандарға түрлендіру және т.б. Көктемдегі RESTful қызметінің мысалын осы материалдан табуға болады .

Көктемгі веб-ағын

Spring Web Flow Spring MVC негізінде жасалған және веб-бағдарламаның «ағындарын» жүзеге асыруға мүмкіндік береді. Мұндай ағындар кейбір іскери тапсырманы аяқтау арқылы пайдаланушыны бағыттайтын қадамдар тізбегін инкапсуляциялайды. Олар бірнеше HTTP сұрауларын қамтиды, күйі бар, транзакциялық деректермен жұмыс істейді, қайта пайдалануға болады және динамикалық және ұзақ сипатта болуы мүмкін. Spring Web Flow қосу мысалын ағылшын тіліндегі осы нұсқаулықта көруге болады .

Spring WebServices

Бұл модуль XML пайдалы жүктемелерін басқарудың көптеген тәсілдерінің бірін пайдаланып икемді веб-қызметтерді жасауға мүмкіндік беру арқылы келісім-шарт негізіндегі SOAP қызметтерін әзірлеуді жеңілдету үшін жасалған. SOAP - Simple Object Access Protocol - Қарапайым an objectілерге қол жеткізу протоколы.

Көктемгі HATEOAS

Модуль Spring және әсіресе Spring MVC-мен жұмыс істегенде HATEOAS принципін ұстанатын REST контроллерлерін жасауды жеңілдету үшін кейбір API интерфейстерін қамтамасыз етеді. HATEOAS - Гипермедиа қолданба күйінің қозғалтқышы ретінде - Гипермедиа қолданба күйінің қозғалтқышы ретінде. Бұл көктемгі кітапхананың қолданылуын мына жерден көре аласыз .

Көктемгі топтама

Бұл модуль корпоративтік жүйелердің күнделікті жұмысы үшін өте маңызды деректерді пакеттік өңдеуге арналған функционалдылықты қамтамасыз етеді (деректер үлкен бөліктерде өңделген кезде - пакеттер). Spring Batch журналды/қадағалауды, транзакцияны басқаруды, тапсырманы өңдеу статистикасын, жұмысты қайта бастауды, өткізіп жіберуді және ресурстарды басқаруды қоса алғанда, үлкен көлемдегі жазбаларды өңдеу үшін қажет қайта пайдалануға болатын мүмкіндіктерді қамтамасыз етеді. Spring Batch туралы қызықты шолуды мына сілтемеден таба аласыз .

Көктемгі AMQP

Модуль AMQP негізіндегі хабар алмасу шешімдерін әзірлеу үшін негізгі Spring тұжырымдамаларын қолданады. Ол хабарламаларды жіберу және қабылдау үшін жоғары деңгейлі абстракция ретінде үлгіні қамтамасыз етеді. Ол сондай-ақ тыңдаушы контейнері бар хабарламаға негізделген POJO-ға қолдау көрсетеді. AMQP - Advanced Message Queuing Protocol - Advanced Message Queuing Protocol. Жоба екі бөліктен тұрады: spring-amqp - негізгі абстракция, ал көктем-қоян - RabbitMQ үшін іске асыру . Spring көмегімен RabbitMQ қосылымымен мысал Көктем туралы не білу керек: тарих, негізгі модульдер, Java EE - 9-мен салыстыру

Апачи Кафкаға арналған көктем

Бұл жоба Кафка негізіндегі хабар алмасу шешімдерін әзірлеу үшін көктемнің негізгі тұжырымдамаларын қолданады . Үлгі хабарларды жіберуге арналған жоғары деңгейлі абстракция ретінде берілген. Ол сондай-ақ қажетті annotationлары және тыңдаушы контейнері бар хабарламаға негізделген POJO-ға қолдау көрсетеді. Мұнда Spring AMQP-мен ұқсастық бар, бірақ бұл модуль Кафка үшін арнайы бейімделген. Көктем Кафканы қосу мысалын мына жерден көруге болады .

Spring CredHub

Cloud Foundry платформасында жұмыс істейтін CredHub serverінен тіркелгі деректерін сақтау, шығарып алу және жою үшін клиенттік қолдауды қамтамасыз етеді . CredHub - тіркелгі деректерінің әртүрлі түрлерін қауіпсіз сақтауға, жасауға, шығарып алуға және жоюға арналған API қамтамасыз етеді. Spring CredHub CredHub API үшін Java байланыстыруын қамтамасыз етеді, бұл Spring қолданбаларын CredHub-пен біріктіруді жеңілдетеді.

Көктемгі FLO

Бұл құбырлар үшін қарапайым HTML5 ендірілген көрнекі дизайнерді және ағынды және пакеттік деректерді бақылауға арналған қарапайым графиктерді ұсынатын JavaScript кітапханасы. Бұл технологияның демонстрациясы сілтемедегі бейнеде .

Көктемгі LDAP

Бұл кітапхана LDAP әрекеттерін жеңілдетеді және Spring JdbcTemplate үлгісіне негізделген. Фреймворк контекстті іздеуге және жабуға, нәтижелерді көруге, мәндерді codeтауға/деcodeтауға, сүзгілерге және т.б. мүмкіндік береді (Spring Jdbc сияқты принциптерге негізделген) Spring LDAP іске асыру үлгісін осы жерден табуға болады .

Spring Roo

Бұл модуль көктемге негізделген қолданбаны жасауға және басқара алатын RAD құралын ұсынады. Оның мақсаты - Java әзірлеушілерінің өнімділігін арттыру. Ол қолданбаңыздың бизнес логикасын жаза алмайды, бірақ конфигурация мен инфрақұрылымды өңдей алады.

Көктемгі қабық

Кітапхана Spring Shell банкаларына сүйеніп және өз пәрмендеріңізді қосу арқылы толық функционалды қабық (пәрмен жолы ретінде белгілі) қолданбасын жасауды жеңілдетеді (олар көктемгі бұршақтардағы әдістер ретінде келеді). Пәрмен жолы қолданбасын жасау, мысалы, жобаңыздың REST API интерфейсімен әрекеттесу немесе жергілікті файл мазмұнымен жұмыс істеу үшін пайдалы болуы мүмкін. Толығырақ мына жерден және мына жерден оқыңыз .

Көктемгі мемлекеттік машина

Бұл модуль қолданбаларды әзірлеушілерге Spring қолданбаларымен күй машинасының тұжырымдамаларын пайдалануға мүмкіндік береді . Бұл функцияны пайдаланудың егжей-тегжейлі мысалын мына жерден және мына жерден табуға болады .

Көктемгі қойма

Spring Vault құпияларға қол жеткізу, сақтау және жою үшін таныс көктемгі абстракцияларды және клиенттік қолдауды қамтамасыз етеді. Ол пайдаланушыны инфрақұрылым мәселелерінен босатып, Vault қолданбасымен әрекеттесу үшін төменгі және жоғары деңгейлі абстракцияларды ұсынады . Spring Vault іске асыру мысалы Көктем туралы не білу керек: тарих, негізгі модульдер, Java EE - 10-мен салыстыру«Маған мұның бәрін үйрену керек пе?» – деп таңдана сұрайсың. Қорықпа! Бұл олай емес! Дәлірек айтқанда, олай емес. Бұл көктемде қолжетімді технологиялардың толық тізімі болды. Жаңадан бастаушы білуі керек технологиялардың тізімі әлдеқайда қарапайым:
  • Көктем өзегі
  • Көктемгі аяқ киім
  • Spring Web (MVC және REST)
  • Көктемгі деректер (көктемгі ORM, көктемгі JDBC, көктемгі JPA)
  • Көктемгі сынақ
Сондай-ақ жобаларда жиі кездесетін басқа да технологиялар бар, бірақ олардың күрделілігіне байланысты олармен әдетте жасыл жаңадан келгендер емес, тәжірибелі әзірлеушілер айналысады. Дегенмен, жаңадан бастағандар үшін кем дегенде жалпы түсінікке ие болу пайдалы:
  • Көктемгі қауіпсіздік
  • Көктемгі AOP
  • Көктемгі бұлт
Басқа технологиялар әлдеқайда аз пайдаланылады, сондықтан нақты жобада жұмыс істеу үшін оларды мұқият зерделеу қажет. Айтпақшы, сіз менің басқа мақаламда Java әзірлеушісі білуі керек толық бақылау тізімін таба аласыз. Бүгін мен үшін осының бәрі, жақында кездескенше! Көктем туралы не білу керек: тарих, негізгі модульдер, Java EE - 11-мен салыстыру
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION