نرم افزار
نرم‌افزار

نرم‌افزار (به انگلیسی: Software) یا برنامه، مجموعه‌ای از دستورالعمل‌های دقیق و مرحله به مرحله است که هدف خاصی را دنبال می‌کنند.

ظاهراً، اولین بار جان توکی در سال ۱۹۵۸ این واژه را به‌این معنا به‌کار برده‌است. احتمالاً این واژه در مقابل سخت‌افزار (به انگلیسی: Hardware) به کار برده‌اند که بسیار پیش از پیدایش رایانه (به معنای اسباب و اشیاء) به‌کار می‌رفته‌است.







دو گروه کلی نرم‌افزارها

نرم‌افزارهای رایانه را می‌توان به دو دسته بزرگ تقسیم کرد:

نرم‌افزار سیستم (به انگلیسی: System software)
نرم‌افزار کاربردی (به انگلیسی: Application software)

می‌توان گفت نرم‌افزارهای کاربردی، برنامه‌های مورد استفاده کاربرند و نرم‌افزارهای سیستمی، مدیریت رایانه را برعهده دارند. مهم‌ترین نرم‌افزار سیستم، سیستم‌عامل است.






سیستم عامل

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

این ارتباط میان نرم‌افزار و سخت‌افزار توسط سیستم عامل انجام می‌شود. این تنها قسمتی از کار سیستم عامل است.
سیستم عامل خود یک برنامه نرم افزاری است با این تفاوت که چون تمام منابع و امکانات سخت افزاری در اختیار وی می باشد دارای ویژگی منحصر به فرد می باشد بنابراین آن را در رده نرم افزارها می خوانیم با این ویژگی که از اهمیت خاصی برخوردار است. به بیان دیگر سیستم عامل یک برنامه جامع است که اجازه در اختیار قراردادن منابع و امکانات سخت افزاری را برای نرم افزارها صادر می کند و این سیستم عامل است که مسئول صحت عملکرد سیستم و منابع آن است.
سیستم عامل شامل 4 بخش مهم است
1- مدیریت پردازش و پردازشگر
2- مدیریت حافظه
3- مدیریت دستگاههای ورودی و خروجی (I/O)
4- مدیریت فایل
سه گروه کلی نرم‌افزارهای معماری

از دیدگاه ساختاری (معماری) (architecture)، نرم‌افزارها به دسته‌های زیر تقسیم می‌شوند:

کاربر-بنیان یا Client Base
کارگزار-بنیان یا Server Base
کاربر کارگزار بنیان یا Client-Server Base

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






رقابت نرم‌افزاری

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






نرم‌افزار سیستم

نرم‌افزار سیستم به نرم‌افزاری در رایانه گفته می‌شود که به کارکرد سیستم رایانه یا کاربردهای سطح پایین (یا Low Level) رایانه مربوط باشد. این نرم‌افزارها به ساختار فیزیکی سخت‌افزار رایانه وابسته هستند و در نوشتن آن‌ها از زبان‌های سطح پائین مانند زبان اسمبلی استفاده می‌شود. سیستم‌عامل و درایورها از نرم‌افزارهای سیستم هستند. از جمله زبان هایی که برای نگارش نرم‌افزارهای سیستمی استفاده می‌شود، زبان برنامه نویسی C می‌باشد. کار کردن با سی برای برنامه نویسان راحت تر است و آنان این زبان را به اسمبلی ترجیح می‌دهند. اگر برای نگارش نرم‌افزار سیستمی مشکل محدودیت فضای سخت‌افزاری داشته باشیم بهتر است با زبان اسمبلی کار کنیم که حجم آن پایین تر است. نرم‌افزارهای سیستمی به سخت‌افزار وابسته اند.

در برابر نرم‌افزار سیستم، نرم‌افزار کاربردی قرار دارد که برای کاربردهای سطح بالا و غیرسیستمی رایانه است و معمولاً به زبان‌های سطح بالا نوشته می‌شود که از جزئیات سخت‌افزاری سیستم مستقل است.







نرم‌افزار کاربردی

نرم‌افزار کاربردی (به انگلیسی: Application software) عبارت است از نرم‌افزاری که با استفادهٔ مستقیم از منابع و قابلیت‌های رایانه کاری را مستقیماً برای کاربر انجام می‌دهد. باید توجه داشت که این عبارت در مقابل عبارت نرم‌افزار سیستمی معنی پیدا می‌کند.

نرم‌افزار سیستمی در مقابل در پس‌زمینه عمل می‌کند و خدماتی را فراهم می‌کند که دیگر نرم‌افزارها و یا سیستم‌عامل می‌توانند برای انجام کارهای خود از آن استفاده کنند. اما در عوض معمولاً مستقیماً با کاربر عادی در تماس نیست و خدماتی را به او ارایه نمی‌دهد.

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

بسیاری نرم‌افزارهای کاربردی، برای توسعه‌دهندگان ابزار رابط برنامه‌نویسی کاربردی هم فراهم می‌کنند تا بتوان از قابلیت‌های نرم‌افزار در نرم‌افزارهای جدید استفاده کرد. برای مثال نرم‌افزار ادوبی آکروبات هنگام نصب ای‌پی‌آی فراهم می‌کند که برنامه‌نویس می‌تواند با استفاده از آن توانایی‌های آکروبات را در برنامهٔ خود به کار گیرد.

برای عنوان نمونه‌های دیگر می‌توان به نرم‌افزارهای پردازش متن، برگه‌های گسترده (صفحات گسترده) و نرم‌افزارهای پخش نوا و نما اشاره کرد.







نرم‌افزار فروشگاه اینترنتی

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

برای ایجاد چنین محیطی در اینترنت نیاز به ابزاری است تا به وسیلهٔ آن بتوان یک فروشگاه اینترنتی راه اندازی کرد. این ابزار اغلب با نام نرم افزار فروشگاه اینترنتی (فروشگاه ساز) شناخته می‌شود. در واقع این یک نرم افزار با قابلیت های فروشگاهی است که بر روی بستر وب پیاده میگردد.

نرم افزار فروشگاه اینترنتی برای فروشندگان و تولیدکنندگان این امکان را مهیا می‌سازد که کالاها و خدمات خود را به صورت مستقیم برروی شبکه جهانی اینترنت عرضه کنند تا مردم بتوانند با اتصال به نام دامنه فروشگاه اطلاعات کامل کالاها و خدمات را مشاهده کرده و آنها را به صورت آنلاین سفارش دهند. فروشگاه اینترنتی یا آنلاین معمولا مانند یک سبد خرید مجازی عمل می‌کنند و در برخی مواقع با این نام نیز شناخته می‌شوند و به مشتریان این امکان را می‌دهد تا فهرستی از کالاهای مورد نیاز خود برای خرید را انتخاب کرده، به سبد خرید مجازی خود اضافه کنند که معمولا این عمل را با استفاده از گزینه ی« اضافه کردن محصول به سبد » انجام می‌دهند. سپس نرم افزار لیست تهیه شده توسط مشتری را بررسی و امکان انتخاب نحوه پرداخت مبلغ سفارش و انتخاب نحوه حمل و نقل سفارش را مهیا می‌کند. سپس هزینهٔ کلی سفارش اعم از مبلغ قابل پرداخت برای هر محصول و هزینهٔ بسته بندی و ارسال را محاسبه و برآورد می‌کند و سفارش به طور کامل جهت رسیدگی توسط فروشنده ثبت می‌گردد. موجود بودن کالا، ثبت سفارش اولیه، تائید سفارش، تعیین نحوه دریافت کالا و تائید دریافت نهایی کالا معمولاً در همین نرم افزار انجام می پذیرد. این نرم افزار حکم یک واسط کاربری در اینترنت با فروشندگان را دارد که قابلیت های سیستماتیک فراوانی نیز دارد. معمولاً این نرم افزارها سیستم های مالی، سفارش کالا، موجودی انبار و سیستمهای پرداخت آنلاین را هم پشتیبانی میکنند و تمامی قابلیت ها را در یکجا فراهم میکنند.






تاریخچه و واژگان

پس از پیدایش اینترنت (World Wide Web)، آن به یک رسانهٔ جمعی تبدیل شد و سیستم های خرید اینترنتی ایجاد و توسعه یافتند. این نوآوری نتیجهٔ راه اندازی مرورگر Mosaic در سال ۱۹۹۳ و Netscape در سال ۱۹۹۴ بود. این سیستم محیطی را به وجود آورد که در آن ایجاد فروشگاه‌های تحت وب (فروشگاه اینترنتی ) ممکن بود. بنابراین اینترنت و WWW به عنوان ابزارهای زیرساختی و کلیدی به انتشار و توسعه سریع تجارت الکتریکی کمک کردند. تجارت الکترنیکی (به عنوان زیر مجموعه‌ای از E-BUSINESS) به تمامی سیستم های کامپیوتری اتلاق می‌شود که از معاملات دادوستدی حمایت و پشتیبانی می‌کنند. در سال ۱۹۹۸ به طور عمومی ۱۱مدل تجارت الکتریکی وجود داشت که یکی از آنها مدل تجارتی(B2C business to customer) E-SHOP یا همان فروشگاه اینترتی بود که فروشگاه آنلاین(ONLINE SHOPPING) نیز نامیده می‌شد.

دو واژهٔ E-SHOP و ONLINE SHOP مترادف هم هستند. واژهٔ خرید آنلاین خیلی قبل تر در سال ۱۹۹۴ اختراع شده بود(به عنوان مثال برای سیستم‌های تلویزیونی). امروزه این واژه در مورد مدل B2C از تجارت الکترونیکی بکار می‌رود. برای اینکه خرید اینترنی ممکن شود، به یک سیستم نرم افزاری نیاز است. به منظور ایجاد امکان خرید آنلاین برای تمامی مشتریان، فروشگاههای اینترنتی بر پایه www تکامل یافتند. برای این مدل از سیستم‌های خرید اینترنتی کلمهٔ اختصاری (web shop) استفاده می‌شود. هیچ واژهٔ یکنواخت و ثابتی برای این مدل از سیستم تجارت الکترونیکی بوجود نیامده مثلا در مناطقی که به زبان آلمانی حرف می‌زنند واژگانی مانند web shop) software) و یا ((online shop software مورد استفاده قرار می‌گیرد ویا در آمریکا واژهٔ (shopping cart software) ایجاد شده و مورد استفاده قرار می‌گیرد.






مدل توسعه نرم افزار فروشگاه اینترنتی

نرم افزارهای فروشگاه اینترنتی به دو صورت رایگان(Free Software) و تجاری (Commercial) توسعه داده شده و عرضه می‌شوند:

1- نرم افزار فروشگاه اینترنتی رایگان: مدل توسعه نرم افزار آزاد در زمینه تولید این مدل نرم افزارها نیز مورد استفاده قرار گرفته و مورد قبول جامعه قرار گرفته‌است. در این مدل توسعه جمعی از افراد متخصص و برنامه نویس از نقاط مختلف دنیا برروی یک نرم افزار کدبار (Open Source) مشارکت کرده و نهایتا در قالب یک لایسنس آزاد نرم افزار را جهت استفاده تمامی افراد جامعه منتشر می‌کنند. در این مدل توسعه معمولا نرم افزار به صورت رایگان در اختیار تمامی افراد جامعه قرار داده می‌شود و برخی اوقات شرکت‌هایی نیز از جامعه توسعه دهنده نرم افزار حمایت مالی می‌کنند که در این صورت شرکت‌های مذکور از خدمات جانبی در کنار نرم افزار درآمد زایی دارند. مزیت اصلی نرم افزار فروشگاه اینترنتی رایگان این است که می توان آن ها را بروی هر وب سروری که با آن سازگاری دارد نصب و میزبانی کرده و در کمترین زمان ممکن صاحب یک فروشگاه با کمترین هزینه شد. همچنین سورس کدهای نسخهٔ آزاد معمولا برای ویرایش وتغییر ویا سفارشی کردن برنامه در دسترس می‌باشد....

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

۲- نرم افزار فروشگاه اینترنتی تجاری(غیر رایگان): این مدل نیز امروزه در خیلی از مراکز نرم افزاری پرکاربرد، توسط شرکت‌های مختلف عرضه می شود. شرکت‌های مختلف تولید کننده نرم افزارهای تحت وب با تشکیل تیم‌های برنامه نویسی و سرمایه گذاری در این زمینه، نرم افزار با امکانات گسترده تولید و به بازار عرضه می‌کنند که معمولا تحت لایسنس آن شرکت می‌باشند. برای استفاده از این مدل نرم افزارها بایستی در ابتدا هزینه تهیه نرم افزار و قرارداد اولیه را پرداخت نمود ولی با پرداخت این هزینه مطمئن خواهید بود که از یک نرم افزار حرفه‌ای با خدمات پشتیبانی قابل اعتماد بهره می‌برید. البته شرکت‌های مختلف در این زمینه امکانات نرم افزار و خدمات متنوعی ارائه می‌کنند که معمولا فروشندگان و تولید کنندگان در زمان انتخاب نرم افزار فروشگاه اینترنتی گزینه‌های بیشتری جهت بررسی و انتخاب خواهند داشت.






مشخصات فنی

برای توسعه نرم افزار فروشگاه اینترنتی معمولا از زبان های برنامه نویسی سمت سرور نظیر PHP و ASP.net و همچنین یک سیستم پایگاه داده جهت نگهداری اطلاعات محصول ها، مشتریان و سفارشات به عنوان مثال MySQL یا MS SQL Server بهره گرفته می شود. در نرم افزارهای فروشگاه اینترنتی مدرن جهت تعامل بهتر با مشتریان و مدیریت فروشگاه از زبانهای برنامه نویسی سمت کلاینت نظیر جاوااسکریپت و کتابخانه های مبتنی بر آن نظیر Jquery و Prototype استفاده می شود. در این نرم افزارها تمامی اطلاعات محصول ها توسط مدیریت فروشگاه در دیتابیس مرکزی فروشگاه برروی سرور اینترنتی ذخیره و نگهداری می شود که مشتریان می توانند با مراجعه به آدرس اینترنتی فروشگاه اطلاعات ذخیره شده در دیتابیس آن را مشاهده کرده و برخی اوقات نسبت به مقایسه اطلاعات محصول ها اقدام کنند. با توجه به حجم اطلاعات نگهداری شده در دیتابیس معمولا از تکنیک های مختلفی جهت افزایش امنیت و بهینگی کدها استفاده می گردد. موضوع مهمی که در این قضیه مطرح است صحت داده های فروشگاه و امنیت بالای ذخیره سازی اطلاعات می باشد تا تراکنش های آنلاین در محیط امنی ذخیره و نگهداری گردند.

در نرم افزارهای فروشگاه اینترنتی عموما با اتصال به درگاه های بانکی مختلف امکان پرداخت مبلغ سفارشات به مشتریان داده می شود. از جمله درگاه های بین المللی می توان به PayPal و 2Checkout و Google Checkout اشاره نمود که وظیفه این درگاه ها دریافت اطلاعات بانکی مشتریان، بررسی صحت اطلاعات و انجام تراکنش انتقال وجه از حساب مشتری به حساب فروشنده می باشد. درگاه های بین المللی به طور عمومی در داخل ایران قابل استفاده نمی باشند و این درگاه های اطلاعات شبکه بانکی ایران را نمی پذیرند. به همین دلیل در داخل ایران درگاه های مختلفی که قادر به پردازش اطلاعات بانکی مشتریان شبکه بانکی ایران می باشند بوجود آمده اند که این درگاه ها با اتصال به شبکه شتاب (شبکه تبادل اطلاعات بانکی) قادر به انجام تراکنش از حساب مشتریان به حساب فروشندگان می باشند. از جمله درگاه های داخل کشور می تواند به درگاه پرداخت امن پاسارگاد، درگاه بانک سامان، درگاه بانک ملت و درگاه بانک پارسیان اشاره نمود.

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

برخی نرم افزارهای فروشگاه اینترنتی اجازه تشکیل سبد خرید مجازی را نداده و فقط امکان ثبت یک محصول در هر سفارش را دارند که در این صورت فقط مبلغ آن محصول در درگاه بانکی پرداخت می گردد (به عنوان مثال نرم افزار فروشگاه ساز رایگان PayPal). نرم افزار فروشگاه اینترنتی به عناوین دیگری نظیر نرم افزار تجارت الکترونیک، نرم افزار فروشگاه الکترونیکی، نرم افزار فروشگاه آنلاین و یا فروشگاه ساز (به طور عمومی) شناخته شده است.
راهنمای انتخاب نرم افزار فروشگاه اینترنتی

برای راه اندازی فروشگاه اینترنتی به یک فروشگاه ساز مناسب احتیاج دارید. اسکریپت های زیادی برای تاسیس فروشگاه وجود دارند. یک فروشگاه ساز مناسب و پرقدرت باید عوامل متعددی را پشتیبانی کند.

یکی از مهمترین قابلیت های یک فروشگاه ساز اینترنتی، کاربر پسند بودن آن است. یک فروشگاه ساز باید برای استفاده کاربران مبتدی آسان باشد. قسمت مدیریت فروشگاه باید دارای طرح بندی و اینترفیس مناسب برای سهولت در استفاده باشد همچنین قسمت کاربران (مشتریان فروشگاه) باید به اندازه کافی برای سفارش و خرید راحت باشد. برای این منظور اسکریپت فروشگاه سازی را انتخاب نمایید که اینترفیس مناسبی داشته باشد.

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

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

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

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

عامل مهم دیگر امکانات آماده جانبی است. هرچه امکانات جانبی فروشگاه بیشتر باشد فروشگاه بهتری خواهید داشت. امکاناتی از قبیل پشتیبانی آنلاین، امکان ارسال پیامک (SMS) برای مشتریان و پیگیری سفارشات در مراحل مختلف توسط SMS و ایمیل، امکان تعریف آپشن های جداگانه برای کالاها، خروجی RSS و اکسل و امکاناتی از این قبیل.

مورد بعدی سئو می باشد. فروشگاه با SEO قدرتمند باعث بالا آمدن در رتبه گوگل و خرید بیشتر خواهد بود. از فروشگاه سازی استفاده نمایید که موارد SEO را رعایت نموده و امکانات سئو مناسب برای کالاها از قبیل درج کلمات کلیدی در متا تگ ها و URL کالا ها و دسته بندی ها داشته باشد.

و اما مهمترین عامل پشتیبانی پس از فروش است! یک فروشگاه هر چقدر هم که مناسب و قوی باشد باز به مشکل برخواهد خود و پشتیبانی پس از فروش عاملی موثر خواهد بود. فروشگاه ساز های رایگان از پشتیبانی بی بهره هستند و در هنگام بروز مشکل خود شما باید دست بکار شده و مشکل را برطرف نمایید. یک فروشگاه ساز مناسب فروشگاه سازی است که پشتیبانی مناسب داشته باشد.







نرم‌افزار موبایل

نرم‌افزار موبایل نرم‌افزاری قابل اجرا برروی گوشی‌های تلفن همراه می‌باشد که معمولاً با حجم کم و در ابعاد صفحه تلفن همراه عرضه می شود.

معمولا این نرم‌افزارها با زبان برنامه‌سازی جاوا نوشته می شوند که بر روی اکثر گوشی‌های تلفن همراه اجرا می‌شوند. ولی تعداد قابل توجهی از این نرم‌افزارها مختص سیستم عامل سیمبین طراحی می شوند و فقط بر روی گوشی هایی که دارای این سیستم عامل می باشند قابل نصب و اجرا هستند.

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

تولید نرم‌افزار تلفن همراه در ایران نیز در حال پیشرفت می‌باشد و بیشتر نرم‌افزارهای فارسی تلفن همراه در بستر جاوا طراحی می شوند تا روی اکثر گوشی‌های تلفن همراه موجود در ایران قابل اجرا باشند






نفخ نرم‌افزار

نفخ نرم‌افزار اصطلاحی است که گرایش برنامه‌های رایانه‌ای جدید را به موارد زیر دربر می‌گیرد:

بجا گذاشتن ردپاهای عظیم هنگام نصب
استفادهٔ اسراف‌گرایانه از منابع سامانه
ارائهٔ امکانات بی‌موردی که کاربران از آنها استفاده نمی‌کنند

این درحالی است که درمقابل نفع کم یا شاید هیچ منفعتی برای کاربر ندارند.

نفخ‌افزار، یا جازن‌افزار، همچنین برای توصیف نرم‌افزارهایی که در هنگام خرید یک رایانه روی آن پیش‌نصب شده‌اند نیز بکار می‌رود. این‌گونه نرم‌افزارها معمولاً نسخه‌های آزمایشی زمان-محدود یا نسخه‌های ابتدایی با حذف بعضی امکانات هستند.






علل

توسعه‌دهندگان نرم‌افزار شاغل بکار در دههٔ ۱۹۷۰ مجبور به سروکله زدن با محدودیت‌های شدید فضای دیسک و حافظه بودند. هر بایت حافظه و هر کلاک سایکل پردازنده بحساب می‌آمد، و تلاشی تحسین برانگیز برای گنجاندن برنامه در منابع موجود در جریان بود. آنان برنامه‌نویسانی متخصص و صرفه‌جو بودند.

امروزه وضعیت برعکس شده، منابع پست انگاشته می‌شوند، سریع کُدزنی و داشتن امکانات خبرساز اولویت کار است، و این تاحدی به پیشرفت فناوری مربوط است. سرعت محاسبه و گنجایش ذخیره‌سازی چندین برابر شده، درحالی‌که هزینهٔ تولید سخت‌افزار هم به همان شدت کاهش یافته (قانون مور را ببینید). علاوه بر آن گسترش استفاده از رایانه در همهٔ لایه‌های بازرگانی و زندگی خانگی، بازار رایانهٔ بسیار بزرگتری نسبت به دههٔ ۱۹۷۰ درست کرده است.

دراین‌میان، استفادهٔ شرکت‌های نرم‌افزاری از توسعه‌دهندگان نرم‌افزار جوان که با آن محدودیت‌های دههٔ ۱۹۷۰ دست و پنجه نرم نکرده‌اند—چراکه آنروز کودکی بیش نبوده یا هنوز به دنیا نیامده بودند—و هدر رفتن چند صد مگابایت از دیسک، گاف چند مگابایتی در حافظه، یا معطل ماندن یک هستهٔ پردازنده چندان هم برایشان دردآور نیست، به تولید و بازاریابی موفق نفخ‌افزارها کمک می‌کند. روش برنامه‌سازی این نسل از برنامه‌نویسان برای پیرهای این کار مانند استیو گیبسون هراس‌انگیز است.






مثال‌ها

آی‌تونز اپل متهم به نفخ‌دار بودن است. دلیل آن تبدیل تدریجی‌اش از یک پخش‌کنندهٔ چندرسانه‌ای به یک سکوی تجارت الکترونیک و تبلیغات است. اد بوت نویسندهٔ سابق پی‌سی ورلد شرکت اپل را به ریاکاری در تبلیغاتش علیه ویندوز متهم کرده‌است.

مایکروسافت ویندوز هم خودش متهم به نفخ‌دار بودن است؛ با اشاره به ویندوز ویستا، اریک تراوت مهندس مایکروسافت می‌گوید «خیلی از مردم در مورد ویندوز به‌عنوان یک سیستم‌عامل بزرگ نفخ‌دار می‌اندیشند، که باید اعتراف کنم تجسم خوبی است... اما در هسته‌اش، کرنل، و اجزایی که آنرا می‌سازند، در حقیقت خیلی ساده و مؤثر است.»

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

جدا از امکانات زاید، محدودیت‌های زمانی در فرایند تولید نرم‌افزار و مدیریت بی‌فکر، منجر به باقی ماندن و جا خوردن کُدهای قدیمی در ساخت نسخه‌های جدید نرم‌افزارها می‌شود. یک مثال خوب از این مورد، ادوبی اکروبات ریدر است، که در مسیر گسترش پی‌دی‌اف، هر روز رشد کرده و امروزه پروندهٔ نصاب آن بیش از ۳۷ مگابایت حجم دارد؛ در مقابل، بقیهٔ پی‌دی‌اف خوان‌ها بسته‌های نصاب بسیار کوچک‌تری دارند، مانند فاکسیت ریدر که پروندهٔ نصاب آن تنها ۵ مگابایت است.






کرک کردن نرم‌افزار

کِرَک کردن نرم‌افزار یعنی تغییر دادن نرم‌افزار به منظور حذف کردن روش‌های حفاظتی آن نرم‌افزار. از جمله این روش‌های حفاظتی می‌توان به موارد زیر اشاره کرد:

ممانعت از کپی، نسخه نمایشی
آزمایشی
شماره سریال
قفل سخت‌افزار و ...

تا بتوان از آن بر خلاف خواسته ی سازندگان یا روشی که سازندگان در نظر گرفته اند استفاده کرد.

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








فرایند توسعه نرم‌افزار
فرایند تولید نرم‌افزار که با عنوان «چرخهٔ حیات تولید نرم‌افزار» نیز شناخته می‌شود، ساختاری است که روی توسعه و تولید محصولات نرم‌افزاری اعمال می‌شود. عبارت‌های مشابهی چون «چرخهٔ حیات نرم‌افزار» و «فرایند نرم‌افزار» در این رابطه استفاده می‌شود.الگوهای گوناگونی نظیر فرایندهای (خاص) وجود دارند که هر کدام خط مشی مختص (آن فرایندها) برای انجام کارها و فعالیت‌های متنوع در طول فرایندها را مشخص می‌کنند. برخی عنوان می‌کنند که «طرح چرخهٔ حیات» یک عبارت بسیار عمومی بوده و «فرایند تولید نرم‌افزار» عبارت تخصصی‌تر است. برای مثال خیلی از فرایندهای تولید نرم‌افزار ویژه‌ای هستند که خود زیر مجموعه چرخهٔ حیات حلزونی به شمار می‌روند.








فعالیت‌های تولید نرم‌افزار


برنامه‌ریزی (امکان‌سنجی)

از مهمترین کارها در تولید نرم‌افزار استخراج نیازمندی‌ها یا تحلیل نیازمندی‌های آن سامانه است. مشتریان عمومی معمولاً تصور مفهومی، انتزاعی و مبهمی از نتیجه نهایی خواسته‌هایشان دارند و نمی‌دانند به درستی نرم‌افزار مورد نظرشان چه کاری باید انجام دهد. در این مرحله نیازمندی‌های ناتمام، پیچیده و مبهم، و حتی متضاد توسط مهندسان نرم‌افزار ماهر شناسایی می‌شوند. در این برهه تکه نرم‌افزارهای آماده، تجربه‌شده و فعال ممکن است برای پایین آوردن ریسک (و مشکلات) نیازمندی‌ها کمک کنند.نخست نیازمندی‌های عمومی از کاربران جمع‌آوری شده و دامنه توسعه و تولید نرم‌افزار که باید تولید شود شناسایی و تحلیل می‌شود، سپس مستندات بصورت شفاف نوشته می‌شوند. معمولاً به این مستند، مستند دامنه یا محدوده سامانه اطلاق می‌شود.برخی قابلیت‌ها ممکن است در ابتدای پروژه به خاطر مسائل مالی یا نیازمندی‌های غیر شفاف و نامشخص خارج از محدوده پروژه باشند. اگر تولید و توسعه نرم‌افزار برون‌سپاری شود (یعنی به شرکت‌های خارجی محول شود) این مستندات به عنوان مستندات قانونی و حقوقی در نظر گرفته می‌شود؛ بنابراین در صورت اتفاق هرگونه دعوای حقوقی یا ابهام در مورد تعهدات داده‌شده به کاربر، این مسائل قابل شفاف‌سازی خواهد بود.








پیاده‌سازی، آزمون و مستندسازی

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








استقرار و نگهداری سامانه

استقرار و تحویل سامانه پس از اینکه آزمون مناسب را گذراند و برای انتشار، فروش یا هر نوع توزیع برای محیط کار نهایی تأیید شد انجام خواهد شد.آموزش نرم‌افزار و پشتیبانی خیلی مهم است و خیلی از تولیدکنندگان و توسعه‌دهندگان نرم‌افزارها اهمیت آن را درک نمی‌کنند. مهم نیست که چقدر زمان و برنامه‌ریزی توسط تیم تولید و توسعه نرم‌افزار برای ایجاد نرم‌افزار مصرف کرده‌اند اگر در آخر کار کاربری در سازمان نباشد تا از نرم‌افزار استفاده کند. مردم معمولاً در برابر تغییرات مقاومت نشان می‌دهند و از ماجراجویی در محیط ناآشنا اجتناب می‌کنند، برای همین در فاز استقرار این خیلی مهم است کلاس‌های آموزشی برای کاربران جدیدِ نرم‌افزار گذاشته شود.نگهداری و ارتقای نرم‌افزاری برای پوشش، مسائل پوشش داده‌نشده یا نیازمندی‌های تازه‌ای که ممکن است بوجود آیند مدت خیلی زیادی حتی بیشتر از زمان اولیه تولید نرم‌افزار زمان بگیرد. این مرحله ممکن است نیاز باشد تا کدهای برنامه‌نویسی تازه‌ای که در طراحی اصلی برنامه نیز دیده نشده اضافه شود تا مسائل و مشکلات دیده‌نشده حل شوند یا ممکن است کاربر درخواست عملیات اصلی دیگری کند و برنامه‌نویسی‌های تازه‌ای برای برآورده کردن نیازهای جدید انجام گیرد. اگر هزینه کار فاز نگهداری از ۲۵ درصد هزینه فاز قبلی (پیاده‌سازی) بیشتر باشد، این احتمال وجود دارد که کیفیت کلی فاز قبلی خیلی ضعیف بوده باشد. در این صورت مدیران پروژه باید گزینهٔ ایجاد مجدد سامانه (یا بخشی از سامانه) را قبل از اینکه هزینه‌های نگهداری غیر قابل کنترل شود را مطرح کنند.








الگوهای تولید نرم‌افزار

الگو آبشاری

الگو آبشاری فرایندها را به گونه‌ای نشان می‌دهد که کجا تولید کنندگان نرم‌افزار (برنامه‌نویسان) فازهای زیر را به ترتیب انجام دهند:# مشخصات مورد نیاز (تحلیل نیازمندی‌ها)








طراحی نرم‌افزار
پیاده‌سازی و یکپارچه‌سازی
تست نرم‌افزار (یا اعتبارسنجی)
گسترش نرم‌افزار (یا نصب)
نگهداری نرم‌افزاردر سختگیرانه‌ترین حالت آبشاری، بعد از اینکه هر فاز کاملاً پایان پذیرفت، به مرحله بعدی می‌رویم. بازبینی که اجازه ایجاد تغییرات در سامانه را بدهد (که ممکن است شامل تغییرات فرایندهای کنترل رسمی باشد) فقط قبل از رفتن به مرحله بعد امکان‌پذیر است. همچنین بازبینی ممکن است جهت اطمینان از پایان قطعی این فاز (مرحله) بکار گرفته شود. فازی که معیارهای تکمیل آن کامل شده، معمولاً با عنوان دروازه اطلاق می‌شود که نشان می‌دهد پروژه از فاز فعلی به فاز بعدی منتقل شده است. الگو آبشاری از بازبینی و تجدید نظر فازهای قبلی که کامل شده‌اند، جلوگیری می‌کند. این عدم انعطاف‌پذیری مفصل در الگو آبشاری محض، دست مایه انتقاد، پشتیبانی کنندگان الگوهای انعطاف پذیر است.








الگو حلزونی

خصوصیت کلیدی الگو حلزونی مدیریت ریسک در تمام مراحل چرخهٔ تولید نرم‌افزار است. در سال ۱۹۸۸ میلادی بری بوهم به صورت رسمی الگو حلزونی فرایند تولید نرم‌افزار را منتشر کرد، که ترکیبی از بعضی کلیدهای تایید شده متدولوژی الگو آبشاری و نمونه‌سازی سریع است، اما احساس می‌شود الگو ارائه شده تاکید در ناحیه های کلیدی (الگو آبشاری) را با متدهای دیگری همچون بررسی دقیق و تحلیل دائمی ریسک‌ها، سیستم‌های خاص مناسب برای سامانه پیچیده و بزرگ، کوتاه تر کرده است.الگو حلزونی این روش را با چهار نمودار که نشان دهند فعالیت های زیر است، به تصویر می کشد که فرایندها در چند مرحله تکرار انجام می‌شود:# تدوین و فرموله کردن برنامه ریزی خوب است برای شناسایی اهداف سیستم، قسمت های انتخاب شده جهت پیاده سازی برنامه، محدودیت‌های واضح و مشخص پروژه.# تحلیل ریسک و مشکلات سامانه: ارزیابی تحلیلی برنامه های انتخاب شده، جهت مشخص کردن چگونگی شناسایی و از بین بردن ریسک‌ها.

پیاده سازی پروژه: پیاده سازی تولید نرم‌افزار و تایید کارایی سامانه. الگو حلزونی مبتنی بر ریسک، بر اختیارانتخاب گزینه ها و محدودیت‌ها در سفارش‌ها برای پشتیبانی استفاده مجدد نرم‌افزار و اینکه کیفیت نرم‌افزار می‌تواند در ادغام اهداف ویژه در تولید نرم‌افزار کمک می‌کند، تاکید می‌کند.به هر حال الگو حلزونی شرایط محدود کننده زیر را دارا می باشد: # الگو حلزونی تحلیل ریسک‌ها را تاکید می‌کند و بنابراین کاربران باید این تحلیل را قبول کنند و فکری برایش کنند (این مطالب را در نظر داشته باشند). این مسئله نیازمند اعتماد متقابل و همچنین تمایل به هزینه کردن برای رفع ایرادات، در هنگام تولید نرم‌افزار است و این دلیل استفاده شدن این الگو تولید نرم‌افزار پروژه های بزرگ است.
درصورتیکه در هنگام پیاده‌سازی تحلیل ریسک‌ها تاثیر منفی روی سود پروژه زیاد باشد نبایستی از الگو حلزونی استفاده گردد.# تولید و توسعه دهندگان نرم‌افزار بصورت فعال حواسشان به ریسک‌های قابل حل خواهد بود و به دقت آنها را در الگو حلزونی تحلیل می‌کنند.مرحله اول تدوین و فرموله کردن یک برنامه برای رسیدن به اهداف با این محدودیت‌ها، و پس از آن تلاش برای پیدا کردن و حذف تمام خطرات بالقوه (ریسک‌های بالقوه) از طریق تجزیه و تحلیل دقیق و در صورت لزوم، با ساخت نمونه اولیه است. اگر برخی ریسک‌ها قابل حل نبودند در این صورت مشتریان باید تصمیم بگیرند که آیا می‌خواهند انجام پروژه را خاتمه دهند یا از ریسک‌های مورد نظر چشم پوشی کنند و به هر ترتیب ادامه دهند. در نهایت، نتایج ارزیابی شده و طراحی مرحله بعدی آغاز می‌شود.در حالت کلی یک الگو تکاملی است که به صورت مجموعه‌ای از نسخه‌های افزایشی توسعه میابد و همچنین در طی تکرارهای اولیه ممکن است یک الگو کاغذی یا یک نمونه اولیه باشد ولی در طول تکرارهای بعدی هر بار نسخه کامل‌تری از سامانه تولید می‌شود و این الگو به ۳ تا ۶ نواحی کاری تقسیم میشود.








روش تکرارشونده و افزایشی

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








روش توسعه سریع نرم‌افزار

روش توسعه سریع نرم‌افزار (به انگلیسی: Rapid application development)(مخفف انگلیسی: RAD) روش تکراری را بعنوان پایه کار استفاده می‌کند اما طرفداری نظریه سبک‌تر و محبوبیت بیشتر از روش سنتی است. روش سریع از بازخوردها به جای برنامه‌ریزی بعنوان سازوکار اصلی کنترل پروژه استفاده می‌کند. بازخوردها بوسیله آزمون‌های مرتب و انتشار پیاپی در بازه‌های زمانی کوتاه نرم‌افزارهای در حال تکامل تولید می‌شوند.روش‌های گوناگونی از فرایند سریع برای تولید نرم‌افزار استفاه می‌شود:








روش برنامه‌سازی مفرط


تولید نرم‌افزار به روش برنامه‌سازی مفرط (به انگلیسی: Extreme programming)(مخفف انگلیسی: XP) در فازهای خیلی کوچک (یا مداوم) انجام و با فرایندهای دسته‌ای قدیمی‌تر تطبیق داده می‌شوند. فاز اول (که عمداً کامل نشده) در طول مراحل ممکن است به جای اینکه ماه‌ها و سال‌ها در روش آبشاری طول بکشد تا کامل شود، یک روز یا یک هفته وقت بگیرد. ابتدا یک آزمون خودکار برای ایجاد اهداف اساسی تولید نرم‌افزار نوشته می‌شود. سپس (توسط دو برنامه‌نویس) برنامه‌نویسی انجام می‌گیرد که وقتی تمام آزمون‌ها را پشت سر گذاشته و دیگر هیچ آزمون مورد نیازی به ذهن برنامه‌نویسان نرسد کامل می‌شود. کار طراحی و معماری سیستم بعد از اینکه نه آزمونی وجود دارد و نه برنامه‌نویسی‌شده انجام می‌شود.طراحی توسط برنامه‌نویسان انجام می‌شود. (فقط مشخصات نهایی و ترکیب طراحی و کد در تمام فرایندها در روش سریع مشترک هستند) عملیات اصلی ناقص سامانه (توسط دست کم یکی از افراد گروه تولیدکننده و برنامه‌نویس) برای کاربران (یا برخی از کاربران) نصب یا نمایش داده می‌شوند. در اینجا تمام عوامل پروژه دوباره شروع به نوشتن آزمون برای قسمت‌های مهم سامانه خواهند کرد.
page1 - page2 - page3 - page4 - page5 - page7 - page8 - | 8:44 pm
خط مشی جاوا

یکی از ویژگی‌های جاوا قابل حمل بودن آن است. یعنی برنامهٔ نوشته شده به زبان جاوا باید به طور مشابهی در کامپیوترهای مختلف با سخت‌افزارهای متفاوت اجرا شود. و باید این توانایی را داشته باشد که برنامه یک بار نوشته شود، یک بار کامپایل شود و در همه کامپیوترها اجرا گردد. به این صورت که کد کامپایل شدهٔ جاوا را ذخیره می‌کند، اما نه به‌صورت کد ماشین بلکه به‌صورت بایت‌کد جاوا. دستورالعمل‌ها شبیه کد ماشین هستند، اما با ماشین‌های مجازی که به طور خاص برای سخت‌افزارهای مختلف نوشته شده‌اند، اجرا می‌شوند. در نهایت کاربر از سکوی جاوا نصب شده روی ماشین خود یا مرورگر وب استفاده می‌کند. کتابخانه‌های استاندارد یک راه عمومی برای دسترسی به ویژگی‌های خاص فراهم می‌کنند. مانند گرافیک، نخ‌کشی و شبکه. در بعضی از نسخه‌های ماشین مجازی جاوا، بایت‌کدها می‌توانند قبل و در زمان اجرای برنامه به کدهای محلی کامپایل شوند. فایدهٔ اصلی استفاده از بایت‌کد، قسمت کردن است. اما ترجمهٔ کلی یعنی برنامه‌های ترجمه شده تقریباً همیشه کندتر از برنامه‌های کامپایل شدهٔ محلی اجرا می‌شوند. این شکاف می‌تواند با چند تکنیک خوش‌بینانه که در کاربردهای JVM قبلی معرفی شد، کم شود. یکی از این تکنیک‌ها JIT است که بایت‌کد جاوا را به کد محلی ترجمه کرده و سپس آن را پنهان می‌کند. در نتیجه برنامه خیلی سریع‌تر نسبت به کدهای ترجمه شدهٔ خالص شروع و اجرا می‌شود. بیشتر VMهای پیشرفته، به‌صورت کامپایل مجدد پویا، در آنالیز VM، رفتار برنامهٔ اجرا شده و کامپایل مجدد انتخاب شده و بهینه‌سازی قسمت‌های برنامه، استفاده می‌شوند. کامپایل مجدد پویا می‌تواند کامپایل ایستا را بهینه‌سازی کند. زیرا می‌تواند قسمت hot spot برنامه و گاهی حلقه‌های داخلی که ممکن است زمان اجرای برنامه را افزایش دهند را تشخیص دهد. کامپایل JIT و کامپایل مجدد پویا به برنامه‌های جاوا اجازه می‌دهد که سرعت اجرای کدهای محلی بدون از دست دادن قابلیت انتقال افزایش پیدا کند.





تکنیک بعدی به عنوان کامپایل ایستا شناخته شده‌است. که کامپایل مستقیم به کدهای محلی است مانند بسیاری از کامپایلرهای قدیمی. کامپایلر ایستای جاوا، بایت‌کدها را به کدهای شی محلی ترجمه می‌کند.

کارایی جاوا نسبت به نسخه‌های اولیه بیشتر شد. در تعدادی از تست‌ها نشان داده شد که کارایی کامپایلرJIT کاملاًَ مشابه کامپایلر محلی شد. عملکرد کامپایلرها لزوماً کارایی کدهای کامپایل شده را نشان نمی‌دهند. یکی از پیشرفت‌های بی نظیر در در زمان اجرای ماشین این بود که خطاها ماشین را دچار اشکال نمی‌کردند. علاوه بر این در زمان اجرای ماشینی مانند جاوا وسایلی وجود دارد که به زمان اجرای ماشین متصل شده و هر زمانی که یک استثنا رخ می‌دهد، اطلاعات اشکال زدایی که در حافظه وجود دارد، ثبت می‌کنند.


پیاده‌سازی
شرکت سان میکروسیستم مجوز رسمی برای پلت فرم استاندارد جاوا را به مایکروسافت ویندوز, لینوکس، و سولاریس (سیستم‌عامل). داده‌است. همچنین محیط‌های دیگری برای دیگر پلت فرم‌ها فراهم آورده‌است. علامت تجاری مجوز شرکت سان میکروسیستم طوری بود که با همهٔ پیاده‌سازی‌ها سازگار باشد. به علت اختلاف قانونی که با ماکروسافت پیدا کرد، زمانی که شرکت سان ادعا کرد که پیاده‌سازی ماکروسافت از RMI یا JNI پشتیبانی نکرده و ویژگی‌های خاصی را برای خودش اضافه کرده‌است. شرکت سان در سال ۱۹۹۷ پیگیری قانونی کرد و در سال ۲۰۰۱ در توافقی ۲۰ میلیون دلاری برنده شد. در نتیجه کمی بعدماکروسافت جاوا را به ویندوز فرستاد. در نسخهٔ اخیر ویندوز، مرورگر اینترنت نمی‌تواند از جاوا پلت فرم پشتیبانی کند. شرکت سان و دیگران یک سیستم اجرای جاوای رایگان برای آنها و نسخه‌های دیگر ویندوز فراهم آوردند.
اداره خودکار حافظه

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

یکی از عقایدی که پشت سر مدل ادارهٔ حافظهٔ خودکار جاوا وجود دارد، این است که برنامه‌نویس هزینهٔ اجرای ادارهٔ دستی حافظه را نادیده می‌گیرد. در بعضی از زبان‌ها حافظه لازم برای ایجاد یک شی، به صورت ضمنی و بدون شرط، به پشته تخصیص داده می‌شود. و یا به‌طور صریح اختصاص داده شده و از heap بازگردانده می‌شود. در هر کدام از این راه‌ها، مسئولیت ادارهٔ اقامت حافظه با برنامه‌نویس است. اگر برنامه شی را برنگرداند، سوراخ حافظه اتفاق می‌افتد. اگر برنامه تلاش کند به حافظه‌ای را که هم‌اکنون بازگردانده شده، دستیابی پیدا کند یا برگرداند، نتیجه تعریف شده نیست و ممکن است برنامه بی‌ثبات شده و یا تخریب شود. این ممکن است با استفاده از اشاره‌گر مدتی باقی بماند، اما سرباری و پیچیدگی برنامه زیاد می‌شود. بازیافت حافظه اجازه دارد در هر زمانی اتفاق بیفتد. به‌طوری که این زمانی اتفاق می‌افتد که برنامه بی‌کار باشد. اگر حافظهٔ خالی کافی برای تخصیص شی جدید در هیپ وجود نداشته باشد، ممکن است برنامه برای چند دقیقه متوقف شود. در جایی که زمان پاسخ یا اجرا مهم باشد، ادارهٔ حافظه و منابع اشیا استفاده می‌شوند.

جاوا از نوع اشاره‌گر ریاضی C و ++C پشتیبانی نمی‌کند. در جایی که آدرس اشیا و اعداد صحیح می‌توانند به جای هم استفاده شوند. همانند ++C و بعضی زبان‌های شی‌گرای دیگر، متغیرهای نوع‌های اولیهٔ جاوا شی‌گرا نبودند. مقدار نوع‌های اولیه، مستقیماً در فیلدها ذخیره می‌شوند. در فیلدها (برای اشیا) و در پشته (برای توابع)، بیشتر از هیپ استفاده می‌شود. این یک تصمیم هوشیارانه توسط طراح جاوا برای اجرا است. به همین دلیل جاوا یک زبان شی‌گرای خالص به حساب نمی‌آید.

گرامر
گرامر جاوا وسیع‌تر از ++C است و برخلاف ++C که ترکیبی است از ساختارها و شی‌گرایی، زبان جاوا یک زبان شی‌گرای خالص می‌باشد. فقط نوع دادة اصلی از این قاعده مستثنی است. جاوا بسیاری از ویژگی‌ها را پشتیبانی می‌کند و از کلاس‌ها برای ساده‌تر کردن برنامه‌نویسی و کاهش خطا استفاده می‌کند.



بر طبق قرارداد فایل هل بعد از کلاس‌های عمومی نام گذاری می‌شوند. سپس باید پسوند java را به این صورت اضافه کرد: Hello world.java. این فایل اول باید با استفاده از کامپایلر جاوا به بایت کد کامپایل شود. در نتیجه فایل Hello world.class ایجاد می‌شود. این فایل قابل اجرا است. فایل جاوا ممکن است فقط یک کلاس عمومی داشته باشد. اما می‌تواند شامل چندین کلاس با دستیابی عمومی کمتر باشد.

کلاسی که به صورت خصوصی تعریف می‌شود ممکن است در فایل.java ذخیره شود. کامپایلر برای هر کلاسی که در فایل اصلی تعریف می‌شود یک کلاس فایل تولید می‌کند. که نام این کلاس فایل همنام کلاس است با پسوند.class

کلمه کلیدی public (عمومی) برای قسمت‌هایی که می‌توانند از کدهای کلاس‌های دیگر صدا زده بشوند، به کار برده می‌شود. کلمهٔ کلیدی static (ایستا) در جلوی یک تابع، یک تابع ایستا را که فقط وابسته به کلاس است و نه قابل استفاده برای نمونه‌هایی از کلاس، نشان می‌دهد. فقط تابع‌های ایستا می‌توانند توسط اشیا بدون مرجع صدا زده شوند. داده‌های ایستا به متغیرهایی که ایستا نیستند، نمی‌توانند دسترسی داشته باشند.

کلمهٔ کلیدی void (تهی) نشان می‌دهد که تابع main هیچ مقداری را بر نمی‌گرداند. اگر برنامهٔ جاوا بخواهد با خطا از برنامه خارج شود، باید system.exit() صدا زده شود. کلمهٔ main یک کلمهٔ کلیدی در زبان جاوا نیست. این نام واقعی تابعی است که جاوا برای فرستادن کنترل به برنامه، صدا می‌زند. برنامه جاوا ممکن است شامل چندین کلاس باشد که هر کدام دارای تابع main هستند.

تابع main باید آرایه‌ای از اشیا رشته‌ای را بپذیرد. تابع main می‌تواند از آرگومان‌های متغیر به شکل public static void main(string…args) استفاده کند که به تابع main اجازه می‌دهد اعدادی دلخواه از اشیا رشته‌ای را فراخوانی کند. پارامترstring[]args آرایه‌ای از اشیا رشته ایست که شامل تمام آرگومان‌هایی که به کلاس فرستاده می‌شود، است.

چاپ کردن، قسمتی از کتابخانهٔ استاندارد جاوا است. کلاس سیستم یک فیلد استاتیک عمومی به نام out تعریف کرده‌است. شی out یک نمونه از کلاس printstream است و شامل تعداد زیادی تابع برای چاپ کردن اطلاعات در خروجی استاندارد است. همچنین شامل println(string) برای اضافه کردن یک خط جدید برای رشتهٔ فرستاده شده اضافه می‌کند.
توزیع‌های جاوا

منظور از توزیع جاوا پیاده‌سازی‌های مختلفی است که برای کامپایلر جاوا و همچنین مجموعه کتابخانه‌های استاندارد زبان جاوا (JDK) وجود دارد. در حال حاضر چهار توزیع‌کنندهٔ عمده جاوا وجود دارند:

سان میکروسیستمز: توزیع کننده اصلی جاوا و مبدع آن می‌باشد. در اکثر موارد هنگامی که گفته می‌شود جاوا منظور توزیع سان می‌باشد.
GNU Classpath: این توزیع از سوی موسسه نرم‌افزارهای آزاد منتشر شده و تقریباً تمامی کتابخانه استاندارد زبان جاوا در آن بدون بهره‌گیری از توزیع شرکت سان از اول پیاده‌سازی شده‌است. یک کامپایلر به نام GNU Compiler for Java نیز برای کامپایل کردن کدهای جاوا توسط این موسسه ایجاد شده‌است. فلسفه انتخاب نام Classpath برای این پروژه رها کردن تکنولوژی جاوا از وابستگی به علامت تجاری جاوا است بطوریکه هیچ وابستگی یا محدودیتی برای استفاده آن از لحاظ قوانین حقوقی ایجاد نشود و از طرفی به خاطر وجود متغیر محیطی classpath در تمامی محیط‌های احرایی برنامه‌های جاوا، این نام به نوعی تکنولوژی جاوا را برای خواننده القا می‌کند. کامپایلر GNU توانایی ایجاد کد اجرایی (در مقابل بایت کد توزیع سان) را داراست. لازم به ذکر است که در حال حاضر شرکت سان تقریباً تمامی کدهای JDK را تحت مجوز نرم‌افزارهای آزاد به صورت متن باز منتشر کرده‌است و قول انتشار قسمت بسیار کوچکی از این مجموعه را که به‌دلیل استفاده از کدهای شرکت‌های ثانویه نتوانسته به صورت متن باز منتشر نماید در آینده نزدیک با بازنویسی این کدها داده‌است.
مایکروسافت #J: این در حقیقت یک توزیع جاوا نیست. بلکه زبانی مشابه می‌باشد که توسط مایکروسافت و در چارچوب.net ارائه شده‌است. انتظار اینکه در سیستم‌عاملی غیر از ویندوز هم اجرا شود را نداشته باشید.
AspectJ: این نیز یک زبان مجزا نیست. بلکه یک برنامه الحاقی می‌باشد که امکان برنامه نویسی Aspect Oriented را به جاوا می‌افزاید. این برنامه توسط بنیاد برنامه‌نویسی جلوه‌گرا و به صورت کدباز ارائه شده‌است.



کلاس‌های خاص

برنامک (برنامه‌های کاربردی کوچک)

اپلت جاواها برنامه‌هایی هستند که برای کاربردهایی نظیر نمایش در صفحات وب، ایجاد شده‌اند. واژهٔ import باعث می‌شود کامپایلر جاوا کلاس‌های javaapplet.Applet وjava.awt.Graphics را به کامپایل برنامه اضافه کند. کلاس Hello کلاس Applet را توسعه می‌دهد. کلاس اپلت چارچوبی برای کاربردهای گروهی برای نمایش و کنترل چرخهٔ زندگی اپلت، درست می‌کند. کلاس اپلت یک تابع پنجره‌ای مجرد است که برنامه‌های کوچکی با قابلیت نشان دادن واسط گرافیکی برای کاربر را فراهم می‌کند. کلاس Hello تابع موروثی print(Graphics) را از سوپر کلاس container باطل می‌کند، برای اینکه کدی که اپلت را نمایش می‌دهد، فراهم کند. تابع paint شی‌های گرافیکی را که شامل زمینه‌های گرافیکی هستند را می‌فرستد تا برای نمایش اپلت‌ها استفاده شوند. تابع paint برای نمایش "Hello world!" تابع drawstring(string,int,int) را صدا می‌زند.

جاوا سرولت
تکنولوژی servlet جاوا گسترس وب را به آسانی فراهم می‌کند. و شامل مکانیزم‌هایی برای توسعهٔ تابعی سرور وب و برایدسترسی به سیستم‌های تجاری موجود است.servlet قسمتی از javaEE است که به درخواست‌های مشتری پاسخ می‌دهد.

واژهٔ import کامپایلر جاوا را هدایت می‌کند که تمام کلاس‌های عمومی و واسط‌ها را از بسته‌های java.io وjava.servlet را در کامپایل وارد کند.

کلاس Hello کلاس Genericservlet را توسعه می‌دهد. کلاس Genericservlet واسطی برای سرور فراهم می‌کند تا درخواست را به servlet بفرستد و چرخهٔ زندگی servlet را کنترل کند.
JSP
صفحهٔ سرور جاوا قسمتی از سرور javaEE است که پاسخ تولید می‌کند. نوعاً صفحات HTML به درخواست‌های HTTP از مشتری.JSPها کد جاوا در صفحهٔ HTML را با استفاده از حائل <%and%> اضافه می‌کنند.JSP به javaservlet کامپایل می‌شود.

سوینگ
Swing کتابخانهٔ واسط گرافیکی کاربر است برای پلت فرم javaSE. ابزاری مشابه پنجره، GTK و motif توسط شرکت sun فراهم شده‌اند. این مثال کاربرد swing یک پنجرهٔ واحد همراه با Hello world را ایجاد می‌کند.

اولین جملهٔ import کامپایلر جاوا را هدایت می‌کندتا کلاس Borderlayout را از بستهٔ java.awt در جاوا به کامپایل اضافه کند. و import دوم همهٔ کلاس‌های عمومی و واسط آن‌ها را از بستهٔ javax.swing اضافه می‌کند. کلاس Hello کلاس Jframe را توسعه می‌دهد. کلاس Jframe یک پنجره با میلهٔ عنوان و کنترل بستن است.

زمانی که برنامه آغاز می‌شود، تابع main با JVM صدا زده می‌شود. این یک نمونهٔ جدید از کلاس Hello را ایجاد کرده و با صدا زدن تابع setvisible(boolean) با مقدار true نمایش داده می‌شود.
 
ساعت : 8:44 pm | نویسنده : admin | مطلب قبلی | مطلب بعدی
جاوا | next page | next page