# فناوری جاوا > برنامه‌نویسی جاوا > بحث و گفتگو در مورد فناوری های مرتبط با جاوا > سوال: چند ویژگی مستهلک شده در جاوا یا سی شارپ؟

## elahemohammadi

چند ویژگی مستهلک شده در جاوا یا سی شارپ؟

----------


## little.boy

منظور از مستهلک شده چیست؟

----------


## persianshadow

در جاوا اپلت مستهلک شده.[یکی از بزرگترین استهلاک‌ها]

در جاوا و در Swing متد show مستهلک شده.

----------


## little.boy

ببخشید که دوباره می پرسم ولی من هنوز هم متوجه نشدم که منظور از مستهلک شدن چیه؟اپلت در جاوا چه خصوصیتی پیدا کرده که شما اونو مستهلک می دونید یا متد show  در کتابخانه swing

----------


## jlover

> ببخشید که دوباره می پرسم ولی من هنوز هم متوجه نشدم که منظور از مستهلک شدن چیه؟اپلت در جاوا چه خصوصیتی پیدا کرده که شما اونو مستهلک می دونید یا متد show در کتابخانه swing


البته بنده به شخصه ترجیح میدم از واژه ی *منسوخ* استفاده کنم، چون استهلاک یه جورایی میره تو از بین رفتن و غیر قابل استفاده شدن که در مورد اجزای Deprecate شده صحیح نیست، چون همچنان امکان استفاده از اونها وجود داره.

اما چرا منسوخ شده؟
هر جایی توی مستندات دیدید که اون عبارت اومده، دلیلش رو هم توضی داده1 و گاهی اوقات دلایل متعددی ممکنه داشته باشه:
_ارایه ی جایگزین مناسبتر_  و  _عدم کارکرد کاملن صحیح (اونقدر که به پای جایگزینش نمیرسه)_ از عمده ترین دلایل کلی محسوب میشند

*سوال*: پس چرا این عناصر منسوخ شده همچنان در کتابخانه ی استاندارد حضور دارند و میشه از اونها استفاده کرد؟ 
*جواب*: برای رعایت سازگاری پس رو




> در جاوا اپلت مستهلک شده.[یکی از بزرگترین استهلاک‌ها]
> 
> ...


درود
البته من هنوز همچنان به سایتهای زیادی برمیخورم که از اپلتها برای نمایش مخصوصن نمودارها و گرافهای آموزشی استفاده میکنند.
و یه سایتی هم هست که امنیت ناشناس بودن شما رو بررسی میکنه...اون هم تو یه مرحله ای از تستش میاد و از یه اپلت استفاده میکنه که اگه شما بعنوان یه کاربر معمولی محیط زمان اجرای جاوا رو نصب کرده باشید و گزینه ینمایش کنسول هنگام اجرای اپلت رو در کنترل پنل جاوا فعال نکرده باشید، متوجه نمیشید که حتی آدرس خصوصی شما هم تشخیص داده میشه !

ولی خب خودم هم دارم فکر میکنم، اپلت با اون همه مقیدات امنیتی خیلی دست و پا گیره و امروزه کمتر استفاده میشه (اینو جاهای دیگه ای هم  شنیدم) و مطوئنم از فناوریهای دیگه ای استفاده میشه که بخاطر دانش پایینم از توسعه ی وب اطلاعاتی در این خصوص ندارم

با تشکر

----------


## persianshadow

اینکه من از واژه استهلاک استفاده کردم به خاطر نظر دوست سئوال کننده اول بود،که به نظر یک مبحث درسی ازشون چنین سئوالی شده بود گفتم زیاد وارد جزئیات نشیم:).

و گرنه همونطور که JLover عزیز فرمودن منسوخ کلمه صحیح و دقیقی هست.

اگه بخواییم یک تکنولوژی رو نام ببریم که باعث عدم اشاعه اپلت‌ها شد بی شک فلش متهم ردیف اول هست.

شاید اپلت ها در اون زمان تونستن در مقابل ActiveX مایکروسافت پیروز بشن ولی در مقابل فلش نه.

متاسفانه در اون زمان مرورگرها موتور درونی خودشون رو برای نمایش اپلت‌ها بروز نمی‌کردم و همین باعث

شد که استقبال کمی از اپلت‌ها بشه.تا اینکه سان [سابق] Applet plugin رو همراه با نصب JRE ارائه کرد.

تا مرورگرها از JRE روی سیستم‌ها بهره ببرن که متاسفانه باز هم بی تاثیر بود اما این بار نه به خاطر 

اپلت‌ها بلکه به خاطر اینکه فناوری‌های دیگه‌ای تحت وب ظهور کرده بودن.وقتی جاوا اسکریپت و قالب‌های کاری مختلف اون تونستن رابط کاربری قوی ارائه بدن و وقتی به سادگی می‌شه بین جاوا اسکریپت با منطق
تجاری مستقر روی سرور ارتباط برقرار کرد چه نیازی به اپلت‌ها و اون هم با این شرط که کاربر باید حتمآ
JRE روی سیستم داشته باشه.

چیزی که شما در محصولات گوگل می‌بینید.جی میل چنین چیزی هست.

البته در این بین اپلت تنها کنار نرفت ، شما به activex های مایکروسافت نگاه کنید اون ها هم دیگه نیستند :).

پس یعنی اصولآ نیاز به چنین تکنولوژی و امکانی دیگه از بین رفته.حالا چه اپلت باشه و چه ActiveX .

----------


## jlover

> اینکه من از واژه استهلاک استفاده کردم به خاطر نظر دوست سئوال کننده اول بود،که به نظر یک مبحث درسی ازشون چنین سئوالی شده بود گفتم زیاد وارد جزئیات نشیم:).
> ....


بنده هم در جواب به شما، این مساله رو اظهار نکردم (به نقل قول دقت کنید ;) )
...
بابت توضیحاتتون در خصوص اپلت خیلی ممنون، به نظرم بهتره عنوان تاپیک به یه چیز مرتبط با اپلتها تغییر داده بشه  :چشمک:  پست اول هم که واقعا نوبر خلاصه سازی بود!

راستی درباره ی جیمیل که فرمودید _چنین چیزی_ ست منظورتون اینه که از جاوا اسکریپت داره استفاده میکنه دیگه....؟

و این قسمت رو هم اگه توضیح بدین خیلی ممنون میشم:




> ...وقتی به سادگی می‌شه بین جاوا اسکریپت با منطق
> تجاری مستقر روی سرور ارتباط برقرار کرد...


اینطور که من دستگیرم شده، یعنی اگه زمانی ما *اپلت* رو به عنوان *رابط (واسط)* بین مشتری و خدمتگزار داشتیم، حالا از *جاوا اسکریپت* یا مثلا *فلش* استفاده میشه! 
درسته؟

با تشکر

----------


## persianshadow

مدت‌هاست یک سری نظریه پرداز وب رو مسیر بعدی تحولات نرم‌افزار قرار دادن.خصوصآ زمانی که در کنفرانس

معروف اورلی اصطلاح WEB 2.0 به کار برده شد و دیدیم تا به امروز سرویس‌های آنلاین مختلفی ظهور کردن که هدفشون یک چیز هست ارائه امکاناتی نظیر محیط Application Desktop به کاربر بر روی اینترنت.

مثلآ دیدیم که فوتوشاپ نسخه آنلاین خودش رو ارائه میده و غیره.

خب این یه دیدگاه نیست که فرضآ از ۶ سال پیش شروع شده باشه این دیدگاه در گذشته هم بوده و شما می‌بینید به خاطر اون ActiveX و اپلت ها به وجود اومدن یعنی شما همون برنامه‌ای که با Swing داشتید
رو در قالب یک اپلت ارائه میدادید.
بعدش فلش در ابتدا برای انیمیشن به وجود اومد ولی به خاطر اینکه مقبول افتاد در کارهای دیگه‌ای هم وارد شد فرضآ یوتیوب از فلش برای بخش عمده‌ای از سایت خودش استفاده کرد و خیلی سرویس‌های دیگه.
دلیلش هم یک چیز هست مرورگرهای مختلف از فلش پشتیبانی میکردن و همچنین نصب فلش برای کاربران
ساده هست.
ولی رقبای دیگه‌ای هم برای ساخت rich Internet application وجود داره.مایکروسافت Silverlight رو ارائه داد.
اوراکل دست از اپلت‌ها برداشت و JavaFX رو ارائه کرد.شرکت Adobe محصول Flex رو ارائه داد.Adobe Air
هم قابل ذکره.
اما به واقع کدام یک برنده این بازی برنده-بازنده هستند ؟ 

HTML + CSS  + JavaScript

فناوری ای‌جکس [Ajax] به همراه فناوری‌های روتین بالا همه چیز رو قبضه کردن و به نظر ما در ابتدای نو‌آوری و نبوغ افراد هستیم.فریم ورک‌های Javascript مانند JQuery چنان قدرتمند ظاهر شدند که امکان ساخت
پیچیده‌ترین رابط‌های کاربری رو به شما میدن.

و در نهایت با ارائه و ترکیب HTML 5 و CSS3 هیچ رقیبی جلودار آن‌ها نیست.چون تمام مرورگرها به صورت درونی این فناوری‌ها رو ساپورت می‌کنن و کاربران بدون نصب پلاگین‌های عجیب و غریب جاوا و فلش
فقط کافیست آخرین نسخه رایگان یک مرورگر را داشته باشند.

----------


## jeus

از زمان ارائه GWT توسط گوگل و اینکه محیط توسعه اون را جاوا قرار داده به نظر من  یک تحول عظیم اتفاق افتاده و حتی JAVAFX هم محبوبیت خودش را نسبت به GWT از دست میده 
البته بد نیست قبل از اینها همه به این اشاره کنم که یکی از بزرگترین دلایلی که اپلت ها منسوخ شدند نبود محیط توسعه قوی براش بود و این در حالی بود که رقیبش فلش از یک محیط زیبا و کارا استفاده می کرد و عملا زمان ساخت و توسعه را کاهش میداد .
البته هنوز هم این نقص در توسعه JAVAFX وجود داره هرچند که محیط توسعه ساده تری برای javafx در6.9 netbeans یه مقدار حل شده اما باز هم ضعف موجوده .

----------


## javaphantom

> از زمان ارائه GWT توسط گوگل و اینکه محیط توسعه اون را جاوا قرار داده به نظر من  یک تحول عظیم اتفاق افتاده و حتی JAVAFX هم محبوبیت خودش را نسبت به GWT از دست میده 
> البته بد نیست قبل از اینها همه به این اشاره کنم که یکی از بزرگترین دلایلی که اپلت ها منسوخ شدند نبود محیط توسعه قوی براش بود و این در حالی بود که رقیبش فلش از یک محیط زیبا و کارا استفاده می کرد و عملا زمان ساخت و توسعه را کاهش میداد .
> البته هنوز هم این نقص در توسعه JAVAFX وجود داره هرچند که محیط توسعه ساده تری برای javafx در6.9 netbeans یه مقدار حل شده اما باز هم ضعف موجوده .


می شه لطف کنید بیشتر در مورد منظورتون از اپلتها چیست؟
آیا منظور شما همان java applet هست؟
GWT یا همان google web toolkit چه ربطی به اپلتها داره؟
flash چه چیزی برای گفتن داره نسبت به ابلتها؟ 

اصلا اپلت چی هست؟ آیا میشه اپلت رو با GWT یا flash یا با چیزه دیگری مقایسه کرد؟

----------


## persianshadow

مقایسه‌های دوستمون اشتباه هست این تکنولوژی ها هیچ کدوم به هم ربطی ندارن ! البته مطمئنآ بین 

GWT و JavaFX کلی شباهت هست ولی فلسفه JavaFx کاملآ متفاوت هست.

----------


## mazdadoost

سلام به همگی !
خوب به نظر من در طرح سوال این تاپیک واژه مستهلک میتونه زمینه ای برای گمراهی باشه.چرا که هر چیزی که مستهلک باشه خوب مستهلک شده و قائدتا دیگه مرده! و نیست!
اما بعضی چیز ها هستند که میشه گفت استفادشون با وجود چیز های جدید دیگه موردی نداره!
شاید بشه گفت هر قسمت API که با Deprecatedمشخص شده داره رو به موت میشه!ولی مستهلک نشده!
در مورد اپلت ها در حال حاضر همچنان به عمر خودشون دارند ادامه میدنند و کاملا هم کاربردی هستند!آخرین کاربردی که دیدم در فایل آپلودر Yahoo! mail بود!که یک برنامه جاوا بود!
در کل به applet ها اینطوری فکر کنید java+browser=applet
به عبارتی تا وقتی که جاوا هست applet هم هست!

----------


## jeus

ببین کلا  اپلتها -  فلش و همینطور GWT استفاده می شوند تا برنامه های غنی سمت کلاینت تولید شوند. 
هر چند که بعضی از ویژگی های اپلت ها قدرت اون را نسبت به flash بالا می بره اما با همه گیر شدن HTML 5 اپلت ها و حتی فلش به میزان زیادی در معرض خطر قرار گرفته اند . 
GWT  و یا همان Google widget toolkit هم برای ساخت برنامه های AJAX و همچنین    Reach Internet application کاربرد داره و مزیت عمده اون هم عدم نیاز به JRE بر روی سیستم است و تنها مرورگر شما باید از java script پشتیبانی کنه . 
برای دیدن یک سری از نمونه GWT های پیشرفته می تونید به iGoogle خودتون مراجه کنید و یا اگر دوست دارید بیشتر ببینید می تونید این لینک را مشاهده کنید که شامل یک سری  extension جاوا ویدگت است . 
http://www.gwt-ext.com/demo/



> می شه لطف کنید بیشتر در مورد منظورتون از اپلتها چیست؟


a Java application; an application program that uses the client's web  browser to provide a user 
interface
برای درک اپلتها می تونی به این آدرس مراجعه کنی *اینجا* 



> آیا منظور شما همان java applet هست؟


بله منظورم همونه 
فلش فعلا که خیلی حرفها نسبت به اپلت های جاوا داره بزنه هرچند قدرتش کم باشه اما وسعت در نفوذش خیلی بیشتر و اینو میشه با یک بررسی ساده بین تعداد مرورگرهایی  که پلاگین فلش را نصب دارند با تعداد  مرورگرهایی که پلاگین  JRE فهمید.
 البته بد نیست یک نگاهی هم به این لینکها بندازید . 
http://www.adobe.com/products/flex/?promoid=BPDEQ
http://www.adobe.com/products/air/
بله دوست من فلش دیگه اون برنامه گرافیکی ساده و اون پلاگین ساده نیست که شما فقط باسه دیدن کلیپهای فلش و یا بنرهای بالای سایت ازش استفاده می کردی .



> Adobe Flex is a software development kit released by Adobe Systems for  the development and deployment of cross-platform rich Internet  applications based on the Adobe Flash platform. Flex applications can be  written using Adobe Flex Builder or by using the freely available Flex  compiler from Adobe.


 یک نگاهی هم به این بنداز
http://www.pcpedia.ir/ViewArticle.aspx?ID=197



> صلا اپلت چی هست؟ آیا میشه اپلت رو با GWT یا flash یا با چیزه دیگری  مقایسه کرد؟


بله میشه چون همه اونها نهایتا هدفشون تولید  RIA یا همان Rich Internet Application است .

----------


## jeus

> در مورد اپلت ها در حال حاضر همچنان به عمر خودشون دارند ادامه میدنند و  کاملا هم کاربردی هستند!آخرین کاربردی که دیدم در فایل آپلودر Yahoo! mail  بود!که یک برنامه جاوا بود!
> در کل به applet ها اینطوری فکر کنید java+browser=applet
> به عبارتی تا وقتی که جاوا هست applet هم هست!


جناب مزدا دوست سوالی داشتم در مورد اینکه آیا برنامه های نوشته شده به صورت applet  آیا همیشه نیاز به JRE نصب شده بر روی کامپیوتر میزبان دارند



> در کل به applet ها اینطوری فکر کنید java+browser=applet


این تفسیر شما در مورد اپلت هم کاملا اشتباه است و شما جاوا را دارید از یک جنبه دیداری نگاه می کنید و درحالی که چنین چیزی نیست به فرض مثال شما نمی تونید بگید یک برنامه نوشته شده JEE  یک اپلته  و همینجور که نمی تونید بگید فایلهای باینری فرستاده شده به یک بروزر یک اپلته . البته در گفته شما این موضوع مورد بحثه که برنامه های اپلت مستقیما درون یک بروزر لود می شوند اما در برنامه های سرور ساید تنها کدهای html  به مرورگر فرستاده می شوند .  
اپلتها همچنین می تونند بدون نیاز به یک مرورگراجرا شوند و در اصل این مرورگر نیست که اپلت را اجرا می کنه بلکه ماشین مجازی جاوا است دقیقا مثل فلش که که فلش پلیر فلش را اجرا می کنه و مرورگر اغلب نقش یک نمایش دهنده را اجرا می کنه این مورد را میشه اینجور حساب کرد که یک شرکت تولید کننده مرورگر می تونه سرعت لود فایلهای اسکریپت را بالا ببره و یا سرعت نمایش جاوا اسکریپت را اما این کار را در مورد فلش و یا جاوا نمی تونه انجام بده و اونها دقیقا و مستقیما اجراشون بر می گرده به پلیر (flash player)  و ماشین اجرا (JRE) .

----------


## mazdadoost

سلام:در جواب گفته های دوست عزیز jeus!
تمام برنامه های جاوا برای اجراشون به jre نیاز دارند!
jre=java interperter+java class library
در واقع یکی از مشکلات جاوا اپلت ها بزرگی jre هست که برای دانلودش نسبت به سایر فناوری ها باید وقت بیشتر و یا پهنای باند بیشتری صرف کرد .(که تازگی ها به شکل پارشیال توسط پلاگ این دانلود میشه)ببنید این خیلی مهمه که شکا فرق روش های مختلف deploy کردن برنامه هاتون رو بدونید.تا دچار قضاوت اشتباه نشید .
اپلت های جاواو در براوزر توسط یک ماجول نرم افزاری تحت نام java plugin پیاده میشند که به این شکل عمل میکنه :
وقتی براوزر در حین پردازش کد html به تگی که معرف یک شی اپلت هست میرسه در لیست پلاگ این های نصب شده میگرده و پلاگ اینی رو که مسئول پردازش اون شی هست یعنی اپلت فراخوانی میکنه.بعد از اون جاوا پلاگ این اقدام به لود کردن اپلت و نمایشش در براوز میکنه به عبارتی جاوا پلاگ این وظیفه ایجاد تعامل بین دنیای جاوا(اپلت)وبراوزر (firefox-safari-iep-opera)رو داره.تعامل واژه کلیدی این ماجراست.شما با ویژگی هایی که در جاوا پلاگ این هست میتونید با  کد html رابطه برقرار کنید و این به شما این امکان رو میده که یک برنامه براوزری داشته بایشید.حتی میتونید کد خام جاوا رو در براوزر بزارید و بذارید تا از طریق فناوری live connect از طریق اینترپرتر جاوا در مرور گر اجرا بشه.
خوب حالا به این معادله نگاه کنیم :applet =java+browser
همونطور که میبینید در این معادله صحبتی از JEE و صحبت های شما نیست!و کل صحبت شما در این پاراگراف اگر برای تصتیح من باشه از درجه اعتبار ساقطه:




> این تفسیر شما در مورد اپلت هم کاملا اشتباه است و شما جاوا را دارید از یک  جنبه دیداری نگاه می کنید و درحالی که چنین چیزی نیست به فرض مثال شما نمی  تونید بگید یک برنامه نوشته شده JEE  یک اپلته  و همینجور که نمی تونید  بگید فایلهای باینری فرستاده شده به یک بروزر یک اپلته . البته در گفته شما  این موضوع مورد بحثه که برنامه های اپلت مستقیما درون یک بروزر لود می  شوند اما در برنامه های سرور ساید تنها کدهای html  به مرورگر فرستاده می  شوند .


این معادله بیان میکنه که وقتی برنامه های جاوا ی شما در براوزر توسط جاوا پلاگ این به همراه سایر عناصر قابل فهم برای براوزر مثل (html-js-css-fash....) نمایش داده میشه و براوزر میتونه با برنامه شما از طریق جاوا پلاگ این به تعامل بپردازه دیگه به این برنامه جاوا اپلت میگن.




> اپلتها همچنین می تونند بدون نیاز به یک مرورگراجرا شوند


خیر . یک برنامه جاوا تا وقتی میتوتند نام اپلت را با خود به دوش کشد که در محیط براوزر اجرا شود.
در صورتی که این برنامه به شکل تنهایی اجرا شود (از طریق jar file یا فایل کلاس و توسط java) در آنصورت نامش Stand alone خواهد بود. اگر در کد html خود لینک به فایل jnpl ی را بدهید این فایل jnpl توسط ماجول نرم افزاری تحت نامه java web start (javaw-)\vnhca پردازش میشود .برنامه ای که در فایل jnpl ذکر شده دانلود میشود . همچنین ممکن است بر اساس jre لازم برای اجرای برنامه jre مربوطه نیز دانلود شود . در ادامه این برنامه اجرا میشود و برای اجاهای بعدی از نسخه کش شده آن استفاده میشود همچنین آیکونی برای آن در desktop کاربر تعبیه میشود و نیز آیکانی در قسمت حذف برنامه ها برای حذف برنامه . پس :
java application+descktop+web=Java web start!




> این تفسیر شما در مورد اپلت *هم* کاملا اشتباه است


لطفا سایر اشتباهات ذکر شود/

----------


## jlover

من یه نکته ی کوچیکی رو فقط توضیح بدم بهتره، فکر کنم از کشدار شدن بی مورد یه قسمت از بحث جلوگیری کنه:



> ...اپلتها همچنین می تونند بدون نیاز به یک مرورگراجرا شون..


البته با ابزار appletviewer در jdk این امکان وجود داره

----------


## billguess

وقتی مرورگرها اجرا می شن به طور طبیعی مقدار حافظه ای از رم رو اشغال می کنن و در اون فضا به تعاملات نیاز مند حافظه رسیدگی می کنند وقتی که به اپلت ها می رسن یک بلوک حافظه را جهت اجرای آن تشکیل می دهند و وقتی آن بلوک اشغال شد مجدداً یک بلوک کامل دیگر والی آخر اما سایر تکنولوژی ها که  اسم بردید مثلاً فلش این کار را نمی کنند و یک فضا را منحصراً بلوکه نمی کنند در نتیجه اگر نیاز به عملیاتی باشد که خواهان جاسازی  در یک صفحه ی وب است اگر نیاز به تعامل پردازشی حافظه بری است اپلت گزینه ی بهتری است

البته با توجه به فراوانی و مدیریت حافظه قوی شاید دیگر این مسائل مطرح نشوند اما وجود دارند




> خوب حالا به این معادله نگاه کنیم :applet =java+browser


طبق این معادله
applet - java =browser
,
applet - browser = java
 می شود

----------

