تاریخچه زبان برنامه نویسی جاوا
زبان برنامهنویسی جاوا توسط جیمز گاسلینگ از شرکت سان مایکروسیستمز در سال 1991 ایجاد شد. هدف زبان برنامهنویسی جاوا این است که برنامه را فقط یکبار بنویسید و سپس همان را در چندین سیستمعامل اجرا کنید (یکبار بنویس و همهجا اجرا کن). اولین نسخهی جاوا (Java 1.0) در سال 1995 منتشر شد که در دسترس عموم قرار گرفت.
شرکت سان مایکروسیستمز در سال 2010 توسط شرکت اوراکل آمریکا خریداری شد و اکنون اوراکل مسئولیت جاوا را بر عهده دارد (اکنون اوراکل زمامدار جاوا است). همچنین شرکت سان در سال 2006 پروژهای برای در دسترس قرار دادن زبان برنامه نویسی جاوا تحت مجوز عمومی گنو شروع کرد که درنهایت اوراکل این پروژه را با نام OpenJDK ادامه داد. با گذشت زمان، نسخههای پیشرفتهتری از جاوا منتشر شد. نسخهی فعلی جاوا Java 16 است.
جاوا با مشخصات زبان برنامهنویسی، کامپایلر، کتابخانههای اصلی و یک Runtime (ماشین مجازی جاوا ) تعریف شدهاست. Runtime یا همان ماشین مجازی جاوا، به توسعهدهندگان نرمافزار این امکان را میدهد تا کد برنامه را به زبانهای دیگر، غیر از زبان برنامهنویسی جاوا که همچنان بتواند در ماشین مجازی جاوا اجرا شود، بنویسند. بستر جاوا معمولاً با ماشین مجازی جاوا و کتابخانههای هسته جاوا در ارتباط است.
جاوا چیست ؟
یکی از محبوب ترین زبانهای حال حاظر در حوزه برنامه نویسی است که از ویژگی های جدید و جذتبی همانند شیگرایی (OOP) بهره می برد. جاوا ب صورت رایگان در دسترس همه است.
اصول طراحی زبان برنامهنویسی جاوا
1- بسترهای نرمافزاری مستقل
برنامههای جاوا مستقیماً به سیستمعامل دسترسی ندارند و از ماشین مجازی جاوا بهعنوان یک رابط انتزاعی استفاده میکنند. این باعث میشود برنامههای جاوا بهراحتی در بسترهای مختلف اجرا شوند و اصطلاحاً Portable باشند. یک برنامه جاوا (که سازگار با استاندارد است و از قوانین خاصی پیروی میکند) میتواند بدون نیاز به اصلاح و تغییر در تمام سیستمعاملهای پشتیبانی شده مثل ویندوز یا لینوکس اجرا شود.
2- زبان برنامهنویسی شیءگرا
بهجز انواع دادههای اصلی و اولیه، همه عناصر در جاوا شیء هستند.
3- زبان برنامهنویسی Strongly-typed
به این معنا که انواع متغیرهای مورد استفاده باید از قبل تعریف شده و نوع آنها مشخص شود و تبدیل آنها به شیءهای دیگر نسبتاً سخت باشد. این تبدیل در بیشتر موارد باید توسط برنامهنویس انجام شود.
4- زبان تفسیر شده و کامپایل شده
کد اصلی جاوا به فرمت bytecode تبدیل میشود که به بستر نرمافزاری وابسته نیست. این دستورالعملهای bytecode توسط ماشین مجازی جاوا (JVM) خوانده میشوند. JVM حاوی یک کامپایلر به نام Hotspot Compiler است که دستورالعملهای اجرایی مهم bytecode را به دستورالعملهای قابل استفاده برای ماشین تبدیل میکند.
5- مدیریت حافظه خودکار
جاوا، تخصیص Memory و باز پس گرفتن آن را برای ایجاد اشیا جدید مدیریت میکند و برنامه دسترسی مستقیم به Memory ندارد. چیزی به نام Garbage collector بهطور خودکار اشیایی که هیچ استفادهای نشدهاند را پاک میکند.
Syntax جاوا مشابه زبان برنامهنویسی ++C است و جاوا نیز به حروف کوچک و بزرگ حساس است. بهعنوان مثال، متغیرهایی به نام myValue و myvalue بهعنوان دو متغیر متفاوت شناسایی و استفاده میشوند.
چه زمانی و کجا از جاوا استفاده میشود؟
چندین سال است که زبان برنامه نویسی جاوا گزینهای برای برنامهنویسهای کمتجربه و باتجربه است. برخی از مهمترین کاربردهای جاوا عبارتاند از:
ایجاد برنامههای Android
اگرچه برای برنامههای اندروید روشهای مختلف استفاده از JVM وجود دارد، اما کدهای نوشته شده، در اصل بر مبنای Java هستند. بهطوری که زبان برنامهنویسی Kotlin که آخرین ورژن اندروید با آن نوشته شده نیز، از جاوا الهام گرفته شده است. اکثراً برای ساخت برنامه برای اندروید از رابط برنامهنویسی (API) گوگل استفاده میشود.
طراحی برنامههای تحت وب
یکی دیگر از کاربردهای محبوب جاوا طراحی برنامههای تحت وب است. علاوه بر سازمانهای خصوصی مانند گوگل، ارگانهای دولتی، موسسههای مراقبتهای بهداشتی، نهادهای آموزشی و حتی ادارات سازمان دفاع، برای ساختن برنامههای مهم تحت وب به جاوا متکی هستند.
طراحی برنامههای Scientific
جاوا برای ساخت برنامههای علمی هم استفاده میشود. حتی نسبت به ++C که به همین منظور مورد استفاده قرار میگیرد ارجحیت دارد، زیرا علاوه بر Maintainable، Partable و ایمن بودن، ابزارهای سطح بالای بهتری را نیز در اختیار میگذارد.
ابزارهای نرمافزاری
جاوا بخش بزرگی از صنعت نرمافزار است. برای تأمین پروژههای Open-source و تجاری بهطور یکسان استفاده شده است. Eclipse، IntelliJ IDEA و NetBeans IDE از بهترین محیطهای برنامهنویسی برای ایجاد برنامههای جاوا هستند و حتی خودشان نیز با استفاده از Java توسعه مییابند.
ویژگیهای جاوا
عملکرد و کارایی بالا
کامپایلر جاوا به همین منظور طراحی شده است. کد جاوا ابتدا به bytecode تبدیل شده و سپس توسط کامپایلر جاوا، کامپایل میشود. همچنین، کد بهعنوان ورودی به JVM (ماشین مجازی جاوا) داده خواهد شد تا به زبان قابل استفاده برای ماشین تبدیل شود.
الهام گرفته شده از C و C++
زبانهای C و ++C زبانهای برنامهنویسیای هستند که زمان زیادی از به وجود آمدنشان میگذرد و میتوان از آنها بهعنوان اجداد زبانهای برنامهنویسی مدرن مانند جاوا و پایتون یاد کرد. جاوا کمی شبیه C و ++C است اما برخی ویژگیهای آنها مانند اشارهگر و ویژگی چند وراثتی را ندارد؛ بنابراین، برای یادگیری جاوا داشتن مقداری درک و دانش از مفاهیم C و ++C مفید است.
مدیریت خودکار Memory
یکی دیگر از مزایای جاوا که نیاز است به آن اشاره شود، مدیریت خودکار Memory است. به محض اینکه یک شی دیگر از Memory استفاده نکند، Memory بهطور خودکار بازیابی میشود که مسئولیت این کار بر عهدهی Runtime جاوا است. برنامه نویسان C و C++ که میدانند نوشتن کدهای Object-oriented بدون بازیابی Memory دشوار است، این مزیت کار با زبان برنامهنویسی جاوا برایشان بهخوبی قابل درک است.
قابلیت Multi-thread
قابلیتهای Multithreading در زبان جاوا ایجاد شده است که به کمک آنها میتوان برنامههایی با قابلیت پاسخدهی و تعامل بالا ایجاد کرد که بتوانند به کمک Concurrent threads، دو یا چند کار را بهطور همزمان انجام دهند.
مستقل از بسترهای نرمافزاری
جاوا شعاری دارد به نام WORA (یکبار بنویس و همهجا اجرا کن). کدهای جاوا به فرمتی به نام bytecode تبدیل میشوند و سپس این bytecode ها در JVM اجرا میشود. در نهایت، هر سیستمی که در آن JVM اجرا شود، قادر به اجرای کد جاوا خواهد بود.
کاملاً Object-oriented یا شیءگرا
جاوا با کمک ++C که نیمه شیءگرا است، قابلیتها را گسترش میدهد تا به یک زبان برنامهنویسی کاملاً شیءگرا تبدیل شود. برخی از مهمترین ویژگیهایی که جاوا را به یک زبان کاملاً شیءگرا تبدیل میکنند عبارتاند از:
- انتزاع یا Abstraction
- کپسوله سازی یا Encapsulation
- وراثت یا Inheritance
- چندریختی یا Polymorphism
مقاوم بودن
جاوا، برنامهنویس را به نحوی هدایت میکند تا عادتهای مهم موردنیاز برنامهنویسی، برای ایجاد برنامههای بسیار استاندارد را یاد بگیرد. برخلاف C و ++C، جاوا متکی به یک مدل ساده مدیریت Memory است که توسط ویژگی Garbage collector تقویت شده است.
ایمن بودن
ویژگیهای مربوط به امنیت در سیستمهای Runtime تعبیه شده است. این موارد شامل بررسی Runtime و نوع دادهها در زمان کامپایل است. با وجود چنین ویژگیهایی، حمله به برنامههای جاوا دشوار خواهد بود.
ساده بودن
سهولت در خواندن و نوشتن در هر زبانی باعث سادگی آن زبان میشود. جاوا نیز به دلیل مبهم نبودن Syntax، یک زبان ساده به شمار میرود. از اینرو هرکس با درک اصول اولیهی برنامهنویسی، میتواند برنامهنویسی با جاوا را شروع کند.
ماشین مجازی چیست؟
ماشین مجازی جاوا (JVM)، پیادهسازی نرمافزاری از یک کامپیوتر است که برنامهها را مانند یک ماشین واقعی اجرا میکند. JVM بهطور خاص برای یک سیستمعامل خاص نوشته میشود، بهعنوان مثال، برای لینوکس یک پیادهسازی خاص و همچنین برای ویندوز نیز یک پیادهسازی مخصوص به خودش نیاز است.
برنامههای جاوا توسط کامپایلر جاوا به bytecode کامپایل میشوند. ماشین مجازی جاوا این bytecode را ترجمه کرده و برنامه جاوا را اجرا میکند.
مزایای دیگر جاوا
- داشتن انبوهی از کتابخانههای Open-source
- پشتیبانی شده توسط Oracle و دارای پشتیبانی سطح بالا توسط دیگر شرکتهای بزرگ تکنولوژی، مثل Google و IBM
- داشتن Forum ها و انجمن های قوی
- دارای چندین Frameworks برای ایجاد سریع برنامه استاندارد
- تعداد زیادی ابزار و IDE برای راحتی توسعه جاوا وجود دارد.
چرا جاوا خیلی معروف است؟
دلیل مهمی که به محبوبیت زیاد جاوا کمک میکند، مستقل بودن جاوا از بسترهای نرمافزاری و درواقع پشتیبانی کردن از چند بستر است. برنامههای جاوا تا زمانی که JRE (Java Runtime Environment) وجود داشته باشد، میتوانند در ماشینهای مختلف ازجمله تلفنهای همراه، کامپیوترهای شخصی با Linux، MacOs یا Windows و حتی کامپیوترهای Mainframe، اجرا شوند. لازم به ذکر است که JRE با همهی آنها سازگار است.
جاوا بیش از دو دهه است که معرفی شده و شهرت زیادی دارد. بنابراین، بدیهی است که چندین شرکت بزرگ با استفاده از جاوا بنیادی محکم برای خود بناکردهاند. حتی با وجود گذشت زمان بسیار زیاد، هیچ نشانهای از کند شدن سرعت پیشرفت محبوبیت این زبان برنامهنویسی، وجود ندارد.
جاوا توانایی منحصر به فردی که برای ترکیب نوآوری با Stability دارد. از اینرو هر کدی که در ابتدا با جاوا نوشته شده باشد، همچنان نیز در JVM های جدید، قابل اجرا است. علاوه بر این، آن کد میتواند از موارد زیر نیز بهرهمند شود:
- استفاده از آخرین ورژن Java profiling
- مدیریت Memory
- تبدیل به کد قابل استفاده برای ماشین
از آنجا که اشیا نیاز به ارجاع به دادههای خارجی ندارند، کدهای جاوا بسیار مقاوماند. این زبان به اندازهی کافی قدرتمند است که اجازهی ایجاد و گسترش مجموعهی وسیعی از کتابخانهها و کلاسها را بدهد.