معرفی زبان جاوا

جاوا

با جاوا یک بار کدنویسی کنید و هرجا اجرا کنید.

بررسی اجمالی

جاوا یک زبان برنامه نویسی ساده شی گرا مبتنی بر کلاس است. اگرچه ما نمی توانیم آن را کاملاً شی گرا در نظر بگیریم زیرا از انواع داده های اولیه پشتیبانی می کند. این زبان یک زبان برنامه نویسی همه منظوره و سطح بالا است که به برنامه نویسان و توسعه دهندگان کمک می کند تا یک کد را یک بار بنویسند و آن را در هر جایی اجرا کنند. جاوا یک زبان مستقل از پلتفرم است و از آنجایی که به کد بایت (نه به کد نهایی) ترجمه شده است، می توان آن را روی هر ماشینی که JVM پشتیبانی می کند اجرا کرد و وظیفه ی تبدیل بایت کد به کد نهایی وظیفه JVM (ماشین مجازی جاوا) موجود روی پلتفرم است.

آشنایی با زبان برنامه نویسی جاوا

ساختار کلی جاوا

جاوا یک زبان برنامه نویسی است که جیمز گاسلینگ در سال 1995 در Sun Microsystems توسعه داد که در سال 2009 توسط شرکت اوراکل خریداری شد و در حال حاضر متعلق به این شرکت است.

  • جاوا یک زبان سطح بالاست(نزدیک به زبان انسان) که مراحل کدنویسی،اشکال زدایی و ترجمه را آسان میکند.
  • جاوا یک زبان برنامه نویسی شی گرا مبتنی بر کلاس است و از نظر امکانات شی گرایی یکی از کاملترین زبان هاست و بر این اصل استوار است : یکبار کد بنویس و هرجایی اجرا کن
  • از آنجایی که برنامه های جاوا به کد بایت کامپایل می شوند(و نه کد نهایی)، می توانند بر روی هر ماشینی که JVM پشتیبانی می کند اجرا شود.
  • کدهای جاوا بسیار شبیه به C/C++ هستند که درک آنها را آسان‌تر می‌کند.

کاربردهای زبان برنامه نویسی جاوا

  • برنامه نویسی بازی های کامپیوتری و ویدیویی
  • توسعه اپلیکیشن های موبایل و نرم افزارهای دسکتاپی
  • برنامه نویسی تحت وب
  • برنامه نویسی برای ربات ها
  • برنامه های کاربردی رومیزی از قبیل acrobat reader, media player, antivirus و…
  • برنامه های کاربردی تحت وب نظیر irctc.co.in و…
  • برنامه های کاربردی سازمانی نظیر برنامه های کاربردی بانکها
  • موبایل
  • سیستم های تعبیه شده
  • کارت های هوشمند
  • رباتیک

چرا از جاوا استفاده کنیم؟

همانطور که در بالا ذکر شد، جاوا یک زبان سطح بالا است و اگر می خواهید اصول برنامه نویسی را بدانید باید آن را بیاموزید. حالا ببینیم جاوا چه خصوصیاتی داره که باید اونو بیاموزیم.

  1. شی گرا
  2. قابل حمل
  3. ساده
  4. ایمن
  5. مقاوم
  6. پلتفرم مستقل
  7. معماری خنثی

در ادامه تمامی این ویژگی ها را به طور مفصل توضیح میدهیم.

چرا زبان برنامه نویسی جاوا JAVA نامیده می شود؟

جاوا نام جزیره ای زیبا در اندونزی است. همچنین گفته می شود که اولین قهوه درست در اینجا به نام قهوه جاوا نامگذاری شده است. این نام توسط جیمز گاسلینگ در طول روز هنگامی که او در حال لذت بردن از یک فنجان قهوه در نزدیکی دفتر خود بود انتخاب شد. قبل از آن OAK نامی بود که انتخاب شده بود و تیم رسما تصمیم گرفت نام آن را تغییر دهد. گزینه هایی که آنها در نظر گرفتند عبارت بودند از Silk، Revolutionary، Dynamic، DNA و Jolt. با وجود اینکه Silk بیشتر مد نظر بود، آنها تصمیم گرفتند جاوا را انتخاب کنند. زیرا منحصر به فرد بود و بسیاری از مردم آن را ترجیح دادند.

اصطلاحات جاوا

قبل از توضیحات بیشتر، برخی از اصطلاحات جاوا وجود دارد که باید آنها را درک کنیم. بنابراین بیایید درک مختصری از اصطلاحات جاوا داشته باشیم.

کیت توسعه جاوا (JDK)

همانطور که از نام رسمی آن مشخص است، کیت توسعه جاوا یک کیت تمام عیار است که کامپایلر، محیط اجرای برنامه های جاوا (JRE)، اشکال زدا و اسناد جاوا در آن گنجانده شده است. پس برای برنامه نویسی و همچنین اجرای برنامه های جاوا باید JDK را روی سیستم خود نصب کنیم.

همانطور که از JDK استفاده می کنیم، به محیطی برای اجرای برنامه ها هم نیاز داریم.JRE یا Java Runtime Environment محیطی برای اجرای برنامه جاوا را فراهم می کند.از جمله JVM یا ماشین مجازی جاوا، کلاس های هسته ی جاوا و فایل های دیگر مورد نیاز.

اجزای JDK

محیط زمان اجرا جاوا (JRE)

JRE بخشی از JDK است که به نوبه خود پس از نصب برنامه های جاوایی بوسیله ی JRE اجرا میشوند.پس برای اجرای یک برنامه جاوا بر روی سیستم خود، به JRE نیاز داریم.

JRE در مجموع از چندین عنصر تشکیل شده است که عبارتند از:

  • ماشین مجازی جاوا (JVM)
  • کتابخانه های کلاس جاوا
  • لودر کلاس جاوا

هنگامی که نرم افزار ما اجرا میشود، برای اجرا به یک محیط نیاز دارد. معمولاً برنامه ها روی سیستم عامل اجرا میشوند، به عنوان مثال، یونیکس، لینوکس، مایکروسافت ویندوز یا macOS. اما درمورد جاوا JRE به عنوان یک مترجم و تسهیل کننده و رابط بین برنامه جاوا و سیستم عامل عمل می کند.

ماشین مجازی جاوا (JVM)

ماشین مجازی جاوا که به طور خلاصه JVM نامیده می شود، یک بحش مهم در JDK و JRE است زیرا در هر دو مکان تعبیه شده است. هنگامی که برنامه ای را با استفاده از JRE و JDK اجرا می کنید، جهت تفسیر به JVM هم ارسال میشود. مراحل کار به شرح زیر است:

کامپایل کد: کیت توسعه جاوا (JDK) کامپایلر JAVAC را برای ترجمه ی کد به بایت کد (کد میانی) در اختیار ما قرار می دهد. ما اساساً به JDK نیاز داریم تا کد منبع ما را به فرمت خاصی تبدیل کند که به راحتی توسط Java Runtime Environment (JRE) قابل اجرا باشد.

اجرای کد: JVM بایت کد ارائه شده توسط کامپایلر را اجرا می کند. از آنجایی که همیشه به ما گفته می شود جاوا یک زبان مستقل از پلتفرم است، خروجی تولید شده توسط JVM موجود در JDK یا JRE نصب شده روی سیستم عامل هر نوع سیستمی به راحتی قابل اجرا است و این دلیل مستقل بودن جاوا از پلتفرم است.

بایت کد در فرآیند توسعه

سورس کد ارائه شده به کامپایلر JAVAC که در JDK موجود است به بایت کد کامپایل می شود که JVM می تواند آن را اجرا کند و به عنوان یک فایل .class توسط خود کامپایلر ذخیره می شود. ما همچنین می‌توانیم این بایت کد را با استفاده از یک disassembler مانند javap مشاهده کنیم.

ساختار JDK

زباله روب

در جاوا، برنامه نویسان نمی توانند اشیاء را حذف کنند. از این رو، برای حذف یا بازیابی یک حافظه، JVM دارای یک زباله روب است. این زباله روب می تواند اشیایی را که به آنها ارجاع داده نشده است را جمع آوری کند.این امکان جاوا کار یک برنامه نویس را در مدیریت حافظه خیلی راحت تر می کند. با وجود این، برنامه نویسان باید از آنچه در کدهای خود می نویسند یا از اشیایی که مدت زیادی استفاده شده اند آگاه باشند. این به این دلیل است که این زباله روب نمی تواند حافظه اشیایی را که به آنها ارجاع داده شده است بازیابی کند. جمع آوری زباله یک فرآیند خودکار است.

ویژگی های اصلی جاوا

در این قسمت ویژگی های زبان برنامه نویسی جاوا توضیح داده می شود. بیایید تمام ویژگی های اصلی زبان برنامه نویسی جاوا را بررسی کنیم.

پلتفرم مستقل

اول و مهمتر از همه، کامپایلر کد منبع را به بایت کد اصلی خود تبدیل می کند و بعداً JVM بایت کد تولید شده توسط کامپایلر خود را اجرا می کند. علاوه بر این، این بایت کد را می توان بر روی هر پلتفرم دیگری اجرا کرد، به عنوان مثال، ویندوز، لینوکس یا macOS. یعنی می توانیم یک برنامه را روی ویندوز کامپایل کنیم، سپس می توانیم آن را روی لینوکس هم اجرا کنیم و غیره.

هر سیستم عامل مجموعه های مختلفی از JVM دارد. یک واقعیت جالب در اینجا این است که خروجی که در تمام سیستم عامل ها ظاهر می شود پس از اجرای بایت کد ما یکسان خواهد بود. و بنابراین ما آن را یک زبان مستقل از پلتفرم می نامیم.

زبان برنامه نویسی شی گرا

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

همه ما می دانیم که در کلاس اتومبیل ها، گزینه های زیادی مانند Alto، WaganR، Santro و غیره داریم و همه اینها در مجموع اشیاء منفرد هستند. به این ترتیب:

  • هر شیء خودرو دارای مدل، رنگ، قدرت موتور، حداکثر سرعت، سال ساخت و خواص دیگر خاص خود است که در مجموع به آنها ویژگی های کلاس خودرو می گویند.
  • عملکردهایی که توسط آن انجام می شود، مانند استارت، توقف، حرکت و غیره، توابع این کلاس خودرو هستند.

هنگام ایجاد یک کلاس، هیچ حافظه ای تخصیص داده نمی شود، اما زمانی که شی ایجاد می شود، حافظه را تخصیص می دهیم که در مورد ما یک شی ماشین جدید است.

چهار اصل اساسی در برنامه نویسی شی گرا:

  • وراثت : وراثت را می توان به عنوان یک شی تعریف کرد که تمام رفتارها و ویژگی های شی والد را به دست می آورد. کد ما را قابل استفاده مجدد می کند. چندریختی در زمان اجرا را می توان با استفاده از وراثت به دست آورد.

بنابراین در اینجا، صدای همه، اعم از حیوانات و انسانها، از والدینشان به ارث می رسد. سگ مانند سگ پارس می کند و انسان مانند پدر و مادرش صحبت می کند. از این رو، ما می توانیم یک نمونه واقعی از وراثت را ببینیم.

وراثت در جاوا
  • چندریختی: هنگامی که یک کار واحد را به روش های مختلف انجام می دهیم، می توان آن را به عنوان چندریختی تعریف کرد. در جاوا برای دستیابی به چندریختی از روش زبان برنامه نویسی overriding و روش overloading استفاده می شود.
    Overloading: زمانی که چندین متد در یک کلاس دارای نام های مشابه اما پارامترهای متفاوت هستند.
    Overriding: زمانی که نام متد و پارامترها در کلاس فرزند و سوپرکلاس یکسان باشد اما شیوه ی عمل متفاوتی داشته باشد(بازتعریف تابع)، آن را overriding می نامیم.
  • انتزاع: هنگامی که فقط عملکرد نشان داده می شود و جزئیات داخلی پنهان می شوند، به آن انتزاع می گویند. در زبان برنامه نویسی جاوا از اینترفیس (interface)و کلاس انتزاعی(abstract class) برای دستیابی به انتزاع استفاده می شود. بیایید این مورد را به کمک یک مثال درک کنیم: همه ما برای برداشت پول نقد و برخی کارهای دیگر به دستگاه خودپرداز مراجعه می کنیم، اما هرگز نمی دانیم که وقتی کارت بانکی خود را برای هر عملیاتی وارد می کنیم، در داخل دستگاه چه اتفاقی می افتد. به عنوان انتزاع در زندگی واقعی دیده شود.
  • کپسوله سازی: به طور کلی Encapsulation به فرایند قرار دادن کدها و اطلاعات در واحدهای یکتا گفته می شود. بهترین مثال هم برای آن همان کپسول قرص است. اگر یک کپسول قرص را از هم باز کنید مواد دارویی را مشاهده می کنید که احتمالا هر کدام از آنها کار خاصی را در بدن شما انجام می دهند. شما هم می توانید با تبدیل سطح دسترسی تمام متغیرهای نمونه و متدهای یک کلاس به private همانند یک کپسول قرص آنها را در محیط کلاس خود کپسوله کنید.
کپسوله کردن و محصورسازی در جاوا

ساده بودن

جاوا به روشی بسیار راحت تولید می شود تا بتوان آن را به راحتی درک کرد. اگر اصول اولیه OOP را درک کنید، تسلط بر جاوا آسان است. علاوه بر این، هیچ ویژگی پیچیده ای مانند اشاره گرها، ارث بری های چندگانه و غیره را درجاوا نمی بینید.

زبان قوی

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

امن است

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

قابل حمل

عدم پیاده سازی و مستقل بودن مشخصه ی قابل حمل بودن را به جاوا میدهد. می‌توان آن را روی هر پلتفرمی اجرا کرد، زیرا مانند Windows , Linux , macOS کاملاً مستقل از پلتفرم است. این بدان معناست که اگر برنامه ای را در لینوکس کامپایل کنید، می توانید آن را روی ویندوز و برعکس اجرا کنید.

معماری خنثی (Write Once Run Anywhere)

این مورد را می توان یکی از بهترین ویژگی های جاوا دانست زیرا بیان می کند که برنامه جاوا را می توان به راحتی بر روی هر پردازنده ای صرف نظر از سازنده و معماری آن اجرا کرد. برنامه جاوا یک فایل ‘.class’ تولید می کند که با چیزی که ما نوشته ایم مطابقت دارد اما حاوی کد باینری است. از آنجایی که بایت کد به هیچ معماری ماشینی وابسته نیست، باعث عدم وابستگی به معماری پردازنده میشود.

در زیر لیستی از دیگر ویژگی های درونی زبان جاوا آورده شده است:

چند رشته ای

با استفاده از این ویژگی، نوشتن برنامه هایی که به اندازه کافی قادر به انجام چندین کار به طور همزمان هستند برای ما فراهم می شود. این مورد برای توسعه دهندگان زمانی مفید است که برنامه های تعاملی ایجاد می کنند که می توانند به راحتی و بدون وقفه در عملکرد اجرا شوند.

عملکرد بالا

معماری جاوا به گونه ای طراحی شده است که هنگام اجرای یک برنامه، سربار را کاهش می دهد که در عملکرد برنامه‌ جاوایی شما تاثیر زیادی دارد، just in time compiler یا به اختصار JIT بخش‌های پرتکرار کد شما (hotspot) را در زمان اجرا کامپایل می‌کند تا لازم نباشد برای هر اجرا آن را تفسیر کند.

توزیع شده است

وقتی از زبان برنامه نویسی جاوا استفاده می کنیم، توانایی کافی برای ایجاد برنامه های کاربردی توزیع شده را داریم. RMI (Remote Method Invocation) و EJB (Enterprise Java Beans) به ما در ایجاد برنامه های کاربردی توزیع شده کمک می کنند. مثلا میتون یک برنامه از طریق یک JVM از راه دور اجرا کرد یا قسمت های مختلف برنامه را روی سیتم های مختلف و دور از هم توزیع کرد.

برنامه ساده در جاوا

بیایید درک عمیق تری از نحوه کار یک برنامه جاوا داشته باشیم.

// Example program in java.

/* Here, we import classes 
from the packages. */
import java.io.*;

// This is the main class.
public class Main {

  // This is the main driver method.
  public static void main(String[] args) {
    // This is the standard print statement
    System.out.println("Welcome to pishahangsoft.ir");
  }
}

خروجی

Welcome to pishahangsoft.ir

محتوای نوشته