گویش برنامه نویسی جاوا (JAVA) در 23 مه 1995 (برابر با 2 خرداد ماه 1374) از سوی جیمز گاسلینگ (James Gosling) پباده سازی شدهاست. جاوا به مدرک وب سایت دارای اعتبار Tiobe از سال 2001 همواره تحت عنوان اولی یا این که دومی لهجه برنامهنویسی جهان مطرح بوده میباشد. در تصویر تحت درصد جایگاه کسب گردیده این گویش را فی مابین همگی گویشهای برنامهنویسی در طی 18 سال اخیر مشاهده میکنید.
تا جایی که به جاوا مربوط میگردد، همگی چیز از اوایل ده سال 1990 ابتدا شد، یعنی وقتی که کمپانی سان مایکروسیستمز (Sun Microsystems) استارت به گسترش ورژن بهتری از ++C کرد که بتواند به سادگی پرتابل شود، برای اشخاص مبتدی و تازه کار مناسب باشد و به رئیس خود کار خاطر بپردازد. پژوهش ها این موسسه سبب به رفتار یک گویش به طور کاملً نو شد که اسم آن از بین آبادیها اسم پیشنهادی در اتاق گردهمایی معرفیش تعیین شد. امروزه لوگوی جاوا به طور فنجان قهوهای که از آن بخار میدمد، به علامت جهانی برنامهنویسی تبدیل شدهاست. در واقع دیگر کسی نمیداند که رابطه برنامهنویسها با کافئین سابقخیس میباشد؛ یا این که ارتباطشان با جاوا که امروزه مترادف و هم معنی با قهوه میباشد.
دراین نوشته به بازنگری بی نقص و جامع این لهجه برنامهنویسی، خصوصیتها، مزایا، معایب، بازار فعالیت، کتابخانهها، کاربردها و هر آنچه که ممکن میباشد در خصوص جاوا بخواهید بدانید می پردازیم.
جاوا چه میباشد؟
جاوا یک گویش برنامهنویسی چندمنظوره و شیگرا میباشد که تا حدودی متعددی به C و ++C شباهت داراست؛ البته به کارگیری از آن سهل وآسانخیس میباشد و قابلیت و امکان ایجاد برنامههایی قادر با آن موجود هست. ولی تعریفی که کمپانی سان مایکروسیستمز در سال 2000 ارائه نموده است، شاید از تعریف و تمجید فوق گویاتر باشد:
جاوا لهجه رایانهای بی آلایش، شیگرا، مطلوب کانال، تفسیرشدنی، مستحکم، امن، بدون معماری، پرتابل، با تلاش بالا، چندنخی و دینامیک میباشد.
بهدنبال هرکدام از مختصات فوق را به نحوه مستقلای گزینه باز نگری قرار می دهیم:
جاوا یک لهجه بی آلایش میباشد
جاوا در بالا بر پایه ی گویشهای C و ++C و با حذف بعضی خصوصیتهایی که امکان سردرگم کننده داشتند مدلسازی شد. از گزاره این خصوصیتها میقدرت به اشارهگرها، پیادهسازی چندباره وراثت و لود بیش تر از حد عملگرها اشاره نمود که در جاوا حذف شدند. یکی خصوصیتهایی که در C++/C وجود نداشت؛ البته جزو خصوصیتهای اساسی جاوا به شمار میاید، قابلیت و امکان بازیافت خاطر (garbage-collection) میباشد که به صورت خود کار شی ءها و آرایههای بی استعمال را حذف میکند.
جاوا یک لهجه شیگرا میباشد
تمرکز شیگرایی جاوا موجب شدهاست که توسعه و گسترشدهندگانی که از این لهجه استعمال می کنند، از آن برای حل یک مورد استعمال نمایند و خیر سروکله زدن با آن برای رفع محدودیتهای زمینه. این شرایط موجب تمایز در بین جاوا و C شدهاست. برای مثال در صورتیکه میخواهید برنامهای برای یک اکانت بانکی بنویسید، در جاوا فقط می بایست به ذخیرهسازی شی اکانت بانکی بپردازید؛ البته در C می بایست موقعیت اکانت (تراز اکانت) و رفتارهایی مانند واریز یا این که برداشت را به صورت جداگانه برنامهنویسی فرمایید.
جاوا یک گویش مبنی بر کانال میباشد
کتابخانه پهناور کانال در جاوا منجر شدهاست که قابلیت و امکان عمل با پروتکل در اختیار گرفتن انتقال/پروتکل وب (TCP/IP) و پروتکلهای کانال مانند HTTP (پروتکل انتقال ابرمتن) و FTP (پروتکل انتقال پوشه) معمولیخیس شود و همینطور وظیفه تولید اتصالهای کانال آسودهخیس گشته میباشد. به علاوه برنامههای جاوا میتوانند از روش کانال TCP/IP، از روش URLها، به اشیاء دسترسی داشته باشند و این دسترسی به به عبارتی آسانی دسترسی روی سیستم فولدر محلی میباشد.
جاوا یک لهجه تعبیروتفسیر شدهاست
یک برنامه جاوا در حین اجرا به صورت غیر بدون واسطه از روش یک ماشین مجازی (که بازنمایی قابل انعطافافزاری از یک پلتفرم خیالی میباشد) و گوشه و کنار روزگار اجرای مربوط به آن با واسطه روی یک پلتفرم زیرساخت (مانند ویندوز یا این که لینوکس) اجرا میشود. این ماشین مجازی بایتکدها (راهبردها و دادههای دارای ربط) را از روش تعبیر و تفسیر به راهبردهای یگانه پلتفرم ترجمه می کند. مراد از تعبیروتفسیر، کار شناسایی مضمون راهبردها و بعد گزینش راهبردهای یگانه پلتفرم برای اجرا میباشد. درپی ماشین مجازی این راهبردهای یگانه پلتفرم را اجرا مینماید. این خصوصیت تفسیری بودن جاوا سبب شدهاست که خطایابی برنامههای جاوا سهلخیس شود، زیرا اکثر زمان ها داده ها در حین کامپایل در بنا شده در فضا اجرا وجود دارا هستند. تفسیری بودن جاوا همینطور قابلیت و امکان به تأخیر پرتاب کردن لینک و پیوند دربین قطعات متفاوت برنامه جاوا تا زمانه اجرا را مهیا ساخته میباشد و این موضوع موجب ارتقاء سرعت بسط برنامه میگردد.
جاوا یک لهجه مستحکم میباشد
برنامههای جاوا بایستی قابل اعتماد باشند، چون هم در نرم افزارهای مصرفی و هم مأموریتهای حیاتی به کار گیری می گردند که از پخشکنندههای بلوری تا ناوبری خودرو یا این که سیستمهای در دست گرفتن هوایی را دربرگیرنده میگردد. خصوصیتهای لهجه جاوا که سبب استحکام آن می شوند، مشتمل بر اعلانها، بازبینی مجدد دسته داده، یک توشه در طول کامپایل و توشه دیگر در حین اجرا (برای دوری از عدم تطبیق ورژنها)، آرایههای حقیقی وواقعی با بازبینی اتوماتیک کرانها و ترک اشارهگرها میباشد.
جنبه دیگری که موجب استحکام جاوا می شود، این میباشد که رینگها به جای عبارتهای عدد درست که در آن 0 برابر «اشتباه» و مقادیر غیر صفر برابر با «صحیح» میباشند، می بایست توسط عبارتهای بولی در اختیار گرفتن شوند. به عنوان مثال برخلاف C، در جاوا رینگهایی مانند عبارت تحت
++while (x) x
مجاز نیستند؛ چون این رینگ ممکن میباشد در جایی که انتظار میرود متوقف نشود. به جای آن می بایست عبارتهای بولی صریحی مانند ذیل
;++while (x!= 10) x
استعمال شود، یعنی رینگ تاهنگامیکه x برابر با 10 شود، اجرا خواهد شد.
جاوا یک لهجه امن میباشد
برنامههای جاوا در دور و برهای کانالبندی گردیده/ توزیع یافته آیتم به کارگیری قرار می گیرند. ازآنجاکه برنامههای جاوا میتوانند روی پلتفرمهای متعدد کانال اجرا شوند، امن ساختن این پلتفرمها در قبال کدهای مخرب که موجب توسعه ویروسها، سرقت داده ها کارتهای بانکی یا این که اجرای اعمال خرابکارانه میگردند، امری دارای اهمیت میباشد. خصوصیتهایی که موجب استحکام لهجه جاوا میگردند دربرگیرنده ترک اشارهگرها می باشند که به یاروهمدم خصوصیتهای امنیتی مانند نوع امن sandbox جاوا و کدگذاری کلید همگانی عمل مینمایند. این دو مدل از خصوصیتها در کنار هم از تأثیر ویروسها و دیگر کدهای خطرناک روی پلتفرمهای مشکوک خودداری می نمایند. جاوا از دید تئوریک امن میباشد؛ ولی در کار زخمپذیریهای امنیتی مختلفی شناسایی و آیتم سوءاستفاده قرار گرفته میباشد. در سود در حینهای گذشته، کمپانی سان مایکروسیستمز و اکنون کمپانی اوراکل همواره مبادرت به تکثیر بهروزرسانیهای امنیتی برای جاوا مینمایند.
جاوا یک گویش سوای معماری میباشد
کانالها موجب اتصال پلتفرمهایی با معماری متعدد ریزپردازندهها و سیستمهای استدلال میشوند. نمیاقتدار انتظار داشت که جاوا راهبردهای یگانه پلتفرم را تولید نماید و انتظار داشته باشد کهاین راهبردها از سوی تمامی گونه های پلتفرمهایی که بخشی از کانال میباشند ادراک شود. در ازای جاوا راهبردهای بایتکد غیر وابسته از پلتفرم ساخت مینماید که تعبیر آن برای هر پلتفرم (از روش پیادهسازی JVM) سهل وآسان میباشد.
جاوا یک لهجه پرتابل میباشد
عدم تعلق به معماری موجب پرتابل شدن جاوا شدهاست. با این حالا پرتابل بودن جاوا چیزی بالاتر از جدا بودن راهبردهای بایتکدها از پلتفرم میباشد. مثلا در حیث بگیرید که اندازه گونه عدد درست روی پلتفرمهای گوناگون یکسان خواهد بود. برای مثال یک جور عدد درست 32 بیتی، صرفلحاظ از این که روی پلتفرمهای با رجیسترهای 16 بیتی، 32 بیتی یا این که 64 بیتی پردازش شود؛ در هر درحال حاضر به طور نشانهدار بوده و 32 بیت از یاد را اشغال مینماید. کتابخانههای جاوا نیز به پرتابل بودن آن امداد میکنند. این کتابخانهها در مورد ها ضروری، گونه های دادهای را ارائه میکنند که به روشی تا حد قابلیت و امکان پرتابل، کد جاوا را به امکانهای یگانه پلتفرم متصل میسازد.
جاوا یک لهجه با تلاش بالا میباشد
خصوصیت تفسیری بودن جاوا موجب شدهاست کارایی بالایی داشته باشد که در اکثر موردها بیشتراز حد کفایت میباشد. جاوا در خصوص نرم افزارهای با سعی بسیار بالا از کامپایل درجا (just-in-time) به کارگیری میکند یعنی راهبردهای بایتکد تعبیروتفسیر گردیده را محاسبه میکند و دستورهای تعبیر گردیده با بسامد بالا را به راهبردهای یگانه پلتفرم کامپایل مینماید. سعیهای بعدی برای تعبیر این راهبردهای بایتکد موجب اجرای به عبارتی راهبردهای یگانه پلتفرم میگردد و بنابراین سعی قابل انعطافافزار را افزایش می بخشد.
جاوا یک لهجه یکسری نخی (multithread) میباشد
جاوا برای افزایش عملکرد برنامههایی که تعدادی وظیفه را به یک باره اجرا مینمایند، از مضمون اجرای تعدادی نخی پشتیبانی میکند. برای مثال برنامهای که رابط گرافیکی استفاده کننده (GUI) را رئیس می کند و در همین درحال حاضر درانتظار محل ورود از یک اتصال کانال میباشد، از نخ (thread) دیگری به جای نخ GUI برای این انتظار به کارگیری مینماید. به این ترتیب رابط گرافیکی برنامه همچنان پاسخگو میباشد. ابتکارهای همگامسازی جاوا به نخها اذن می دهد که دادهها را سوای هیچ تأثیر مخربی میان خویش مبادله نمایند.
جاوا یک لهجه پویا (دینامیک) میباشد
به جهت رابطههای متقابل فی مابین کد برنامه و کتابخانهها که در طول اجرا به طور دینامیک فیس میپذیرند، نیازی به تولید پیوند صریح میان آنها نیست. در فیض هنگامی که یک برنامه یا این که یکی کتابخانههای آن تکامل می یابد (مثلا باگ تصحیح می شود یا این که تلاش بهبود مییابد) گسترشدهنده صرفا بایستی برنامه یا این که کتابخانه بهروزرسانی گردیده را منتشر سازد. با این که خلق و خوی دینامیک جاوا موجب شدهاست به کد کمتری هنگام تغییر و تحول کد نیاز باشد؛ البته این طریق نشر میتواند موجب تداخلهایی نیز بشود. برای مثال یک توسعه و گسترشدهنده ممکن میباشد یک گونه کلاس را از یک کتابخانه حذف نماید یا این که اسم آن را تغییر تحول دهد. زمانی شرکتی کتابخانه آپ تو دیت گردیده را منتشر مینماید، برنامههای جانور که به آن گونه کلاس متعلق میباشند از فعالیت می افتند. برای حل این خلل جاوا از دسته رابط (interface type) پشتیبانی میکند که مانند تعامل در بین دو طرف میباشد.
با دقت به خصوصیتهای فوق متوجه میشویم که جاوا علاوه بر نوعی لهجه، یک پلتفرم برنامهنویسی نیز به حساب می آید. این پلتفرم از دو بخش مهم تشکیل یافته میباشد که مشتمل بر ماشین مجازی جاوا و اطراف اجرایی جاوا میباشد.
ریشههای پیدایش جاوا
جاوا از سوی تیمی در کمپانی سان مایکروسیستمز به رهبری جیمز گاسلینگ پیشرفته و در سال 1995 منتشر شد. این لهجه متعاقباً از سوی کمپانی اوراکل خریداری شدهاست.
انگیزه اصلی خالقان جاوا این بوده که زبانی را تولید نمایند که بتوانند آن را روی کاربردهای مصرفی اجرا نمایند. این طراحان میتوانستهاند دنیایی را تصور نمایند که در آن کدها روی یخچال فریزر یا این که دستگاه توستر اجرا می شوند، یعنی آن چه که امروز به اسم وب شی ءها میشناسیم. ما صرفا در طی سالهای اخیر دستگاههایی ساختهایم که چنین قابلیت و امکانهایی داشته باشند و از این رو بایستی اظهار کرد کهاین طراحان نخستین بسیار از روزگار خویش جلوتر بودهاند. انگیزه پباده سازی این لهجه سبب ساز به چنین معماری برای آن شدهاست. یک کدام از شعارهای مهم لهجه برنامه جاوا چنین میباشد: «یک توشه بنویس، تمامی جا اجرا کن». به بیان دیگر شما با جاوا میتوانید کدی بنویسید که آن را برای اجرای روی هر دسته دستگاهی کامپایل نمائید.
البته نکته جذاب این میباشد که جاوا به جهت این خصوصیت خویش دوستداشتنی نشده میباشد؛ بلکه از مزیت فناوری نوظهوری که در به عبارتی نصفههای ده سال 90 میلادی ظهور یافت و رخ عالم را دگرگون ایجاد فایده گرفت؛ خواسته ما فناوری اینترنت میباشد. جاوا این قابلیت و امکان را داشت که با آن می شد برنامههایی به اسم applet نوشت. این اپلتها برنامههای کوچکی بودند که میشد باطن مرورگرهای اینترنت آنهارا اجرا کرد. با رویش خیرهکننده اینترنت جاوا نیز سوار این موج شد و به یک گویش برنامهنویسی بسیار دوست داستنی تبدیل شد. به این ترتیب علیرغم این که قصد اول طراحان این گویش چیز دیگری بود؛ البته اکثری از اینترنت نرم افزارها به گویش جاوا نوشته شدند.
حقیقت این میباشد که طراحان اول گویش برنامهنویسی تا حدود متعددی ذیل تأثیر گویشهایی مانند C و ++C بودهاند و جاوا نیز شباهتهای فرمان زبانی متعددی با این لهجهها دارااست. خالقان جاوا از این لهجهها تحت عنوان مثالای برای انجام امور به کار گیری کردند و از این رو خصوصیتهای خاصی وجود داشتند که طراحان جاوا قصد نداشتند در جاوا آنانرا پیادهسازی نمایند، زیرا پیش از اینً اثبات گردیده بود که در C و C++ موجب بروز مشکلاتی می گردند.
ورژنهای متفاوت جاوا
کمپانی سان مایکروسیستمز، کیت گسترش قابل انعطافافزاری (JDK) شماره 1.0 جاوا را در سال 1995 منتشر نموده است. این JDK ابتدا برای گسترش نرم افزارهای دسکتاپ و اَپلت (applet) گزینه به کار گیری قرار گرفت. متعاقباً جاوا برنامهنویسی دستگاههای گوشی و سرورهای تجاری را نیز درین کیت میسر ایجاد. ذخیرهسازی تمامی کتابخانهها در یک JDK منفرد منجر گردیده کهاین کیت بسیار پهناورخیس از حد مطلوب برای توزیع شود. ولی می بایست این نکته را در لحاظ داشته باشید که توزیع قابل انعطافافزارها در ده سال 1990 بوسیله CD های اندازه کوچک و یا این که از روش سرعتهای تحت کانال رخ میگرفته میباشد. ازآنجاکه اکثر وقت ها بسطدهندگان به همگی API ها نیاز نداشتند (یک گسترشدهنده نرم افزارهای دسکتاپ به تدریج به API های سرورهای تجاری نیاز پیدا میکند) کمپانی Sun این ایراد توزیع را با تقسیم جاوا به سه ورژن حل کرد. این ورژنها نهایتاً به اسم JAVA SE، JAVA EE و JAVA ME نامیده شدند که درپی هرکدام را توضیح دادهایم.
پلتفرم جاوا، ورژن استاندارد (Java SE)- این ورژن از جاوا برای گسترش نرم افزارهای سمت کلاینت که روی رایانههای رومیزی اجرا میگردند، و اپلتها که روی مرورگرهای اینترنت اجرا میشوند، پباده سازی شدهاست.
پلتفرم جاوا ورژن انترپرایز (Java EE)- این ورژن از جاوا بر مبنای JAVA SE پباده سازی گردیده و به صورت انحصاری برای بسط نرم افزارهای سرور با گرایش سازمانی به کار گیری می گردد. نرم افزارهای سمت سرور دربرگیرنده سرولتها (Servlet) میشود که برنامههای جاوای شبیه اپلت می باشند؛ ولی به جای کلاینت روی سرور اجرا میشوند. سرولتها از API Java EE Servlet به کارگیری مینمایند.
پلتفرم جاوا، ورژن میکرو (Java ME) – این ورژن از جاوا بر مبنای JAVA SE پباده سازی شدهاست. این پلتفرم برای توسعه و گسترش میدلتها (MIDlet) استعمال میگردد که برنامههای جاوایی می باشند که روی دستگاههای اطلاعاتی تلفن همراه اجرا می شوند. ایکسلت (Xlet) ها نیز برنامههای جاوایی می باشند که روی دستگاههای مونتاژی اجرا می شوند.
JAVA SE پلتفرم اصلی جاوا میباشد و پلتفرمهای دیگر بر مبنای آن پباده سازی گردیدهاند.
مروری بر پلتفرم جاوا
جاوا هم یک گویش برنامهنویسی و هم پلتفرمی برای اجرای کد جاوای کامپایل شدهاست. این پلتفرم به صورت عمده مشتمل بر JVM میباشد؛ البته دور و اطراف اجرایی را نیز مشتمل بر می گردد که از اجرای JVM روی پلتفرمهای زیرساختی مستقر پشتیبانی می کند. JVM خویش مشتمل بر تعدادی جزء برای بار گذاری، تأیید و اجرای کد جاوا میباشد. در تصویر پایین نحوه اجرای یک کد جاوا روی این پلتفرم را مشاهده می کنید.
JVM دربرگیرنده یک مولفه (کامپوننت) classloader، verifier بایتکد و یک مفسر و کامپایلر در جا برای بار گذاری، تأیید و اجرای یک پوشه کلاس میباشد.
در بخش فوقانی نمودار فوق یکسری از فولدرهای کلاس برنامه را مشاهده می کنید که یکی آن ها به اسم پوشه کلاس اصلی نامیده شدهاست. برنامه جاوا دستکم بایستی یک پوشه کلاس اصلی داشته باشد که اولیه کلاسی میباشد که بار گذاری، تأیید و اجرا خواهد شد.
JVM لود کلاس را به مولفه classloader میسپارد. Classloader فولدرهای کلاس را از منابع متعدد مانند سیستمهای فولدر، کانالها و فولدرهای فشرده بار گذاری می کند. این مولفه، JVM را از مسائل و خطاها مربوط به بار گذاری کلاس بر حذر می دارد.
یک پوشه کلاس لود گردیده در خاطر محافظت می شود و به طور یک شی ساخت گردیده از کلاس Class اکران می یابد. هنگام بار گذاری، bytecode verifier راهبردهای متعدد بایتکد را بازنگری می کند تا مطمئن شود که دارای اعتبار میباشند و امنیت را به مخاطره نمیاندازند.
چنانچه بایتکد فولدر کلاس دارای اعتبار نباشد، JVM خاتمه مییابد. در غیر این فیس مولفه مفسر آن، بایتکد را یک به یک به راهبردها تعبیروتفسیر می کند. دراین فرآیند تعبیر و تفسیر، راهبردهای بایتکد شناسایی گردیده و راهبردهای ساکن هم اندازه آن ها اجرا می شوند.
بعضی توالیهای راهبردهای بایتکد بیش از سایر موردها تکرار می شوند. هنگامی مفسر این حالت را تشخیص می دهد، کامپایلر درجای JVM به اسم JIT این توالیهای بایتکد را به کد ساکن کامپایل مینماید تا سریعخیس اجرا شوند.
در حین اجرا، مفسر معمولاً با درخواستی برای اجرای بایتکد فولدر کلاس دیگر مواجه می گردد که بدین برنامه یا این که یک کتابخانه وابستگی دارااست. در چنین مواقعی classloader فولدر کلاس را لود مینماید و bytecode verifier بایتکد پوشه کلاس لود گردیده را پیش از اجرا تأیید مینماید. همینطور در حین اجرا نیز راهبردهای بایتکد ممکن میباشد از JVM بخواهند که یک فولدر را گشوده نماید، چیزی را روی کاغذ اکران دهد، صدایی تولید نماید یا این که وظیفه دیگری انجام دهد که مستلزم همیاری با پلتفرم مستقر میباشد. درین موردها JVM با استعمال از رابط ساکن جاوا (JNI) که یک پل فناوری برای تعامل با پلتفرم ساکن برای اجرای وظایف میباشد این فعالیت را انجام می دهد.
گونه دینامیک یا این که دسته استاتیک
جاوا یک گویش برنامهنویسی با دسته استاتیک میباشد در حالی که لهجههای برنامهنویسی دیگری مانند روبی (Ruby)، پایتون (Python)، و جاوا اسکریپت لهجههایی از دسته دینامیک محسوب میگردند. اکثر اشخاص به مشاجره تفاوت در بین لهجههای با جور استاتیک و دینامیک عشق و علاقهمند می باشند.
دسته دینامیک
در حالتیکه تا به امروز تجربه عملی برنامهنویسی داشته باشید، با مضمون متغیر آشنا میباشید. در گویشهای با گونه دینامیک مانند روبی یا این که جاوا اسکریپت میاقتدار متغیری را سوای این که دسته داده ذخیره گردیدهاش معلوم باشد، اعلان کرد. این متغیر از دسته دینامیک میباشد و مقدار آن میتواند هر چیزی مانند یکی، پاراگراف و یا این که غیره باشد.
دسته استاتیک
وقتی که با دادهها در لهجههای از مدل استاتیک مانند جاوا راز و فعالیت داریم، می بایست در طول اعلان متغیر دقیقاً معین کنیم که متغیر چه گونه دادهای را محافظت خواهد کرد. برای مثال این متغیر دربردارنده عدد خواهد بود یا این که متغیر دیگر متن را ذخیره میکند و متغیر سوم دربردارنده مورخ خواهد بود. این بدان مضمون میباشد که یک گویش از جور استاتیک ساختار بیشتری را مشتمل بر می گردد. برخی از اشکال خطاهایی که برنامهنویسها مرتکب می شوند، بوسیله ابزارهایی که جاوا در چنگ ما قرار می دهد، حتی پیش از اجرای برنامه، قابل تشخیص میباشند. با این هم اکنون در صورتیکه که در لهجههای از گونه دینامیکی مانند روبی یا این که پایتون برنامهنویسی فرمائید، چنین خطاهایی تا روزگار اجرای برنامه و مواجهه با از عمل افتادن برنامه قابل تشخیص نخواهند بود.
براین اساس در گویشهای برنامهنویسی از گونه استاتیک یک لایه مازاد از کدنویسی موجود است که می بایست اشکال تمامی متغیرها از پیشین گزینه فکر قرار گرفته و مشخص و معلوم شود. به این ترتیب یادگیری لهجههای از جور دینامیک برای اشخاصی که اولی لهجه برنامهنویسیشان از دسته استاتیک بوده میباشد، بسیار سهل وآسانخیس از مسیر معکوس آن خواهد بود.
چه لهجههایی از جاوا مشتق گردیدهاند؟
بعضی گویشها مانند اسکالا (Scala) و گرووی (Groovy) وجود داراهستند که برای اجرا روی JVM پباده سازی گردیدهاند و یا این که لهجههایی می باشند که برای اجرا روی فضا جاوا پیشرفتهاند. همینطور ممکن میباشد بعضا اشخاص داعیه نمایند که لهجه C# تا حدود متعددی پایین تأثیر جاوا پیشرفته میباشد. گویش سی شارپ مایکروسافت بعداز جاوا گسترش یافت و به صورت مختص به مقدار متعددی از جاوا الهام گرفته میباشد. سی شارپ موجب بعضی بهبودها در جاوا نیز شدهاست و از این رو این دو گویش به صورت متقابل بر هم تأثیرگذار بودهاند.
جاوا چه تفاوتی با جاوا اسکریپت دارااست؟
هیچ ارتباط فنی در میان جاوا و جاوا اسکریپت نیست. جاوا اسکریپت از سوی نت اسکیپ (Netscape) در ده سال 90 میلادی پیشرفته میباشد و در بالا LiveScript نامیده می شد. وقتی که نت اسکیپ رویت کرد هیچ کس از LiveScript به کارگیری نمینماید و جاوا محبوبیت روزافزونی دارااست، اسم آن را به جاوا اسکریپت تغییر و تحول اعطا کرد تا بتوانند از این موج محبوبیت جاوا سودمند شوند. در واقع این ایده برنده بود و جاوا اسکریپت نیز دوست داستنی شد؛ البته از منظر فنی هیچ ارتباطای دربین این دو نیست و فقطً دارنده تشابه اسمی میباشند. شاید فقط مشابهت فنی فی مابین جاوا و جاوا اسکریپت را دراین بدانیم که هر دو آن ها امر زبانشان را از گویش برنامهنویسی C گرفتهاند. به همین ادله در شرایطی که با جاوا آشنا باشید، دراین حالت یادگیری جاوا اسکریپت سهل خواهد بود و برعکس.