PDA

View Full Version : مقاله: Java Kernel (پیش مقدمه ای برای حل مشکلات جاوا در سمت کلاینت)



saeed_Z_F
چهارشنبه 05 تیر 1387, 21:13 عصر
هدف از ارائه Java SE 6 Update N حل دو مشکل اساسی جاوا برای بکارگیری آن در سمت کلاینت است که علارقم محبوبیت بالای جاوا در سمت سرور ، در سالیان گذشته از محبوبیت آن در سمت کلاینت کاسته است (شکست applet ) ....

ادامه مطلب (http://saeedzarinfam.blogspot.com/2008/06/java-kernel.html)

mazdadoost
پنج شنبه 06 تیر 1387, 11:24 صبح
با سلام:
بیایید نگاهی به رقبای جاوا در کلاینت نگاهی بندازیم.
1-Ajax
2-Flash
3-Air
4-Silver light
5-.net

دوستانی که به موضوع علاقمند هستند نظراتشون رو در باره این موارد بفرمایند تا در موردشون صحبت کنیمک
1-مزایا و معایبشون نسبت به کلاینت جاوا .(Applet-JavaFX-JNPL & Java Web Start ...)
2-چه درس هایی میشه از کار هایی که تا حالا جاوا برای کلاینت و به اصطلاح Rich Internet Appliaction یا RIA انجام داده گرفت؟چه کار هایی باید کرد؟
3-همه ی ما میدونیم که پلت فرم SE خیلی بیشتر از RIA رو در اختیار میذاره .به نظر شما آیا در حال حاضر یا آینده چقدر به این امکان هست که برنامه های اینترنت نیاز به چیز هایی بیش از RIA داشته باشند؟

با تشکر.

javaphantom
پنج شنبه 06 تیر 1387, 13:55 عصر
با سلام:
بیایید نگاهی به رقبای جاوا در کلاینت نگاهی بندازیم.
1-Ajax
2-Flash
3-Air
4-Silver light
5-.net

دوستانی که به موضوع علاقمند هستند نظراتشون رو در باره این موارد بفرمایند تا در موردشون صحبت کنیمک
1-مزایا و معایبشون نسبت به کلاینت جاوا .(Applet-JavaFX-JNPL & Java Web Start ...)
2-چه درس هایی میشه از کار هایی که تا حالا جاوا برای کلاینت و به اصطلاح Rich Internet Appliaction یا RIA انجام داده گرفت؟چه کار هایی باید کرد؟
3-همه ی ما میدونیم که پلت فرم SE خیلی بیشتر از RIA رو در اختیار میذاره .به نظر شما آیا در حال حاضر یا آینده چقدر به این امکان هست که برنامه های اینترنت نیاز به چیز هایی بیش از RIA داشته باشند؟

با تشکر.

چیزی که به applet قدرتی خارق لعاده می ده وجود امنیت آن هست در درجه اول اون هم بخاطر وجود jvm هست که چیزی به جز bytecode های جاوایی نمی شناسه. پس امنیت تضمین هست.

اما ساختار jvm همیشه در مقابل سرعت مورد چالش قرار می گرقته شما شاید بارها و بارها شنیده باشید که جاوا در مقابل C حرفی برای گفتن از لحاظ سرعت نداره. منظور سرعت اجراست. در جواب می تونم اینو بگم که در jvm از طریق technology تونستن این ضعف رو که واقعا زمانی بر این سیستم روا بوده حل کنند. بطوریکه در زمان اجرا هم وجود optimizer یا بهینه ساز کن هم وجود داره. علاوه بر زمان compile که کد برای سخت افزار بهینه می شه. دستورالعمل ها در c بعد compile شدن به صورت یک فایل اجرایی در می آید و اجرا می شه.
.net هم برای خودش یک virtual machine درست کرده تا بتونه از این طریق کنترل کار رو در دست بگیره. امروزه استفاده از virtual machine برای کنترل برنامه های سطح بالا یک امر ضروری و پر از منفعت است.

چیزی که برای من فقط جالبه اینکه اگر بخواهیم java3d کار کنیم مثلا یک برنامه بازی در سطح وب درست کنیم که به صورت 3d باشد می خوام بدونم که چه جوری با ajax یا flash می خواهید چین کاری انجام دهید.
این رو میخوام بگم که درسته برای اجرای یک applet باید download صورت بگیرد و نیاز به jvm دز طرف client هست اما در عوض data سالم می گیریم. کارایی بالاتر و قدرت منطق بیشتر.
۱۰۰٪ برای یک کار تبلیغاتی که از یک سری شکل متحرک استفاده می کنه نیازی به درست کردن یک applet نیست. با یک flash کار راه می افته. با این تقاوت که امنیتی وجود نداره. و ممکنه برای سیسمت سمت client خطر ساز باشه.

از نظر من در سطح وب امنیت مهمترین چیز هست و اگر هم سرعت فدای آن شود اصلا مهم نیست.

mazdadoost
جمعه 07 تیر 1387, 01:32 صبح
دوست عزیز :javaphantom
1-در امنیت نسبی و بیشتر JVM و محیط اجرایی Applet ها و نسل بعدیشون Java Web Start و الان هم JavaFx نسبت به سیستم های دیگه شکی نیست.اما این امنیت هم نسبی هست.با این وجود به نظر شما علت گرایش خیل زیادی از توسعه دهندگان کلینت به فلش آجاکس و یا حتی دات نت چیه؟حتی با وجود اینکه همه ما می دونیم امنیت دارای اهمیت حیاتی در سیستم هاست؟آیا فلش و یا آجاکس مدل امنیتی مناسبی ندارند؟
2-در مورد امکانات لازم برای برنامه های کاربردی سمت سرور به نظر شما چند درصد از برنامه های تجاری به امکاناتی مثل مثالی که فرمودین (بازی سه بعدی و حتی مثلا کاربرد های محمتر مثل Tele medicen! ) نیاز دارند به نظر شما چه چیز باعث میشه اغلب به تکنولوزی هایی مثل فلش(Flex)و یا Ajax روی اورده بشه.هر چند از نظز تئوری کار های سه بهدی رو میشه در فلش انجام داد و دادند!
3-میشه در باره این جمله بیشتر توضیخ بدین:٪100 برای یک کار تبلیغاتی که از یک سری شکل متحرک استفاده می کنه نیازی به درست کردن یک applet نیست. با یک flash کار راه می افته. با این تقاوت که امنیتی وجود نداره. و ممکنه برای سیسمت سمت client خطر ساز باشه.
به نظز شما توجه به این نکته که محیط Flash رانت تایمی که برای دانلود 1.4 MB بیشتر لازم نداره و علاوه بر کار های تبلیغاتی محیط UI بسیار جذاب و کلی امکانات جذاب برای ارتباط با سرور از دیتابیش و وب سرویس و .... گرفته تا ارتباطاط سطح سوکت باینری و خیلی امکانات دیگه داره چه چیز رمز موفقیت بوده؟به فرض که مدل امنیتی فلش و اجاکش ضعیف باشه که بنده فکر نمی کنم اینطور باشه.چطور میشه در دنیای امروز همه چیر رو فدلی یک چیز مثلا امنیت کرد.در دنیای امروز همه چیز به یک میزان دارای اهمیت هست.
فکر میکنم جواب به این سوال ها میتونه فتح بابی برای این باشه که چطور جاوا میتونه به جایگاهی که خودش پایه گذارش در کلانت بوده برسه باشه.
با تشکر.

javaphantom
جمعه 07 تیر 1387, 12:54 عصر
دوست عزیز :javaphantom
1-در امنیت نسبی و بیشتر JVM و محیط اجرایی Applet ها و نسل بعدیشون Java Web Start و الان هم JavaFx نسبت به سیستم های دیگه شکی نیست.اما این امنیت هم نسبی هست.با این وجود به نظر شما علت گرایش خیل زیادی از توسعه دهندگان کلینت به فلش آجاکس و یا حتی دات نت چیه؟حتی با وجود اینکه همه ما می دونیم امنیت دارای اهمیت حیاتی در سیستم هاست؟آیا فلش و یا آجاکس مدل امنیتی مناسبی ندارند؟
2-در مورد امکانات لازم برای برنامه های کاربردی سمت سرور به نظر شما چند درصد از برنامه های تجاری به امکاناتی مثل مثالی که فرمودین (بازی سه بعدی و حتی مثلا کاربرد های محمتر مثل Tele medicen! ) نیاز دارند به نظر شما چه چیز باعث میشه اغلب به تکنولوزی هایی مثل فلش(Flex)و یا Ajax روی اورده بشه.هر چند از نظز تئوری کار های سه بهدی رو میشه در فلش انجام داد و دادند!
3-میشه در باره این جمله بیشتر توضیخ بدین:٪100 برای یک کار تبلیغاتی که از یک سری شکل متحرک استفاده می کنه نیازی به درست کردن یک applet نیست. با یک flash کار راه می افته. با این تقاوت که امنیتی وجود نداره. و ممکنه برای سیسمت سمت client خطر ساز باشه.
به نظز شما توجه به این نکته که محیط Flash رانت تایمی که برای دانلود 1.4 MB بیشتر لازم نداره و علاوه بر کار های تبلیغاتی محیط UI بسیار جذاب و کلی امکانات جذاب برای ارتباط با سرور از دیتابیش و وب سرویس و .... گرفته تا ارتباطاط سطح سوکت باینری و خیلی امکانات دیگه داره چه چیز رمز موفقیت بوده؟به فرض که مدل امنیتی فلش و اجاکش ضعیف باشه که بنده فکر نمی کنم اینطور باشه.چطور میشه در دنیای امروز همه چیر رو فدلی یک چیز مثلا امنیت کرد.در دنیای امروز همه چیز به یک میزان دارای اهمیت هست.
فکر میکنم جواب به این سوال ها میتونه فتح بابی برای این باشه که چطور جاوا میتونه به جایگاهی که خودش پایه گذارش در کلانت بوده برسه باشه.
با تشکر.
به نظر من یک زبان برنامه نویسی از هر لحاظ قابلیت ببیشتری داره تا زبانهای scriptی. برای یاد گیری زبان هزینه ، زمان، سواد، درک ، نیاز داره. ولی هنگام پیاده سازی هم ابزارها و چیزهای دیگری توی کار می یاد که نیاز به تخصص های دیگر هم در آن وجود داره.
من فکر می کنم که آموزش و یادگیری و حالت abstraction در کارهای خاص و محدود که ممکنه با یک زبان برنامه نویسی مشکلات خاص خودشو داشته باشه با یک زبان script کار راه بیوفته.flash و یا javascript مردمی تر و آشناتر هستند و یاد گیری آنها بسیار سادست نسبت به زبانی مثل جاوا که من در کتابی از هربرت شیلد خوندم در چند سال پیش کسی که می خواد جاوا کار کنه حداقل باید چند سال با c++ کار حرفه ای کرده باشد و مفهوم object oriented رو خوب فهمیده باشه. من حرفه شما رو کاملا قبول دارم که همه چیز رو باید مد نظر گرفت و مهم دونست. من خودم به شخصه از کارهای گرافیکی سر در نمی یارم و خوشم نمی یاد :لبخند: نمی تونم بگم applet چرا کمتر استفاده می شه. یا چرا flash چون باز هم از این مسئله من آماری در دست ندارم ولی خوب همانطور که گفتم به نظر من راحتی درک و کارایی ساده با این محیطها هست . که به سمت جاوا نمی رن. شایدم خواسته تیم تحلیل باشه. همه می دونیم چاوا وجاوا کار گرونه هم در پیاده سازی هم در پشتیبانی

amirfarshad
جمعه 07 تیر 1387, 12:58 عصر
بنظر من فقط بحث فنی رو در نظر نگیرید، هزینه تولید یک برنامه هم مهم هست. جاوا گرونه، ابزارهای اون هم.
اگر بخواهیم ایران رو فقط در نظر بگیریم، باید ناآشنا بودن با جاوا رو هم به پارامترها اضافه کنیم، که کسی جاوا را نمیشناسه و همون دعوا بر سر دات نت و جاوا هم منظورمه (توضیح که لازم نیست؟).
اگر بخواهیم کل دنیا رو در نظر بگیریم، اول هزینه و بعد سختی کار با ابزارها و زبانها.

javaphantom
جمعه 07 تیر 1387, 15:33 عصر
بنظر من فقط بحث فنی رو در نظر نگیرید، هزینه تولید یک برنامه هم مهم هست. جاوا گرونه، ابزارهای اون هم.
اگر بخواهیم ایران رو فقط در نظر بگیریم، باید ناآشنا بودن با جاوا رو هم به پارامترها اضافه کنیم، که کسی جاوا را نمیشناسه و همون دعوا بر سر دات نت و جاوا هم منظورمه (توضیح که لازم نیست؟).
اگر بخواهیم کل دنیا رو در نظر بگیریم، اول هزینه و بعد سختی کار با ابزارها و زبانها.

موافقم و در پست قبلی هم من این دلایل رو عنوان کردم

mazdadoost
شنبه 08 تیر 1387, 12:26 عصر
با تشکر از توجه دوستان:
به نظر بنده هم منحنی آموزشی جاوا به نسبت زبان های اسکریپتی مثل Javascript طولانی تره.در مورد هزینه های آموزش در هر موردی میشه مقایسه کرد.به نظر می رسه هزینه های آموزشی برای فلش یا آجاکس در سمت کلینت نسبتا مساوی باشه.(نظرتون رو به این نکته جلب میکنم که در حدود 90 در صد موارد به طور نسبی احاطه نسبی به SE برای نوشتن کلینت های جاوا کافیه.لزومی به تسلط به EE یا ME ... نیست!).در مورد کلینت های جاوا تا اونجایی که گرافیک و دیتا بیس معمولی(شاید معمولی واژه درستی نباشه منظورم دیتابیس در حدود امکانات SE هست.نه EE!)مد نظر باشه هم دوره آموزشی نسبت به فلش باز هم چندان زیادتر نیست.(باز هم نظر دوستان رو به این نکته جلب می کنم یکی از ادعاهای جذاب جاوا سادگیش باید باشه.البته همونطور که دوست عزیزمون javapahntom فرمودند یادگیری جاوا یه چیزه و یادگیری OOP با جاوا یه چیزه دیگه!حتی در مورد زبان های اسکریپتی سازگار با ECMA مثل جاوا اسکریپت که هم در Ajax و هم در Flash استفاده مشه تصلط به شی گرائئ مشکل و زمتنبره حتی بسیار بیشتر از جاوا که این سختی بیشتر به خاطر اینه که امکانات OOP در ECMA در مقابل جاوا خیلی کمه برای مثال پیشنهاد میکنم به کد یکی از فریم ورک های آجاکس مثل Jquery مراجعه کنید.مطمئنا نوشتن چنین کد هایی به Javascript به دوره آموزشی طولانی تر نیاز داره تا جاوا!بله جاوا اسکریپت در چنین سطحی یعنی سطحی که میشه باش آپلیکیشن های واقعی RIA نوشت آنچنان هم اسون نیست!به نظر بنده در جاوا آسون تره!)در مورد فلش علاه بر اینکه بر پایه Javascript و یه سری ملحقات ECMA هست (کاری نیسن که در فلش نشه به Action Scrip انجام نداد.منتها باید صبر ایوب و مدلینگ بسیار عالی داشته باشید.و البته تصلط کامل به API فلش .برای مثال Drawing API )میشه خیلی کار ها رو به راحتی در محیط فلش انجام داد .به نظر بنده اگه به خوایم دو تا برنامه با کارکرد یکسان (مثلا یه شب پر ستاره !)در جاوا اسکریپت -اکشن اسکریپت و جاوا (JavaFX)ایجاد کنیم فارغ از اینکه از چه روشی استفاده کنیم از نظر سختی کار(استفاده از API-OOP-Syntax...) نه تنها تفاوت فاحشی احساس نمیشه بلکه جاوا به علت API شفاف .امکانات OOP عالی و Syntax روون میتونه جذابیتشو برای عده ای به رخ بکشه!
منها همین برنامه وقتی در محیط فلش با اون ابزار های گرافیکی و ترسیمیش قراره ساخته بشه هیچ شانسی برای جاوا برای انتخاب شدن باقی نمیذاره!در مورد نمونه Ajax هم هر چند Tool Support نداره ولی وقتی شما در اینترنت عده زیادی دارید که حاظر نیستند برای دیدن یه انیمیشن از آسمون پر ستاره JRE 15 تا 16 مگی رو دانلود کنند هر چند حتی از نظر کارایی باز هم جاوا از اینتر پرتر براوزر سر تره اما باز هم شانسی برای جاوا باقی نمیمونه!
در مورد هزینه و دوره آموزشی فلش :من فکر نمی کنم نرم افزار هایی مثل فلش یا فلکس بیلدر نرم افزار های گرونی نسبت به نمونه ای مثل نت بینز برای جاوا باشند!و همینطور ساخت کلاس های آموزشی شون.البته چیز هایی مثل Jbuilder و Jdeveloper و زیر ساخت هایی مثل اپ سرور های اراکل ای بی ام خود سان ووو کلا هزینه هایی فراتر از هر حد اکثری در دنیای فلش و حتی زیر ساخت هاش مثل Adobe Life Cicle Enterprise هستتد(مرادم انه که چیزی مثل فلش هم اونقدر ها بی هزینه نیست!مقایسه در این حد !Take It Easy ).


راستش من فکر میکنم جاوا الان همه چیز رو برای برنده شدن داره منها جمع بندی خوبی نداره و البته فرصتی که از دست داده. نظر تون راجع به این پیشنهاد ها چیه:
1-ادامه همین ایده Java kernel :به نحوی که کل کار های گرافیکی که مثلا برای ایجاد یه بنر انیمیشن لازم باشه درش باشه.در کل نمونه خلاصه این API ها(Java2D-XML-Net) و یکپارچه سازیش با JavaFX و مخصوصا API مختص به SVG!فکر نمی کنم بهعد از فشرده سازی Runtime بیشتر از3مگ بشه!
2-ایجاد Tool Support برای ساخت گرافیک با ابزار هایی مثل قلم مو بیت مپ وکتور افکت گذاری ....بی تعارف کپی از ابزار های فلش .منتها تولیدی این ابزار با SVG سازگاره!(میشه هم به شکل جدا گانه هم به صورت پلاگ این هایی برای دت بینز اکلیپس و حتی دریم ویور وووو درستش کرد چون SVG بشدت XML دوسته!)

این ترکیب میتونه خبر خوبی برای موارد زیر باشه که :
1-بر نامه نویسانی که در حال حاظر با جاوا کار میکنند و دوست دارند همه کارشون رو با جاوا انجام بدن!به خاطر n مزیت جاوا!
2-شرکت هایی که می خوان به اصطلاح به سمت SOA برند !ترکیب EE و SE به این شکل مطمئنا ترکیب کشنده ای میشه!
3-مراکز علمی و تحقیاتی و دولتی و غیر دولتی که به دنبال نمونه های کم هزینه (تکنولوژی و ابزار و هزینه های آموزشی و امنیت و وووو اپن سورس !)هستند!

شما نظرتون چیه!؟:لبخندساده:
امید وارم مفید بوده باشه.

saeed_Z_F
دوشنبه 10 تیر 1387, 08:07 صبح
سلام
ممنون که اینقدر آدم پایه توی این سایت وجود داره . من توی اون (http://saeedzarinfam.blogspot.com/2008/06/java-kernel.html)مقاله چند تا از مواردی که شما بهش اشاره کردید در مورد اینکه چرا فلش داره سمت کلاینت سلطنت میکنه رو توضیح دادم و راه حل های جدید سان رو هم گفتم .
یک نکته که خیلی باعث امیدواری میشه که در آینده نزدیک جاوا در کلاینت هم حرفهای زیادی برای گفتن داشته باشه اینه که تفکر سنگین سان در مورد تکنولوژی جاوا چند سالیه عوض شده یعنی دیگه بصورت کاملا Heavyweight به محصولاتش نگاه نمی کنه (بیشتر تفکر آکادمیک که حتما باید فلان محصول تمامی امکانات رو داشته باشه و آیندرو هم ببینه) بلکه خیلی داره به سمت تفکرات lightweight میره نمونه هاشم EJB 3 ، JavaFX ، MYSQL و ... است .

برای مسئله فرایند یادگیری سان JavaFX رو پیشنهاد میده این زبان فوق العادع راحت و قدرتمند یه چیزی از ترکیب Javascript ، Actionscript ، Python و چندین زبان اسکیریپتی محبوب دیگه درست شده .

برای مسئله گران بودن هم که سان تمام ابزارهاشو Open source کرده مثلا Netbeans که فوق امکانات قدرتمندی داره ولی کاملا رایگان و حدودا هر دو ماه یک بار بروز میشه بدون پرداخت هزینه من در بین IDE های جاوا دو ساله دارم تحقیق می کنم و بصورت دقیق امکاناتشون رو بررسی می کنم تنها intellij idea بود که می تونست با امکانات و راحتی Netbeans رقابت کنه که از نسخه 6 به بعد Netbeans عقب افتاد خلاصه منظورم اینه که با وجود Open source بودن و پشتیبانی به این خوبی هزینه های استفاده از جاوا خیلی کم شده (سان قول داده یک محیط طراحی ویژوال برای JavaFX تولید کنه که با ّFlash رقابت کنه ولی معلوم نیست که اون محصول Open source و رایگان باشه)

فقط یه نکته گه خیلی برای من شخصا نگران کننده است وضع مالی خراب شرکت سان است که میتونه روی آینده جاوا تاثیر مستقیم بزاره . سان بعد از اینکه نرم افزارهای خودشو Open source کرد و بطور کامل روش تجاری خودشو عوض کرد ،قیمت سهام این شرکت بالا رفت تاجایی که به مرز 25 دلار رسید (25 دلار کجا 13 دلار کجا) اما از اکتبر 2007 قیمت سهام سان داره افت عجیبی میکنه (حتی با وجود اینکه MySQL رو خرید) و به 10 دلار رسیده !!!! یعنی حتی بدتر از زمانی که سان نرم افزاراشو Open source نکرده بود .
امیدوارم مشکل خاصی بوجود نیاد .