جاوا

جاوا چیست ؟

جاوا یک زبان برنامه نویسی است که در اوایل دهه 90 توسط Java Soft ، بخش نرم افزاری شرکت Sun توسعه داده شد . هدف آن بود که جاوا زبانی ساده ، قوی و همه منظوره باشد . جاوا تمام جنبه های مثبت C و ++C را در خود دارد ، و آن چیزهایی که برنامه نویسان ++C از آن نفرت داشته اند ( مانند وراثت چند گانه ، تحریف اپراتورها و اشاره گرها ) را به کناری گذاشته است .
مهمترین ویژگیهای جاوا این است که اساساً شیء گرا است . اولین ادعای OOP توانایی استفاده مجدد از کد است : چیزی که ++C با تمام ادعاهایش هرگز نتوانست بدان دست یابد . اما در اولین قدم خواهید دید جاوا در این زمینه تا چه حد اندازه صحت دارد . تصورش را بکنید که با صرف کمی وقت بتوانید برنامه ای بنویسید که در سیستم های ویندوز ، یونیکس و مکینتاش براحتی اجرا شود . همین که یک شرکت نرم افزاری بتواند برای تمام پلاتفرم های موجود در آن واحد پروژه ای را تولید کند ( و مقادیر عظیمی پول صرفه جویی کند ) خود می تواند بهترین دلیل اقبال جاوا باشد و امروز دیگر همه ( و نه فقط شرکتهای نرم افزاری ) به سمت جاوا کشیده شده اند . با این ویژگی ( استقلال از پلاتفرم ) یک برنامه نویس می تواند برای سیستمی برنامه بنویسد که هرگز با آن کار نکرده است . این ویژگی اصلی ترین علت توفیق جاوا در اینترنت است . اینترنت شبکه پیچیده ای است از میلیونها کامپیوتر مختلف در سراسر دنیا ، و مقاومت در مقابل این وسوسه که بتواند برنامه ای بنویسد که روی تمام این سیستم های متفاوت و نا متجانس اجرا شود چندان ساده نیست .
جاوا یک زبان بسیار ساده است چون شما را وادار نمی کند تا در محیط جدید ( و نا آشنایی ) کار کنید و این برای کسانی که اطلاعات فنی ناچیزی درباره کامپیوتر دارند بسیار مهم است . ساختار زبان جاوا در نگاه اول بسیار شبیه C و ++C است و این به هیچ وجه تصادفی نیست . C زبانی است ساخت یافته و ++C زبانیست شیء گرا و مهمتر از همه قسمت اعظم برنامه نویسان دنیا از آنها استفاده می کنند از سوی دیگر این شباهت حرکت به طرف جاوا را برای این قبیل افراد ساده خواهد کرد بنابراین طراحان جاوا برای اجتناب از دوباره کاری از زبانهای C و ++C بعنوان مدل استفاده کردند .
جاوا با دور انداختن اشاره گرها و بر دوش کشیدن بار مدیریت حافظه ، برنامه نویسان C و++C را برای همیشه از این کابوس ها رهایی بخشیده است . علاه بر آن چون جاوا زبانی برای اینترنت است ، از ایمنی و حفاظت ذاتی بالایی برخوردار است . طراحان جاوا از ابتدا یک محیط برنامه نویسی امن را مد نظر داشته اند . مسئله حفاظت سیستم ها رابطه تنگاتنگی با اشاره گرها دارد . اکثر مهاجمان برای ورود غیر قانونی به سیستم های دیگران از این اشاره گرها استفاده می کنند و جاوا با حذف اشاره گرها این راه را سد کرده است . جاوا مکانیزم های حفاظتی دیگری هم دارد که در جای خود به آنها اشاره خواهیم کرد .

 

تکامل جاوا

جاوا هم مانند اکثر اختراعات مهم حاصل تلاش گروهی دانشمندان پیشتاز است . اما نکته جالب درباره جاوا آن است که جاوا از ویرانه های یک پروژه شکست خورده سر بر می آورد .
اگر پروژه گرین (Green) که شرکت Sun در سال 1991 آن را شروع کرد به موفقیت می انجامید امروز نه سان دیگر یک شرکت کامپیوتری می بود و نه جاوا در سال 1991 ، شرکت Sun Microsystems در آغاز راه تبدیل شدن به بزرگترین تولید کننده ایستگاههای کاری Unix بود و در طول فقط پنج سال درآمدش را از 210 میلیون دلار به 5/2 میلیارد دلار رسانده بود و به نظر می رسد هیچ چیز نمی تواند جلودار آن باشد . عامل عمده موفقیت Sun کارهای پیشتازانه در ایجاد شبکه های باز بود و در این زمینه هیچ کس به پای آن نمی رسید .
مدیران Sun به این فکر افتادند تا کاری کنند که این رشد برای مدتی طولانی ادامه یابد یکی از زمینه های مورد علاقه Sun بازار لوازم الکترونیکی بود ، پروژه Green بوجود آمد تا برای این بازار نرم افزاری پیشرفته خلق کند .
مهندسان Sun توجه خود را به میکروپروسسورهایی معطوف کردند تا دارای قابلیت استفاده در این گونه سیستم ها باشند . اگر پروژه Green می خواست موفق باشد باید کاری می کرد تا سیستم مزبور بتواند به راحتی به بسترهای سخت افزاری مختلف منتقل شود برای این منظور ابتدا از کامپایلر C++ استفاده شد ولی بزودی نارسایی های C++ در این زمینه خود را نشان دادند . مهندسان Sun خیلی سریع دریافتند که برای ادامه کار باید چیزی جدید و قوی خلق کنند . در همین زمان بود که James Gosling کار بر روی زبان جدید اوک Oak را شروع کرد تقدیر آن بود که این زبان جاوا نامیده شود ، چون اداره ثبت نام های تجاری Oak را رد کرد .
بتدریج مهندسین یک دستگاه شبه PAD- Personal Digital Assistant ساختند که در آن از سیستم عامل ، زبان برنامه نویسی و واسط کاربر جاوا استفاده شده بود و با وجود ابتدایی بودن توانست توجه مدیران Sun را به خود جلب کند .
بعدها گروهی که در پروژه Green کار کرده بودند شرکت Java Soft را بنیان نهادند .
شکل زیر پایگاه وب این شرکت را نشان می دهد :



برای رفتن به این پایگاه اینترنتی می بایست به آدرس زیر مراجعه کنید :
http://www.sun.com
متاسفانه بخت با پروژه Green یار نبود و بعد از چند شکست متوالی Sun آن را کنار گذاشت . در همین زمان بود که عده ای از محققان NCSA شرکت Net Scape را تاسیس کردند و این اتفاقات با آتشی که به سرعت دنیا را در می نوردید و شبکه تار عنکبوتی جهانی WWW (که مخفف World Width Web می باشد) نام داشت همزمان شد .
بنابراین اتفاقی نبود که مهندسان پروژه Green به سمت اینترنت و وب به عنوان بستر پروژه Sun روانه شوند و بعد از آن دیگر جزء تاریخ است .
چهار سال بعد پروژه Green به بار نشست و جاوا تبدیل به داغترین موضوع اینترنت شد ، همه از برنامه نویسان و طراحان صفحات وب گرفته تا کاربران اینترنت می خواهند از جاوا استفاده کنند . Sun بلافاصله برای جاوا یک کاوشگر هم تولید کرد . این اولین کاوشگری بود که می توانست اپلت های جاوا را اجرا کند و نام آن هم Hot Java بود .

 

 

ویژگیهای زبان برنامه نویسی Java

جاوا ویژگیهای متعددی دارد که آن را منحصربه فرد کرده است . جاوا هم کامپایلر دارد و اینترپرتر . توضیح : ( کامپایلر برنامه ای است که متن برنامه را گرفته و در پایان یک فایل exe تولید می کند . بعد از کامپایل شدن یک برنامه ، دیگر به وجود کامپایلر نیازی نیست و می توان برنامه exe را روی هر کامپیوتر سازگاری اجرا کرد . اما اینترپرتر هیچ برنامه exe ای تولید نمی کند و برنامه را خط به خط اجرا می کند ، برای اجرای برنامه حتما باید اینترپرتر هم روی کامپیوتر مورد نظر موجود باشد ) .
هر کامپایلر فقط برای یک سیستم خاص ( مانند اینتل ، اپل یا آلفا ) می تواند کد اجرایی تولید کند اما کامپایلر جاوا کد اجرایی Exe تولید نمی کند و در عوض یک فایل بینابینی می سازد که بایت کد Byte code نام دارد و بایت کد چیزی شبیه زبان اسمبلی است ، اما این زبان مختص هیچ پروسسور خاصی نیست بلکه زبان اسمبلی یک ماشین ویژه بنام ماشین مجازی جاوا ( Java Virtual Mashing) دارد که روی ماشین مجازی جاوا اجرا می شود ، دستورات فایل بایت کد را به دستورات قابل فهم برای پروسسوری که روی آن اجرا می شود تبدیل خواهد کرد .

برنامه های کاربردی جاوا
اشیاء جاوا
ماشین مجازی جاوا
یونیکس ویندوز -Os2 مکینتاش
سیستم عامل


اما شاید از خود سئوال کنید که چرا جاوا این همه کار را بر خود ( و دیگران ) سخت گرفته است ؟ این همه لایه و ماشین مجازی برای چیست ؟ یکی از ادعاهای جاوا ، آزاد بودن از بستر سخت افزاری است اما این یعنی چه ؟ اگر جاوا بخواهد در اینترنت موفق باشد برنامه های آن باید بتوانند بدون هیچ اشکالی روی تمام کامپیوترهای متصل به اینترنت اجرا شوند . اما شما بهتر می دانید که اینترنت شبکه عظیمی است از کامپیوترهای نامتجانس ، از سوپر کامپیوترهای عظیم گرفته تا PC های مبتنی بر پروسسور های اینتل و پاور پی سی تا ماشین های یونیکس مبتنی بر پروسسورهای آلفا و ... !
چگونه یک برنامه اجرایی می تواند روی این طیف وسیع کامپیوترها اجرا شود ؟
ایده اولیه ساده است : برنامه ها برای ماشین مجازی کامپایل شوند و این ماشین مجازی روی تمام کامپیوترهای متصل به اینترنت نصب شود .
این دقیقاً همان روشی است که جاوا در پیش گرفته است . برنامه تان را با یک کامپایلر جاوا کامپایل کنید ، آن را در پایگاه وب خود قرار دهید و به دیگران اطلاع دهید تا با یک کاوشگر مجهز به جاوا (Java – Enabled Brower ) این برنامه را که ممکن است در دل یک صفحه وب قرار داشته باشد اجرا کنند .
شاید هرگز تصور نمی کردید که برنامه ای را که با یک PC اینتل نوشته اید روی یک ماشین مکینتاش یا یونیکس اجرا شود ولی اکنون به لطف جاوا این دیگر آرزویی دست نیافتنی نیست .
شیء گرایی در جاوا به غایت خود رسیده است . جاوا در استفاده از اشیاء بسیار مفید و سخت گیر است و تخطی از اصول را نمی پذیرد . در C++ شما می توانید از اشیاء به موازات برنامه نویسی به سبک قدیم استفاده کنید و اکثراً در پایان کار چنان ملغمه ای بوجود می آید که مدیریت آن با روش های برنامه نویسی شی ء گرا امکان دارد نه با روش های قدیمی . جاوا دیگر به شما اجازه نمی دهد تا خود را در چنین مخمصه ای گرفتار کنید !

 

 

شروع برنامه نویسی با جاوا

اولین برنامه ای که می نویسیم یک برنامه متکی به خود است بنام Hello World . تفاوت یک برنامه متکی به خود و یک اپلت آن است که در برنامه متکی به خود ( که از این به بعد به آن فقط برنامه خواهیم گفت ) از متدی بنام main( ) استفاده می شود در حالیکه اپلت چنین متدی ندارد .
برنامه Hello World بسیار ساده است و فقط جمله “Hello World” را نمایش می دهد با این حال می توان از آن به عنوان سنگ بنای برنامه های پیشرفته تر استفاده کرد چون تمام برنامه های جاوا ساختار کلی مشابهی دارند . بطور مثال به لیست زیر نگاه کنید :


برای کامپایل کردن برنامه باید از کامپایلر جاوا (javac) استفاده کرد روش کار چنین است :
Java HelloWorld. java
کامپایلر بعد از پایان کار یک فایل کلاس بنام HelloWorld. Class تولید خواهد کرد . اصولاً کامپایلر برای هر کلاس برنامه یک فایل کلاس جداگانه تولید خواهد کرد . فایل تولید شده یک فایل اجرایی مستقل نیست . برای اجرای این فایل باید از اینترپرتر جاوا استفاده کرد . اینترپرتر جاوا ، Java نام دارد . برای اجرای فایل کلاس تولید شده چنین باید کرد :
Java HelloWorld
اگر همه چیز درست پیش رفته باشد ، باید جمله “Hello World!” را روی صفحه کامپیوتر خود مشاهده کنید . نکته : دقت کنید که کامپایلر جاوا و اینترپرتر جاوا دو چیز متفاوتند . کامپایلر از فایل متن برنامه یک فایل کلاس می سازد و اینترپرتر فایل کلاس را اجرا می کند .

Mockup : لینوکسی از نوع دیگر

از سال 2000 که شرکت Be اعلام ورشکستگی کرد و مدتی بعد به Palm Source فروخته شد، بسیاری از طرفداران سرسخت سیستم عامل Be نتوانستند از آن دست بکشند و با حقیقت کنار بیایند. از همان زمان تعدادی از آنها کار خود را با نوشتن برنامه و راه انداز و تصحیح هسته سیستم عامل Be (برای سازگاری با سخت افزارهای جدید) آغاز کردند. عده‌ای دیگر به عرضه نسخه‌های جدیدتری از BeOS (بر پایه نسخه رایگان Personal) با برنامه ها، راه اندازها و هسته بروزشده پرداختند. در این میان پروژه ای هم با نام OpenBeOS آغاز شد که هدفش ساخت سیستم عاملی بازمتن با ویژگی‌ها و سازگاری BeOS بود. عده‌ای دیگر هم به پیاده سازی رابط گرافیکی و API های BeOS بر روی لینوکس پرداختند. در این میان توزیع مجدد BeOS غیر قانونی بود و نسخه بازمتن BeOS هم به کندی پیش می‌رفت و پس از ۳ سال هیچ نسخه قابل استفاده‌ای از آن منتشر نشده بود. سرانجام در سالگرد ۳ سالگی، پروژه OpenBeOS (که حالا با نام Haiku OS شناخه می شود) خانم Eugenia Loli-Queru که خود و همسرش از کارمند سابق Be هستند در سایت OSNews مطلبی نوشت و به بررسی تلاشهای انجام شده و دلایل شکست آنها پرداخت. با گذشت زمان کم کم بعضی از این پروژه ها تعطیل و توسعه دهندگانشان به تیم Haiku پیوستند. اما Pier Luigi Fiorini پس از خواندن این مطلب پروژه خود -BeFree- را متوقف و کار بر روی پروژه جدید و متفاوتی را آغاز کرد. نام پروژه جدید او Mockup است که خود به چند زیرمجموعه تقسیم می شود:

رابط کاربر: هدف این بخش پروژه رابطی آسان، قابل سفارشی سازی، زیبا و قابلیت استفاده از شفافیت و سایه در صورت پشتیبانی سخت افزاری است.

بنیان: درون مایه این پروژه بر پایه GNU/Linux با هسته ایPreemptive و قابلیت استفاده از سیستم های دو پردازنده‌ای، امکانات شبکه سازی استاندارد و سازگار با AppleTalk و Rendezvous و در نهایت سیستم تنظیمات آسان و یکپارچه با کمک Elektra است.

قابلیتهای چندرسانه ای: پشتیبانی درونی از فرمتهای باز مانند OGG Vorbis ،Theora و...

یک توزیع جدید؟ رابط گرافیکی؟ این پروژه نه یک توزیع لینوکس است و نه Desktop Environment مانند KDE و Gnome در حقیقتMockup یک سیستم عامل است که بنیانش بر لینوکس و رابط کاربرش چیزی شبیه به BeOS است. این پروژه تغییرات بسیاری در هسته خواهد داد و رابط کاربرش هم کاملا متفاوت از KDE و Gnome خواهد بود. بنابراین همانطور که Mac OS X توزیعی از FreeBSD نیست، Mockup هم یک توزیع لینوکس نیست. این سیستم عامل به جای X11 از DirectFB و برای توسعه از QT4 استفاده خواهد کرد. مدیریت فایل و محیط گرافیکی هم کاملا متفاوت از نمونه KDE و Gnome خواهند بود. تا به حال تعدادی شکلک(icon) و نسخه اولیه مدیریت فایل با استفاده از نسخه آزمایشی QT4 آماده شده است. نسخه های اولیه بر روی X.Org اجرا می شوند که در آینده با DirectFB جایگزین خواهد شد.

مقایسه با X11
تکیه بر framebuffer (و به احتمال زیاد DirectFB) به جای X11 باعث شده بعضی مشکلات X11 و حتی بعضی از ویژگی های آن که برای کاربر دسکتاپ مناسب نیست حذف شوند. علاوه بر این ساختار جدید آن بر نهایت استفاده از قدرت سخت افزارهای گرافیکی تاکید دارد.

مقایسه با KDE و Gnome
محیط KDE بسیار انعطاف پذیر و کامل است اما همین ویژگی باعث کندی و پیچیدگی آن شده است. محیط Gnome نسبت به KDE سریعتر و تنظیماتش کمتر است. ولی استفاده نادرست از این موقعیت باعث شده تا بسیاری از تنظیمات به صورت پیش گزیده و غیر قابل تغییر باشند و در عین حال بعضی بخشها بیشتر از حد مورد نیاز قابل تغییر باشند! اما تنظیمات در محیط گرافیکی Mockup قرار است نه آنقدرپیچیده باشند که باعث سردرگمی شوند و نه آنقدر ساده و غیر قابل تغییر که باعث آزار کاربر شود. همچنین محیط گرافیکی Mockup بر قواعد و استانداردهایی بنا گذاشته شده که تمام اجزاء و برنامه های آن هم آنها را رعایت می کنند و در نهایت به یکپارچگی و سادگی آن می افزاید.

یکپارچگی
علاوه بر محیط گرافیکی استاندارد تمام اجزاء این پروژه از سیستم تنظیمات Elektra استفاده می کنند. پس قواعد تنظیمات هر بخش مشابه دیگری است و یادگیری و هماهنگ کردن آنها بسیار بهتر و ساده تر خواهد بود. برای یکپارچگی کاملتر سعی شده برای تمام بخشها از یک toolkit واحد استفاده شود.

آزادی عمل
یکپارچگی و استاندارد سازی این پروژه ممکن است برای بسیاری از کاربران فعلی لینوکس جالب نباشد، اما برای کاربر دسکتاپ سیستم عاملی مورد نیاز است که انتظارات و نیازهای او را هم برآورده کند. البته استاندارد سازی برای کاربران حرفه ای هم می تواند مفید باشد چون بسیاری از تداخلها و ناهماهنگی ها به این وسیله حل خواهد شد. اگر Mockup موفق شود گام بسیار مهمی برای گسترش لینوکس بر روی Desktop خواهد بود.

اطلاعات تکمیلی:
Elektra: هدف این پروژه یکسان سازی قواعد تنظیمات برنامه ها بر روی سیستم عامل های سازگار با POSIX است. امروزه بسیاری از برنامه های رایج بر روی این سیستم عامل ها از تنظیمات متفاوتی برخوردارند که علاوه بر دشواری یادگرفتن قواعد آنها یکپارچه کردن آنها هم دشوار می شود. این پروژه تا حدی شبیه به Preferences System در Mac OS X می باشد.
DirectFB: این پروژه یک استاندارد جدید برای گرافیک در لینوکس است که امکانات پیشرفته گرافیکی را به صورت شتاب یافته سخت افزاری ممکن می کند.

My friends say you're so into me

 

 My friends say you're so into me
And that you need me desperately
They say you say we're so complete

But I need to hear it straight from you
If you want me to believe it's true
I've been waiting for so long it hurts
I wanna hear you say the words, please

Chorus

Don't, don't let me be the last to know
Don't hold back, just let it go
I need to hear you say
You need me all the way
Oh, if you love me so
Don't let me be the last to know
---End Chorus

Ooh

Your body language says so much
Yeah, I feel it in the way you touch
But til' you say the words it's not enough
C'mon and tell me you're in love, please

Chorus

C'mon baby, c'mon darling, ooh yeah
C'mon, let me be the one
C'mon now, oh yeah

I need to hear you say
You love me all the way
And I don't wanna wait another day
I wanna feel the way you feel
Oh, c'mon

Don't, just let me be the one
Don't hold back, just let it go
I need to hear you say
You need me all the way
So…baby, if you love me
Don't let me be the last to know

 

Oops!.. I Did It Again!

 Oops!.. I Did It Again!
Yeah yeah yeah yeah yeah yeah
Yeah yeah yeah yeah yeah yeah

I think I did it again
I made you believe we're more than just friends
Oh baby

It might seem like a crush
But it doesn't mean that I'm serious
'Cause to lose all my senses
That is just so typically me
Oh baby, baby

:Chorus:
Oops!...I did it again
I played with your heart, got lost in the game
Oh baby, baby
Oops!...You think I'm in love
That I'm sent from above
I'm not that innocent

You see my problem is this
I'm dreaming away
Wishing that heroes, they truly exist
I cry, watching the days
Can't you see I'm a fool in so many ways

But to lose all my senses
That is just so typically me
Baby, oh

:Chorus:
Oops!...I did it again
I played with your heart, got lost in the game
Oh baby, baby
Oops!...You think I'm in love
That I'm sent from above
I'm not that innocent

Yeah yeah yeah yeah yeah yeah
Yeah yeah yeah yeah yeah yeah

"All aboard"
"Britney, before you go, there's something I want you to have"
"Oh, it's beautiful, but wait a minute, isn't this...?"
"Yeah, yes it is"
"But I thought the old lady dropped it into the ocean in the end"
"Well baby, I went down and got it for you"
"Oh, you shouldn't have"

Oops!...I did it again to your heart
Got lost in this game, oh baby
Oops!...You think that I'm sent from above
I'm not that innocent

بازم ......

سلام نمی دونم چی بگم ولی میگم چه خوب می شود اگه ادما باهم بودن ولی نمی شه چه خوب میشد که ادم برا همیشه تو وب باشه ولی نمی شه چه خوب می شد که همه به جای ویندوز لینوکس نصب کنن ولی نمی شه چی میشد اگه ادما کنکور نداشتن ولی نمی شه چی مشد هر کسی که به وبلاگ ها سر میزد یه نظر هم از خودش در می کرد ولی این فکر کنم بشه چی میشد که نرم افزارا به رجستری کردن نیازی نداشتن ولی نمیشه البته تو کشور های دیگه نه ایران چی میشد همه تو ایران از زندگی لذت ببرن و تو زندگی زجر نکشن ولی نمی شه حالا باید چیکار کرد خدا می دونهبقه اش هم بدن براتون جا میزارمتا دفعه ی بعد که وبلاگ اپدیت می شه مواظب ارزوها تون باشین بای