تیک۴

جاوا اسکریپت آینده توسعه برنامه‌های کاربردی را در دستان خود گرفت

جاوا اسکریپت آینده توسعه برنامه‌های کاربردی را در دستان خود گرفت

جاوا اسکریپت آینده توسعه
جاوا اسکریپت آینده توسعه برنامه‌های کاربردی را در دستان خود گرفت

جاوا اسکریپت آینده توسعه برنامه‌های کاربردی را چگونه در دستان خود گرفت

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

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

سرآغاز معروفیت جاوا اسکریپت

جاوا اسکریپت اولین بار در ماه می ‎ ۱۹۹۵توسط”نت‌اسکیپ”به‌عنوان یک زبان اسکریپت‌نویسی تک‌رشته‎ای معرفی شد تا کمک حال مرورگر آن‌ها باشد.

معروفیت این زبان اسکریپت‌نویسی طی ۵ سال اخیر به‌واسطه چند عامل توسعه کلیدی صورت گرفته است.

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

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

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

تنها راه حل این مشکل،این است که در هر دو سمت از کدهای مشترک استفاده کنید.

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

دلایل استفاده از جاوا اسکریپت

۱-مناسب‎تر برای معماری‎های توزیع‌پذیر

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

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

متأسفانه با فراگیر شدن معمار‎ی‎های توزیع‌پذیر(برای مثال اپلیکیشن‎های یک‌صفحه‎ای و میکروسرویس‎ها)این دوباره‌نویسی‎ها شایع‎تر شده است و همین باعث پیچیده‎تر شدن و سخت شدن نگهداری اپلیکیشن‎ها می‎شود.

برای مثال نگاهی به یک اپلیکیشن تک‌صفحه‎ای داشته باشیم؛در اینجا شما یک رابطه کلاینت سرور دارید.

در سمت کلاینت(همان مرورگر)شما نیاز به ذخیره فهرستی از سیاست‌گذاری‎های امنیتی در برابر برخی از موارد پیش رو دارید.این سیاست‌گذاری‎های امنیتی بسیار حیاتی هستند.

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

آن‌ها به این دلیل مهم هستند که شما نمی‎خواهید کارهایی که انجام‌ناپذیر هستند توسط کاربران قابل مشاهده باشد.

مشکل اینجا است که شما باید این اطلاعات را روی سرور نیز ذخیره کنید.

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

بنابراین شما در وضعیتی قرار دارید که یک اپلیکیشن مرورگر نوشته شده با جاوا اسکریپت دارید که سمت انتهایی(سرور)آن با چیزی شبیه جاوا نوشته شده است.

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

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

راه نجات:

جاوا اسکریپت سمت سرور

اکوسیستم جاوا اسکریپت به‌سرعت در حال رشد است و این سرعت با ظهور یک ابزار میزبانی سمت سرور به‌نام 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،اندروید و حتی محیط دسکتاپ ویندوز و مک نیز فراهم شده است و حالا برنامه‌نویسان می‎توانند محدودیت‎های سازگاری برنامه‎های خود را کمتر کنند.
گسترش‌پذیری در محیط‎های پرتراکم و سنگین:ماهیت تک‌رشته‎ای جاوا اسکریپت شیوه‎ای از طراحی نرم‌افزار را فراهم می‎کند که درنهایت باعث افزایش عملکرد و گسترش‌پذیری خیلی از پروژه‎های نرم‌افزاری و خدمات تحت وب خواهد شد.

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

خروج از نسخه موبایل