جاوا اسکریپت آینده توسعه برنامههای کاربردی را چگونه در دستان خود گرفت
جاوا اسکریپت آینده توسعه برنامه های کاربردی را در دستان خود دارد،ولی ماهیت فناوری بهگونهای است که نمیتوان آینده آن را به طور دقیق پیشبینی کرد و غافلگیریهای زیادی به همراه دارد.
چیزهایی که هرگز قرار نبود برای معروف شدن طراحی شوند ناگهان معروف شدند و در این میان هیچکدام غافلگیرکنندهتر از جاوا اسکریپت نیست که اخیراً در صدر زبانهای شیءگرا قرار گرفته است.
سرآغاز معروفیت جاوا اسکریپت
جاوا اسکریپت اولین بار در ماه می ۱۹۹۵توسط”نتاسکیپ”بهعنوان یک زبان اسکریپتنویسی تکرشتهای معرفی شد تا کمک حال مرورگر آنها باشد.
معروفیت این زبان اسکریپتنویسی طی ۵ سال اخیر بهواسطه چند عامل توسعه کلیدی صورت گرفته است.
در یک جمع آوری اطلاعات آماری،دادههای جمعآوری شده توسط ردمونک نشان میدهد جاوا اسکریپت به نسبت سایر زبانهای مطرح و برجسته از محبوبیت بیشتری برخوردار بوده است.
ابزار بهتر،پشتیبانی و پیشرفت بیشتر در این زبان سبب شد تا بهآهستگی موقعیت خود را بهعنوان یک بازیگر شاخص در صنعت توسعه نرمافزار مستحکم کند.
وقتی مرورگر و سرور اطلاعات یکسانی را ذخیره میکنند،ناخودآگاه مشکل دوبارهنویسی پیش میآید که اغلب ناشی از استفاده از زبانهای مختلف در سیستمهای توزیع شده است.
تنها راه حل این مشکل،این است که در هر دو سمت از کدهای مشترک استفاده کنید.
اما چنین امکانی وجود ندارد،زیرا ما آنها را با زبانهای مختلف نوشتهایم و جاوا اسکریپت تنها زبان قابل فهم توسط مرورگر است.
دلایل استفاده از جاوا اسکریپت
۱-مناسبتر برای معماریهای توزیعپذیر
یکی از بزرگترین مشکلات در زمان نوشتن یک نرمافزار،ضرورت نیاز به دوبارهنویسی آن است.
بهمحض اینکه دوبارهنویسی اتفاق میافتد بلافاصله هزینههای توسعه نیز افزایش پیدا میکند زیرا هر تغییری که در نسخه اصلی صورت میگیرد باید دو بار انجام شود.
متأسفانه با فراگیر شدن معماریهای توزیعپذیر(برای مثال اپلیکیشنهای یکصفحهای و میکروسرویسها)این دوبارهنویسیها شایعتر شده است و همین باعث پیچیدهتر شدن و سخت شدن نگهداری اپلیکیشنها میشود.
برای مثال نگاهی به یک اپلیکیشن تکصفحهای داشته باشیم؛در اینجا شما یک رابطه کلاینت سرور دارید.
در سمت کلاینت(همان مرورگر)شما نیاز به ذخیره فهرستی از سیاستگذاریهای امنیتی در برابر برخی از موارد پیش رو دارید.این سیاستگذاریهای امنیتی بسیار حیاتی هستند.
آنها ممکن است شامل مواردی باشند که هم قابل پاک شدن و هم بهروزرسانی هستند.
آنها به این دلیل مهم هستند که شما نمیخواهید کارهایی که انجامناپذیر هستند توسط کاربران قابل مشاهده باشد.
مشکل اینجا است که شما باید این اطلاعات را روی سرور نیز ذخیره کنید.
زیرا اگر شما این سیاستگذاریها را روی سرور نیز اعمال نکرده باشید،هر فردی که کمی با دانش فنی آشنا باشد میتواند درخواستهای جعلی به آن ارسال کند.
بنابراین شما در وضعیتی قرار دارید که یک اپلیکیشن مرورگر نوشته شده با جاوا اسکریپت دارید که سمت انتهایی(سرور)آن با چیزی شبیه جاوا نوشته شده است.
وقتی مرورگر و سرور اطلاعات یکسانی را ذخیره میکنند ناخودآگاه مشکل دوبارهنویسی پیش میآید که اغلب ناشی از استفاده از زبانهای مختلف در سیستمهای توزیع شده است.
تنها راه حل این مشکل این است که در هر دو سمت از کدهای مشترک استفاده کنید.اما چنین امکانی وجود ندارد زیرا ما آنها را با زبانهای مختلف نوشتهایم و جاوا اسکریپت تنها زبان قابل فهم توسط مرورگر است.
راه نجات:
جاوا اسکریپت سمت سرور
اکوسیستم جاوا اسکریپت بهسرعت در حال رشد است و این سرعت با ظهور یک ابزار میزبانی سمت سرور بهنام Node.js که تحت موتور Google Chrome v8 اجرا میشود شتاب بیشتری گرفته است.
Node.js به جاوا اسکریپت اجازه میدهد تا روی یک وب سرور اجرا شود.
چنین قابلیتی نهتنها گزینههای طراحی و معماری نرمافزار را افزایش میدهد بلکه با توجه به ماهیت عملکرد این زبان مشخص شده است که بسیار گسترشپذیر میباشد.
خیلی از شرکتهای بزرگ مثل نتفلیکس و والمارت تصمیم گرفتند بهجای استفاده از گزینههای معمول سمت سرور مثل رابی،پیاچپی، سی شارپ،جاوا و غیره معماریهای پایه خود را با Node.js انجام دهند.
با در اختیار داشتن گزینه استفاده از جاوا اسکریپت در هر دو سمت معماری نرمافزار شما میتوانید سیستمهای توزیعپذیری را توسعه دهید که میتوانند از ماژولهای مشترک استفاده کنند.
با استفاده از جاوا اسکریپت سمت سرور سیاستگذاریها حالا در یک مکان واحد تثبیت میشوند.
استفاده از جاوا اسکریپت سمت سرور همچنین به طراحی میکروسرویسها نیز کمک میکند زیرا همان تکنیک یکسان را میتوان برای ساخت میکروسرویسهایی که از کدهای مشترک استفاده میکنند به کار گرفت.
۲-کارآمدتر برای استفاده در سکوهای مختلف
امروزه طرح تحول دیجیتال در بین سکوهای مختلف به یک موضوع مهم تبدیل شده است.
حالا دیگر برنامهنویس باید بتواند یک بار کدنویسی و اپلیکیشن خود را در هر محیطی مستقر کند.
جاوا اسکریپت بهآرامی در حال سازگار شدن با خیلی از سکوها است.
حتی در سال ۲۰۰۷ جف آتوود در یک پست وبلاگی معروف اعلام کرده بود که جاوا اسکریپت درنهایت به هر اپلیکیشنی که به آن اجازه دهد وارد خواهد شد.
او گفته بود:«هر اپلیکیشنی را که بتوان با جاوا اسکریپت نوشت،سرانجام با جاوا اسکریپت نوشته خواهد شد.»
جاوا اسکریپت در حال تبدیل شدن به یک ابزار کامل است و از سه ناحیه عمده مورد علاقه توسعهدهندگان یعنی وب، دسکتاپ و موبایل پشتیبانی میکند.
در ادامه نگاهی کلی به تنها چند نمونه از فریمورکهایی که از جاوا اسکریپت بهعنوان یک زبان چندسکویی قدرت میگیرند خواهیم داشت.
سکو موبایل (IOS و اندروید) React Native و NativeScript دو نمونه از فریمورکهای اصلی هستند که اجازه میدهند کدهای جاوا اسکریپت روی موبایل اجرا شود.
React توسط فیسبوک برای سکوی موبایل استفاده میشد.سکوی دسکتاپ(مک و ویندوز)NW.js و Electron به توسعهدهندگان اجازه میدهد تا مجموعهای از ابزارهای مورد نیاز برای اپلیکیشنهای وب تحت سکوی دسکتاپ را در اختیار داشته باشند.
وب(تمام مرورگرها)Angular و Meteor مثالهایی از فریمورکهای اپلیکیشن تکصفحهای هستند که از جاوا اسکریپت استفاده میکنند و به اپلیکیشنهای تجاری پیچیده اجازه میدهد تا داخل مرورگر اجرا شوند.
۳-کاملاً گسترشپذیر بودن
جالب اینجا است که بزرگترین نقطه ضعف جاوا اسکریپت حالا به یک قدرت چشمگیر برای آن تبدیل شده است.
تفاوت اصلی بین جاوا اسکریپت با اغلب زبانهای دیگر مثل Ruby, Java و C# در تکرشتهای بودن آن است. اگر شما توسعهدهنده نباشید،این مسئله چندان اهمیتی برای شما ندارد.
به همین دلیل ما سعی میکنیم تنها به توضیح مختصری درباره آن بسنده کنیم.
اغلب زبانها قابلیتی دارند که به آنها اجازه میدهد تا بیش از یک مورد از خود را اجرا کنند.
آنها دستورالعملها را در یک فهرست بلند از کارهایی که باید انجام شود قرار میدهند. سپس در فرآیند پردازشی این دستورالعملها یک به یک اجرا میشوند.
به چنین ساختاری فرآیند چندرشتهای گفته میشود و برنامهنویس در هنگام کدنویسی میتواند از مزایای این قابلیت استفاده کند.
از جمله قابلیتهای چندرشته بودن میتوان به نوشتن وب سرورهایی که نیاز به پردازش همزمان تعداد بسیار زیادی کاربر دارند اشاره کرد.
اما چنین امکانی معایب خاص خود را هم دارد.مثلا تمام این جابهجایی بین پردازشها بهدلیل نیاز به ورود و خروج مداوم دستورالعملها و وظایف به حافظه،زمان پردازنده را هدر میدهد.
جاوا اسکریپت ذاتاً یک ساختار تکرشتهای دارد.
به این معنا که برنامهنویس امکان بهرهمندی از قابلیت پردازش چندرشتهای را از دست میدهد و تمام کدهای جاوا اسکریپت در یک رشته اجرا میشوند.
از آنجا که چنین ساختاری طراحان سیستم را محدود میکند،آنها باید کدها را بهگونهای بنویسند که فرآیند پردازش را مختل نکند.
نام این راهکار معماری non-blocking است.
چنین ساختاری کار را برای برنامهنویس مشکلتر میکند زیرا آنها باید کدهایی را بنویسند که بهجای دستورات خطی با رویدادها سر و کار دارد.
نتیجه کار این گونه خواهد شد که برنامهنویس بهجای محیطهای چندرشتهای که منابع در آن در یک صف پردازش قرار میگیرند،کدهایی را مینویسد که بلافاصله منابع را آزاد و از مسدود شدن رشته توسط جاوا اسکریپت جلوگیری میکند.
این کار باعث افزایش قابل توجه عملکرد اپلیکیشنهایی که پردازشهای سنگین را اجرا میکنند میشود و آن را برای محیط وب ایدهآل میکند.
چنین شیوهای نیز با معایبی همراه است.
به همین دلیل است که جاوا اسکریپت در انجام درخواستهایی که نیاز به نگه داشتن پردازنده برای انجام وظایف طولانی مدت دارند خوب نیست.(برای مثال نوشتن دادههای استریم شده طولانی روی دیسک یا پردازش گرافیک لحظهای از قبیل بازیهای آنلاین)
ماهیت تکرشتهای جاوا اسکریپت شیوهای از طراحی نرمافزار را فراهم میکند که درنهایت باعث افزایش عملکرد و گسترشپذیری خیلی از پروژههای نرمافزاری و خدمات تحت وب خواهد شد.
چنین قابلیتی جاوا اسکریپت را به یک ابزار قدرتمند برای استفاده در سازمانهایی که میل به گسترش ترافیک خود با حداقل قیمت را دارند تبدیل کرده است.
در نتیجه همین قابلیتها هستند که این زبان برنامهنویسی را تا این اندازه معروف و محبوب کرده است.
این ویژگیها را میتوان این گونه خلاصه کرد.
جاوا اسکریپت سمت سرور:میتوان آن را با استفاده از Node.js روی سرور اجرا کرد و امکان یکپارچهسازی وب اپلیکیشنها را بهشکل یک کد واحد فراهم ساخت.
این کار پیچیده شدن اپلیکیشنهای بزرگ را کم میکند.
طراحی و معماریهای پیچیده با این روش بهتر قابل انجام است،زیرا دیگر مشکل دوبارهنویسی کدها را نخواهیم داشت.
پشتیبانی ذاتی از چند سکو:با پیشرفت این زبان حالا امکان پشتیبانی از سکوهایIOS،اندروید و حتی محیط دسکتاپ ویندوز و مک نیز فراهم شده است و حالا برنامهنویسان میتوانند محدودیتهای سازگاری برنامههای خود را کمتر کنند.
گسترشپذیری در محیطهای پرتراکم و سنگین:ماهیت تکرشتهای جاوا اسکریپت شیوهای از طراحی نرمافزار را فراهم میکند که درنهایت باعث افزایش عملکرد و گسترشپذیری خیلی از پروژههای نرمافزاری و خدمات تحت وب خواهد شد.
چنین قابلیتی جاوا اسکریپت را به یک ابزار قدرتمند برای استفاده در سازمانهایی که تمایل به گسترش ترافیک خود با حداقل قیمت را دارند،تبدیل کرده است.