EJB2 در مقابل EJB3
EJB (Enterprise JavaBeans) یک Java API (رابط برنامه نویسی کاربردی) است که در مشخصات Java EE (جاوا پلتفرم، نسخه سازمانی) یافت می شود. EJB یک مدل معماری برای توسعه برنامه های کاربردی سازمانی را توصیف می کند. این یک مدل سمت سرور مدیریت شده است که می تواند منطق تجاری برنامه سازمانی را به تصویر بکشد. IBM خالق اصلی EJB است که آن را در سال 1997 توسعه داد. Sun Microsystems آن را در سال 1999 پذیرفت.
قبل از معرفی EJB، مشخص شد که راهحلهایی برای مشکلات موجود در کد کسبوکار بکاند اغلب توسط برنامهنویسان دوباره پیادهسازی میشوند.در نتیجه، EJB برای رفع این مشکلات رایج مانند تداوم، یکپارچگی معاملات و امنیت معرفی شد. EJB راههای استانداردی را برای رسیدگی به این مشکلات پشتیبان ارائه میکند، با مشخص کردن نحوه پردازش تراکنشها توسط سرور برنامه، ادغام با سرویسهای JPA (Java Persistence API)، مدیریت کنترل همزمان، مدیریت رویدادهای JMS (سرویس پیام جاوا)، حل مشکلات نامگذاری با JNDI (نامگذاری جاوا و رابط دایرکتوری)، برنامه های ایمن را با JCE (برنامه افزودنی رمزنگاری جاوا) و JAAS (سرویس احراز هویت و مجوز جاوا) توسعه دهید، مؤلفه ها را مستقر کنید، از راه دور با RMI-IIOP (رابط فراخوانی روش راه دور جاوا از طریق پروتکل Inter-Orb اینترنت) ارتباط برقرار کنید. ، سرویس های وب را توسعه دهید، روش های ناهمزمان را فراخوانی کنید و از سرویس تایمر استفاده کنید.
EJB2
EJB2 (EJB 2.0) در 22 اوت 2001 منتشر شد. این مشخصات برای توسعه برنامه های کاربردی شی گرا توزیع شده در جاوا با ترکیب ابزارهای توسعه یافته توسط فروشندگان مختلف توضیح می دهد.یکی از اهداف اصلی EJB2 این بود که به برنامه نویسان اجازه دهد تا برنامه های کاربردی سازمانی را آسان تر توسعه دهند بدون اینکه نیازی به درک جزئیات سطح پایین مانند چند رشته و ادغام اتصال داشته باشند. هدف دیگر این بود که به برنامه نویسان اجازه داده شود یک بار "Bean" بنویسند و بدون کامپایل مجدد در هر جایی اجرا کنند (با رعایت شعار "یک بار بنویس، هرجا اجرا کن" زبان برنامه نویسی جاوا). علاوه بر این، EJB2 در نظر داشت به اجزای توسعهیافته توسط فروشندگان مختلف اجازه دهد تا به راحتی با یکدیگر همکاری کنند و به فروشندگان اجازه دهد برنامههای افزودنی را برای محصولات خود بنویسند که میتوانند EJB را پشتیبانی کنند.
EJB3
EJB3 (EJB 3.0) در 11 مه 2006 منتشر شد. EJB3 با استفاده از حاشیه نویسی به جای توصیفگرهای توسعه که در نسخه های قبلی استفاده می شد، زندگی برنامه نویسان را بسیار آسان کرد. EJB3 حاوی یک رابط تجاری و یک موجودیت خاص است که میتواند آن رابط تجاری را پیادهسازی کند و نیاز به استفاده از رابطهای خانگی/راهدور و فایل ejb-jar.xml را از بین ببرد. عملکرد کلی EJB3 در مقایسه با EJB2 بسیار بهبود یافته است و افزایش قابل توجهی در پیکربندی، انعطاف پذیری و قابلیت حمل در این نسخه از EJB وجود دارد.
تفاوت EJB2 و EJB3 چیست؟
EJB3 نسبت به EJB2 بهبود قابل توجهی در پیکربندی و عملکرد دارد. یکی از دلایل این بهبود عملکرد، استفاده از POJO (شیء قدیمی جاوای ساده) با متادیتا و توصیفگرهای استقرار XML توسط EJB3 به جای جستجوهای JNDI مورد استفاده در EJB2 برای ارجاعات شیء است. پیکربندی EJB3 بسیار سادهتر است، زیرا برنامهنویس نیازی به پیادهسازی رابطهای Home/Remote و سایرین (مانند SessionBean) ندارد، که نیاز به استفاده از روشهای برگشت تماس کانتینر (مانند ejbActivate و ejbStore) را از بین میبرد.
علاوه بر این، EJB3 در زمینه انعطاف پذیری و قابلیت حمل بهتر از EJB2 است. به عنوان مثال، تبدیل موجودیت های EJB3 به DAO (شیء دسترسی به داده) و بالعکس آسان است زیرا موجودیت های EJB3 سبک وزن هستند (بر خلاف موجودیت های سنگین وزن EJB2 که رابط های ذکر شده در بالا را پیاده سازی می کنند). پرس و جوهای پایگاه داده نوشته شده در EJB3 بسیار انعطاف پذیر هستند زیرا به جای نسخه قدیمی EJB-QL که دارای چندین محدودیت بود، از یک EJB-QL تصفیه شده استفاده می کند. EJB3 با پشتیبانی از JPA تعمیمیافتهتر برای همه تراکنشهای داده، تمام مشکلات قابل حمل EJB2 (که از دانههای موجود برای دسترسی به پایگاه داده استفاده میکند) را حذف میکند.
برخلاف EJB2 که برای اجرا به یک کانتینر EJB نیاز دارد، EJB3 را می توان در یک JVM مستقل (ماشین مجازی جاوا) بدون نیاز به استفاده از کانتینرها اجرا کرد (این امکان وجود دارد زیرا رابط های استاندارد را پیاده سازی نمی کند). برخلاف EJB2، EJB3 به راحتی با ارائه دهندگان پایداری ارائه شده توسط اشخاص ثالث قابل اتصال است. تفاوت مهم دیگر بین EJB3 و EJB2 این است که EJB3 می تواند از امنیت مبتنی بر حاشیه نویسی استفاده کند، در حالی که EJB2 از امنیت مبتنی بر توصیفگرهای استقرار استفاده می کند. این بدان معناست که تنظیمات و وظایف راهاندازی در EJB3 بسیار آسانتر است و هزینههای سربار عملکرد در مقایسه با EJB2 کاهش قابلتوجهی دارد.