۱۹-اسفند-۱۳۸۶, ۱۷:۳۸:۳۸
سلام
دنياي كامپيوتر و ارتباطات - يكي از بحث برانگيزترين موارد در زبان جاوا و تكنولوژيهاي مرتبط با آن كارآيي جاوا (Java Performance) است. زبان جاوا كه توسط ماشين مجازي (Java Virtual Machine) اجرا ميشود در ابتداي معرفي به علت استفاده از ماشين مجازي براي اجرا نسبت به ساير زبانهايي كه كد اجرايي محلي سيستمعامل را توليد ميكنند همانند C/C++ سرعت كمتري داشت. با گذشت زمان و رشد تكنولوژيهاي بكار رفته در ماشين مجازي، با توجه به پايداري بي همتاي جاوا، شاهد رشد چشمگير كارآيي در زبان جاوا بودهايم، به صورتي كه هماكنون كارآيي در جاوا و تكنولوژيهاي وابسته به آن در بالاترين سطح ممكن در بين ساير تكنولوژيهاي رقيب است. اين در حاليست كه در مورد ساير مشخصههاي اين زبان همچون پايداري، قابليت توسعه و هزينه ناچيز توليد ساير رقبا حرفي براي ارائه ندارند.
در اينجا به گزارش سايت fasterj.com كه از ارائه دهندگان راهكارها و توصيههاي بهبود كارآيي و بازده در محصولات توليد شده در جاواست ميپردازيم كه در آن دنياي كارآيي جاوا در سال گذشته بررسي شده است. بررسي وقايعي كه در سال گذشته در دنياي جاوا در ارتباط با بحث كارآيي به وقوع پيوست بيشتر از همه در پنج قسمت نمايان بوده است. كه شامل جاوا نسخه6، مديريت ظرفيت (Java Capacity)، انجمن جاوا يك (JavaOne)، عموميت جاوا و آخرين و جالبترين مورد حركت به سوي سورس باز شدن جاوا بودهاست.
Java6
جاوا 6 در پايان سال 2006 ارائه شد. حركت بزرگ در كارآيي جاوا 6 بلوغ در امكان مانيتورينگ و عيبيابي در آن بود. در ابتداي سال گذشته جامعه جاوا در سمينارها و از طريق بلوتنهاي رسمي با اينگونه امكانات و قابليت جاوا 6 آشنايي يافتند. در حقيقت اين امكان مانيتورينگ و عيبيابي در جاوا 5 افزوده شده بود، اما در جاوا 6 گسترش يافت و به تكامل رسيد. و هم اكنون زمان آن رسيده است كه بر پايه اين امكانات، ابزارهاي متنوع بهبود كارآيي در كد جاوا را كه به صورت سورس باز ارائه ميشوند، شاهد باشيم. ابزارهايي كه در گذشته فقط به صورت تجاري و با قيمتهاي گزاف در دسترس بودند، هم اكنون در جامعه سورس باز جاوا رشد يافته و عموميت پيدا نمودهاند.
از جمله اين ابزارها ميتوان به Glassbox و Netbeans profiler اشاره نمود. علاوه بر آن جاوا 6 قابليتهايي را در بهبود سرعت اجرا در ماشين مجازي و نيز در مديريت حافظه (garbage collector) تدارك ديده است به گونهاي كه در هر قسمتي شاهد افزايش سرعت اجرا و بهبود كارآيي پروژههاي جاوايي اجرا شده با نسخه 6 جاوا هستيم. قابليت جديد ديگري كه از سال گذشته قابل استفاده ميباشد نوعي پشتيباني از حافظه heap است كه به كمك آن ميتوان توانايي برنامههاي پروفايلر را كه كارآيي كد جاوا را اندازهگيري ميكنند افزايش داد. اين امكان كه در سال 2007 به جاوا افزوده شده است (اما در ليست رسمي قابليتهاي جاوا 6 نيست) با كمك در آناليز حافظه احتمالات رخداد خطاي مشهور كمبود حافظه OutOfMemoryError را مشخص ميسازد.
مديريت ظرفيت
با وجود آنكه مباحث مديريت ظرفيت از گذشته نيز مطرح بوده است، در سال 2007 مورد توجه و اهميت ويژه صنعت قرار گرفت. مباحث مديريت ظرفيت كه به بزرگ شدن اندازه برنامهها و نرمافزارها ميپردازد با ورود شركتهاي بزرگ به اين مقوله تعاريف جديدي در ابعاد مديريت تراكنشها و مانيتورينگ و اندازهگيري كسبوكارها به وجود آورده است. در ديدگاه جديد سختافزار اهميت بيشتري نسبت به گذشته يافته است و بنابراين تست كارآيي و مجازيسازي مورد توجه قرار گرفته است. اين توجه ويژه بر مباحث كارآيي نشاندهنده توقع خاص صنعت از توليدكنندگان براي پرداختن بيشتر به آناليز كارآيي و بهبود كارآيي در محصولات خود ميباشد. در گذشته اكثر توصيههاي بهبود كارآيي مربوط به توسعه و ارتقا تجهيزات سختافزاري به كار رفته در سرويسدهندگان بزرگ بوده است و سختافزار و هزينههاي جانبي آن اصليترين هزينه راهاندازي اينگونه مراكز سرويس به شمار ميرفت. اما در حال حاضر هزينه صرفهجويي شده به علت بهبود كارآيي در عملكرد نرم افزاري سيستم با كل هزينههاي مربوط به بروزرساني سختافزاري رقابت ميكند.
انجمن جاوا يك
انجمن جاوا يك همانند رسم گذشته خود، جلسات متعددي در مباحث كارآيي جاوا در سال گذشته برگزار كرد كه اين نشستها خروجي قابل توجهي در بر نداشت. در اين ميان JavaFx شايد يك استثنا باشد. JavaFX نوعي جاوا (ماشين مجازي) است كه در آن كارآيي از مهمترين پارامترهاي طراحي به شمار ميرود. بنابراين اين انتظار وجود دارد كه با ورود ابزارهاي مبتني بر آن، محصولات جاوايي با كارآيي بسيار بالا توليد و در دسترس قرار گيرد. از ديگر نقطهنظرهاي مورد توجه قرارگرفته در انجمن توجه شركت سان (Sun) به موارد كارآيي در بسته JRE توزيع شده براي كاربران نهايي (end user) است. در اين تلاش شركت سان ضمن افزايش كارآيي JRE ارائه شده، از حجم آن براي download نيز كاسته و زمان اجرا آن را نيز كاهش داده است. تركيب JRE جديد و JavaFX بازار نرمافزارهاي روميزي (Desktop)، توليد سريع و نرمافزارهاي اينترنتي نسل جديد را هدف قرار دادهاند.
از ديگر اعلانات انجمن در آن سال، تبليغات براي جاوا در دنياي توسعه نرمافزارهاي اينترنتي نسل جديد بود كه در عمل به چند پارگي بازار بين تكنولوژيهاي رقيب همانند Adobe Flex/AIR، Silverlight و AJAX و در دنياي روميزي ويژوال بيسيك، دلفي، سي شارپ، C، C++ و Swing منجر شد و شعار Swing بزرگترين بازار توليدكنندگان روميزي به سوي C# جهت گرفت. با وجود اخبار نااميدكننده فوق شايد آمار ارائه شده كلي از جاوا در سال 2007 بسيار جلوه كننده به نظر برسد. وجود شش ميليون برنامهنويس جاوا، چهار ميليون ابزار Blu-Ray جاوايي، هفت ميليون ابزار set-top جاوا، بيش از دو ميليون گوشي موبايل با قابليت اجراي جاوا، دو و نيم ميليون كارت الكترونيكي جاوا و بيش از 700 ميليون كامپيوتر كه جاوا نصب نمودهاند نقطه عطفي از گستردگي و عموميت جاوا در سطح جهاني باشد.
عموميت زبان
جاوا موقعيت مسلم خود به عنوان زبان برنامهنويسي شماره يك در سال 2007 را نسبت به نزديكترين رقيب خود يعني C/C++ به خوبي حفظ نموده است. C/C++ رقيبي است كه در اين اواخر شاهد ركود نسبي آن بودهايم. موضوع مورد بحث در اينجا مقايسه كارآيي زبان جاوا در مقابل C/C++ است. نكته بسيار مهم آن است كه جاوا هيچ كمبود عمدهاي در مباحث كارآيي نسبت به C/C++ به جز در برخي از موارد خاص ندارد، اما اين امر جلوگيري از ادعاهاي طرفداران C/C++ مبني بر سرعت بيشتر C/C++ را نكردهاست. با اين وجود رويه موجود در دنياي انجمنهاي حرفه IT به گونه است كه در دراز مدت يا تفاوت عمدهاي در سرعت بين آندو نخواهند ديد يا اصولاً توجهي به اين تفاوت سرعت نخواهند داشت.
در مورد ساير زبانها، سال 2007 شاهد رشد حيرتانگيز زبان Ruby بود اما به نظر نميرسد كه پشتيبانان اين زبان، قصد ماجراجويي جدي دراز مدت در بازار Enterprise و كارآيي داشته باشند. تنها روند قابل شناسايي دراز مدت در اين مقوله C# بود كه آن هم به آهستگي پيش ميرود و قابل پيشبيني است كه زماني دومين رتبه زبان برنامهنويسي را به خود اختصاص دهد. سرانجام به نظر ميرسد كه اين جاواست كه با حملات خود، معروفيت خود را به جوامع قبولانده است، عملي كه هيچ زبان برنامهنويسي ديگر قدرت انجام آن را ندارد. با توجه به سياستهاي جديد شركت سان و توجه عمده آن شركت بر روي جاوا و سرمايهگذاريها وسيع در جاوا، بعيد نيست كه حتي نام اين شركت نيز به Sun Java تغيير داده شود. البته نام تجاري جاوا از زبان برنامهنويسي جاوا مجزاست اما آنقدر به يكديگر مربوط هستند كه نشاندهنده پشتيباني زبان توسط نام تجاري باشد!
كارآيي جاوا و دنياي سورسباز
جاوا به دنياي سورسباز وارد شده است و اين ورود فقط از نقطه نظرهاي كارآيي نيست. اما نكته قابل توجه وفور چارچوبهاي ارائه شده براي مباحث كارآيي در دنياي سورسباز است. چارچوبهايي براي گسترش مقياس در جاوا همانند Hadoop، چندين چارچوب دستهبندي و شبكهبندي (Griding) همانند Drools يا GridGain، چارچوبهاي پردازش موازي و مانند آن، كشهاي چندگانه توزيع شده، چارچوبهاي مبتني بر NIO و انواع Non-blocking hashmap، توجه ويژه و ارائه كتابخانههاي متعدد بر روي همزماني پردازش با volatile و دهها مورد چارچوب و ابزار ديگر كه بر مقولههاي مختلف پيچيدگيهاي توليد نرمافزارهاي حرفهاي و enterprise پرداختهاند. به طور قطع هيچ زبان برنامهنويسي ديگري وجود ندارد كه با اين گستردگي به صورت سورس باز بر مباحث كارآيي و ابزارهاي مقياسپذيري نرمافزار پرداخته باشد.
علاوه بر فوق ميبايست ابزارها و پروژههاي انجام شده در بخش غير سورس باز از سوي شركتهايي همانند IBM با تمركز بر روي پردازش همزماني (Real-Time Class Analysis, lock analyser, Dump Analyzer) و در دنياي اينترنت با بررسي شتابدهندههاي خاص گوگل، يا قابليتهاي خاص بهبود نمايش صفحات براي كاربران در ياهو كه متمركز بر افزايش سرعت در download و نمايش بودهاند را اضافه نماييم. اين نمونههاي موفق از كسب وكار چگونگي تلفيق تكنولوژيها و زبانهاي متفاوت براي خلق كارآيي را نمايش ميدهد. سال 2007 شايد از موفقترين سالها براي كارآيي در جاوا بوده است.
منبع: یه جایی توی این اینترنت
دنياي كامپيوتر و ارتباطات - يكي از بحث برانگيزترين موارد در زبان جاوا و تكنولوژيهاي مرتبط با آن كارآيي جاوا (Java Performance) است. زبان جاوا كه توسط ماشين مجازي (Java Virtual Machine) اجرا ميشود در ابتداي معرفي به علت استفاده از ماشين مجازي براي اجرا نسبت به ساير زبانهايي كه كد اجرايي محلي سيستمعامل را توليد ميكنند همانند C/C++ سرعت كمتري داشت. با گذشت زمان و رشد تكنولوژيهاي بكار رفته در ماشين مجازي، با توجه به پايداري بي همتاي جاوا، شاهد رشد چشمگير كارآيي در زبان جاوا بودهايم، به صورتي كه هماكنون كارآيي در جاوا و تكنولوژيهاي وابسته به آن در بالاترين سطح ممكن در بين ساير تكنولوژيهاي رقيب است. اين در حاليست كه در مورد ساير مشخصههاي اين زبان همچون پايداري، قابليت توسعه و هزينه ناچيز توليد ساير رقبا حرفي براي ارائه ندارند.
در اينجا به گزارش سايت fasterj.com كه از ارائه دهندگان راهكارها و توصيههاي بهبود كارآيي و بازده در محصولات توليد شده در جاواست ميپردازيم كه در آن دنياي كارآيي جاوا در سال گذشته بررسي شده است. بررسي وقايعي كه در سال گذشته در دنياي جاوا در ارتباط با بحث كارآيي به وقوع پيوست بيشتر از همه در پنج قسمت نمايان بوده است. كه شامل جاوا نسخه6، مديريت ظرفيت (Java Capacity)، انجمن جاوا يك (JavaOne)، عموميت جاوا و آخرين و جالبترين مورد حركت به سوي سورس باز شدن جاوا بودهاست.
Java6
جاوا 6 در پايان سال 2006 ارائه شد. حركت بزرگ در كارآيي جاوا 6 بلوغ در امكان مانيتورينگ و عيبيابي در آن بود. در ابتداي سال گذشته جامعه جاوا در سمينارها و از طريق بلوتنهاي رسمي با اينگونه امكانات و قابليت جاوا 6 آشنايي يافتند. در حقيقت اين امكان مانيتورينگ و عيبيابي در جاوا 5 افزوده شده بود، اما در جاوا 6 گسترش يافت و به تكامل رسيد. و هم اكنون زمان آن رسيده است كه بر پايه اين امكانات، ابزارهاي متنوع بهبود كارآيي در كد جاوا را كه به صورت سورس باز ارائه ميشوند، شاهد باشيم. ابزارهايي كه در گذشته فقط به صورت تجاري و با قيمتهاي گزاف در دسترس بودند، هم اكنون در جامعه سورس باز جاوا رشد يافته و عموميت پيدا نمودهاند.
از جمله اين ابزارها ميتوان به Glassbox و Netbeans profiler اشاره نمود. علاوه بر آن جاوا 6 قابليتهايي را در بهبود سرعت اجرا در ماشين مجازي و نيز در مديريت حافظه (garbage collector) تدارك ديده است به گونهاي كه در هر قسمتي شاهد افزايش سرعت اجرا و بهبود كارآيي پروژههاي جاوايي اجرا شده با نسخه 6 جاوا هستيم. قابليت جديد ديگري كه از سال گذشته قابل استفاده ميباشد نوعي پشتيباني از حافظه heap است كه به كمك آن ميتوان توانايي برنامههاي پروفايلر را كه كارآيي كد جاوا را اندازهگيري ميكنند افزايش داد. اين امكان كه در سال 2007 به جاوا افزوده شده است (اما در ليست رسمي قابليتهاي جاوا 6 نيست) با كمك در آناليز حافظه احتمالات رخداد خطاي مشهور كمبود حافظه OutOfMemoryError را مشخص ميسازد.
مديريت ظرفيت
با وجود آنكه مباحث مديريت ظرفيت از گذشته نيز مطرح بوده است، در سال 2007 مورد توجه و اهميت ويژه صنعت قرار گرفت. مباحث مديريت ظرفيت كه به بزرگ شدن اندازه برنامهها و نرمافزارها ميپردازد با ورود شركتهاي بزرگ به اين مقوله تعاريف جديدي در ابعاد مديريت تراكنشها و مانيتورينگ و اندازهگيري كسبوكارها به وجود آورده است. در ديدگاه جديد سختافزار اهميت بيشتري نسبت به گذشته يافته است و بنابراين تست كارآيي و مجازيسازي مورد توجه قرار گرفته است. اين توجه ويژه بر مباحث كارآيي نشاندهنده توقع خاص صنعت از توليدكنندگان براي پرداختن بيشتر به آناليز كارآيي و بهبود كارآيي در محصولات خود ميباشد. در گذشته اكثر توصيههاي بهبود كارآيي مربوط به توسعه و ارتقا تجهيزات سختافزاري به كار رفته در سرويسدهندگان بزرگ بوده است و سختافزار و هزينههاي جانبي آن اصليترين هزينه راهاندازي اينگونه مراكز سرويس به شمار ميرفت. اما در حال حاضر هزينه صرفهجويي شده به علت بهبود كارآيي در عملكرد نرم افزاري سيستم با كل هزينههاي مربوط به بروزرساني سختافزاري رقابت ميكند.
انجمن جاوا يك
انجمن جاوا يك همانند رسم گذشته خود، جلسات متعددي در مباحث كارآيي جاوا در سال گذشته برگزار كرد كه اين نشستها خروجي قابل توجهي در بر نداشت. در اين ميان JavaFx شايد يك استثنا باشد. JavaFX نوعي جاوا (ماشين مجازي) است كه در آن كارآيي از مهمترين پارامترهاي طراحي به شمار ميرود. بنابراين اين انتظار وجود دارد كه با ورود ابزارهاي مبتني بر آن، محصولات جاوايي با كارآيي بسيار بالا توليد و در دسترس قرار گيرد. از ديگر نقطهنظرهاي مورد توجه قرارگرفته در انجمن توجه شركت سان (Sun) به موارد كارآيي در بسته JRE توزيع شده براي كاربران نهايي (end user) است. در اين تلاش شركت سان ضمن افزايش كارآيي JRE ارائه شده، از حجم آن براي download نيز كاسته و زمان اجرا آن را نيز كاهش داده است. تركيب JRE جديد و JavaFX بازار نرمافزارهاي روميزي (Desktop)، توليد سريع و نرمافزارهاي اينترنتي نسل جديد را هدف قرار دادهاند.
از ديگر اعلانات انجمن در آن سال، تبليغات براي جاوا در دنياي توسعه نرمافزارهاي اينترنتي نسل جديد بود كه در عمل به چند پارگي بازار بين تكنولوژيهاي رقيب همانند Adobe Flex/AIR، Silverlight و AJAX و در دنياي روميزي ويژوال بيسيك، دلفي، سي شارپ، C، C++ و Swing منجر شد و شعار Swing بزرگترين بازار توليدكنندگان روميزي به سوي C# جهت گرفت. با وجود اخبار نااميدكننده فوق شايد آمار ارائه شده كلي از جاوا در سال 2007 بسيار جلوه كننده به نظر برسد. وجود شش ميليون برنامهنويس جاوا، چهار ميليون ابزار Blu-Ray جاوايي، هفت ميليون ابزار set-top جاوا، بيش از دو ميليون گوشي موبايل با قابليت اجراي جاوا، دو و نيم ميليون كارت الكترونيكي جاوا و بيش از 700 ميليون كامپيوتر كه جاوا نصب نمودهاند نقطه عطفي از گستردگي و عموميت جاوا در سطح جهاني باشد.
عموميت زبان
جاوا موقعيت مسلم خود به عنوان زبان برنامهنويسي شماره يك در سال 2007 را نسبت به نزديكترين رقيب خود يعني C/C++ به خوبي حفظ نموده است. C/C++ رقيبي است كه در اين اواخر شاهد ركود نسبي آن بودهايم. موضوع مورد بحث در اينجا مقايسه كارآيي زبان جاوا در مقابل C/C++ است. نكته بسيار مهم آن است كه جاوا هيچ كمبود عمدهاي در مباحث كارآيي نسبت به C/C++ به جز در برخي از موارد خاص ندارد، اما اين امر جلوگيري از ادعاهاي طرفداران C/C++ مبني بر سرعت بيشتر C/C++ را نكردهاست. با اين وجود رويه موجود در دنياي انجمنهاي حرفه IT به گونه است كه در دراز مدت يا تفاوت عمدهاي در سرعت بين آندو نخواهند ديد يا اصولاً توجهي به اين تفاوت سرعت نخواهند داشت.
در مورد ساير زبانها، سال 2007 شاهد رشد حيرتانگيز زبان Ruby بود اما به نظر نميرسد كه پشتيبانان اين زبان، قصد ماجراجويي جدي دراز مدت در بازار Enterprise و كارآيي داشته باشند. تنها روند قابل شناسايي دراز مدت در اين مقوله C# بود كه آن هم به آهستگي پيش ميرود و قابل پيشبيني است كه زماني دومين رتبه زبان برنامهنويسي را به خود اختصاص دهد. سرانجام به نظر ميرسد كه اين جاواست كه با حملات خود، معروفيت خود را به جوامع قبولانده است، عملي كه هيچ زبان برنامهنويسي ديگر قدرت انجام آن را ندارد. با توجه به سياستهاي جديد شركت سان و توجه عمده آن شركت بر روي جاوا و سرمايهگذاريها وسيع در جاوا، بعيد نيست كه حتي نام اين شركت نيز به Sun Java تغيير داده شود. البته نام تجاري جاوا از زبان برنامهنويسي جاوا مجزاست اما آنقدر به يكديگر مربوط هستند كه نشاندهنده پشتيباني زبان توسط نام تجاري باشد!
كارآيي جاوا و دنياي سورسباز
جاوا به دنياي سورسباز وارد شده است و اين ورود فقط از نقطه نظرهاي كارآيي نيست. اما نكته قابل توجه وفور چارچوبهاي ارائه شده براي مباحث كارآيي در دنياي سورسباز است. چارچوبهايي براي گسترش مقياس در جاوا همانند Hadoop، چندين چارچوب دستهبندي و شبكهبندي (Griding) همانند Drools يا GridGain، چارچوبهاي پردازش موازي و مانند آن، كشهاي چندگانه توزيع شده، چارچوبهاي مبتني بر NIO و انواع Non-blocking hashmap، توجه ويژه و ارائه كتابخانههاي متعدد بر روي همزماني پردازش با volatile و دهها مورد چارچوب و ابزار ديگر كه بر مقولههاي مختلف پيچيدگيهاي توليد نرمافزارهاي حرفهاي و enterprise پرداختهاند. به طور قطع هيچ زبان برنامهنويسي ديگري وجود ندارد كه با اين گستردگي به صورت سورس باز بر مباحث كارآيي و ابزارهاي مقياسپذيري نرمافزار پرداخته باشد.
علاوه بر فوق ميبايست ابزارها و پروژههاي انجام شده در بخش غير سورس باز از سوي شركتهايي همانند IBM با تمركز بر روي پردازش همزماني (Real-Time Class Analysis, lock analyser, Dump Analyzer) و در دنياي اينترنت با بررسي شتابدهندههاي خاص گوگل، يا قابليتهاي خاص بهبود نمايش صفحات براي كاربران در ياهو كه متمركز بر افزايش سرعت در download و نمايش بودهاند را اضافه نماييم. اين نمونههاي موفق از كسب وكار چگونگي تلفيق تكنولوژيها و زبانهاي متفاوت براي خلق كارآيي را نمايش ميدهد. سال 2007 شايد از موفقترين سالها براي كارآيي در جاوا بوده است.
منبع: یه جایی توی این اینترنت