جاوا چیست
زبان جاوا یکی از زبان های برنامه نویسی است که از ویژگی شی گرایی پشتیبانی میکند. java اوپن سورس است و در اختیار همگان قرار دارد.و اما قبل از اینکه به توضیح در مورد این زبان محبوب بپردازیم ،مختصری در مورد تاریخچه این زبان بیان نماییم.در این مقاله می پردازیم به جاوا چیست.توضیخی تفصیلی و عمیق.با آموزشگاه کامپیوتر پرتو همراه باشید
تاریخچه جاوا»
در اوایل دهه 1990 میلادی جیمز گاسلینگ از پیچیدگی هایی که در زبان c++ وجود داشت ابزار ناراحتی نموده و تصمیم بر ابداع زبانی گرفتند که علاوه بر اینکه قدرت زبان c++ را داشته باشد ،از سادگی بیشتری نسبت به این زبان برخوردار باشد.این گروه در ابتدا نام Oak به معنای بلوط را بر این زبان نهادند و دلیل آن مجاورت یک درخت بلوط در کنار اتاق جیمز بود!اما پس از مدتی مدیران شرکت سانمایکروسیستمز (شرکت گاسلینگ و همکارانش) تصمیم گرفتند که نامی مناسب تر را برای این زبان در نظر بگیرند.
بدین منظور به کافی شاپی رفته و پس از نصف روز بحث و تبادل نظر در مورد نام جایگزین ،به این نتیجه رسیدند که مخفف نام های خودشان یعنی James Gosling و Arthur Van Hoff و همچنین Andy Bechtolsheim را بر روی این زبان بگذارند.نماد زبان جاوا نیز یک فنجان است که به دلیل اینکه مراسم نامگذاری در کافی شاپ صورت گرفته بود ،نماد یک فنجان قهوه داغ را بر روی زبان جاوا قرار دادند.در نهایت زبان جاوا در سال 1995 توسط شرکت Sun Micro systems ارائه و بعدها توسط اوراکل خریداری شد.خب سعی کردیم تا حدودی شما را با این مفهوم آشنا کنیم که جاوا چیست .اما نسخه های این زبان که از سال 1995 به بعد منتشر گردید به شرح زیر است
نسخه های جاوا
- JDK 1.0 (ژانویه ۱۹۹۶)اولین نسخه جاوا، با نام رمز “Oak”.
قابلیتهای اولیه مانند اپلتها، AWT (برای رابط کاربری گرافیکی)، و مفاهیم پایه مانند شیءگرایی. - JDK 1.1 (فوریه ۱۹۹۷)اضافه شدن JDBC (اتصال به پایگاه داده)، JavaBeans، و پشتیبانی از Inner Classes.
بهبودهای عملکردی و رفع اشکالات. - J2SE 1.2 (دسامبر ۱۹۹۸)با نام رمز “Playground”.
معرفی Java 2 Platform، Swing (برای رابط کاربری پیشرفته)، و مجموعه ابزارهای Java Collections Framework.
اضافه شدن JIT (Just-In-Time) Compiler برای بهبود عملکرد. - J2SE 1.3 (می ۲۰۰۰)با نام رمز “Kestrel”.
بهبودهای کوچک مانند اضافه شدن JavaSound API و HotSpot JVM. - J2SE 1.4 (فوریه ۲۰۰۲)با نام رمز “Merlin”.
معرفی Assertions، Regular Expressions، Java XML APIs، و NIO (New Input/Output). - J2SE 5.0 (سپتامبر ۲۰۰۴)با نام رمز “Tiger”.
تغییرات بزرگ: Generics، Annotations، Autoboxing/Unboxing، Enumerations، و حلقه for-each.
معرفی java.util.concurrent برای برنامهنویسی همروند. - Java SE 6 (دسامبر ۲۰۰۶)با نام رمز “Mustang”.
بهبودهای عملکرد JVM، پشتیبانی بهتر از اسکریپتنویسی (Scripting API)، و JDBC 4.0.
حذف “J2SE” از نامگذاری و استفاده از “Java SE”. - Java SE 7 (جولای ۲۰۱۱)با نام رمز “Dolphin”.
معرفی Switch با String، try-with-resources، NIO.2 (فایلسیستم پیشرفته)، و Fork/Join Framework.
بهبودهای زبانی در پروژه Coin. - Java SE 8 (مارس ۲۰۱۴)معرفی Lambda Expressions، Stream API، و Optional برای برنامهنویسی تابعی.
بهبود Date/Time API (JSR 310)، Nashorn JavaScript Engine، و حذف Permanent Generation در JVM. - Java SE 9 (سپتامبر ۲۰۱۷)معرفی سیستم ماژولار (JPMS – Java Platform Module System) با پروژه Jigsaw.
اضافه شدن JShell (REPL برای جاوا)، و بهبودهای API مانند Collection Factory Methods. - Java SE 10 (مارس ۲۰۱۸)اولین نسخه با چرخه انتشار ۶ ماهه.
معرفی var برای نوعدهی محلی (Local-Variable Type Inference).
بهبود Garbage Collector و عملکرد JVM. - Java SE 11 (سپتامبر ۲۰۱۸)نسخه LTS (Long-Term Support).
حذف Java EE و CORBA، اضافه شدن HTTP Client API استاندارد، و پشتیبانی از TLS 1.3.
بهبودهای JShell و Garbage Collector. - Java SE 12 (مارس ۲۰۱۹)ویژگیهای آزمایشی مانند Switch Expressions (بهصورت پیشنمایش).
بهبود Garbage Collector (Shenandoah). - Java SE 13 (سپتامبر ۲۰۱۹)بهبودهای کوچک مانند Text Blocks (پیشنمایش) و Switch Expressions.
بازسازی Socket API. - Java SE 14 (مارس ۲۰۲۰)ویژگیهای جدید مانند Records (پیشنمایش)، Pattern Matching for instanceof.
بهبودهای Garbage Collector (ZGC و Shenandoah). - Java SE 15 (سپتامبر ۲۰۲۰)Text Blocks بهصورت استاندارد، Records و Pattern Matching (هنوز پیشنمایش).
معرفی Sealed Classes (پیشنمایش). - Java SE 16 (مارس ۲۰۲۱)Records و Pattern Matching بهصورت استاندارد.
بهبودهای JVM و ابزارهای توسعه. - Java SE 17 (سپتامبر ۲۰۲۱)نسخه LTS.
Sealed Classes استاندارد شد، بهبودهای Pattern Matching، و حذف Applet API.
پشتیبانی بهتر از macOS و AArch64. - Java SE 18 (مارس ۲۰۲۲)معرفی Code Snippets در JavaDoc.
بهبودهای کوچک در API و عملکرد. - Java SE 19 (سپتامبر ۲۰۲۲)ویژگیهای آزمایشی مانند Virtual Threads (پروژه Loom) و Structured Concurrency.
بهبود Pattern Matching. - Java SE 20 (مارس ۲۰۲۳)ادامه پروژههای Loom، Valhalla (Value Types)، و Amber.
بهبودهای Scoped Values و Structured Concurrency (پیشنمایش). - Java SE 21 (سپتامبر ۲۰۲۳)نسخه LTS.
Virtual Threads و Structured Concurrency بهصورت استاندارد.
بهبودهای Pattern Matching و Record Patterns. - Java SE 22 (مارس ۲۰۲۴)ویژگیهای جدید مانند Foreign Function & Memory API (استاندارد).
بهبودهای پروژه Amber (مانند String Templates بهصورت پیشنمایش). - Java SE 23 (سپتامبر ۲۰۲۴)جدیدترین نسخه تا تاریخ کنونی (سپتامبر ۲۰۲۵).
بهبودهای پروژه Loom، Valhalla، و Panama.
ویژگیهای آزمایشی مانند Implicit Classes و Module Import Declarations.
نکته
چرخه انتشار: از Java 9 به بعد، جاوا هر ۶ ماه یک نسخه جدید منتشر میکند، اما نسخههای LTS (مانند 11، 17، 21) هر سه سال یکبار عرضه میشوند و پشتیبانی طولانیمدت دارند.
ویژگیهای آزمایشی: برخی ویژگیها ابتدا بهصورت پیشنمایش (Preview) معرفی میشوند و در نسخههای بعدی استاندارد میشوند.
بعد از آشنایی با اینکه جاوا چیست و شامل چه سرگذشتی و نسخه هایی بوده است ، بیایید به اهداف زبان جاوا بپردازیم.
اهداف زبان جاوا
و اما هر زبانی برای ابداع خود ،اهدافی را دنبال میکند .همانطور که بیان شد جیمز گاسلینگ سعی نمود زبانی را ابداع نماید تا جایگزین زبان c++ گردد و علاوه بر امکانات آن ،امکانات و اهدافی اضافه تر را دنبال کند که عبارتند از :
- سادگی: طراحی زبانی ساده و قابلفهم، با حذف پیچیدگیهای زبانهایی مثل C++ (مانند اشارهگرها).
- شیءگرایی: پشتیبانی کامل از برنامهنویسی شیءگرا برای کد ماژولار و قابلاستفاده مجدد.
- قابلحمل بودن: اجرای کد روی پلتفرمهای مختلف بدون تغییر، با شعار “یکبار بنویس، همهجا اجرا کن” (WORA).
- استقلال از پلتفرم: استفاده از ماشین مجازی جاوا (JVM) برای اجرای بایتکد روی هر سیستم.
- امنیت: ارائه ویژگیهایی مثل Sandboxing و مدیریت خودکار حافظه برای افزایش امنیت برنامهها.
- قابلیت اطمینان: کاهش خطاها با مدیریت حافظه (Garbage Collection) و بررسی نوع دادهها در زمان کامپایل و اجرا.
- عملکرد بالا: بهینهسازی اجرا با JIT Compiler و بهبودهای JVM.
- پشتیبانی از چندنخی: امکان برنامهنویسی همروند برای اجرای همزمان چندین کار.
- توزیعشده: پشتیبانی از توسعه برنامههای شبکهای و توزیعشده با APIهایی مثل RMI و JDBC.
- پویایی: قابلیت بارگذاری پویای کلاسها و انعطافپذیری در زمان اجرا.
در حقیقت شما برنامه را یکبار مینویسید و توسط ماشین مجازی جاوا یعنی JVM میتوانید آن را در سایر پلتفرم ها اجرا نمایید.این موضوع باعث شده تا جاوا را بعنوان زبانی چند سکویی بشناسیم.یکی از دلایل محبوبیت جاوا نیز همین مسئله است.
ماشین مجازی جاوا چیست
ماشین مجازی جاوا یا JVM در حقیقت محقق کننده این عبارت است که برنامه را یکبار بنویس و آن را در چند جا اجرا کن!هدف از ماشین مجازی جاوا دو مورد است :
• مدیریت و بهینه سازی حافظه سیستم
• فراهم نمودن محیطی برای اجرای برنامه در سیستم های مختلف
در حقیقت زمانی که شما برنامه ای را به زبان جاوا مینویسید و سپس آن را کامپایل میکنید ،برنامه به کدهایی بنام بایت کد تبدیل میشوند.ماشین مجازی تنها توانایی این را دارد که این بایت کد ها را دریافت نماید و آن را برای سیستم عاملی خاص کامپایل نموده و قابل اجرا نماید.به شکل زیر توجه نمایید :

ماشین مجازی جاوا
همانگونه که در عکس میبینید ،تنها کافیست شما برنامه را یکبار بنویسید و برای اجرا در سیستم عامل های مختلف آن را به JVM بسپارید.بعنوان مثال برنامه ای را در لینوکس مینویسید و پس از انتقال به JVM قابلیت آن را دارد که در ویندوز نیز اجرا گردد.
کدام برنامه ها را میتوان توسط جاوا نوشت؟
همانگونه که در قبل تر نیز عنوان شد ،زبان جاوا یک زبان چند سکویی است بدین معنی که میتوانید یک برنامه را در سیستم عاملی نوشته و آن را در دیگر سیستم عامل ها اجرا نمایید.در کشورمان ایران برنامه های مهم توسط جاوا نوشته میشود و بطور کلی اگر این زبان را آموزش دیده باشید میتوانید در بخش های مهم و دولتی استخدام شوید زیرا برنامه های سازمان های دولتی در ایران عمدتا توسط این زبان نوشته شده اند.
انواع برنامه هایی که توسط این زبان نوشته میشوند عبارتند از:
- برنامههای وب (Web Applications) برنامههای وب پویا با فریمورکهایی مثل Spring، Java EE، JSF، یا Struts.
مثال: وبسایتهای تجارت الکترونیک، سیستمهای مدیریت محتوا (CMS)، و پلتفرمهای رزرو آنلاین. - برنامههای دسکتاپ (Desktop Applications) برنامههای گرافیکی با رابط کاربری (GUI) با استفاده از JavaFX یا Swing. مثال: ویرایشگرهای متن، نرمافزارهای مدیریت پروژه، یا ابزارهای ویرایش تصویر.
- برنامههای موبایل (Mobile Applications) توسعه اپلیکیشنهای اندروید با استفاده از Android SDK یا فریمورکهایی مثل Kotlin (که با جاوا سازگار است). مثال: بازیهای موبایل، اپلیکیشنهای بانکی، یا برنامههای شبکههای اجتماعی.
- برنامههای سازمانی (Enterprise Applications) سیستمهای مقیاسپذیر برای شرکتها با استفاده از Java EE یا Spring. مثال: سیستمهای ERP (برنامهریزی منابع سازمانی)، CRM (مدیریت ارتباط با مشتری)، یا نرمافزارهای بانکی.
- برنامههای مبتنی بر ابر (Cloud-Based Applications) توسعه برنامههای مبتنی برクラウド با پشتیبانی از پلتفرمهایی مثل AWS، Google Cloud، یا Azure. مثال: سرویسهای ابری، میکروسرویسها، یا برنامههای SaaS.
- برنامههای سرور (Server-Side Applications) توسعه سرورهای وب و برنامههای Backend با ابزارهایی مثل Spring Boot یا Apache Tomcat. مثال: APIهای RESTful، سرورهای چت، یا سیستمهای پردازش داده.
- بازیها (Games) ساخت بازیهای دوبعدی یا سهبعدی با استفاده از کتابخانههایی مثل LibGDX یا jMonkeyEngine. مثال: بازیهای موبایلی یا بازیهای دسکتاپ ساده.
- برنامههای علمی و محاسباتی (Scientific Applications) برنامههایی برای محاسبات پیچیده، شبیهسازی، یا تحلیل دادههای علمی. مثال: نرمافزارهای پردازش دادههای زیستفناوری یا شبیهسازیهای فیزیکی.
- برنامههای بلادرنگ (Real-Time Applications) سیستمهایی که نیاز به پردازش بلادرنگ دارند، مثل سیستمهای کنترل صنعتی. مثال: سیستمهای کنترل ترافیک یا دستگاههای IoT.
- برنامههای اینترنت اشیا (IoT Applications) توسعه برنامه برای دستگاههای متصل به اینترنت با استفاده از Java ME یا فریمورکهای IoT. مثال: سیستمهای خانه هوشمند یا سنسورهای صنعتی.
- برنامههای پایگاه داده (Database-Driven Applications) برنامههایی که با پایگاههای داده (SQL یا NoSQL) تعامل دارند، با استفاده از JDBC یا JPA. مثال: سیستمهای مدیریت موجودی یا داشبوردهای تحلیلی.
- برنامههای یادگیری ماشین (Machine Learning Applications) توسعه مدلهای یادگیری ماشین با کتابخانههایی مثل DeepLearning4j یا Weka. مثال: سیستمهای پیشبینی یا تحلیل داده.
- برنامههای شبکهای (Networking Applications) برنامههایی برای ارتباطات شبکهای با استفاده از Socket Programming یا RMI. مثال: برنامههای چت، کلاینتهای FTP، یا سیستمهای پیامرسان.
- ابزارهای توسعه و اتوماسیون (Development and Automation Tools) ساخت ابزارهای توسعه نرمافزار یا اسکریپتهای اتوماسیون. مثال: ابزارهای CI/CD مثل Jenkins یا Maven.
- برنامههای تعبیهشده (Embedded Applications) برنامهنویسی برای سیستمهای تعبیهشده با Java ME یا پلتفرمهای خاص. مثال: دستگاههای پزشکی، سیستمهای ناوبری خودرو، یا دستگاههای POS.
برای یادگیری حرفه ای و اصولی جاوا ، اگر می خواهید که وارد دنیای برنامه نویسی اندروید شوید ، ما به شما کلاس آموزش اندروید از آکادمی پرتو را پیشنهاد می کنیم.
نسخه های اصلی زبان جاوا
زبان جاوا قابلیت پشتیبانی از پلتفرم های مختلفی را دارد .اما برای برنامه نویسی در هر کدام از این پلتفرم ها نیاز است تا از نسخه خاصی از جاوا استفاده نماییم.نسخه های اصلی جاوا عبارتند از :
- Java SE (Standard Edition) : نسخه استاندارد جاوا که هسته اصلی زبان را تشکیل میدهد. شامل کتابخانههای پایه، JVM، و ابزارهای توسعه برای ساخت برنامههای عمومی است.
کاربرد: برنامههای دسکتاپ، برنامههای مستقل، و پایهای برای سایر نسخهها.
ویژگیها: شامل APIهای اصلی مثل Collections، I/O، Networking، Concurrency، و ابزارهایی مثل JShell و JavaFX.
مثال: برنامههای دسکتاپ با JavaFX، ابزارهای خط فرمان، یا برنامههای علمی. - Java EE (Enterprise Edition) : نسخهای از جاوا که بر پایه Java SE ساخته شده و برای توسعه برنامههای سازمانی مقیاسپذیر و توزیعشده طراحی شده است. از سال ۲۰۱۷، به Jakarta EE تغییر نام داد (پس از انتقال به Eclipse Foundation).
کاربرد: برنامههای وب، سرورهای سازمانی، و سیستمهای پیچیده مثل ERP و CRM.
ویژگیها: شامل APIهایی مثل Servlets، JSP، EJB، JPA، JAX-RS (برای REST)، و ابزارهایی برای مدیریت تراکنشها و امنیت.
مثال: وبسرویسها، APIهای RESTful، یا سیستمهای بانکی. - Java ME (Micro Edition) : نسخه سبکوزن جاوا برای دستگاههای با منابع محدود مانند موبایلها، دستگاههای تعبیهشده، و IoT.
کاربرد: برنامهنویسی برای دستگاههای کوچک مثل گوشیهای قدیمی، سنسورها، یا سیستمهای نهفته.
ویژگیها: شامل زیرمجموعهای از Java SE با APIهای خاص مثل CLDC (Connected Limited Device Configuration) و MIDP (Mobile Information Device Profile).
مثال: اپلیکیشنهای ساده موبایل (مانند بازیهای قدیمی جاوا)، سیستمهای IoT، یا دستگاههای POS.
جاوا یا جاوا اسکریپت
در نهایت باید به این نکته توجه داشته باشید که جاوا به معنای جاوااسکریپت نیست.در واقع بجز نامشان ،هیچگونه شباهتی با یکدیگر ندارند
جاوا یکی از زبان های برنامه نویسی برای کد نویسی و توسعه نرم افزارهای کامپیوتری است.این زبان برای اجرای برنامه ها به عنوان یک بستر عمل نموده که برنامه ها برای اجرا به آن نیاز دارند.علاوه بر این زبان جاوا دارای پلاگینی مخصوص برای مرورگرهای اینترنتی است که برای اجرای برنامه هایی که با این زبان نوشته شده اند ،لازم است.
جاوااسکریپت نیز همانطور که از نامش پیداست یک زبان اسکریپت نویسی است و به منظور نوشتن برنامه های سمت کلاینت و در مرورگر استفاده می شود.جاوا اسکریپت توسط شرکت Netscape طراحی و انتشار یافت.از جاوااسکریپت در پویا سازی صفحات وب استفاده میگردد و در حالت پیشفرض قابلیت اجرا بر روی سیستم عامل های مختلف را ندارد.جاوا اسکریپت عموما در اسناد html استفاده میگردند و نمیتوانند یه عنوان یک برنامه مستقل در سیستم عامل اجرا گردند.برای یادگیری جاوا اسکریپت باید در کلاس آموزش جاوا اسکریپت در آکادمی پرتو شرکت نمایید.ما در بهترین آموزشگاه برنامه نویسی همواره در کنار شما هستیم.

جیمز گاسلینگ
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید ؟در گفتگو ها شرکت کنید!