تعداد بسيار زيادي از بسته ابزارهاي اپنسورسي كه من بررسي كردم، با ايجكس (Asynchronous JavaScript and :XML) كه بيشتر از يكسال از پيدايش آن نمي گذرد، كار ميكنند. ايده استفاده از جاوااسكريپت همراه با يا بدونXML براي افزايش هوشمندي و كارايي صفحه وب به اولين روزهاي پيدايش وب برميگردد و ايجكس هم اكنون يكي از بهترين روشها براي توزيع برنامههاي كاربردي كلاينت با كمترين دردسر مي باشد. اگر علاقمنديد بدانيد كه آيا اين بستههاي نرمافزاري اپن سورس با بهترين ابزارهاي تجاري رقابت مي كنند يا نه، آسانترين پاسخ اين است كه بگوييم در كليات نه، ولي گاهي در جزئيات خاص، بله. بهترين برنامههاي كاربردي اختصاصي شناختهشده مانند: Backbase ،JackBe، و Tibco's General Interface، همگي محيطهاي پيشرفته را همراه با بسته ابزارهاي جامع، eventهاي سطح بالاو debuggerها، ارائه ميكنند. با آنها، ميتوانيد برنامههاي كاربردياي را كه در محيط محدودي از يك مرورگر وب اجرا ميشوند، اما تقريباً همه فيچرهاي كد محلي را ارائه ميكنند، بنويسيد. هيچكدام از بستههاي نرمافزاري اپنسورسي كه من بررسي كردهام، به لحاظ تعداد و وسعت، به پاي بستههاي نرمافزاري تجاري، نميرسند. اما اين به اين معني نيست كه موارد ارزشمندي در پروژههاي اپن سورس ايجكس وجود ندارد، بلكه همين حالا هم علاقه زيادي به اين محيط وجود دارد. شش انتخاب پس از بررسي بيش از دوازده بسته نرمافزاري خوب و هزارها راهحل جامع و كامل، بسته ابزارهاي قدرتمندي را كه توسط شركتهاي معتبر پشتيباني ميشوند انتخاب كردم كه عبارتند از: DOJO ،Google Web Toolkit ،Microsoft Atlas ،Open Rico and Prototype ،Yahoo AJAX Library و Zimbra's Kabuki AJAX Toolkit ممكن است كهMicrosoft Atlas اپنسورس نباشد (به مجوز نياز داشته باشد)، اما كدي كه شما با سيستم ايجاد ميكنيد بسته به نوعي كه خودتان تمايل داريد، مجوز ميگيرد و قادر خواهيد بود كه برنامههاي كاربردي Atlas را با محدوديتهاي كاربردي اندك، ايجاد كنيد. شش برنامه كاربردي كه مورد بررسي قرار گرفتند، همگي داراي تعداد زيادي ابزارهاي بسيار سودمند، جهت توليد واسط كاربر و background ميباشند كه مراحل ساخت يك برنامه كاربردي ايجكس را آسان ميكنند. توسعهدهندگان وب، استفاده از برنامههاي كاربردي را هنگامي كه تنها ميخواهند قسمت كوچكي را به وبشان اضافه يا صفحهاي را بروزرساني كنند، ترجيح ميدهند. چنانچه براي مثال، ميخواهيد يك پانل متحرك يا يك جدول پويا را اضافه كنيد، معمولاً ميتوانيد آنها را Copy و Paste كنيد. اين مثالها عموماً با روش گفتهشده قابل انجام هستند. با اين حال اگر بخواهيد كاري را انجام دهيد كه با چارچوب اوليه متفاوت باشد،لازم است تغييراتي را در كد اعمال نماييد. اين موردي آشنا براي برنامهنويساني است كه از برنامههاي اپنسورس استفاده ميكنند: اغلب كد كاملاً خوب است، اما به نظر ميرسد كه توسعهدهندهها ترجيح ميدهند كد موجود را كنار گذاشته و از ابتدا كدنويسي كنند تا اينكه مهندسي مجدد انجام دهند؛ حتي اگر اين كار راحتتر باشد. به عنوان نمونه، با برخي از اين ابزارها، تنها چند دقيقه از وقت من صرف اضافه كردن يك جدول از دادهها كه ميتواند روي كلاينت ذخيره شده باشد، ميشود. اما اگربخواهم بيدرنگ چيزي را بسازم يا كار متفاوتي انجام دهم، كد شكسته شده و مستندات هم كمك نخواهد كرد. اين بههمريختگي بدين معني است كه هر تيم توسعهدهنده، قبل از به كارگيري ابزارهاي ايجكس، بايد در مورد محيطي كه ميخواهد كار كند، به خوبي فكر كند. اگر برنامهنويساني داريد كه توانايي، زمان و انعطافپذيري استفاده از كدهاي اپنسورس را دارند، اين ابزارها، فوقالعادهاند. اگر شما يك برنامهنويس جديد يا كسي هستيد كه وقت كافي براي درگير شدن در يك پروژه را نداريد، بايد مجدداً هزينهها را برآورد كرده و به بستههاي نرمافزاري حرفهاي بيشتر توجه كنيد. DOJO اگر يك پروژه اپن سورس ايجكس وجود داشته باشد كه پيشتاز باشد، حتما ًDOJO است. لزوما ًDOJO در هر ويژگي از بقيه بهتر نيست، اما هم به لحاظ وسعت و هم عمق، همراه با مجموعه بزرگي از اجزاي قابلتغيير، بر ديگران برتري دارد. شايد همين ويژگي سبب شده است كه اخيراً شركتهاي آيبيام و سان، پشتيباني DOJO را بپذيرند. پروژه وبسايت و كدنويسي آن كه از امكانات اپن سورس استفاده ميكند و توسط يك تيم توسعهدهنده مشتاق و بيطرف، اجرا شد به طور بيسابقهاي مورد توجه قرار گرفت. مديريت و هدف اين پروژه، به طور مشخص، تشويق هرچه بيشتر به فلسفه اصلي DOJO، يعني شفافيت و سهولت، بود. DOJO يك بسته ويرايشي عالي دارد، مجموعه جامعي از تصاوير متحرك، برخي ابزارهاي drag and drop و خيلي چيزهاي ديگر. ابزاري براي توليد نقشهها از گوگل و ياهو نيز، در نسخه اخيرآن يعني 1.3.0 ايجاد شده است. احساس ميكنم DOJO نيز كمي با مشكلات كيفي معمول در پروژههاي اپن سورس، درگير است. برخي از قسمتهاي كتابخانه به خوبي مستندسازي شده است و از طريق مجموعه خوبي از صفحات دمو، نشان داده ميشود. قسمتهاي ديگر مستندسازي كمتري داشته و مستندسازي به عهده خود توسعهدهندگان، واگذار ميشود كه چنانچه تمايل داشته باشند، خود راهنمايي براي شرح پروژه، ايجاد كنند. اضافهكردن بسته ابزار DOJO به برنامه كاربردي وب شما، خيلي ساده است. منبع كد به صورت ماجولار است. بنابراين برنامه كاربردي شما تنها بايد قسمتهايي را كه از مكانيزم لود DOJO استفاده مي كنند، لود كند. در بيشتر موارد تنها چيزي كه بايد اضافه كنيد، يك خصوصيت اضافي، از نوع DOJO، براي كار HTML شما ميباشد. سپس كد، كار خود را زماني كه صفحه لود ميشود، انجام ميدهد. DOJO به پيشرفت خود ادامه ميدهد تا توسعهدهندگان بيشتر با ايدهها و كدهاي بيشتر را از ساير پروژهها جذب نمايد. رهبرانDOJO براي حفظ اين همكاري خوب كار ميكنند و دلايل بسياري وجود دارد كه آنها مهارت خود را درآينده نيز بيشتر كنند. Zimbra Kabuki AJAX Toolkit هنگامي كه Zimbra به عنوان يك راهحل كامل براي پستالكترونيكي و مديريت تقويم كاري در يك شركت، پديدار شد، خيليها تحتتأثير استفاده پيشرفته ايجكس در تمامي سطوح قرار گرفتند. با اينكه مجموعهاي از ابزارها تحت مجوز يك انجمن، در دسترس است، Zimbra بسته ابزار ايجكس را در بسته نرمافزاري جداگانهاي به نام Kabuki كه تحت مجوز، Apache يا Mozilla بود، قرار داد. اين بسته ابزار حاوي برخي ابزارها و اجزا كاربردي است و تمامي قسمتهايي كه در بستههاي بزرگتر ديده ميشد را در برنميگيرد. اين بدان معني نيست كه Zimbra بسته ابزار كوچكي است. Kabuki ويرايشگر بسيار قوي، بسته ساختاردرختي، و مكانيزم طرح بندي كه براي ساخت واسط كاربرهاي پيچيده قابل استفاده ميباشد را دارد. سيستم Zimbra مانند بستههاي ايجكس DOJO يا Yahoo، دموهاي واضح و پيشرفته ندارد. اجزا كاملاً كاربردي و البته ابتدايي هستند. هيچ اثري از تصاوير متحركي كه برخي مردم انتظار ديدن آن را زماني كه از جاوااسكريپت استفاده ميكنند تا يك واسط كاربر را اجرا كنند، نيست. ميتوانيد برخي از اين موارد را با style sheetهاي صحيح و طراحي خوب، اصلاح نماييد، اما بايد برنامهنويسي اضافه انجام دهيد. اگر ميخواهيد اين كار انجام شود، مكانيزم Zimbra Ajax ابزارهاي كاربردي بسياري دارد. Google Web Toolkit عجيبترين ابزار در اين دسته، شايد گوگل باشد؛ چرا كه بقيه ابزارها، با جاوااسكريپت نوشته شدهاند و به كد جاوااسكريپت خودشان، ترجمه شده و كامپايل ميشوند، اما بسته ابزار وب گوگل، با جاوا نوشته شده و به جاوااسكريپت ترجمه ميشود. زماني كه كد خود را مينويسيد، جاوا مينويسيد و ميبينيد كه به جاوااسكريپت ترجمه شده است. اين موضوع به عجيبيِ چيزي كه به نظر ميآيد نيست؛ چرا كه جاوااسكريپت حداقل به لحاظ قواعد نحوي ظاهري، تا حدي شبيه به جاوا است. اينكه برخي اطلاعات با كد جاوا وارد شوند و با چيزي شبيه به جاوااسكريپت، خاتمه يابند، مسئله پيچيدهاي نيست. كامپايل يك راه حل جذاب است و چيزي است كه برنامهنويسان جاوا هم آن را دوست دارند و هم در اين مورد نگران هستند. خود من نيز گاهي در مواردي كه جاوااسكريپت كمي متفاوت از جاوا رفتار ميكند، سردرگم ميشوم. در كل استفاده از سيستم گوگل را به طور شگفتآوري، آسان يافتم. كار با اين سيستم شبيه به كار با Abstract Windows Toolkit) AWT)، يا نسخه سادهتر Swing است. بسته نرمافزاري به گونهاي طراحي شده است كه ميتوان يك برنامه كاربردي كامل را داخل مرورگر اجرا كرد؛ نه اينكه فقط به محتويات صفحات چيزي را اضافه نمود. Open Rico and Prototype يكي از برجستهترين پروژههاي كاملاً اپنسورس ايجكس از به هم پيوستن مجموعهاي از پروژههاي مجزا، شاملRico و Prototype ساخته شده است. مانند Dojo كه يك پروژه بزرگ منفرد است كه به صورت يك پروژه يكپارچه ميباشد، اين دو و برخي پروژههاي كوچكتر ديگر نيز همگي از لحاظ فني، مستقل ميباشند. براي هر كسي اين فكر پيش ميآيد كه آيا پروژههاي مستقل خوب هستند يا نه، اما از نتايج به دست آمده مشخص شده است كه اين كتابخانه مجزا نيز كاركردي همانند بقيه كتابخانهها را دارد. Rico و Prototype، بيشتر روي افكتهاي تصاوير متحرك، تأكيد داشته است و كمتر به ابزارهاي عملي ميپردازد. به عنوان مثال، فاقد ساختار درختي يا تأكيدي براي جمعآوري دادهها از يك فرم ميباشد، اما افكتهاي تصاوير متحرك و ابزارهاي قدرتمند ديگري نظير مجموعهاي از پانلهاي آكاردئوني، وجود دارند. كتابخانه Prototype مجموعهاي ابتدايي از ابزارهاي سطح پايين جهت برنامهنويسان است. اين مجموعه داراي تابعهاي واضح و ساده است تا سرعت دانلود را افزايش دهد. بيشتر توابع مشترك، خلاصهنويسي شدهاند و اگر بخواهيد از تابعي براي كد خودتان استفاده كنيد، صرفنظر از اينكه از مكانيزم ديگري استفاده ميكنيد، اين كار يعني خلاصهنويسي انجام مي شود؛ چرا كه يكي از اصول اين كتابخانه، خلاصهنويسي براي دستيابي به كدنويسي منعطفتر و آسانتر مي باشد. Rico مجموعهاي از برخي ابزارهاي عمومي و تصاوير متحرك ايجكس است كه در بالاترين قسمت Prototype ساخته ميشود. نيازي نيست كه Rico را با Prototype استفاده كنيد، اما اگر اين كار صورت گيرد، ساخت برنامههاي كاربردي ايجكس آسانتر ميشود و تمامي امكاناتي كه آنها ارائه ميكنند، از اين طريق قابل دستيابي است. من خودم به طور خاص،LiveGrid متعلق بهRico را خيلي دوست دارم، مجموعهاي از روتينها كه از طريق الحاق دادهها به پسزمينه زماني كه بين رديفهاي جدول اسكرول ميكنيد، يك جدول HTML را بالا ميبرد. بنابراين نمايش حجم زيادي از دادهها در يك مجموعه كوچك از رديفها بدون اينكه كاربر را مجبور به لود صفحهاي بعد از صفحه ديگر كند، آسان ميگردد. من Rico را نسخه كوچكتر و آسانتر Dojo كه اجزايي بهتر از آن مانند پشتيباني ازDrag&Drop دارد، ميدانم. Microsoft Atlas دنياي نرمافزار اغلب به دو بخش تقسيم ميشود: مايكروسافت و بقيه. اين گروهبندي زماني كه به جاوااسكريپت و ايجكس فكر ميكنيم، تقريباً كامل و دقيق به نظر ميرسد. مايكروسافت از طريق برخي امكانات پيچيده و كامل ايجكس، فضاي قابلقبولي را به وجود آورده است و اين كار را با پديد آوردن Atlas، گسترش داده است. ممكن است كتابخانه Microsoft Atlas، رايگان باشد، اما دستيابي به آن براي كساني كه از بسته نرمافزاري Visual Studio مايكروسافت استفاده نميكنند، آسان نيست. مايكروسافت خيلي خوشحالتر خواهد بود كه شما صدها مگابايت از ابزارهاي توسعه را قبل از نصب كتابخانههايAtlas JavaScript، كه كارهاي بسياري را انجام ميدهند، دانلود كنيد. واقعاً نمي توانيد بدون اينكه از برخي موانع عبور كنيد، به كتابخانههاي JS دسترسي پيدا كنيد. مثلاً من با مكينتاش خودم نتوانستم اين كار را انجام دهم. كتابخانهها هم به تنهايي، متقاضيان كمي دارند. آنها مرورگرهاي خوبي را كه كاربران فايرفاكس و Safari را پشتيباني ميكنند، ارائه ميدهند، چيزهايي كه شايد كاربران متنفر از مايكروسافت را متعجب ميكند، اما محدوديتهايي در اين الزامات وجود دارد: من اين جمله را بارها در مستندات ديدم <براي اجراي Atlas روي Safari، مبلغ ... را پرداخت كنيد.> و همينطور جملات مشابهي براي كاربران فايرفاكس. اجزاي مجموعه Atlas، حداقل در مقايسه با بقيه موارد ارائه شده، كمي پراكنده ميباشد. مثلاً اديتورهاي زيادي وجود ندارد. همچنين ابزارهاي تصاوير متحرك نيز اندك هستند. بيشتر كارها به جاي اينكه ايجكس را با سرور درگير كند، سرويسهاي وب داتنت را به كار ميگيرد. كه در اين حالت، مستندات و نمونهها، بسيار خوب ميباشند. مكانيزمهاي زيادي براي گرفتن اطلاعات از بانكهاي اطلاعاتي و فرمت آنها در كلاينت، وجود دارند. بيشتر آنها به شدت متكي به #C روي سرور هستند و تمام آنها به خوبي با جاوااسكريپت روي كلاينت در تعامل ميباشند. كدها به وضوح در پلتفرم دات نت، بسط داده ميشوند و تنها ابزاري براي يكي كردن اجزا در كلاينت، نيستند. اگر به سرمايهگذاري در داتنت خيلي علاقمند هستيد و ميخواهيد زيربناي سرويسهاي وب سيستمتان را با اين پلتفرم داشته باشيد، Atlas روش خوبي براي زندگي بخشيدن به صفحات وبتان از طريق استفاده از سرويسهاي موجود در آن ميباشد. كتابخانه Yahoo AJAX كتابخانه ايجكس ياهو، نه تنها يك مجموعه نيرومند از توابع است، بلكه نمونه خوبي از نحوه انتشار نرمافزارهاي اپن سورس ميباشد. كدي كه براي اضافهكردن گروهي از موارد به برنامه كاربردي تحت وب شما ميباشد، به صورت فايلي زيپ شده بوده و ياهو نمونههاي بسيار زياد و طرح پيشنهادي را در اختيار ميگذارد. براي بيشتر روتينها شش تا ده مثال همراه با نمونه كدها و صفحات نمايشي وجود دارد. اين مورد به طور مشخص از ديگر بستههاي نرمافزاري، متفاوت است؛ زيرا ياهو ميخواهد فلسفه طراحي را همراه با انتقال كدهاي آن قرار دهد. اين شيوه بسيار مهمتر از چيزي است كه به نظر ميرسد؛ زيرا عموم كاربران هنوز نيازمند آموزشهاي گستردهاي در مورد نحوه رفتار برنامههاي كاربردي ايجكس ميباشند. طراحان ياهو ميخواهند رفتاري منعطف و ثابت را براي اجزاي ايجكس و مستندات بسيار جامعي كه كاربران را تشويق به استفاده از ايجكس ميكند، در كتابخانه خود جا دهند. مجموعه امكانات در كتابخانه ياهو قوي است، اما نه به بزرگي كتابخانه DOJO. كتابخانه ياهو داراي ابزارهاي استاندارد بسيار مانند كتابخانه تصاوير متحرك و مجموعه ساختارهاي درختي ميباشد، اما ابزارهاي قابلتوجهي مانند اديتور يا جدول پوياي موجود در ياهو را ندارد. اما ياهو برخي موارد جالب توجه هم دارد. به عنوان نمونه، كتابخانه تصاوير متحرك، با برخي ابزارهاي استاندارد در تعامل است؛ ابزارهايي نظير اسكرولكننده متن كه به شما اجازه ميدهد رفتار برخي از قسمتهاي HTML را خودكار كنيد. يا اينكه مدير ارتباط به طور خودكار دادههاي به دست آمده از يك فرم را تركيب كرده و به فرمت صحيح قابل استفاده جهت برنامه كاربردي GET يا Post، تبديل ميكند. بهرغم كمبود اديتور، اين تعامل كتابخانه ياهو، احساس منعطفتري را در مقايسه با آشفتگي و به هم ريختگيOpen Rico و Zimbra، به وجود ميآورد. هنگامي كه با بسته ابزار ياهو كدها را بررسي ميكنيد، به اين نتيجه ميرسيد كه اين شركت زمان بيشتري را صرف بهينهكردن توابع و توسعه كتابخانهها كرده است. شروعي در آينده فكر ميكنم با توجه به چيزهايي كه بستههاي نرمافزاري اپنسورس ايجكس عرضه كردهاند، شاهد تفاوتهاي بيشتري بين بستههاي نرمافزاري كه مستقيماً به يك شركت منسوب هستند و بستههايي كه تنها محدود به يك شركت ويژه نميباشند، خواهيم بود. پيشبيني ميكنم كه گوگل، مايكروسافت و ياهو، كنترلهاي بيشتري را اعمال خواهند كرد و راهنماهاي تدوين شده پروژههاي ايجكس خود، در مقايسه با ساير بستههاي نرمافزاريشان، بهتر خواهد بود. اين كنترلها به كساني كه خواهان شفافيت بيشتر و مستندات بهتر ميباشند، كمك خواهد كرد. همانطور كه انتظار ميرود، اين نوع از فروشندگان نسبت به بقيه، بايد تلاش بيشتري بكنند. اينگونه تسهيلات هميشه با افزايش قيمت همراه است؛ هرچند كه اندك باشد. به عنوان نمونه، كتابخانه جاوااسكريپت هميشه براي پشتيباني نقشههاي تجاري ياهو، حضور خواهد داشت. از طرف ديگر كتابخانههايDOJO، حتي با طرحهاي گوگل يا ياهو كار خواهد كرد. در ضمن، بستههاي نرمافزاري سنتي براي جذب سهم بازار و همكاري، توسعه بيشتري پيدا كرده و متنوع تر خواهند شد. پيش از اين نيز برخي ازقسمتهاي DOJO، از امكاناتي كه در برنامههاي اپنسورسي كه جهت استفاده از DOJO مجدداً نوشته شدند، نشأت گرفتند. به نظر ميرسد كه درآينده، افراد كمي، روي اضافه كردن خطهايي به كدهاي پروژههايشان، كار كنند؛ زيرا براي آنها به كاربردن كتابخانهها با پروژههايشان، راحتتر خواهد بود. به طور مشابه بستههاي نرمافزاري سنتي نيز براي تبديل شدن به بستههايي كه ايدههاي مؤثر و چيزهاي جذاب با كمترين زمان و نرخ را ارائه ميكنند، تلاش خواهند كرد. واضح است كه موارد ذكر شده تنها در حد پيشگويي است. در حال حاضر اساس DOJO توسط شركتهاي بزرگ، تحت بررسي است، اتفاقاً اين كار با تمركز بر كارايي و شفاف سازي مستندات آن، شروع خواهد شد. صرفنظر از اينكه چطور اين ابزارها كار ميكنند، بهترين راه براي استفاده از همه اين بستههاي نرمافزاري اپنسورس، به كار بردن و انتخاب قسمتهايي است كه براي چيدن برنامه كاربردي تحت وبي لازم هستند. براي مثال، من اديتور DOJO را از يكي از پروژههايم، زمانيكه اديتور متن آن دستيابي به دادهها به فرمتي كه ساخته بودم را ارائه نميكرد، حذف كردم. خيلي سخت است كه يك كتابخانه ويژه را به عنوان بهترين، پيشنهاد كرد يا اظهارنظر قاطعي را در مورد برتري آنها مطرح كرد؛ زيرا بسياري از ابزارهايي كه بهنظر نامناسب ميآيند، بستگي به روش و نيازمنديهاي برنامهنويسي شما دارد. توصيه ميكنم از اين كتابخانهها به نوبت يا حتي به صورت تركيبي استفاده كنيد و آنها را با هم بهكاربنديد. در هر صورت، دلايل اندكي وجود دارد كه نتوانيد از كدهاي Atlas و DOJO در يك صفحه استفاده كنيد.