EJB2 крш EJB3
EJB (Enterprise JavaBeans) бул Java EE (Java Platform, Enterprise Edition) спецификациясында табылган Java API (Колдонмо программалоо интерфейси). EJB ишкана колдонмолорун өнүктүрүү үчүн архитектуралык моделин сүрөттөйт. Бул ишкана тиркемесинин бизнес логикасын чагылдыра алган башкарылуучу сервердик модель. IBM - EJB'дин баштапкы жаратуучусу, аны 1997-жылы иштеп чыккан. Sun Microsystems аны 1999-жылы кабыл алган.
EJB киргизилгенге чейин, бизнес-коддо табылган көйгөйлөрдүн чечимдери программисттер тарабынан көп учурда кайра ишке ашырылып турганы аныкталган. Натыйжада, EJB туруктуулук, транзакциянын бүтүндүгү жана коопсуздук сыяктуу жалпы көйгөйлөрдү чечүү үчүн киргизилген. EJB тиркеме сервери транзакцияларды кантип иштеп чыгышы, JPA (Java Persistence API) кызматтары менен интеграцияланышы, конкуренттүүлүгүн көзөмөлдөө, JMS (Java Message Service) окуяларын башкаруу, JNDI менен ат коюу маселелерин чечүү менен бул арткы көйгөйлөрдү чечүүнүн стандарттуу жолдорун сунуштайт. Java аталышы жана каталог интерфейси), JCE (Java Cryptography Extension) жана JAAS (Java Authentication and Authorization Service) менен коопсуз программаларды иштеп чыгуу, компоненттерди жайгаштыруу, RMI-IIOP (Интернет Inter-Orb протоколу аркылуу Java Remote Method Invocation интерфейси) менен алыстан байланышуу., желе кызматтарын иштеп чыгып, асинхрондук ыкмаларды чакырып, Таймер кызматын колдонуңуз.
EJB2
EJB2 (EJB 2.0) 2001-жылдын 22-августунда чыгарылган. Ал Java'да ар кандай сатуучулар тарабынан иштелип чыккан куралдарды бириктирүү аркылуу бөлүштүрүлгөн объектиге багытталган тиркемелерди иштеп чыгуунун спецификациясын сүрөттөйт. EJB2нин негизги максаттарынын бири программисттерге көп агым жана туташуу пулдоо сыяктуу төмөнкү деңгээлдеги деталдарды түшүнбөй туруп, ишкана тиркемелерин оңой иштеп чыгууга мүмкүндүк берүү болгон. Дагы бир максат - программисттерге бир жолу "Bean" жазууга жана кайра компиляциясыз (Java программалоо тилинин "бир жолу жаз, каалаган жерде чурка" ураанына кармануу менен) каалаган жерде иштетүүгө мүмкүнчүлүк берүү болгон. Андан тышкары, EJB2 ар кандай сатуучулар тарабынан иштелип чыккан компоненттерге оңой өз ара иштешүүгө жана сатуучуларга EJB'лерди колдой турган өнүмдөрү үчүн кеңейтүүлөрдү жазууга уруксат берүүнү көздөгөн.
EJB3
EJB3 (EJB 3.0) 2006-жылдын 11-майында чыгарылган. EJB3 мурунку версияларда колдонулган жайгаштыруу дескрипторлорунун ордуна аннотацияларды колдонууга мүмкүндүк берүү менен программисттердин жашоосун абдан жеңилдетти. EJB3 бизнес интерфейсин жана ошол бизнес интерфейсин ишке ашыра турган белгилүү бир объекттин төө буурчагын камтыйт, бул үй/алыскы интерфейстерди жана ejb-jar.xml файлын колдонуу зарылдыгын жок кылат. EJB3тин жалпы өндүрүмдүүлүгү EJB2ге салыштырмалуу бир топ жакшырган жана EJBнин бул чыгарылышында конфигурациялоо, ийкемдүүлүк жана көчмө жөндөмдүүлүк бир топ жогорулаган.
EJB2 менен EJB3 ортосунда кандай айырма бар?
EJB3 конфигурациясында жана EJB2ге караганда аткарууда байкаларлык жакшыртылган. Бул өндүрүмдүүлүктү жакшыртуунун бир себеби - объект шилтемелери үчүн EJB2де колдонулган JNDI издөөлөрүнүн ордуна EJB3 тарабынан метадайындар жана XML жайылтуу дескрипторлору менен POJO (Plain Old Java Object) колдонуу. EJB3 конфигурациясы алда канча жөнөкөй, анткени программалоочуга Home/Remote интерфейстерин жана башкаларды (мисалы, SessionBean) ишке ашыруунун кереги жок, бул контейнер кайра чалуу ыкмаларын (мисалы, ejbActivate жана ejbStore) колдонуу зарылдыгын жок кылат.
Андан тышкары, EJB3 ийкемдүүлүк жана портативдик жагынан EJB2ге караганда жакшыраак. Мисалы, EJB3 объекттерин DAO (Data Access Object) жана тескерисинче айландыруу оңой, анткени EJB3 объекттери жеңил (жогоруда айтылган интерфейстерди ишке ашырган оор салмактагы EJB2 объекттеринен айырмаланып). EJB3-те жазылган маалыматтар базасынын сурамдары абдан ийкемдүү, анткени ал EJB-QLдин бир нече чектөөлөрү бар эски версиясынын ордуна такталган EJB-QLди колдонот. EJB3 бардык транзакциялар үчүн жалпыланган JPAны колдоо менен EJB2'нин (маалымат базасына кирүү үчүн объекттин төө бурчактарын колдонот) бардык көчүрүү маселелерин жок кылат.
Аткаруу үчүн EJB контейнерин талап кылган EJB2ден айырмаланып, EJB3 көз карандысыз JVMде (Java Virtual Machine) контейнерлерди колдонбостон аткарса болот (бул мүмкүн, анткени ал стандарттык интерфейстерди ишке ашырбайт). EJB2ден айырмаланып, EJB3 үчүнчү тараптар сунуш кылган туруктуу провайдерлер менен оңой кошулат. EJB3 менен EJB2 ортосундагы дагы бир маанилүү айырма, EJB3 аннотацияга негизделген коопсуздукту колдоно алат, ал эми EJB2 жайгаштыруу дескрипторлоруна негизделген коопсуздукту колдонду. Бул EJB3'те конфигурациялоо жана орнотуу тапшырмалары бир топ жеңил экенин жана EJB2ге салыштырмалуу өндүрүмдүүлүктүн кошумча чыгымдары бир топ кыскарганын билдирет.