مقدمه
شرکت همراه نرم افزار نوین به عنوان اولین شرکت تولید کننده نرمافزار تلفن همراه نزدیک به 3 سال است در این زمینه فعالیت خود را آغاز نموده که نتیجه آن فارسیساز رابط کاربر تلفنهای سری 60 نوکیا و همچنین تولید برنامهای جهت مدیریت های شخصی بر اساس تاریخ شمسی بوده است.
با توجه به امکانات قابل توجه تلفن های همراه جدید به موازات موارد فوق این شرکت اقدام به تولید نرم افزارهای دیگری نظیر قرآن،مفاتیح الجنان اذان،مناسک حج،بانک اطلاعات مشاغل و... نموده است به دلیل پیشرو بودن در این زمینه این شرکت بخش قابل توجهی از منابع خود را به امور تحقیقات و ارائه راهکارهای جدید برای استفاده بهتر از تلفنهای همراه اختصاص داده است.
من به مدت 240 ساعت در شرکت همراه نرم افزار نوین مشغول به کار شدم. هدف از این کار :
بمنظور آشنایی با محیط کاری و اینکه آنچه راکه در مدت کاردانی به صورت تئوری وتاحدودی عملی آموخته ام در جامعه کاری به صورت کاربردی از آن استفاده کنم و بکار گیرم.
این شرکت مجموعاً به چند بخش عمده تقسیم بندی شده است که شامل:
بخش تولید
بخش اداری- پرسنلی
بخش تبلیغات
بخش فروش
بخش خدمات پس از فروش
من در ابتدا مدتی در بخش فروش مشغول به کار شدم. نفرات متعددی در این بخش کار میکردند از جمله: مدیر بازاریابی و فروش – سرپرست فروش- سوپروایزر تهران و سوپروایزر شهرستانها. باشند
در این واحد نرم افزارهایی که توسط بخش تولید،تهیه و تأیید شده و بارکد خورده باشند به فروش می رسد. این شرکت کاملاً به صورت مکانیزه عمل می کند.
هر نرم افزار در سایت این شرکت به صورت رایگان دانلود میشود اما برای اجرای آن باید مبلغی را به حساب شرکت مذکور واریز کنند، بعد از تایید واریز وجه کد فعال سازی به تعداد نرم افزار هایی که مشتری یا مشتریان خریداری می کنند در اختیار آنها قرار می گیرد و هر مشتری برای فعال سازی آن برنامه به صورت خودکار هنگامی که برنامه ها را فعال میکند اطلاعات او در سرور های شرکت ثبت و نگهداری می شود که البته قابل ذکر است که بخش(اتاق) سرور ها کاملاً ایزوله شده و هیچکس جز مسئول مربوطه اجازه دسترسی به آنها را ندارد.
سوپروایزر شهرستانها هم به امور نماینده ها در سراسر ایران نظارت میکند و به مشتری های شهرستانی شرکت خدمات می رساند.
بعد از آن مدتی در قسمت خدمات پس از فروش مشغول به کار شدم،این قسمت بسیار جالب بود چون تمام کاربران از اقسا نقات ایران و حتی خارج از ایران تماس گرفته و مشکلاتی که برای آنها از نسب برنامه گرفته تا مشکلاتی که هنگام نسب یا بعد از نسب نرم افزار پیش می آمد صحبت می کردند.
می توان گفت این قسمت یعنی همان بخش خدمات پس از فروش به نوعی قلب این شرکت میباشد و محبوبیت این شرکت در بین کاربران و حتی نمایندگان خود به دلیل خدمات نامحدود آن است و بدون اینکه وجهی دریافت کند تا مادامی که از آن نرمافزار استفاده می شود خدمات رایگان در اختیار آن کاربر گذاشته می شود.کاربران اغلب بصورت تماس تلفنی مشکلاتشان را مطرح کرده و مسئولین فنی و اپراتورها به آنها پاسخ میدهند تا مشکلات آنها را برطرف کنند و اگر مشکل آنها خیلی حاد بود به شرکت مراجعه میکنند ولی اکثراً با یک تماس مشکل برطرف میشود.در این بخش تمام خدمات به صورت رایگان در اختیار کاربران قرار میگیرد.
خدماتی که این بخش در اختیار یوزرهای خود میگذارد شامل :
نسب نرمافزار در کوتاهترین مدت ممکن
نکته:البته قابل ذکر است که تمام نرم افزارها به صورت پکیج به بازار عرضه شده که هرکدام از پکیج ها شامل: دفترچه راهنمای نسب و کد فعال سازی میباشد که با خواندن آن دفترچه به راحتی مراحل نسب انجام میشود. در این صورت حتی اگر کاربر نتواند این کار را انجام دهد مسئولین این بخش باکمال رضایت این خدمات را در اختیار کاربران
می گذارند.
چک کردن سرورها که حتی برای یک ثانیه هم متوقف نشوند.چون اگر چنین مسئله ای پیش بیاید در سراسر ایران فروشندگان و نمایندگان وعاملین فروش و موبایل فروشی ها کارشان مختل میگردد.
پاسخ گویی به مشتریانی که تماس تلفنی گرفته و میخواهند به صورت شنیداری و به کمک راهنمایی های اپراتور مشکلات خود را در زمینه ی نصب کردن برطرف نمایند.
حفاظت از سرورها کار کاملاً خطیری است که به این بخش محول شده و باید از نظر Security کاملاً واقب باشند که به هیچ یک از کدهای داخل سرور کوچکترین خدشه ای وارد نشود و تغییر و جابجایی در آنها صورت نگیرد.
نمایندگان استانها و شهرستانها که تماس میگیرند تا ببینند چه تعداد از کدهای آنها مصرف شده و چه تعداد از کدها باقی مانده است.مثلاً اگر کسی از مقررات سرپیچی کرده باشد(یعنی قانون کپی رایت را نادیده گرفته باشد)سریعاً باگزارشی که به این بخش میشود جلوی آن کد را گرفته و کد مذبور بلاک میشود تا فرد متخلف نتواند از آن برنامه استفاده کند بدین صورت که کد آنرا میسوزانند و اگر کاربر خطا کار بخواهد از آن استفاده کند پیغام :
" این کد فاقد اعتبار است" را نشان میدهد که این کار یکی از شاخص های شرکت است که هیچ یک از شرکتهای ایرانی تولید کننده نرمافزار به این مسئله توجه نکردند و بعد از مدت کوتاهی تمام نرمافزارهایی که آنها زحمات فراوانی برای تولید آن می کشند سریعاً هک میشود ولی تاکنون با گذشت پنج سال از تولیدات نرمافزارهای این شرکت هنوز هیچکس نتوانسته حتی یک نسخه را هم هک کند.
بخش بعدی مربوط به بخش تولید است که در آنجا دوگروه مشغول به فعالیت میباشند:
گروه اولProgramer ها هستند که استراکچرها و برنامه ها را مینویسند وبا برنامه های متعددی کار میکنند از جمله: C++ و java که در قسمت های بعدی به توضیح جامع و کاملتری از نرمافزار جاوا میپردازم.
گروه دوم Data intry ها هستند یعنی،افرادی که با نرمافزارها و ابزارهایی که توسط برنامه نویسان طراحی و ساخته شده است کار میکنند
که اطلاعات را وارد کرده و ایراد یابی میکنند تا در نهایت تایید شده و به مرحله بهره برداری برسد باید در نظر داشت که حتی کوچکترین خطا و اشتباه منجر به مشکلات بزرگی خواهد شد. این بخش نقش کلیدی و حیاتی را در تهیه برنامه ایفا میکند.
در قسمت ضمائم نیز چند نمونه از نرمافزارهای تولید شده توسط این شرکت و قابلیت های آنها را توضیح داده ام .
توضیحات ذکر شده مختصری از شرح کارآموزی من در این شرکت بود و من در طی این مدت با چگونگی عملکرد نرمافزار جاوا که یکی از نرم افزار های مورد استفاده در این شرکت بود تا حدودی آشنا شدم که در زیر به شرح قسمت هایی از آن پرداخته ام:
جاوا
جاوا یک زبان برنامه نویسی است که در اوایل دهه 90 توسط جاوا سافت، بخش نرم افزاری شرکت سان، توسعه داده شد. هدف آن بود که جاوا زبانی ساده، فوی و همه منظوره باشد. جاواتمام جنبههای مثبت C و C++را در خوددارد، و آن چیزهایی که برنامه نویسان ازآن نفرت داشته اند ( مانند وراثت چند گانه، تحریف اپراتورها و اشاره گرها) را به کناری گذاشته است.
مهمترین ویژگی جاوا این است که اساساً شییء گر است. اولین ادعای oppتوانایی استفاده مجدد از کد است؛ چیزی که C++ با تمام ادعاهایش هرگز نتوانست بدان دست بابد، اما در اولین قدم خواهید دید که ادعای جاوا در این زمینه تا چه اندازه صحت دارد. تصورش را بکنید که با صرف کمی وقت بتوانید برنامهای بنویسید که در سیستمهای ویندوز، یونیکس و مکینتاش براحتی اجرا شود! همین که یک شرکت نرم افزاری بتواند برای تمام پلاتفرمهای موجود در آن واحد پروژهای را تولید کند ( و مقادیر عظیمی پول صرفه جویی کند) خود میتواند بهترین دلیل اقبال جاوا باشد . و امروزه دیگر همه ( و نه فقط شرکتهای نرم افزاری) به سمت جاوا کشیده شدهاند.
با این ویژگی ( استقلال از پلاتفرم) یک برنامه نویس میتواند برای سیستمی برنامه بنویسید که هرگز با آن کار نکرده است. این ویژگی اصلی ترین علت توفیق جاوا در اینترنت است. اینترنت شبکه پچیدهای است از میلیونها کامپیوتر مختلف در سراسر دنیا، و مقاومت در مقابل این وسوسه که بتوانید برنامهای بنویسید که روی تمام این سیستمهای متفاوت و نامتجانس اجرا شود چندان ساده نیست.
جاوا یک زبان بسیار ساده است چون شما را وادار نمیکند تا در محیط جدید ( و ناآشنایی) کار کنید و این برای کسانی که اطلاعات فنی ناچیزی درباره کامپیوتر دارند بسیار مهم است . ساختار زبان جاوا در نگاه اول بسیار شبیه C و C++ است و این به هیچ وجه تصادفی نیست . C زببانی است ساخت یافته و C++ زبانیست شییء گرا ، و مهمتر از همه قسمت اعظم برنامه نویسان دنیا از آنها استفاده میکنند. از سوی دیگر این شباهت حرکت به طرف جاوا از برای این قبیل افراد ساده خواهد کرد بنابراین طراحان جاوا برای اجتناب از دوباره کاری از زبانهای C وC++ بعنوان مدل استفاده کردند. ( و آیا این خود به تنهایی نشانه نبوغ طراحان جاوا نیست؟) .
جاوا با دور انداختن اشاره گرها و بر دوش کشیدن بار مدیریت حافظه، برنامه نویسانC++ /C را برای همیشه از این کابوسها رهایی بخشیده است. علاوه برآن، چون جاوا زبانی برای اینترنت است، از ایمنی و حفاظت ذاتی بالایی برخودار است. طراحان حاوا از ابتدا یک محیط برنامه نویسی امن را مد نظر داشتهاند. مسئله حفاظت سیستمها رابطه تنگاتنگی با اشاره گرها دارد؛ اکثر مهاجمان برای ورودی غیر قانونی به جاوا مکانیزمهای حفاظتی دیگری هم دارد که در جای خود به آنها اشاره خواهیم کرد.
برای آشنایی بیشتر با جاوا بهتر است نگاه مختصری به تاریخچه آن بیندازیم. اما چون جاوا رابطه تنگاتنگی با اینترنت دارد، آوردن تاریخچهای از اینترنت و وب خالی از فایده نیست.
تاریخچه مختصر اینترنت وب
اینترنت به عنوان یک پروژه دولتی ایالات متحده امریکا در سال 1969 بدنیا آمد. این پروژه ، که درابتدا آرپانت (arpanet) نام داشت. فقط چهار کامپیوتر را در نقاط مختلف ایالات متحده به هم متصل میکرد. آرپانت بتدریج رشد کردو در سال 1972 پنجاه دانشگاه و مرکز تحقیقاتی نظامی در آن فعال بودند. در اواخر دهه 1980 متجاوز از هشتاد هزار کامپیوتر در این شبکه عظیم به هم متصل شده بودند. این کامپیوترها خود به دستجات ( شبکههای) کوچکتری تقسیم شده بوددند و شبکه شبکهها ( یا اینترنت) آنها را به یکدیگر متصل میکرد. در تمام این مدت اینترنت ملک اختصاصی محققان و دانشگاهیان بود و با آن که شرکتهای خصوصی هم میتوانستند به آن دسترسی داشته باشند ولی سیاست حاکم بر آن مانع استفاده تجاری از اینترنت شده بود. در سال 1991 با حذف ممنوعیت تجارت در اینترنت اوضاع دگرگون شد؛ ولی کماکان محدوده تجارت و تحقیق از هم جدا بود. از همین نقطه بود که رشد انفجاری اینترنت شروع شد به طوری که هم اکنون نزدیک به 100 میلیون کاربر در این شبکه عضویت دارند و اینترنت به تمام زاویای زندگی رسوخ کرده است.
اينترنت به عنوان يك پروژة دولتي ايالات متحده امريكا در سال 1969 بدنيا آمد. اين پروژه ، كه درابتدا آرپانت (arpanet) نام داشت. فقط چهار كامپيوتر را در نقاط مختلف ايالات متحده به هم متصل ميكرد. آرپانت بتدريج رشد كردو در سال 1972 پنجاه دانشگاه و مركز تحقيقاتي نظامي در آن فعال بودند. در اواخر دهة 1980 متجاوز از هشتاد هزار كامپيوتر در اين شبكة عظيم به هم متصل شده بودند. اين كامپيوترها خود به دستجات ( شبكههاي) كوچكتري تقسيم شده بوددند و شبكة شبكهها ( يا اينترنت) آنها را به يكديگر متصل ميكرد. در تمام اين مدت اينترنت ملك اختصاصي محققان و دانشگاهيان بود و با آن كه شركتهاي خصوصي هم ميتوانستند به آن دسترسي داشته باشند ولي سياست حاكم بر آن مانع استفادة تجاري از اينترنت شده بود. در سال 1991 با حذف ممنوعيت تجارت در اينترنت اوضاع دگرگون شد؛ ولي كماكان محدودة تجارت و تحقيق از هم جدا بود. از همين نقطه بود كه رشد انفجاري اينترنت شروع شد به طوري كه هم اكنون نزديك به 100 ميليون كاربر در اين شبكه عضويت دارند و اينترنت به تمام زاوياي زندگي رسوخ كرده است.
با آن كه اينترنت چندان جوان نيست اما از تولد وب ( يا شبكة تار عنكبوتي جهاني، World Wide Wed-WWW) زمان زيادي نميگذرد. وب در سال 1989 در آزمايشگاه اروپايي فيزيك ذرات (CERN) متولد شد. وب حاصل زحمات تيم برنرز – لي_(tim berners-lee) بود كه تلاش داشت تا فيزيكدانان سراسر دنيا بتواند اطلاعات خود را در شبكة اينترنت و به صورت اَبَرمتن(hypertext) با هم در در ميان بگذرند . وي براساس زبان عمومي علامتگذاري استاندارد SGML يك زبان جديد بنام زبان علامتگذاري اَبَرمتن HTML بوجود آورد. براي انتقال اسناد HTMLهم يك پروتكل جديد ابداع شد كه پروتكل انتقال اَبرمتن HTTPنام گرفت. اين پروتكل وسيلهاي بود براي جستجو، يافتن، بازيابي و نمايش سريع اسناد. با استفاده از ابرمتن ميتوان در شبكهاي از منابع، با برنامهاي بنام كاوشگر BROWSER بدنبال اسنادي با ويژگيهاي خاص كاوش كرد. چون اولين كاوشگر فقط ميتوانست متون را نمايش دهد با اقبال كمي مواجه شد. در حقيقت درسال 1993 فقط پنجاه پايگاه وب در تمام دنيا وجود داشت. شروع محبوبيت وب ورشد برق آساي آن با ورود كاوشگر گرافيكي موزائيك MOSAIC همراه بود. اين كاوشگر در NCSA ( مركز ملي كاربردهاي سوپر كامپيوتر) توسعه داده شد. امروزه در دنيا دهها كاوشگر گرافيكي و متجاوز از يكصد هزار پايگاه وب وجوددارد. موفقيت موزائيك باعث شد تا عدهاي از محققان NCSA شركت نت اسكيپ NETSCAPE را تأسيس كنند و اين همان شركتي است كه معروفترين كاوشگر وب يعني NetsCape Navigator را توليد كرده است. كاوشگر نت اسكيپ علاوه بر HTML قابليتهاي متعددي در زمينة مالتي مديا دارد كه باعث تسريع در روند رشد اينترنت و وب شده است.
اما سال 1995 يكي از مهمترين سالها در تاريخ اينترنت و وب است: در اين سال بود كه ميكروسافت ويدئوي اينترنتي را توسعه داد و صوت را تبديل به يكي از اجزاء تفكيك ناپذير اسناد ابرمتن كرد؛ نت اسكيپ با افزودن قابليتهاي بيشمار به كاوشگر خود همه را شگفت زده كرد؛ اولين ويرايش زبان مدلسازي واقعيت مجازي VRML به بازار آمده و سان جاوا را در يك سيني طلايي بدنيا عرضه كرد.
توسعه دهندگان وب با جاو ابزاري را يافتند كه باآن ميتوانستند صفحات تعاملي مالتي مديا در اينترنت بوجود آورند و اين نقطه عطف جديدي در تاريخچة اينترنت به شمار ميآيد.
تكامل جاوا
جاوا هم مانند اكثر اختراعات مهم حاصل تلاش گروهي دانشمند پيشتاز است. اما نكتة جالب دربارة جاوا آن است كه جاوا از ويرانههاي يك پروژة شكست خورده سر برآورد . اگر پروژة گرين Greenكه شركت سان در سال 1991 آن را شروع كرد به موفقيت ميانجامد امروز نه سان ديگر يك شركت كامپيوتري ميبود و نه جاوا متولد ميشد.
در سال 1991، شركت سان ميكروسيستمز در آغاز راه تبديل شدن به بزرگترين توليد كننده ايستگاههاي كاري يونيكس بود و در طول فقط پنج سال در آمدش را از 210 ميليون دلار به 5/2 ميليارد دلار رسانده بود و بنظر مي رسد هيچ چيز نميتواند جلودار آن باشد. عامل عمدة موفقيت سان كارهاي پيشتازانهاش در ايجاد شبكههاي باز بود و در اين زمينه هيچ كس به پاي آن نميرسيد.
مديران سان به اين فكر افتادند تا كاري كنند كه اين رشد براي مدتي طولاني ادامه يابد. يكي از زمينههاي مورد علاقة سان بازار لوازم الكترونيكي بود؛ پروژه گرين بوجود آمد تا براي اين بازار نرم افزاري پيشرفته خلق كند. مهندسان سان توجه خود را به ميكروپروسسورهايي معطوف كردند كه داراي قابليت استفاده در اين گونه سيستمها باشند. اگر پروژة گرين ميخواست موفق باشد بايد كاري ميكرد تا سيستم مزبور بتواند براحتي به بسترهاي سخت افزاري مختلف منتقل شود. براي اين منظور ابتدا از كامپايلر C++ استفاده شد ولي بزودي نارساييهايC++ در اين زمينه خود را نشان دادند. مهندسان سان خيلي سريع دريافتند كه براي ادامة كار بايد چيزي جديد و قوي خلق كنند. در همين زمان بود كه جيمز گاسلينگ كار بر روي زبان جديد اوكOak را شروع كرد . تقديرآن بود كه اين زبان جاواJava ناميده شود، چون ادارة ثبت نامهاي تجاري نام اوك را رد كرده بود.
بتدريج مهندسين يك دستگاه شبه PDA ساختند كه در آن از سيستم عامل ،زبان برنامه نويسي و واسط كاربر جاوا استفاده شده بود و با وجود ابتدايي بودن توانست توجه مديران سان را به خود جلب كند. بعدها گروهي كه در پروژه گرين كار كرده بودند شركت جاواسافت را بنيان نهادند.
متأسفانه بخت با پروژة گرين يار نبود و بعد از چند شكست متوالي، سان آن را كنار گذاشت. در همين زمان بود كه عدهاي از محققان NCSA شركت نت اسكيپ را تأسيس كردند و اين اتفاقات با آتشي كه به سرعت دنيا را در مينورديد و شبكة تار عنكبوتي جهاني Wwwنام داشت همزمان شد. بنابراين اتفاقي نبود كه مهندسان پروژه گرين به سمت اينترنت و وب به عنوان بستر پروژة سان جلب شوند. بعد از آن ديگر جزء تاريخ است، چهار سال بعد پروژة گرين به بار نشست و جاوا تبديل به داغترين موضوع اينترنت شد: همه،از برنامه نويسان و طراحان صفحات وب گرفته تا كاربران اينترنت، ميخواهند از جاوا استفاده كنند.
سان بلافاصله براي جاوا يك كاوشگر هم توليد كرد. اين اولين كاوشگري بود كه ميتوانست اپلتهاي جاوا را اجرا كند و نام آن هم هات جاواHotJava بود.
ويژگيهاي زبان برنامه نويسي جاوا
جاوا ويژگيهاي متعددي دارد كه آن را منحصر به فرد كرده است. جاوا هم كامپايلر دارد و هم اينترپرتر. ( توضيح: كامپايلر برنامهاي است كه متن برنامه را گرفته و در پايان يك فايلexe توليد ميكند. بعد از كامپايل شدن يك برنامه، ديگر به وجود كامپايلر نيازي نيست و ميتوان برنامة exe را روي هر كامپيوتر سازگاري اجرا كرد. اما اينترپرتر هيچ برنامة exe اي توليد نميكند و برنامه را خط به خط اجرا ميكند. براي اجراي برنامه حتماً بايد اينترپرتر هم روي كامپيوتر مورد نظر موجود باشد). هر كامپايلر فقط براي يك سيستم خاص ( مانند اينتل، اپل يا آلفا) ميتواند كد اجرايي توليد كند. اما كامپايلر جاوا كد اجراييexe توليد نميكند و در عوض يك فايل بينابيني ميسازد كه بايت كد نام دارد. بايت كد چيزي شبيه زبان اسمبلي است، اما اين زبان مختص هيچ پروسسور خاصي نيست بلكه زبان اسمبلي يك ماشين ويژه به نام ماشين مجازي جاوا jvm است. در هنگام اجراي چنين برنامهاي اينترپرتر زمان اجراي جاوا ، كه روي ماشين مجازي جاوا اجرا ميشود، دستورات فايل بايت كد را به دستورات قابل فهم براي پروسسوري كه روي آن اجرا مي شود تبديل خواهد كرد.
اماشايد از خود سوال كنيد كه چرا جاوا اين همه كار را بر خود( و ديگران) سخت گرفته است؟ اين همه لايه و ماشين مجازي براي چيست؟ يكي از بزرگترين ادعاهاي جاوا آزاد بودن از بستر سخت افزاري است. اما ، اين يعني چه؟ اگر جاوا بخواهد در اينترنت موفق باشد برنامههاي آن بايد بتوانند بدون هيچ اشكالي روي تمام كامپيوترهاي متصل به اينترنت اجرا شود، اما شما بهتر مي دانيد كه اينترنت شبكة عظيمي است از كامپيوترهاي نامتجانس، از سوپر كامپيوترهاي عظيم گرفته تا PC هاي مبتني بر پروسسورهاي اينتل و پاورپي سي تا ماشين هاي يونيكس مبتني بر پروسسورهاي آلفا و ...! چگونه يك برنامهاجرايي ميتواند روي اين طيف وسيع كامپيوترها اجرا شود؟ ايدة اوليه ساده است: برنامهها براي يك ماشين مجازي كامپايل شوند و اين ماشين مجازي روي تمام كامپيوترهاي متصل به اينترنت نصب شود. اين دقيقاً همان روشي است كه جاوا در پيش گرفته است. برنامهتان را با يك كامپايلر جاوا كامپايل كنيد؛ آن را در پايگاه وب خود قرار دهيد و به ديگران اطلاع دهيد تا با يك كاوشگر مجهز به جاوا اين برنامه را ( كه ممكن است در دل يك صفحه وب قرار داشته باشد) اجرا كنند. شايد هرگز تصور نميكرديد كه برنامهاي را كه با يك PCاينتل نوشتهايد روي يك ماشين مكينتاش يا يونيكس اجرا شود، ولي اكنون به لطف جاوا اين ديگر آرزويي دست نيافتني نيست.
با آن كه C و C++ بدون شك زبانهايي بسيار قدرتمندي هستند اما اشكالاتي ذاتي دارند كه شايد هرگز نتواند از آن رهايي يابند. عمدهترين اين اشكالات در مديريت حافظه و اشارهگرهاي آنها است. براي اكثر برنامه نويسانC++ /C مديريت حافظه و اشاره گرها يك كابوس واقعي است. با آن كه جاوا بدليل محبوبيت فوق العادة C++ ظاهري شبيه آن دارند ولي در جاوا مديريت حافظه به طور خودكار انجام ميشود و اشاه گر هم اساساً در جاوا آرايهها عضوي از يك كلاس هستند كه تمام مشكلات كار با آرايه را از دوش برنامه نويس بر ميدارد. جاوا در زمينة بهينه كردن استفاده از حافظه بسيار قويتراز اسلافش است، يكي از ويژگيهاي جاوا پاكسازي خود كار حافظه از چيزهاي بيمصرف است. ( اين برنامه نام بامسماي آشغال جمع كن gc را دارد!) .
شيئ گرايي در جاوا به غايت خود رسيده است. جاوا در استفاده از اشياء بسيار مفيد و سخت گير است و تخطي از اصول را نميپذيرد. در C++ شما ميتوانيد از اشياء به موازات برنامه نويسي به سبك قديم استفاده كنيد و اكثراً در پايان كار چنان ملغمهاي بوجود ميآيد كه مديريت آن نه با روشهاي برنامه نويسي شيئء گرا امكان دارد نه با روشهاي قديمي. جاوا ديگر به شما اجازه نميدهد تا خود را در چنين مخمصهاي گرفتار كنيد!
شروع برنامه نويسي با جاوا
اولين برنامهاي كه مينويسم يك برنامة متكي به خود است بنامhello worldتفاوت يك برنامة متكي به خود و يك اپلت آن است كه در برنامة متكي به خود ( كه ازاين به بعد به آن فقط برنامه خواهيم گفت) از متدي بنام main() استفاده ميشود در حاليكه اپلت چنين متدي ندارد.
برنامة helloworld بسيار ساده است و فقط جملة”Hello World!” را نمايش ميدهد. با اين حال، از آن ميتوان به عنوان سنگ بناي برنامههاي پيشرفتهتر استفاده كرد چون تمام برنامههاي جاوا ساختار كلي مشابهي دارند .
class Helloworld{
public static void main(string args[]) {
system.out.println(“hello world!”);
}
}
اين برنامة پنج خطي داراي تمام ويژگيهاي يك برنامة كامل و مفصل شيئگرا است .
نكته: براي نوشتن برنامههاي جاوا از هر اديتوري كه خروجيASCII توليد كند ميتوانيد استفاده كنيد.
برنامه را با نام helloworld.java ذخيره كنيد . نام برنامه بايد همان نام كلاس برنامه باشد.
اين برنامه دو قسمت مهم دارد:
-تمام برنامه در واقع يك تعريف كلاس است.
-كل برنامه در متد main() قرار دارد.
براي كامپايل كردن برنامه بايد از كامپايلر جاوا Javac استفاده كرد . روش كار چنين است: javac helloworld.java نكته : در تمام اين كتاب از كامپايلر سان، كه با JDKميآيد، استفاده كرده ايم، اگر شما از كامپايلر ديگري استفاده ميكنيد به مستندات آن مراجعه كنيد.
كامپايلر بعد از پايان كار يك فايل كلاس بنام helloworld.class توليد خواهيد كرد. اصولاً كامپايلر براي هر كلاس برنامه يك فايل كلاس جداگانه توليد خواهد كرد. فايل توليد شده يك فايل اجرايي مستقل نيست. براي اجراي فايل بايد از اينترپرتر جاوا استفاده كرد. اينتر پرتر جاوا ، java نام دارد. براي اجراي فايل كلاس توليد شده چنين كنيد: Java heloworld اگر همه چيز درست پيش رفته باشد، جملة “hello world” را روي صفحة كامپيوتر خود مشاهده مي كنيد.
نكته: دقت كنيد كه كامپايلر جاواو ينتر پرتر جاوا دو چيز متفاوتند. كامپايلر از فايل متن برنامه يك فايل كلاس ميسازد و اينتر پرتر فايل كلاس را اجرا ميكند.
ايجاد يك اپلت جاوا
ايجاد اپلت با ايجادبرنامه فرق دارد و قواعد متفاوتي بر آن حكمفرماست، يك اپلت براي اجرا در صفحات وب نوشته مي شود بنابراين كمي پيچيدهتر از يك برنامه است. در واقع يك اپلت تا زماني كه در يك كاوشگر اجرا نشود خروجي خود را نمايش نخواهد داد .
نكته : سعي كنيد برنامهها، اپلتها و صفحات وب را در داير كتوريهاي جدا گانه ذخيره كنيد.
اپلتي كه در اين قسمت مينويسيم،HelloWorld Applet نام دارد.
Import java.awt.graphics;
Public class helloworldapplet extends java. applet.Applet{
Public void paint (graphics g) {
g.drawstring (“hello world!” , 5, 25);
}
}
اپلت را با نامHelloWordApplet.java ذخيره كنيد. در مورديك اپلت بايد به چند نكته توجه كنيد:
دستور import در خط 1 شبيه دستور#include در C است، با اين دستور اپلت مي تواند از كلاسهاي jdkبراي كارهاي گرافيكي استفاده كند.
-متد paint() براي نمايش محتويات اپلت است. در اين جا عبارتhello world! روي صفحه نمايش داده خواهد شد . اپلتها متد main() ندارند و به جاي آن از متدهاي paint() يا start(), init() استفاده ميكنند.
براي كامپايل كردن اين اپلت چنين كنيد:
درا ين حالت هم كامپايلر يك فايل كلاس به نام helloworld.class ايجاد خواهد كرد. اما براي اجراي يك اپلت يك قدم ديگر هم بايد برداشت و آن ايجاد يك فايل html است كه اپلت در ان اجرا خواهد شد .
HELLO TO EVERYONE
MY JAVA APPLET SAYS:
تحليل برنامه
براي اجراي يك اپلت در فايلHTML بايد از بر چسب
-براي مشخص كردن نام كلاسي كه اپلت در آن است از صفت CODE استفاده كنيد.
-0براي مشخص كردن ابعاد پنجرهاي كه اپلت در آن اجرا خواهد شد از صفتهاي WIDTH و HEIGHT استفاده كنيد. اعداد مشخص شده بر حسب پيكسل هستند.
اين فايل را با نامHELLOWORLDAPPLE.HTML ذخيره كنيد.حالا آمادهايد تا اپلت را اجرا كنيد. اين كار به دو روش امكانپذير است:
-استفاده از كاوشگرهاي مجهز به جاوا مانند نت اسكيپ.
-استفاده از برنامة APPLETVIEWER كه با JDK ميآيد. اين برنامه كل صفحة وب را نميتواند نمايش دهد و فقط اپلت را نمايش خواهد داد.
براي ديدن اپلت در يك كاوشگر، فايل HTML فوق را باز كنيد، با اين كار صفحة وب و اپلت درون آن به نمايش در خواهند امد. روش استفاده از APPLETVIEWER چنين است:
نكته: با اينكه ميتوان برنامة APPLETVIEWER را از محل فايل HTML اجرا كرد ولي در اين حالت بدون بستن آن نميتوان اپلت را مجدداً بار كرد. در حاليكه اگر مشاهده گر اپلت از محل ديگري اجرا شود. ( مانند دستور فوق) ميتوان يك اپلت را تغيير داده، مجدداً كامپايل كرده و سپس دوباره در مشاهدهگر بار كرد.
خلاصه
جاوا يك زبان برنامه نويسي است كه با آن ميتوانيد برنامههاي متنوعي بنويسيد. بيشترين كاربرد جاوا در ايجاد اپلتهايي است كه در كاوشگرهاي وب قابل مشاهده هستند. اپلتها برنامههايي هستند كه جزيي از صفحات وب محسوب مي شوند . تقريباً هر كاري با اپلتها امكانپذير است.
قدرت جاوا در سادگي و استقلال از آن از بستر سخت افزاري ( چه در مقابل منبع برنامه، و چه در كد باينري آن) است. باجاوا ميتوان برنامههايي هم نوشت كه بدون كاوشگرهاي وب قابل اجرا باشند. امروز هم يك برنامة جاوا نوشتيد و هم يك اپلت جاوا، و تفاوت آن دو را ديديد. اپلتهاي جاوا را فقط در فايلهاي HTML ميتوان مورد استفاده قرار داد.
برنامه نويسي شيئي گرا
يكي از بزرگترين ايدههاي برنامه نويسي در دو دهة اخير است ، اما تسلط كامل بر اين ايده به سالها زمان و ممارست نياز دارد. برنامه نويسي شيئي گرا در واقع پيوند دنياي واقعي با برنامه نوسي كامپيوتر است. امروز با مفاهيم برنامه نويسي شيئي گرا در جاوا، و ارتباط اين مفاهيم با ساختار برنامهها آشنا مي شويد:
-شيئي و كلاس چيست و رابطة آنها چگونه است.
-يك شييء يا كلاس دو جزءء مهم دارد: رفتار و حالت
-وراثت و نقش آن در طراحي برنامهها
- بسته ها و واسطها در جاوا
اگر از قبل با برنامة نويسي شيگرا آشنا هستيد مي توانيد امروز را استراحت كنيد و براي درس فردا آماده شويد.
مفاهيم برنامه نويسي شيئء گرا
برنامة نويسي شيئي گرا قصد دارد مدلي از دنياي واقعي را وارد برنامه نويسي كامپيوتر كند. دنياي اطراف ما از اشياء Object ساخته شده است.
اشياء Object و كلاسهاclasses
شيئء كليديترين مفهوم برنامه نويسي شييء گرا است. هر شيئء يك حالت ( يا خاصيت) و رفتار دارد، و برنامه عبارت است بر هم كنش بين اشياء حالت يك شيئ عبارت است از متغيرهاي ( عناصر دادهاي) شيئي و مقدار آنها رفتار يك شيئ را متدهاي آن تعيينن ميكنند ( نزديكترين مفهوم به متد همان تابع است) . شيئ در واقع مقداري كد است كه كار خاصي انجام مي دهد.
هر شيئ كپسولي است از مقداري متغير و كد، كه كار نگهداري و به روز در آوردن آنها را ساده ميكند. معمولاً درون يك شيئ ( مانند يك كپسول در بسته ) از دسترس دنياي خارج بدور است و براي كار با آن بايد از ارسال پيام استفاده كرد. مزيت كپسول آن است كه كاربر براي كار با آن هيچ نيازي به دانستن مكانيزمهاي دروني آن ندارد و فقط بايد ساختار پيام ها را بداند. معمولاً ساختار پيامها در اشياء مختلف يكسان است. در دنياي واقعي هم وضع به همين منوال است، مثلاً براي استفاده از يك تلويزيون شما هيچ نيازي به آشنايي با پيچيدگيهاي درون آن نداريد فقط كافيست بدانيد كه بايد آن را به برق بزنيد، آن را روشن كنيد و يك كانال را انتخاب كنيد.
كلاس در واقع الگويي است براي ايجاد شيئي در واسط برنامه نويسي جاوا java APIچندين كلاس مختلف وجود دارد كه در جاي خود به آنها خواهيم پرداخت.
نكته : اگر باC آشنا باشيد، ميتوانيد كلاس را چيزي مانند struct و typedef تصور كنيد؛ اما يك كلاس بسيار پيچيدهتر و كارآتر از struct است.
چند كلاس با هم يك كتابخانة كلاس class library مي سازند. برنامه نويسي جاوا اصولاً چيزي نيست جز طراحي و پياده سازي كلاسها.
ايجاد يك كلاس
براي درك بهتر مفاهيمي كه تعريف شدند در اين قسمت يك مثال عملي خواهيم آورد. در اين مثال يك موتور سيكلت را شبيه سازي مي كنيم . يك موتور سيكلت واقعي داراي حالت و رفتاري خاص خود است. حالت موتور سيكلت در واقع همان خواص آن ( مانند رنگ، مدل، نوع و .. ) است . مجموع اين خواص يك موتور سيكلت خاص را مشخص خواهند كرد كه از موتور سيكلتهااي ديگر قابل تميز است. هر شئي وهله ايست از يك كلاس ، كلاس موجودي قابل لمس نيست، در حاليكه شئي موجودي است قابل لمس كه به كلاس خود موجوديت داده است. مثلاً ، انسان يك كلاس است در حاليكه شما نمونه اي هستيد از كلاس انسان؛ شما موجوديت دارد در حا ليكه چيزي به نام انسان وجود خارجي ندارد ، بلكه در اشياء خاص ( من ، شما، ديگران) موجوديت مييابد.
موتور سيكلت ما داراي رفتارهايي هم هست، رفتارهايي مانند روشن شدن ، خاموش كردن، تعويض دنده،سرعت گرفتن، ترمز كردن و غيره.
وراثت، واسط ها و بسته ها
وراثت ( InheritanCe)
وراثت يكي از كليدي ترين مفاهيم برنامه نويسي شيئي گراست و تأيثر مستقيمي روي نحوة طراحي و نوشتن كلاس ها جاوا دارد. وراثت مكانيزمي است براي تغيير شكل دادن به كلاس ها و استفادة مجدد از آنها: با مكانيزم وراثت مي توان به طور خودكار از اطلاعات كلاس هاي ديگر استفاده كرد.
هر كلاس يك فوق كلاس superclass و يك يا چند زير كلاس subclass دارد. هر كلاس از كلاس هاي بالاتر خود در اين سلسله مراتب ارث مي برد و به كلاس پايين تر از خود ارث مي دهد. هر زير كلاس تمام متدها و متيرهاي فوق كلاس خود را به ارث مي برد و ديگر نيازي به تعريف مجدد آنها وجود ندارد.
بالاترين كلاس در سلسله مراتب كلاس هاي جاوا كلاسobject است و تمام كلاس هاي ديگر از اين كلاس مشتق مي شوند. اين كلاس تعيين كننده كليترين متدها و خواص تمام كلاس هاي ذيل خود است. معمولاً كلاس ها ضمن ارث بردن از كلاس هاي بالاتر از خود چيزهايي رابه آن اضافه و پياده سازي ميكنند.
ايجاد سسلسله مراتب كلاس
وقتي تعداد كلاس ها زياد شود ، منطقي است كه آنها را در يك سلسله مراتب گرد آوريم تا بتوانيم نحوة به ارث رسيدن متدها و خواص را بهتر كنترل كنيم بدين ترتيب نياز به دوباره نويسي كدها به حداقل رسيده و هنگام نياز به تغير كدها نيز اين اصلاحات فقط در يك نقطه انجام خواهند شد و از آنجا به تمام نقاط ديگر تسري خواهند يافت.
وراثت چگونه عمل مي كند؟
وراثت چگونه عمل مي كند؟ چگونه يك شيئ متغيرها و متدهاي كلاس بالاتر را به طور خودكار بدست مي آورد؟ در مورد متغيرها، وقتي شيئي بوجود ميآيد يك مسير دسترسي به تمام متغيرهاي كلاس مربوطه را بدست ميآورد. در مورد متدها هم وضع به همين منوا ل است و تعريف يك متد در اختيار تمام زير كلاس ها قرار خواهد گرفت. وقتي در يك شيئي متدي فراخواني مي شود، جاوا ابتدا در همان كلاسي كه متد تعريف شده به دنبال كد آن مي گردد اگر كد آن را نيافت. در سلسله مراتب يك پله بالاتر رفته و در فوق كلاس بدنبال آن خواهد گشت تا زمانيكه كد متد را بيابيد.