EJB2 vs EJB3
EJB (Enterprise JavaBeans) Java API (Application Programming Interface) է, որը գտնվել է Java EE (Java պլատֆորմ, Enterprise Edition) բնութագրում: EJB-ն նկարագրում է ձեռնարկության հավելվածների մշակման ճարտարապետական մոդել: Սա սերվերի կողմից կառավարվող մոդել է, որն ի վիճակի է գրավել ձեռնարկության հավելվածի բիզնես տրամաբանությունը: IBM-ը EJB-ի սկզբնական ստեղծողն է, ով այն մշակել է 1997 թվականին: Sun Microsystems-ն այն ընդունել է 1999 թվականին:
Նախքան EJB-ի ներդրումը, պարզվեց, որ ծրագրավորողների կողմից հաճախակի վերագործարկվում էին բիզնես-կոդում հայտնաբերված խնդիրների լուծումները:Արդյունքում, EJB-ն ներկայացվեց այս ընդհանուր խնդիրներին լուծում տալու համար, ինչպիսիք են համառությունը, գործարքների ամբողջականությունը և անվտանգությունը: EJB-ն տրամադրում է ստանդարտ եղանակներ՝ լուծելու այս հետին վերջի խնդիրները՝ նշելով, թե ինչպես պետք է հավելվածի սերվերը մշակի գործարքները, ինտեգրվի JPA (Java Persistence API) ծառայություններին, կարգավորի միաժամանակության վերահսկումը, կարգավորի JMS (Java Message Service) իրադարձությունները, լուծի անվանման խնդիրները JNDI-ի հետ (Java Naming և Directory Interface), մշակել անվտանգ ծրագրեր JCE (Java Cryptography Extension) և JAAS (Java Նույնականացման և Թույլտվության Ծառայություն) հետ, տեղադրել բաղադրիչներ, հեռակա հաղորդակցվել RMI-IIOP-ի հետ (Java Remote Method Invocation ինտերֆեյս Internet Inter-Orb Protocol-ի միջոցով):, մշակեք վեբ ծառայություններ, կանչեք ասինխրոն մեթոդներ և օգտագործեք Timer ծառայությունը։
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-ի համեմատ: Այս կատարողականի բարելավման պատճառներից մեկը POJO-ի (Plain Old Java Object) օգտագործումն է EJB3-ի կողմից մետատվյալներով և XML տեղակայման նկարագրիչներով՝ EJB2-ում օգտագործվող JNDI որոնումների փոխարեն օբյեկտների հղումների համար: EJB3-ի կազմաձևումը շատ ավելի պարզ է, քանի որ ծրագրավորողին հարկավոր չէ իրականացնել Home/Remote ինտերֆեյսներ և այլ ինտերֆեյսներ (օրինակ՝ SessionBean), ինչը վերացնում է կոնտեյների հետ կանչման մեթոդների օգտագործման անհրաժեշտությունը (օրինակ՝ ejbActivate և ejbStore):
Ավելին, EJB3-ն ավելի լավն է, քան EJB2-ը ճկունության և շարժականության ոլորտներում: Օրինակ, հեշտ է EJB3 սուբյեկտները փոխարկել DAO-ի (Տվյալների հասանելիության օբյեկտ) և հակառակը, քանի որ EJB3 սուբյեկտները թեթև են (ի տարբերություն ծանր քաշային EJB2-ի, որոնք իրականացնում են վերը նշված միջերեսները): EJB3-ով գրված տվյալների բազայի հարցումները շատ ճկուն են, քանի որ այն օգտագործում է կատարելագործված EJB-QL՝ EJB-QL-ի հին տարբերակի փոխարեն, որն ուներ մի քանի սահմանափակումներ:EJB3-ը հեռացնում է EJB2-ի տեղափոխելիության բոլոր խնդիրները (որն օգտագործում է entity beans տվյալների բազայի հասանելիության համար)՝ աջակցելով ավելի ընդհանրացված JPA-ի բոլոր տվյալների գործարքների համար:
Ի տարբերություն EJB2-ի, որի գործարկման համար անհրաժեշտ է EJB կոնտեյներ, EJB3-ը կարող է իրականացվել անկախ JVM-ում (Java վիրտուալ մեքենա)՝ առանց կոնտեյներներ օգտագործելու (դա հնարավոր է, քանի որ այն չի իրականացնում ստանդարտ միջերեսներ): Ի տարբերություն EJB2-ի, EJB3-ը հեշտությամբ կարելի է միացնել երրորդ կողմերի կողմից առաջարկվող կայունության մատակարարներին: EJB3-ի և EJB2-ի միջև մեկ այլ կարևոր տարբերություն այն է, որ EJB3-ը կարող է օգտագործել ծանոթագրության վրա հիմնված անվտանգություն, մինչդեռ EJB2-ն օգտագործում էր տեղակայման նկարագրիչների վրա հիմնված անվտանգություն: Սա նշանակում է, որ EJB3-ում կազմաձևման և տեղադրման առաջադրանքները շատ ավելի հեշտ են, և EJB2-ի համեմատ կատարողականի ծախսերի զգալի նվազում կա: