8 تفاوت بین زبان برنامه نویسی جاوا و جاوا اسکریپت
علمی و تکنولوژی › نرم افزار
- 98/11/07بارزترین تفاوت جاوا و جاوا اسکریپت
برای مثال، یکی از سادهترین تفاوت جاوا و جاوا اسکریپت این است که زبان جاوا اسکریپت برای توسعه وباپلیکیشن و توسط شرکت Netscape طراحی شده و توسعه دهندگان فرانتاند جهت طراحی در سمت کاربر آن را مورد استفاده قرار میدهند. در مقابل، زبان جاوا توسط شرکت Sun Microsystems و با رهبری فردی به نام James Gosling توسعه داده شده است. به علاوه، همانطور که اشاره شد، کاربرد اصلی زبان برنامهنویسی جاوا اسکریپت جهت توسعه در سمت کاربر است، اما با این حال در سالهای اخیر شاهد افزوده شدن ویژگیهای جدیدی به این زبان بوده ایم. این ویژگی باعث شده تا این زبان قابلیت شیءگرایی داشته و برای توسعه در سمت سرور نیز با استفاده از node.js مورد استفاده قرار گیرد.
1. محیط اجرای جاوا و جاوا اسکریپت
جاوا زبانی کامپایلری و مفسری است بدین معنی که برنامه های نوشته شده به این زبان ابتدا به فایل هایی با پسوند .class و حاوی بایتکد کامپایل شده و سپس توسط ماشین مجازی جاوا (Java Virtual Machine یا به اختصار JVM) اجرا می شوند. از سوی دیگر، زبان برنامه نویسی جاوا اسکریپت به طور مستقیم توسط مرورگر اجرا می شود. به علاوه، برنامههای نوشتهشده به زبان جاوا در داخل JVM اجرا میشوند که برای اجرای آن نیاز به محیطهای JDK یا JRE است، اما برنامههای نوشتهشده با جاوا اسکریپت در داخل مرورگر اجرا میشوند که تقریباً تمامی مرورگرهای مدرن از زبان جاوا اسکریپت پشتیبانی میکنند.
2. Type (نوع) زبان جاوا و جاوا اسکریپت
جاوا اسکریپت یک زبان داینامیک تایپ است در حالی که جاوا یک زبان استاتیک تایپ به شمار می آید، بدین معنی که در زبان جاوا نوع متغیرها صریحاً در زمان کامپایل تعریف می شود و بدین ترتیب هر یک از متغیرها تنها مجاز به دریافت مقداری متناسب با تایپ آن هستند. از سوی دیگر، زبان جاوا اسکریپت داینامیکتایپ بوده و قابلیت انتساب مقادیری با تایپهای متفاوت مانند استرینگ، مقدار عددی و بولین دارند به طوری که نوع متغیر بسته به مقدار اختصاصیافته به آن در هنگام اجرا مشخص میگردد.
3. پشتیبانی از توابع بی نام جاوا و جاوا اسکریپت
زبان برنامه نویسی جاوا اسکریپت قابلیت تعریف یکسری تابع بی نام را دارا است. در واقع، توابع بی نام امکان پاس دادن یک تابع را به عنوان ورودی به تابع دیگر در اختیار توسعهدهندگان قرار میدهند و در صورت نیاز میتوان از این ویژگی زبان جاوا اسکریپت استفاده کرد. این در حالیست که زبان جاوا از چنین قابلیتی برخوردار نبوده و نمیتوان در آن تابعی را به عنوان ورودی به تابع دیگر پاس داد اما در نسخه 8 این زبان قابلیتی به نام توابع Lambda ارائه شده است که تا حدودی رفتاری مشابه توابع بینام در زبان جاوااسکریپت داشته و کدنویسی در این زبان را سادهتر کردهاند.
4. شیء گرایی در جاوا و جاوا اسکریپت
همانطور که اشاره شد، جاوا یک زبان کامپایلری شیء گرا است در حالی که زبان جاوا اسکریپت با وجود پشتیبانی از کلاس و آبجکت، یک زبان اسکریپتی است؛ بدین معنی که برای اجرا کامپایل نمی شود. بنابراین توسعه برنامه های بزرگ تجاری با به کارگیری زبان جاوا در مقایسه با جاوا اسکریپت بسیار سادهتر است. به علاوه، در زبان جاوا می توان کلاسهای مرتبط به یکدیگر را گروهبندی کرده و با فرمتهای JAR، WAR و EAR، به راحتی فرآیند دیپلوی آنها را کنترل کرد.
5.نحوه قابلیت اجرا در سیستم عامل های مختلف در جاوا و جاوا اسکریپت
احتمالاً با شعار معروف زبان برنامه نویسی جاوا موسوم به «یک بار بنویس، همه جا اجرایش کن» آشنا هستید. در واقع، شعار زبان جاوا حاکی از آن است که برنامههای نوشته شده با این زبان قابلیت اجرا روی تمامی پلتفرم ها را دارند، چرا که کدهای جاوا ابتدا کامپایل شده و به یکسری بایتکد تبدیل میشوند که این بایتکدها نیز روی تمامی پلتفرمها با استفاده از ماشین مجازی جاوا قابلاجرا هستند. از سوی دیگر، زبان جاوا اسکریپت تنها روی مرورگر اجرا شده و حتی ممکن است برخی کدهای خاصی که در فایرفاکس اجرا می شوند، در مرورگر اینترنت اکسپلورر 7 یا 8 اجرا نشوند. البته با توسعه لایبرری قدرتمند این زبان به نام jQuery مشکل عدم سازگاری کدهای ساده ی جاوا اسکریپت با مرورگرهای مختلف حل شده است.
6. تعریف اسکوپ لوکال در جاوا و جاوا اسکریپت
هر بلوک کد در زبان برنامهنویسی جاوا اسکوپ مختص خود را داراست. برای مثال، یک متغیر، خارج از کلاس مورد نظر و داخل یک بلوک کد تنها داخل همان بلوک قابلدسترسی است. در مقابل، در زبان برنامهنویسی جاوا اسکریپت هر تابع اسکوپ مختص خود را دارا بوده و هر متغیر در اسکوپ مربوط به تابعی قابلدسترسی هستند که در آن تعریف شده است. بنابراین، چنانچه متغیری خارج از اسکوپ توابع تعریفشده و متغیری هم نام با آن را داخل یکی از توابع مورد نظر تعریف کنیم، مقدار اختصاصیافته به متغیر تعریفشده در داخل تابع مد نظر قرار داده میشود و در سایر نقاط برنامه مورد استفاده قرار میگیرد.
7. Constructors در جاوا و جاوا اسکریپت
زبان جاوا از مفهومی تحت عنوان Constructor پشتیبانی میکند که با استفاده از آن، توسعه دهندگان میتوانند مقادیر مورد نظر را به آبجکتهای جدید ساختهشده از روی کلاس مربوطه اختصاص دهند. به علاوه، چنانچه کلاسی از کلاس دیگر در این زبان ارثبری کند و سپس در ادامه آبجکتی جدید از روی کلاس اصلی ساخته شود، در چنین شرایطی کانستراکتور کلاس اصلی پیش از کانستراکتور کلاس زیرشاخه اجرا خواهد شد. در مقابل، زبان جاوا اسکریپت نیز از مفهوم Constructor برخوردار است اما کانستراکتورها در این زبان به نوعی توابعی هم نام با کلاس مربوطه هستند که قوانین خاصی برای آنها تعریف نشده است و در صورت اجرا نیز صرفاً یکسری دستورات داخلی را اجرا کرده و مقداری را برنمیگردانند.
8. کاربردهای جاوا و جاوا اسکریپت
زبان برنامه نویسی جاوا یک زبان شیء گرا بوده و قابلیت توسعهی بسیاری از اپلیکیشنها را دارا است که از آن جمله میتوان به توسعه کارتهای اعتباری آنلاین تا توسعه در سمت سرور اشاره کرد. برای مثال، توسعه دهندگان میتوانند با زبان برنامهنویسی اندروید و بر پایه زبان جاوا نسبت به توسعه اپلیکیشنهای اندرویدی اقدام کنند. همچنین لایبرری از پیش تعریف شده این زبان تحت عنوان Swing نیز امکان توسعه اپلیکیشنهای دسکتاپ را برای توسعهدهندگان فراهم میآورد. به علاوه، پلتفرم Java EE از این زبان نیز قابلیت توسعه وباپلیکیشنها و همچنین اپلیکیشنهای بزرگ تجاری را دارا است.
در نقطه مقابل، زبان برنامهنویسی جاوا اسکریپت را داریم که عمدتاً جهت توسعه فرانتاند طراحی شده و امکان تعامل کاربر با صفحات وب را فراهم میآورد. گرچه ابزارهای جایگزینی همچون Flash نیز امکان افزودن ویژگیهای تعاملی به صفحات وب را دارند اما زبان جاوا اسکریپت به عنوان یک زبان توسعه فرانتاند از محبوبیت بیشتری در میان توسعهدهندگان برخوردار است. به علاوه، لایبرری قدرتمند این زبان تحت عنوان jQuery قابلیتهای کاربردی فراوانی دارا است که ویژگیهای کلیدی بسیاری را در اختیار توسعهدهندگان فرانتاند قرار میدهد.