آموزش RSS و نحوه‌ی استفاده از آن در جاوا

در این مستند به بررسی چند نوع از کتابخانه‌های RSS خوان در زبان برنامه‌نویسی جاوا خواهیم پرداخت.اینگونه می‌توان برداشت کرد که یکی از بهترین ابزار RSS خوان در زبان برنامه نویسی جاوا ابزار Rome به دلیل مستندات جامع و کامل، پشتیبانی از تمامی فرمت‌ها و همچنین وجود مثال‌های متعدد اشاره کرد که این ویژگی‌ها در دیگر ابزارهای این مستند وجود ندارد.1-1 منظور از RSS چیست؟کلمه RSS مخفف "Really Simple Syndication" است که به ‌اختصار به آن "Rich Site Summary" گفته می‌شود. RSS برای خواندن اطلاعات و محتویات یک صفحه وب بدون هیچ طراحی یا صفحه‌آرایی استفاده می‌شود. RSSها، توسط کدهای xml نوشته می‌شود. این نوع کدها، بسیار شبیه به کدهایhtml هستند اما با این تفاوت که فاقد طراحی و کدهای صفحه‌آرایی هستند. فایل ساخته‌شده با کدهای xml دارای همان پسوند xml هستند و به دلیل نداشتن هیچ چیدمان و طراحی، دارای حجم بسیار پایینی می‌باشند.1-2 مزایای استفاده از RSSنداشتن طراحی برای صفحات RSS سبب می‌شود تا سرعت شما در خواندن مطالب فرستاده‌شده در RSS بالا رود و مجبور نباشید تا برای لود شدن طراحی و گرافیک صفحات وب، هم اینترنت خود را مصرف کنید و هم‌زمانی را صرف لود شدن گرافیک صفحات نمایید. شما می‌توانید سایت‌ها و وبلاگ‌هایی که مطالب آن‌ها برای شما Feed است و نیاز دارید که مدام به آن‌ها سر بزنید و از به‌روزرسانی آن‌ها، آگاهی یابید، لیست کرده و به RSS خود بفرستید و بدون صرف وقت و اینترنت اضافه، از بروز رسانی آن‌ها مطلع گشته و از مطالب صفحات موردنظر آن‌ها استفاده نمایید.1-3 تفاوت RSS و Atomامروزه اکثر سایت‌ها بمنظور آسان‌سازی دسترسی کاربرانشان به آخرین اخبار از پروتکل‌های Syndication Feed استفاده می‌کنند. به همین خاطر سایت‌های خبری و وبلاگ‌ها به‌منظور ایجاد ارتباط بیشتر، صحیح‌تر و آسان‌تر با مخاطبینشان ملزم به استفاده از این پروتکل‌ها می‌باشند. در سواد عمومی جامعه عموماً Feed‌ها بانام RSS شناخته می‌شوند، درصورتی‌که RSS تنها یکی از دو نوع استاندارد تعریف‌شده هست، استاندارد دوم Atom نام دارد. Atom به یک جفت استاندارد وب اعمال می‌شود که مانند RSS یک‌زبان xml است و به‌عنوان پروتکلی برای Feedهای وب استفاده می‌شود.فرمت Atom به‌عنوان یک جایگزین برای RSS مطرح شد. بن تروت یکی از توسعه‌دهندگان این قالب، معتقد بود که RSS دارای محدودیت‌ها‌ و نقص‌هایی مانند عدم نوآوری به دلیل سازگاری با نسخه‌های قبلی و عدم وجود طرح‌های جدید است. به‌همین دلیل Atom به‌عنوان استاندارد پیشنهادی IETF در دسامبر 2005 تصویب و پروتکل آن در اکتبر 2007 منتشر شد.1-3-1 برخی از تفاوت‌های اصلی RSS و Atomتکنولوژی RSS دارای محبوبیت بیشتری است.اما Atom قدرت بیشتری داردتکنولوژی Atom استاندار IETF را پشتیبانی می‌کند.تکنولوژی RSS نسخه 2 مشکلات نسخه قبل را برطرف و قابلیت پشتیبانی از پادکست رو اضافه کرده است.تکنولوژی Atom کدهای HTML یا صدا و تصویر را باهم به نمایش در می‌آورد.تکنولوژی Atom تغییرات در محتوای فرستاده‌شده رو به کاربر اطلاع می‌دهد.1-4 استفاده از RSSتکنولوژی RSS به دو شكل ایفای نقش می‌كند: وقتی‌که خودتان اطلاعاتی دارید كه می‌خواهید منتشر كنید و در اختیار دیگران قرار دهید، كار نشر یا Syndication را انجام می‌دهد و زمانی كه بخواهید اطلاعاتی را به دست آورده و مورداستفاده قرار دهید، كار گردآوری یا Aggregation را بر عهده می‌گیرد. ما در این گزارش به نقش گردآوری RSS می‌پردازیم و این‌که چگونه یک بولتنی خبری درست كنید كه دیگران بتوانند خبرهای شما را بخوانند در این گزارش توضیح داده نمی‌شود.همان‌گونه که گفته شد هیچ‌كس نیاز ندارد هرروز تمام خبرهای دنیا را بخواند، بلكه هرکسی بسته به علاقه، شغل، یا وظیفه‌ای كه دارد فقط بعضی از خبرها را می‌خواند. برای این منظور به یك ابزار گردآوری احتیاج داریم كه بتواند به‌طور خودكار به سراغ سایت‌هایی برود كه به اشتراك آن‌ها درآمده‌ایم. ابزارهای گردآوری در بازار و اینترنت فراوان یافت می‌شود.در بخش بعدی انواع مختلف ابزارهای منبع باز را، برای زبان برنامه‌نویسی جاوا مورد بررسی قرار می‌دهیم.2 ابزارهای منبع باز2-1 ابزار Informaپروژه Informa یک کتابخانه RSS را بر اساس بستر جاوا فراهم می‌کند. برخی از امکانات این پروژه، نوشتن RSS، خواندن RSS، ذخیره‌سازی و جستجو می‌باشد.هدف از پروژه Informa این است که یک کتابخانه جمع‌آوری اخبار بر روی بستر جاوا ارائه دهد. این ایده توسط نویسندگان دو خبرخوان (HotSheet و Risotto) ایجاد شد. آن‌ها بخش‌های مشترک این دو برنامه را در یک کتابخانه باهم ترکیب کردند که می‌تواند توسط هر توسعه‌دهنده‌ای که نیاز به پاسخگویی به این مسائل در برنامه خود دارد مورد استفاده قرار گیرد. این پروژه از اکثر فرمت‌های RSS مانند (RSS 0.91, 1.0, 2.0 and Atom 0.3, 1.0) پشتیبانی می‌کند.جهت کسب اطلاعات بیشتر می‌توانید به این لینک مراجعه نمایید.2-1-1 مزایا1. تجزیه‌کننده[1] RSS2. تولیدRSS3. تجزیه‌کننده Atom4. کتابخانه جاوا5. پشتیبانی از اکثر نسخه‌های RSS و Atom6. سازگار با اکلیپس7. دارای JavaDoc8. جستجو درباره یک RSS خاص2-1-2 معایب1. در حال حاضر، Informa در حالت بتا قرار دارد اما بااین‌وجود کاملاً پایدار و قابل‌استفاده است.2. از سال 2007 تابه‌حال به‌روزرسانی نشده است.3. اطلاعات زیادی در اینترنت در مورد این ابزار وجود ندارد.2-2 کتابخانه SAXیک RSS خوان بسیار ساده که توانایی خواندن اRSSنسخه2 را دارا هست. این کتابخانه به‌صورت پیش‌فرض از جاوا 5 به بعد وجود دارد. برنامه ‏2‑2 و برنامه ‏2‑2public class RSSFeedReader {public static void read(String url, RSSFeedStore store) {try {SAXParserFactory spf = SAXParserFactory.newInstance();SAXParser saxParser = spf.newSAXParser();RSSFeedSaxHandler handler = new RSSFeedSaxHandler(store);saxParser.parse(url, handler);} catch (SAXException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (ParserConfigurationException e) {e.printStackTrace();}}{برنامه ‏2‑1 نمونه کلاس ساده‌ArrayListRSSFeedStore feedStore = new ArrayListRSSFeedStore();RSSFeedReader.read(&quothttp://some.url.com/feed/&quot, feedStore);ArrayList<RSSItem> list = feedStore.getList();for (RSSItem RSSItem : list) {System.out.println(&quotguid: &quot + RSSItem.getGuid());System.out.println(&quottitle: &quot + RSSItem.getTitle());System.out.println(&quotdescription: &quot + RSSItem.getDescription());System.out.println(&quotlink: &quot + RSSItem.getLink());System.out.println(&quot&quot);}برنامه ‏2‑2 نمونه ای ساده از نحوه اجرا2-2-1 مزایا1. پیاده سازی بسیار آسان و ساده2. سهولت استفاده3. نیاز به هیچ کتابخانه خارجی از جاوا 5 به بعد ندارد.2-2-2 معایب1. عدم پشتیبانی کامل از RSS نسخه 2.2. از تجزیه کننده Atom پشتیبانی نمی‌کند.3. به دلیل سادگی امکان مانور کمتری دارد.4. اطلاعات بسیار کمی در اینترنت در مورد این کتابخانه وجود دارد..2-3 ابزار Romeابزار ROME یک چارچوب جاوا برای خوراک RSS و Atom است. این پروژه منبع باز و تحت لیسانس آپاچی 2.0 است.ابزار rome شامل مجموعه ای از تجزیه کننده‌ها و تولید کننده‌ها برای انواع مختلف Feed و همچنین مبدل‌ها برای تبدیل از یک فرمت به دیگری هست. تجزیه‌کننده‌ها می‌توانند با اشیاء[2] جاوا که مخصوص فرمت موردنظر شما می‌باشند کار کنند. این ابزار اکثر فرمت‌ها را پشتیانی می‌کند که این عمل به شما اجازه می‌دهد تا با داده‌ها بدون هیچ‌گونه ناراحتی در مورد نوع Feed ورودی یا خروجی کارکنید.جهت کسب اطلاعات بیشتر به این لینک مراجعه نمایید.2-3-1 مزایا1. راحتی در استفاده2. پیاده‌سازی آسان3. کامل بودن (تمامی نسخه‌ها را مدیریت می‌کند)4. نیاز به معماری خاصی ندارد.5. قدرتمند از این نظر که به ما اجازه می‌دهد به انواع Feedها بدون در نظر گرفتن فرمتشان به آن‌ها دسترسی پیدا کنیم.6. دارای مستندی جامع و کامل2-3-2 معایب:1. باوجود پیاده‌سازی ساده اما به‌سادگی کتابخانه SAX نیست.2-4 ابزار FeedParserابزار FeedParser یک تجزیه‌کننده RSS , Atom بر اساس زبان جاواست که از تمام نسخه‌های RSS مانند 0.93 ، 0.91، 0.92، 1.0 ، 2.0 و Atom نسخه 0.5 و دیگر نسخه‌ها (طبق گفته سازنده) پشتیبانی می‌کند.ابزار FeedParser یک API تجزیه‌کننده هست که توسط کوین برتون برای NewsMonster طراحی و به‌منظور ادامه توسعه به ASF اهدا شد.ابزار FeedParser با بسیاری دیگر پارسرهای RSS / Atom متفاوت است و تا حدودی شبیه SAXعمل می‌کند. با این تفاوت که به‌جای عناصر سطح پایین در API موجود در SAX، رویدادهای سطح بالاتری را روی اطلاعات Feed تجزیه می‌کند.جهت کسب اطلاعات بیشتر به این لینک مراجعه نمایید.2-4-1 مزایا1) شناسایی خودکار اکثر نسخه‌های RSS و Atom2) پشتیبانی از تمامی ماژول‌های محتوا مانند : and atom:summary xhtml:body, mod_content (RDF and inline), atom:content,3) پشتیبانی از Atom 1 به‌خوبی RSS 1 است.4) تجزیه‌کننده لینک HTML برای پیدا کردن همه لینک‌ها در یک فایل منبع HTML و توسعه آن‌ها به URL کامل.2-4-2 معایب1) طبق گفته سایت سازنده در صورت عدم کارکرد درست برنامه و یا عدم رضایت از آن می‌توانید از برنامه Rome استفاده نمایید.2-5 ابزار YarFrawابزار Yarfraw یک کتابخانه APIمنبع باز[3] برای کار با خوراک RSSاست. این مدل داده‌ای به توسعه‌دهندگان در تولید و خواندن RSSها کمک می‌کند. این API اکنون به‌طور کامل از RSS 2.0، RSS 1.0 و Atom 1.0 پشتیبانی می‌کند. تقریباً دیگر هیچ وب‌سایتی که بر روی RSS 0.9x تولیدشده باشد وجود ندارد، اما API قادر به خواندن Feedهای RSS 0.9x بدون هیچ مشکلی است زیرا RSS 2.0 باید با نسخه‌های قبلی سازگار باشد.با توجه به شکل ‏2‑1 هسته مدل Api Yarfraw شاید در ابتدا تصور کنید که این فرمت‌ها با یکدیگر ناسازگار هستند، اما واضح است که همه آن‌ها شامل یک مجموعه اطلاعات هستند. که عبارت‌اند از:لیستی از "Item" یا "Entry"، هر یک از موارد بالا و همچنین شامل برخی از متاداده‌های بیشتر و همچنین یک قسمت محتوای است که حاوی محتوای اصلی است.ازآنجایی‌که دقیقاً آن‌ها همان اطلاعاتی هستند که تنها در فرمت‌های مختلف هستند، به‌وضوح می‌توانیم همه آن‌ها را در یک مدل واحد بنویسیم و آن‌ها را به فرمت‌های دیگر تبدیل کنیم. کلاس داده‌های Yarfraw یک مدل یکپارچه ارائه می‌دهد که به‌اندازه کافی برای پوشش همه این فرمت‌ها بزرگ است. با این کار، فقط باید با یک مدل داده کارکنید و درعین‌حال از تمامی فرمت‌های مختلف نیز پشتیبانی می‌کند.جهت کسب اطلاعات بیشتر به این لینک مراجعه نمایید.شکل ‏2‑1 هسته مدل Api Yarfraw2-5-1 مزایا1) پشتیبانی از اکثر فرمت‌ها2) یکپارچه شدن فرمت‌های مختلف در یک مدل3) مستقل کردن بخش‌ها از یکدیگر4) دارای Javadoc5) مستندسازی به‌صورت خوب.2-5-2 معایب1) آخرین نسخه منتشرشده مربوط به سال 2008 است.2) عدم وجود مثال‌های متعدد در اینترنت2-6 برنامه Feedzeoبرنامه‌ای ساده و درعین‌حال قدرتمند تحت وب است که به زبان جاوا برای خواندن Feedهای RSS,Atom ایجاد و تحت مجوز GNU LPGLفعالیت می‌کند. این برنامه از دو بخش سرور و کلاینت تشکیل‌شده است. بخش سرور این برنامه به زبان جاوا و بخش کلاینت با Ajax وhtml نوشته‌شده است.نحوه عملکرد این برنامه به این صورت است که سروری که متصل به شبکه است Feedهای Atom و RSS دانلود و اجرا می‌کند به‌صورت فایل‌های data و html به کلاینت ارسال می‌کند.در شکل 2 و شکل 3 تصویری از برنامه را مشاهده می‌کنید.شکل 2 تصویری از برنامهشکل 3 تصویری از برنامهجهت کسب اطلاعات بیشتر به این لینک مراجعه نمایید.2-6-1 مزایا1) ساده و قدرتمند2) پرسرعت3) جدا بودن بخش‌های سمت سرور و کلاینت4) تغییر نحوه نمایش Feedها2-6-2 معایب1) عدم وجود Javadoc2) هم‌اکنون در نسخه بتا قرار دارد.3) آخرین نسخه برنامه مربوط به سال 2006 است.4) از تمامی نسخه‌های Atom و RSS پشتیبانی نمی‌کند.5) نبود مستندات کافی حتی در خود سایت سازندهhttps://teaching.iranmodares.com/teaching-index.php?metaword=%D9%85%D8%AD%D9%85%D8%AF+%D8%AD%D8%B3%DB%8C%D9%86+%D8%AC%D9%84%DB%8C%D9%84%DB%8C