آموزش جاوا–امکانات و قابلیت های Java

آموزش جاواآموزش جاوا امکانات و قابلیت های متعددی دارد که در زیر به آن ها اشاره می کنیم:سادهشی گراقابل حمل و اجرا بر روی محیط های مختلف (portable)مستقل از بستر اجرا (Platform independent)امن و قابل اعتمادکارا و قدرتمندقابل اجرا به صورت یکسان در محیط های مختلف (Architecture neutral)داینامیک و دارای قابلیت تفسیر کد بر اساس دستگاه میزبان در زمان اجراتفسیری (interpreted)کارایی بالادارای قابلیت پردازش موازی (multithreaded)(قابل استفاده برای تولید اپلیکیشن های توزیع شده و بزرگ) Distributedسادگی زبان جاوااز آنجایی که گرامر زبان Java مبتنی بر C++ است، آن دسته از برنامه نویسانی که قبلا با C++ کار کرده اند به راحتی می توانند Java را نیز یاد بگیرند. همچنین بسیاری از قابلیت هایی که کم استفاده می شوند یا در کد سردرگمی ایجاد می کنند نظیر explicit pointer ها (اشاره گرهای صریح)، سربارگذاری عملگرها (operator overloading) را حذف کرده است. این زبان با برخورداری از قابلیت مدیریت خودکار حافظه (garbage collection) می تواند آبجکت های بلا استفاده را از حافظه حذف کند.استفاده از تکنیک برنامه نویسی شی گرا (OOP)منظور از شی گرایی، سازمان دهی نرم افزار مورد نظر در قالب ترکیبی از انواع آبجکت است که علاوه بر داده های برنامه، رفتار و قابلیت های مختلف آن را در خود کپسوله می کند.برنامه نویسی شی گرا یا OOP در واقع یک تکنیک برنامه نویسی است که با رعایت کردن یک سری قوانین، توسعه ی نرم افزار و نگهداشت آن را ساده می سازد.مفاهیم و اصول OOP به شرح زیر می باشند:مستقل از بستر اجرا (Platform independent)بستر اجرا یا platform عبارت است از محیط سخت افزاری و نرم افزاری که برنامه در آن اجرا می شود. platform به دو بخش تقسیم می شود: 1. مبتنی بر نرم افزار 2. مبتنی بر سخت افزار. Java با بستر اجرای نرم افزاری سروکار دارد.گفتنی است که پلت فرم جاوا با سایر پلت فرم ها تفاوت دارد از این نظر که یک بستر اجرای نرم افزاری است که بر پایه ی سایر پلت فرم های مبتنی بر سخت افزار ساخته شده است و بر روی آن ها اجرا می شود. Java از دو کامپوننت تشکیل شده است:محیط اجرا (Runtime Environment)(توابع کتابخانه ای یا Application programming interface) APIجالب است بدانید که کد جاوا بر روی چندین محیط قابل اجرا می باشد که از جمله ی آن ها می توان به ویندوز، لینوکس، سلاریس و مک اشاره کرد. کد جاوا را ابتدا کامپایلر ترجمه کرده و به bytecode که یک زبان میانی است تبدیل می کند. Bytecode یک کد مستقل از پلت فرم است که بر روی محیط های مختلف اجرا می شود و با شعار یکبار بنویس و همه اجرا کن کاملا منطبق است.ویژگی ایمن بالاجاوا Java به دلایل زیر یک زبان امن درنظر گرفته می شود:عدم وجود explicit pointerبرنامه های Java در بستر دستگاه مجازی (virtual machine sandbox) اجرا می شوند.کلاس Classloader - پکیج کلاس هایی که به سیستم فایل دستگاه محلی مربوط می شود را از آن هایی که از منابع اینترنتی و از طریق شبکه وارد می شوند، جدا ساخته و از این طریق سطح امنیت را بالا می برد.بایت Bytecode Verifier - قطعات کد (code fragment) را جهت وجود یا عدم وجود کد غیرمجاز که می تواند مجوز دسترسی به آبجکت ها را نقض کند یا صدمه ای وارد نماید، بررسی می کند.مدیریت Security manager – مشخص می کند که کلاس اجازه ی دسترسی به کدام منابع را دارا می باشد برای مثال اجازه ی درج (write) اطلاعات در دیسک دستگاه و خواندن (read) محتوا از آن را دارد یا خیر.این مقدار امنیت از سمت زبان Java تامین می شود. علاوه بر این خود توسعه دهنده نیز می تواند از طریق SSL، JAAS و Cryptography/رمزنگاری سطح امنیت اپلیکیشن های Java را بالا ببرد.ویژگی قدرتمند بودن (Robust)واژه ی انگلیسی Robust به معنای قدرتمند بودن می باشد. Java زبانی است که خود حافظه را به صورت بهینه مدیریت کرده، دارای سیستم memory management خودکار کارا و بهینه می باشد. در زبان مذکور خبری از pointer یا متغیری که آدرس متغیر دیگری را در خود نگه می دارد نیست و این امر سطح ایمنی اپلیکیشن را بالا می برد. زبان Java از سیستم مدیریت حافظه ی خودکار که garbage collector نام دارد برخودار است. علاوه بر این، خطاهایی که در زمان اجرا رخ می دهند را مدیریت نموده (از exception handling پشتیبانی می کند) و از مکانیزم بررسی نوع داده ای (type checking) پشتیبانی می کند. تمامی ویژگی های نام برده Java را قدرتمند می سازند.ویژگی Architecture neutralبدین معنی است که نرم افزار توسعه یافته با Java طوری طراحی شده است که از محیط یا بستر اجرایی که قرار است در آن نصب و راه اندازی شود، کاملا مستقل است (target platform independant). به طور مثال اندازه ی انواع داده ای اولیه این زبان در انواع محیط های سخت افزازی و نرم افزاری ثابت است. در زبان برنامه نویسی C، انواع داده ای int (عدد صحیح) در معماری 32 بیتی 2 بایت را به خود تخصیص می دهد و در معماری 64 بیتی 4 بایت را اشغال می کند. این در حالی است که نوع داده ای int زبان java در هر دو معماری مقداری یکسان از حافظه را اشغال می کند.ویژگی portableمی توان بایت کد جاوا را به هر بستر اجرایی (platform) انتقال داده و در آنجا از کد مورد نظر خروجی گرفت.ویژگی High-performance و کارایی بالاجاوا Java سریع تر از کدهای تفسیر شده ی قدیمی عمل می کند چراکه byte code جاوا به کد طراحی شده برای سخت افزار و سیستم عامل خاص/Native code نزدیک است. با این وجود کد جاوا که ابتدا کامپایل و بعد تفسیر می شود، نسبت به زبان های منحصرا کامپایلی نظیر C++ کندتر اجرا می شود.ویژگی Distributed (ساخت اپلیکیشن های بزرگ و توزیع شده)جاوا Java زبانی است که توسعه دهنده با آن می تواند اپلیکیشن هایی با مقایس بزرگ و توزیع شده پیاده سازی کند. RMI و EJB دو فریم ورکی هستند که برای ساخت اپلیکیشن های توزیع شده بکار می روند. می توان با فراخوانی متدها از هر دستگاهی در اینترنت به فایل های مورد نظر دسترسی داشته باشید.ویژگی Multi-threaded (قابلیت پردازش موازی)هر thread مانند یک برنامه ی مستقل می باشد که به موازات برنامه ی دیگری اجرا می شود. می توان به واسطه ی thread، با Java برنامه هایی نوشت که وظایف و عملیات مختلفی را به موازات هم (در آن واحد و به طور همزمان) مدیریت می کند. مزیت اصلی ویژگی multi-threading یا قابلیت پردازش موازی این است که به ازای هر thread حافظه را اشغال نمی کند بلکه برای این منظور، یک ناحیه ی مشترک در حافظه درنظر می گیرد. thread ها برای اپلیکیشن های تحت وب و چند رسانه ای بسیار کاربردی و حائز اهمیت می باشند.پیاده سازی یک برنامه ی ساده با Java/نوشتن برنامه ی ساده با Javaابزار مورد نیاز توسعه ی نرم افزارساخت و پیاده سازی یک مثال ساده ی نمایش متن Hello با Javaبرطرف کردن مشکل javac is not recognizedدر این آموزش، با گرامر و ابزار زبان Java یک برنامه ی ساده ی کاربردی خواهیم نوشت. کافی است ابزار توسعه ی اپلیکیشن جاوا یا JDK را نصب کنیم.برای نصب یک برنامه ی Java، لازم است کلاسی که دربردارنده ی متد main (تابعی که اجرای برنامه از آن نقطه شروع می شود) می باشد را ایجاد کنید.ابزار مورد نیاز برای نوشتن برنامه ی Hello Javaبرای پیاده سازی و اجرای برنامه Java، لازم است مراحل زیر را دنبال نمایید:نرم افزار JDK را نصب کنید. برای دانلود آن می توانید به آدرس مربوطه مراجعه کرده و پس از بارگیری فایل، آن را نصب نمایید.آدرس قرارگیری پوشه ی jdk/bin را با مقداردهی متغیر path تنظیم نمایید.برنامه ی Java را با کد و گرامر زبان Java بنویسید.برنامه ی java را کامپایلی و سپس آن را اجرا کنید.پیاده سازی برنامه ی ساده ی hello java با زبان Javaدر زیر برنامه ی ساده ی hello java را ایجاد کرده و پیاده سازی خواهیم کرد:class Simple{ public static void main(String args[]){ System.out.println("Hello Java"); } }این فایل را تحت اسم Simple.java ذخیره نمایید.خروجی:Hello Javaشرح جزئی اولین برنامه ی پیاده سازی شده با javaدر زیر به شرح هر یک از کلیدواژگان class، public، static، main، String[]، System.out.printIn() که در اپلیکیشن ساده ی پیاده سازی شده با Java بکار رفته خواهیم پرداخت.کلاس Class یک کلیدواژه ی در زبان Java جهت تعریف یک کلاس می باشد.عمومی public یک کلیدواژه مشخص کننده ی سطح دسترسی است که عضو مورد نظر را در دسترس تمامی توابع و کلاس ها قرار می دهد.استاتیک static نیز یک کلیدواژه است که در مثال جاری برای اعلان تابع بکار رفته است. مزیت تعریف تابع static این است که برای فراخوانی آن نیازی به ساخت نمونه یا آبجکت از روی کلاس نیست. متد main را دستگاه مجازی Java اجرا می کند، بنابراین برای فراخوانی و اجرای متد نیازی به ساخت آبجکت از روی کلاس مربوطه نیست. به دلایل ذکر شده، در مصرف حافظه صرفه جویی می شود.کلیدواژه ی void نوع خروجی متد را مشخص می کند و در واقع نشانگر این است که متد هیچ مقداری را به عنوان خروجی برنمی گرداند.اصلی main نقطه ی شروع برنامه و جایی که روند اجرا از آن آغاز می شود را بیان می کند.دستور String[] args برای ارسال آرگومان های خط فرمان به تابع main بکار می رود.متد System.out.printIn() برای چاپ خروجی و نمایش متن برای کاربر بکار می رود. در خصوص عملکرد داخلی این دستور بعده ها بیشتر شرح خواهیم داد.برای نوشتن یک برنامه ی ساده مورد نظر، مراحل رو به رو را به ترتیب طی نمایید: by start menu -> All Programs -> Accessories -> notepad . سپس برنامه ی ساده ی زیر را بنویسید:همان طور که در تصویر بالا نمایش داده شده است، کدهای جاوا برنامه ی ساده ی خود را در محیط برنامه ی notepad نوشته و سپس آن را تحت اسم Simple.java ذخیره نمایید. حال به منظور کامپایل و اجرای برنامه، پنجره ی فرمان را با طی کردن مراحل رو به رو باز نمایید:برای کامپایل و اجرای برنامه، ابتدا به پوشه ی جاری مراجعه نمایید. همان طور که می بینید، پوشه (directory) جاری من c:\new هست. دستورهای زیر را اجرا کنید:به منظور کامپایل: javac Simple.javaبه منظور اجرا: java Simpleبه چند روش می توان یک برنامه ی مبتنی بر Java را نوشت؟راه های مختلفی برای نوشتن یک برنامه ی جاوایی وجود دارد. اصلاحات و تغییرات جزئی که می توان در برنامه ی مورد نظر اعمال کرد، به شرح زیر می باشند:با تغییر توالی یا ترتیب قرارگیری modifier ها (static، public)، نمونه ی اولیه ی متد (method prototype) تغییر نمی کند.توجه خود را به متد ساده ی main و تغییری که در ترتیب قرارگیری modifier ها اعمال شده است جلب نمایید.static public void main(String args[])روش نگارش آرایه در Java و در مکان قراردهی جاینگهدار اندیس آرایه "[]" به سه صورت امکان پذیر می باشد: 1. اینکه [] را پس از نوع درج کنید 2. آن را قبل از متغیر قرار دهید 3. اینکه آن را پس از متغیر جایگذاری نمایید.در زیر روش های مختلف نوشتن متد main که در هر یک نحوه ی نگارش مکان نگهدار اندیس آرایه متفوات است را مشاهده می کنید.public static void main(String[] args) public static void main(String []args) public static void main(String args[]) می توان با ارسال سه نقطه یا در اصطلاح برنامه نویسی ellipses به متد main، از امکان var-args در متد نام برده بهره گرفت.در زیر یک کد ساده که از var-args در متد اصلی استفاده می کند را مشاهده می نمایید. در مباحث آینده درباره ی امکان var-args شرح خواهیم داد.public static void main(String... args)درج نقطه ویرگول در انتهای کلاس در Java اختیاری است.توجه خود را به کد ساده ی زیر جلب نمایید.class A{ static public void main(String... args){ System.out.println("hello java4"); } }; مفهوم signature های (اسم متد و لیست پارامترهای ورودی آن) استاندارد و مجاز متد در زبان Javaمفهوم signature های غیرمجاز و غیراستاندارد متد main در Javapublic void main(String[] args) static void main(String[] args) public void static main(String[] args) abstract public static void main(String[] args) برطرف کردن خطای "javac is not recognized as an internal or external command"چنانچه خطایی نظیر آنچه در تصویر زیر مشاهده می کنید، رخ داد، در آن صورت جهت رفع مشکل لازم است متغیر path را مقداری دهی نمایید. از آنجایی که DOS با javac یا java آشنایی ندارد، شما بایستی متغیر path را تنظیم کنید. البته اگر شما برنامه ی خود را داخل پوشه ی jdk/bin ذخیره نمایید، دیگر نیازی به مقداردهی متغیر path نخواهد بود. اما در هر حال بهتر متغیر نام برده را مقداردهی نمایید.