معرفی زبان برنامه نویسی جاوا
با ما با جاوا آشنا شوید : زبان ساده ولی پر کاربرد !
جاوا یک زبان برنامهنویسی چندمنظوره و شیگرا است که تا حدودی زیادی به C و ++C شباهت دارد؛ اما استفاده از آن آسانتر است. طبق تعریف شرکت سان مایکروسیستمز در سال ۲۰۰۰:
جاوا زبان رایانهای ساده، شیگرا، مناسب شبکه، تفسیرشدنی، مستحکم، امن، فارغ از معماری، پرتابل، با عملکرد بالا، چندنخی و دینامیک است.مهم ترین ویژگی جاوا این است که اساسا شی گراست به این معنی که توانایی استفاده مجدد و مکرر از کدهای از پیش نوشته شده را دارد.
ویژگی دیگر جاوا این است که بر روی سیستم های مختلف کار می کند مثلا برنامه ای که شما با یک سیستم اینتل نوشته اید به راحتی روی یک سیستم مکینتاش و یونیکس اجرا می شود .
سادگی، قابل انتقال بودن، کارایی بالا، استحکام، پویایی و ایمنی بالا از دیگر قابلیت های جاوا است.
برنامههای جاوا، قابلیت حمل در شبکه را دارند. یعنی میتوان آن را یکبار نوشت و سپس روی ماشینهای مختلف اجرا کرد.
کدهای جاوا مقاوم هستند. یعنی کمتر اتفاق میافتد که برنامه درهم شکسته شود یا اصطلاحا crash کند.
توضیح دیگر اینکه در این پکیج آموزشی به تدریس JQUERY نیز میپردازیم.
jQuery یکی از فریمورکهای JavaScript است که امکان استفاده ازقابلیت های از پیش آماده شده ای را فراهم میآورد و عمل هدایت پرونده را آسانتر میکند.
در واقع jQuery کتابخانه جاوا اسکریپت است که به کمک آن میتوان نرمافزارهای مبتنی بر Ajax ، برنامههای سطح پایین مبادله ای (ارتباط مرورگر با کاربر) و حتی حرکات انیمیشنی با افکتهای پیشرفته را ایجاد نمود.
به کمک jQuery میتوان صفحات وب قدرتمند و داینامیک(پویا) طراحی نمود. با توجه به اینکه جی کوئری برخی از میانبرهای نوشتاری را ارائه میکند اما نمیتوان آن را جایگزین جاوا اسکریپت دانست.
زبان برنامه نویسی جاوا چیست؟
جاوا (JAVA) یک زبان برنامه نویسی شیء گرا (OOP) میباشد که شباهت زیادی به زبان برنامه نویسی پایه C++ دارد، با این تفاوت که شیء گرایی آن از مدلهای آسانتری پیروی میکند و همچنین از دستور عملهای سطح پایین زبان C که امروزه چندان مورد استفاده قرار نمیگیرند – پشتیبانی نمیکند.
این زبان برنامه نویسی بسیار کاربردی، روی انواع پلتفرمها قابل اجرا است؛ در واقع برنامههای نوشته شده توسط زبان جاوا به صورت بایت کد میشوند و سپس ماشین مجازی جاوا (JVM) آنها را به کدهای ماشین تبدیل کرده و به اجرا در میآورد. به دلیل وجود JVM است که زبان جاوا به هیچ سیستم عامل خاصی وابسته نیست و برنامههای نوشته شده به زبان جاوا، بر روی هر نوع سیستم عاملی قابل اجرا میباشند. لازم به ذکر است که شعار زبان برنامه نویسی جاوا این است: “یک بار بنویس و همه جا اجرا کن!”
به همین منظور است که پس از گذشت سالها از طراحی آن، هنوز هم بین سه زبان برتر برنامه نویسی جهان قرار دارد و محبوبیت خود را تا به امروز، پر قدرت حفظ کرده است.
یکی از ویژگیهایی که جاوا را از دیگر زبانهای برنامهنویسی متمایز میکند، امنیت بالا و سازگاری بالای آن است. همچنین، جاوا با دارا بودن یک کتابخانه عظیم، بسیاری از مسائل و مشکلات برنامهنویسی را حل کرده و به شما کمک میکند که به سرعت نرمافزارهای خود را پیادهسازی کنید.
کاربران جاوا از تمامی حوزههایی که از نرمافزارهای مختلف استفاده میکنند، میتوانند با این زبان کار کنند. برنامهنویسان جاوا میتوانند در توسعه نرمافزارهای موبایل، وب، سرور، اینترنت اشیا و بسیاری از حوزههای دیگر فعالیت کنند. همچنین، شرکتهای بزرگی مانند اوراکل، گوگل، آمازون، IBM و بسیاری دیگر از جاوا به عنوان یکی از زبانهای اصلی برنامهنویسی خود استفاده میکنند.
ویژگی های زبان جاوا
زبان برنامه نویسی جاوا یک زبان شی گرا، سازگار و پرکاربرد است که برای توسعه نرمافزارهای مختلف مورد استفاده قرار میگیرد. برخی از ویژگیها و قابلیتهای این زبان عبارتند از:
سازگاری: به دلیل اینکه کد جاوا به صورت بایت کد (Bytecode) ترجمه شده و بر روی ماشین مجازی جاوا (JVM) اجرا میشود، برنامههای نوشته شده با این زبان بر روی تمامی سیستمهای عامل اجرا میشوند.
ایمنی و امنیت: جاوا دارای قابلیتهایی است که اجازه میدهد از حافظه بازیابی امن استفاده کرد و باعث کاهش خطرات امنیتی میشود. همچنین، با استفاده از کتابخانههایی مانند Java Cryptography و Java Security، میتوان برنامههای امنی نوشت.
پردازش موازی: از آنجا که JVM مدیریت تمامی نیازهای پردازشی را به عهده دارد، اجرای برنامههای جاوا باعث میشود تا برنامه به صورت موازی و در تعدادی نخ اجرا شود.
متدولوژی شیگرایی: جاوا زبانی شیگرا است که تمرکز آن روی شیها (Objects) و روابط بین آنها است.
کتابخانههای فراوان: جاوا به علت محبوبیت بالایی که دارد، دارای کتابخانههای فراوانی است که به برنامهنویسان کمک میکند تا برنامههای پیچیده را بسازند.
قابلیت چندسکویی: جاوا از چندسکویی پشتیبانی میکند که این امکان را برای برنامهنویسان فراهم میکند تا چندین وظیفه را به صورت همزمان و همپوشانیناپذیر انجام دهند.
سهولت استفاده: جاوا برای برنامهنویسانی که از زبانهای دیگر همچون C و C++ استفاده میکنند، به راحتی قابل یادگیری است.
سرعت: برنامههای جاوا به دلیل استفاده از ترجمه به زبان دستگاه برای اجرا، بسیار سریع هستند.
مستقل از پلتفرم: جاوا برای اجرای برنامهها از یک ماشین مجازی (JVM) استفاده میکند که باعث میشود برنامههای جاوا مستقل از سیستم عامل و پلتفرم باشند.
برنامههای جاوا را میتوان از یک پلتفرم به پلتفرم دیگر انتقال داد و در پلتفرم مقصد بدون اینکه نیاز باشد دوباره کامپایل شوند اجرا کرد. فقط باید در کامپیوتر مقصد jvm نصب شده باشد. با این امکان دیگر لازم نیست که برنامه نویسان نگران این باشند که برنامه نوشته شده قرار است در چه محیطی اجرا شود و سختافزار و سیستم عامل مقصد چه چیزی است.
معایب زبان برنامه نویسی Java
احتمالا مطالعه ویژگی ها و مزایای جاوا شما را ترغیب کرده است که از این زبان برای پروژه هایتان استفاده کنید؛ اگر چنین تصمیمی دارید، بهتر است این قسمت را با دقت مطالعه کنید؛ چرا که در این قسمت در مورد معایبی که جاوا دارد، با شما بیشتر صحبت می کنیم و شما بهتر می توانید تصمیم بگیرید که آیا از این زبان برنامه نویسی استفاده کنید یا خیر.
جاوا ظاهر و شمایل یکسانی در دسکتاپ شما نخواهد داشت
برای ایجاد رابط گرافیکی برنامه (GUI)، توسعهدهندگان از ابزارهای مختلفی استفاده میکنند که خاص هر زبان برنامهنویسی است. برای ایجاد اپلیکیشنهای اندروید، میتوان از نرمافزار اندروید استودیو استفاده کرد که به ایجاد اپلیکیشنهایی با حس و ظاهر بومی کمک میکند. اما برای اپلیکیشنهای دسکتاپ، زبان برنامهنویسی جاوا فاقد شکل و شمایل مناسب است.
برای ایجاد UI در جاوا، چندین سازنده UI وجود دارد که میتوان از آنها استفاده کرد، از جمله: Swing، SWT، JavaFX، JSF. اما Swing یک سازنده قدیمی است و با این حال همچنان در چندین IDE شامل ایکلیپس و NetBeans استفاده میشود. SWT از مولفههای بومی استفاده میکند، اما برای UI های پیچیده مناسب نیست. JAVAFX ظاهر تمیز و مدرنی دارد، اما هنوز به بلوغ کامل نرسیده است.
وجود کدهای طولانی و پیچیده
جاوا یک زبان برنامه نویسی سطح بالا است و زبان آن به زبان ماشین نزدیک تر است و درک آن سخت است. در واقع جاوا از کلمات زیادی استفاده میکند و این باعث میشود که جملات طولانی و پیچیدهای در کدها وجود داشته باشد. این ممکن است برای شروع کنندگان مزیتی نداشته باشد، زیرا کد خوانایی کمتری دارد و سخت است که به سادگی آن را اسکن کرد. با این حال، این ویژگی برای برنامهنویسان با تجربه میتواند مزیتی باشد. جاوا به منظور کاهش کد غیر قابل درک C++ ایجاد شده است، که این به معنی آن است که برنامهنویسان میتوانند دقیقاً آنچه را که در نظر دارند را تایپ کنند. این باعث میشود که این زبان شفافیت بیشتری برای افراد غیر خبره داشته باشد، اما این همراه با فشردگی کمتری در کد است.
اگر جاوا را با پایتون مقایسه کنیم، متوجه خواهیم شد که پایتون نیاز به نقطهویرگول در انتهای هر خط ندارد و برای مثال از عملگرهای “and”، “or” و “not” به جای عملگرهای “&&”، “||” و “!” در جاوا استفاده میکند. همچنین، پایتون کمترین نیاز به تشریفاتی مانند پرانتز و آکولاد دارد.
جاوا در حوزههای مختلفی مانند تولید نرمافزار، توسعه وب، ارتباط با پایگاهداده، ساخت بازیهای رایانهای، توسعه اپلیکیشنهای تلفن همراه و … استفاده میشود. به دلیل وجود کتابخانههای بسیاری برای جاوا، برنامهنویسان به سادگی میتوانند برنامههای پیچیده را با استفاده از این زبان توسعه دهند.
پلتفرمهای جاوا (Java Platforms)
چهار نوع پلتفرم مختلف برای زبان برنامهنویسی جاوا (Java) وجود دارد:
۱. پلتفرم استاندارد جاوا Java Platform, Standard Edition (Java SE)
API این پلتفرم عملکرد اصلی زبان برنامه نویسی جاوا (Java) را ارائه میکند و برای شبکهسازی (Networking)، امنیت (Security)، دسترسی به پایگاه داده (Database access)، توسعهی رابط کاربری گرافیکی (GUI) و پارس XML (XML Parsing)استفاده میشود.
۲. پلتفرم کسبوکار جاوا Java Platform, Enterprise Edition (Java EE)
پلتفرم Java EE برای توسعه و اجرای برنامههای کاربردی بسیار مقیاسپذیر (Highly scalable)، در مقیاس بزرگ (Large-scale)، چندلایه (Multi-tiered) ، قابلاعتماد و ایمن ، یک API و محیط رانتایم (Runtime) را ارائه میکند.
۳. پلتفرم میکروجاوا Java Platform, Micro Edition (Java ME)
پلتفرم Java ME یک API و یک ماشین مجازی(Virtual Machine) کوچک دارد که برنامههای کاربردی زبان جاوا (Java) را روی دستگاههای کوچکی مانند تلفنهای همراه اجرا میکند.
۴. پلتفرم Java FX
JavaFX پلتفرمی برای توسعهی برنامههای کاربردی اینترنتی عالی با استفاده از یک API رابط کاربری سبک (Lightweight UI API) است. این پلتفرم از گرافیکهای سختافزاری (Hardware-accelerated graphics) و موتورهای رسانهای (Media engines) استفاده میکند که به جاوا (Java) کمک میکند تا از کلاینتهایی (Client) با کارایی بالاتر و APIهای مدرن برای اتصال به منابع داده شبکه استفاده کند.
ماشین مجازی جاوا (Jvm) چیست؟
در زبانهایی مانند سی و سی پلاس پلاس وقتی که برنامه نویس برنامهای را مینوشت آن را مستقیماً به دستورات زبان ماشین کامپایل می کرد. همین قضیه باعث بروز مشکلاتی میشد. مثلاً معماری کامپیوتر ها و تعداد دستورالعمل هر کدام با کامپیوتر دیگر فرق داشت همچنین هر پلتفرم و هر سیستم عامل امکانات بخصوصی در اختیار برنامه نویسان قرار میداد.
پس مجبور بودیم برنامهای را که می نویسیم منطبق با همان محیط اجرای برنامه بنویسیم و قابلیت حمل برنامه به محیط های دیگر از ما گرفته میشد. با ظهور جاوا و معرفی ماشین مجازی این مشکل برطرف شد. ماشین مجازی جاوا برنامهای است که بر روی سیستم نصب میشود و محیطی را برای برنامههای جاوا فراهم میکند که بدون نگرانی در مورد نوع ماشین و محیط اجرا و پلتفرم بتوانند اجرا شوند.
این کار باعث میشود که برنامه نوشته شده در هر پلتفرمی به راحتی در یک پلتفرم دیگر قابل اجرا باشد. فقط هر محیط اجرا باید jvm مربوط به خود را نصب کرده باشد. در اصل قضایای مربوط به محیط اجرا و امکانات سیستم عامل و معماری سختافزار و …. همه در jvm بررسی میشوند و پیادهسازی های مربوطه انجام می شود. در حقیقت ماشین مجازی جاوا یک لایه نرم افزاری است که بین برنامه نوشته شده با جاوا و سیستم قرار میگیرد و همه پیچیدگی های مربوط به پلتفرم را خودش مدیریت میکند و لازم نیست برنامه نگران این مباحث باشد و بر روی هدف خود تمرکز می کند.
فریمورکهای جاوا
فریمورکهای عالی زیادی برای جاوا وجود دارند که با آنها میتوان اپلیکیشنهای وب، موبایل، میکروسرویس و REST API هایی نوشت که روی ماشین مجازی جاوا اجرا میشوند.
فریمورکهای جاوا امکان تمرکز روی منطق تجاری اپلیکیشن به جای نوشتن کارکردهای ابتدایی مانند ایجاد اتصال به پایگاه داده یا مدیریت خطاها را فراهم میسازند. ضمناً اگر تجربه کدنویسی با جاوا را داشته باشید، با استفاده از فریمورکها میتوانید بسیار سریعتر کار برنامهنویسی را آغاز کنید.
BLADE: فریمورک ساده اپلیکیشن با کمترین اثرات جانبی
blade یک فریمورک سبک و با عملکرد بالا برای جاوا است که امکان ساخت اپلیکیشنهای وب سریع به روشی سرراست را فراهم میسازد. خالقان این فریمورک هدفشان این بوده است که کاربران آن بتوانند در طی یک روز آن را درک کنند. از این رو blade روی سادگی و ظرافت متمرکز شده است.
فریمورک blade از الگوی طراحی نرمافزار MVC یعنی «مدل-نما-کنترلر» (Model-View-Controller) استفاده میکند. درک طراحی این فریمورک آسان است، چون به هیچ کتابخانه شخص ثالث وابسته نیست و لایههای زیادی را نیز شامل نمیشود. blade بر مبنای جاوا ۸ طراحیشده است و یک وبسرور Netty و موتور templete نیز در داخل فریمورک جاسازی شده است
شما با استفاده از blade به رابط مسیریابی به سبک RESTful دسترسی مییابید و میتوانید اپلیکیشن خود را به عنوان یک پروژه maven ابتدایی توزیع کنید. این فریمورک ویژگیهای امنیتی داخلی دارد که برای مثال از دفاع CSRF و XSS استفاده میکند. blade فریمورک کارآمدی است چون از افزونهها و منابع webjar پشتیبانی میکند
Dropwizard: سرویسهای وب RESTful آماده Production
Dropwizard یک فریمورک با عملکرد بالا؛ اما سرراست محسوب میشود که برای توسعه سریع سرویسهای وب RESTful مورد استفاده قرار میگیرد. این فریمورک به طور خاص برای ایجاد میکروسرویسهای جاوا مناسب است.
فریمورک Dropwizard چند کتابخانه جاوا کاملاً تثبیت شده برای ارائه پلتفرمی سریع و بدون مزاحمت را گرد هم آورده است. این فریمورک به همراه یک سرور jetty توکار، Google Guava، Logback، Hibernate Validator، Joda Time و بسیاری کتابخانههای محبوب دیگر جاوا ارائه شده است. به علاوه Dropwizard شامل jersey نیز هست که با آن میتوان وبسرویسهای RESTful ساخت و Jackson که برای پردازش JSON مورد استفاده قرار میگیرد. Dropwizard را میتوان به عنوان یک اکوسیستم مجزا در نظر گرفت که شامل همه وابستگیهای اشاره شده بالا است که در یک بسته منفرد گرد هم آمدهاند.
اگر میخواهید از Dropwizard استفاده کنید، دیگر نیاز نیست زمان زیادی را صرف کارکردهای ثانویهای مانند نوشتن کد برای پیکربندی، معیارها، یا گزارشگیری بکنید. به جای آن میتوانید روی منطق تجاری اولیه اپلیکیشن تمرکز کنید و به بالاترین بهرهوری دست یابید. به همین دلیل است که Dropwizard در اغلب موارد به صورت یک فریمورک جاوای دوستدار عملیات یاد میشود. آغاز کار با آن در صورتی که قبلاً کد جاوا نوشته باشید، دشوار نیست چون مستندات Dropwizard مثال Hello World سادهای ارائه کرده است که میتواند در گامهای نخست به شما کمک کند.
Grails – فریمورک وب اپلیکیشن مبتنی بر Groovy
Grails یک فریمورک وب اپلیکیشن است که از زبان برنامهنویسی Groovy استفاده میکند. Grails یک زبان شیگرا برای پلتفرم جاوا است که به منظور بهبود بهرهوری توسعهدهندگان طراحی شده است. دستور زبان آن با جاوا مطابقت دارد و به بایتکد JVM (ماشین مجازی جاوا) کامپایل میشود.
Grails از تعدادی از مفاهیم مدرن توسعه نرمافزار پیروی میکند که شامل اصل ترجیح قرارداد بر پیکربندی (convention over configuration)، API opinionated برای الزام به بهترین رویهها و مقادیر پیشفرض ملموس است. همچنین بسیار محیط مناسبی برای توسعهدهنده دارد، چون به همراه مستندات، راهنمای گام به گام و کتابخانه گسترده افزونه ارائه شده است. شما میتوانید افزونههای خودتان را نیز بسازید و از پشتیبانی IDE برای ایکلیپس (Eclipse)، سابلایم (Sublime)، تکستمیت (TextMate)، انتلیج (IntelliJ IDEA) و دیگر پلتفرمها استفاده کنید.
GWT: کیت ابزار وب گوگل – اپلیکیشنهای سمت کلاینت جاوا که به وسیله جاوا اسکریپت توزیع میشوند
GWT یا کیت ابزار وب گوگل یک فریمورک وب عالی ایجاد شده از سوی گوگل است. در واقع GWT رویای هر توسعهدهندهای که میخواهد اپلیکیشنهای جاوا را برای وب بسازد برآورده ساخته است، چون امکان نوشتن کدهای سمت کلاینت جاوا و توزیع آن به صورت جاوا اسکریپت روی مرورگر را فراهم میسازد.
GWT که «گیویت» نیز تلفظ میشود، یک فریمورک پایدار و با نگهداری مناسب جاوا است. برای بیان این پایداری چیزی بهتر از این نیست که این فریمورک در چند مورد از محصولهای گوگل مانند AdWords، AdSense، Blogger و Google Wallet مورد استفاده قرار میگیرد. کیت ابزار وب گوگل یک وبسایت خاص است که همه ابزارها و منابعی مانند راهنماها، یک اپلیکیشن اولیه و افزونه ایکلیپس که ممکن است نیاز داشته باشید را ارائه میکند.
Hibernate: فریمورک نگاشت شی-رابطهای برای ارتباط بهتر با پایگاه داده
Hibernate یک فریمورک نگاشت شی -رابطهای است که ارتباط بهتر بین زبان برنامهنویسی جاوا و سیستمهای مدیریت پایگاه داده رابطهای (RDBMS) را ارائه میکند.
هنگامی که با زبانهای برنامهنویسی شیگرایی مانند جاوا کار میکنیم، با مشکلی به نام عدم مطابقت امپدانس شی-رابطهای (که در برخی موارد پارادایم عدم مطابقت نیز نامیده میشود) مواجه میشویم. زبانهای شیگرا و RDBMS ها دادهها را به طرز متفاوتی مدیریت میکنند که این امر میتواند منجر به مسائل عدم تطبیق شود. با این که زبانهای شیگرا دادهها را به شکل سلسله مراتبی از اشیا سازماندهی میکنند؛ اما پایگاههای داده رابطهای دادهها را در قالب جدول ارائه میکنند. برای نمونه یکی از مسائل عدم مطابقت هنگامی روی میدهد که مدل شی کلاسهایی بیش از تعداد جدولهای موجود در پایگاههای داده رابطهای داشته باشد.
JHipster: اپلیکیشنهای وب و میکروسرویسها با Spring Boot و Angular/React
JHipster یک فریمورک نسبتاً جدیدتر (در سال ۲۰۱۳ انتشار یافته) جاوا است که Spring Boot و دو فریمورک محبوب فرانتاند یعنی Angular و React را در یک نرمافزار تولید اپلیکیشن کنار هم گردآورده است. با استفاده از JHipster میتوانید به سرعت اپلیکیشنها و میکروسرویسهای مدرن وب مبتنی بر جاوا بسازید.
Spring Boot امکان ایجاد اپلیکیشنهای مبتنی بر Spring در رده production را ارائه میکند که با کمترین پیکربندی کار میکنند. JHipster این وضعیت را با انگولار، ریاکت و بوتاسترپ (Bootstrap) در سمت کلاینت ترکیب کرده است تا یک معماری فولاستک را در اختیار شما قرار دهد. اگر میخواهید ببینید که اپلیکیشنهای JHipster در دنیای واقعی چگونه به نظر میرسند برخی از نمونه اپلیکیشنها برای انگولار و ریاکت را که هر دو از سوی تیم JHipster توسعه یافتهاند ملاحظه کنید.
JHipster امکان انتخاب از میان دو سبک معماری را میدهد. نخست میتوانید از معماری monolithic استفاده کنید که در آن بخشهای فرانتاند و بکاند اپلیکیشن در یک اپلیکیشن منفرد ترکیب شدهاند. در روش دوم میتوانید از معماری میکروسرویس استفاده کنید که فرانتاند را از بکاند جدا میکند. JHipster شامل چندین ابزار نیز میشود و گزینههای بسیار زیادی برای کدنویسی سمت کلاینت و سرور، بستهبندی، به همراه وظایف مختلف DevOps ارائه کرده است. در نهایت باید گفت که تصادفی نیست که همه برندهای مشهوری مانند Adobe، Siemens، Bosch، HBO و Google از JHipster استفاده میکنند.
کاربردهای جاوا (Java) کجاست؟
کاربرد جاوا در برنامههای موبایل (Java Mobile Applications)
اول از همه لازم است بدانیم که سیستمعامل اندروید (Android OS) با زبان جاوا (Java) نوشته شده است؛ علاوهبراین بیشتر توسعهدهندگان موبایل جاوا (Java) را زبان رسمی خود میدانند. جاوا (Java) با نرمافزارهای طراحی برنامهها مانند Android Studio و Kotlin سازگار است. ازطرفی پلتفرم مایکرو جاوا (Java) (Java ME) این امکان را میدهد که برنامههایی را بسازیم که در همهی دستگاههایی که جاوا (Java) را پشتیبانی میکنند استفاده شوند.
کاربرد جاوا در دسکتاپ GUI (Java Desktop GUI Applications)
GUI مختصر کلمهیGraphic User Interface بهمعنای رابط کاربری گرافیکی است که جاوا (Java) امکان توسعهی GUI را ازطریق منابعی مانند Abstract Windowing Toolkit (AWT), JavaFX, و Swing به برنامهنویسان میدهد. AWT کامپوننتهای آمادهای، مانند فهرست، منو، دکمه و غیره، دارد. JavaFX از مجموعه ای از بستههای گرافیکی و رسانهای تشکیل شده است. Swing ویجت (widget) GUI محسوب میشود که مؤلفههای پیشرفتهتری مانند فهرست، صفحات اسکرول (Scroll panes)، صفحات تببندیشده (Tabbed panes) و درخت (Tree) را شامل است.
کاربرد جاوا در برنامههای مبتنی بر وب (Java Web-based Applications)
جاوا (Java) با داشتن کامپوننتهایی مانند Servlets، Struts و JSPs و همچنین امنیت بالا و کدینگ (Coding) آسان کمک کرده است تا توسعهدهنگان وب به این زبان روی بیاورند.
کاربرد جاوا در صنعت بازیسازی (Java Gaming Applications)
جاوا (Java) بهترین گزینه برای بازیسازی محسوب میشود؛ زیرا از موتور بازیسازی jMonkey پشتیبانی میکند که یکی از قدرتمندترین موتورهای سهبعدی حال حاضر محسوب میشود. البته برای بازیهای دوبعدی هم کافی است جاوا (Java) را با CSS ترکیب کنیم و خیلی راحت از آن برای ساخت بازیهای دوبعدی استفاده کنیم؛ پس اصلاً فرقی نمیکند که چه نوع بازی را میخواهیم بسازیم؛ جاوا (Java) برای همهی آنها قابلاستفاده است.
کاربرد جاوا در کلانداده (Java Big Data Applications)
این روزا کلانداده بسیار محبوب است و همهجا از آن صحبت میشود. حالا نکتهی مهم این است که جاوا (Java) اینجا هم حضور دارد. خوب است بدانیم که Hadoop، مشهورترین و پرکاربردترین پلتفرم کلانداده (Big Data Platform) با زبان جاوا (Java) نوشته شده است. از طرف دیگر، Scala که یک زبان برنامهنویسی پیشرو و قابلرقابت با جاوا (Java) محسوب میشود از جاوا (Java) نشئت گرفته شده و برای برطرفکردن برخی از مشکلات جاوا (Java) توسعه یافته است.
جاوا دینامیک است یا استاتیک
جاوا یک زبان برنامهنویسی استاتیک است در حالی که زبانهای برنامهنویسی دیگری مانند روبی (Ruby)، پایتون (Python)، و جاوا اسکریپت زبانهایی از نوع دینامیک محسوب میشوند. اکثر افراد به بحث تفاوت بین زبانهای با نوع استاتیک و دینامیک علاقهمند هستند.
- نوع دینامیک
اگر تاکنون تجربه عملی برنامهنویسی داشته باشید، با مفهوم متغیر آشنا هستید. در زبانهای با نوع دینامیک مانند روبی یا جاوا اسکریپت میتوان متغیری را بدون این که نوع داده ذخیره شدهاش معین باشد، اعلان کرد. این متغیر از نوع دینامیک است و مقدار آن میتواند هر چیزی مانند یک عدد، جمله و یا غیره باشد.
- نوع استاتیک
هنگامی که با دادهها در زبانهای از نوع استاتیک مانند جاوا سر و کار داریم، باید در زمان اعلان متغیر دقیقاً مشخص کنیم که متغیر چه نوع دادهای را نگهداری خواهد کرد. برای نمونه این متغیر حاوی عدد خواهد بود یا متغیر دیگر متن را ذخیره میکند و متغیر سوم حاوی تاریخ خواهد بود.
این بدان معنی است که یک زبان از نوع استاتیک ساختار بیشتری را شامل میشود. برخی از انواع خطاهایی که برنامهنویسها مرتکب میشوند، توسط ابزارهایی که جاوا در اختیار ما قرار میدهد، حتی پیش از اجرای برنامه، قابل تشخیص هستند. با این حال در صورتی که در زبانهای از نوع دینامیکی مانند روبی یا پایتون برنامهنویسی کنید، چنین خطاهایی تا زمان اجرای برنامه و مواجهه با از کار افتادن برنامه قابل تشخیص نخواهند بود.
بدین ترتیب در زبانهای برنامهنویسی از نوع استاتیک یک لایه اضافی از کدنویسی وجود دارد که باید انواع همه متغیرها از قبل مورد تفکر قرار گرفته و مشخص شود. بنابراین یادگیری زبانهای از نوع دینامیک برای کسانی که اولین زبان برنامهنویسیشان از نوع استاتیک بوده است، بسیار آسانتر از مسیر معکوس آن خواهد بود.
محیط های برنامه نویسی جاوا
برای نوشتن هر نوع برنامهای به یک محیط توسعهی یکپارچه یا IDE احتیاج خواهید داشت که فرایند کدنویسی، دیباگ و کامپایل کدها را برای شما ساده و آسان کند، از محبوبترین IDE های زبان جاوا میتوان به موارد زیر اشاره کرد:
- IntelliJ IDEA
- NetBeans
- Eclipse
شما میتوانید برای توسعهی برنامهی خود از یکی از این نرمافزارها استفاده کنید، به یاد داشته باشید برای برنامهنویسی جاوا به JRE و JDK احتیاج خواهید داشت که با مراجعه به وبسایت شرکت اوراکل میتوانید آخرین نسخهی این ابزارها را متناسب با سیستم خود دریافت کنید.
برخی از سرفصلهای دوره آموزش زبان برنامه نویسی جاوا :
- آشنایی با جاوا و مباحث مقدماتی
- آشنایی با زبان برنامه نویسی جاوا (Java)
- مروری بر تاریخچه زبان برنامه نویسی جاوا
- آشنایی با نگارش ها و نسخه های مختلف زبان برنامه نویسی جاوا
- معرفی Java Runtime Environment یا JRE و آشنایی با شیوه نصب آن
- معرفی Java Development Kit یا JDK و آشنایی با شیوه نصب آن
- آشنایی با محیط های توسعه برنامه های جاوا
- معرفی NetBeans IDE و آشنایی با شیوه نصب آن
- آشنایی اولیه با محیط نرم افزار NetBeans
- پیاده سازی اولین پروژه با زبان برنامه نویسی جاوا (پروژه Hello World)
- آشنایی با فرمت Jar
- اجزای سازنده برنامه ها و انواع داده ها در جاوا [رایگان]
- فراخوانی مجددا برنامه HelloWorld از جلسه قبلی
- آموزش نحوه اجرای صحیح برنامه های کنسولی تحت جاوا با اعمال تغییرات در رجیستری (Registry) ویندوز
- بررسی بخش های مختلف برنامه HelloWorld
- آشنایی با کلاس System و شی System.Out
- آشنایی با تابع (متد) System.Out.Println و System.Out.Print
- آشنایی با کاراکترهای خاص و Escape Sequence
- آشنایی با تابع System.Out.Format و نحوه فرمت بندی اعداد و رشته ها
- آشنایی با فرمت %d و %f برای نمایش و فرمت بندی اعداد
- آشنایی با فرمت %s برای نمایش و فرمت بندی متن ها
- انواع داده های اصلی یا Primitive Data Types در جاوا
- نحوه دریافت ورودی از کاربر، از طریق شی System.in و کلاس Scanner
- استفاده از کلاس Scanner برای ایجاد انتظار
- ساختارهای کنترل برنامه و انواع عملگرها در جاوا
- آشنایی با ساختارهای کنترل برنامه
- ساختارهای تصمیم گیری یا انتخاب (Selection)
- حلقه های تکرار (Repetition Loop)
- دستور If و If/Else برای تصمیم گیری و انشعاب در برنامه
- آشنایی با عملگرها یا Operators در جاوا
- عملگر مقداردهی یا Assignment
- عملگرهای محاسباتی (جمع، تفریق و…)
- عملگرهای قیاسی و رابطه ای
- عملگرهای منطقی (نقیض، ترکیب عطفی و فصلی)
- عملگر شرطی (?:)
- بررسی اولویت عملگرها نسبت به یکدیگر
- ساختارهای کنترل و تکرار در جاوا
- دستور Switch برای پیاده سازی تصمیم گیری و انشعاب چندگانه
- دستور While برای پیاده سازی حلقه های تکرار محدود و نامحدود
- دستور Do/While برای پیاده سازی حلقه تکرار با حداقل یک بار اجرا
- حلقه تکرار For برای پیاده سازی حلقه های تکرار محدود و مشخص
- مبانی برنامه نویسی شی گرا [رایگان]
- آشنایی با مبانی برنامه نویسی شی گرا یا Object Oriented Programming (به اختصار OOP)
- آشنایی با مفهوم کلاس (Class) و شی (Object)
- پیاده سازی یک کلاس ساده برای محاسبات مربوط به مثلث قائم الزاویه
- پیاده سازی سازنده (Constructor)
- پیاده سازی متدها و توابع در کلاس
- پیاده سازی توابع Get و Set برای شبیه سازی ویژگی (Property)
- مفهوم داده های ارزشی (Value Types) و ارجاعی (Reference Types)
- آشنایی با کلاس رشته یا String برای ذخیره سازی و مدیریت رشته ها
- مبانی برنامه نویسی گرافیکی در جاوا
- آشنایی با کتابخانه AWT یا Abstract Window Toolkit
- آشنایی با کتابخانه Swing برای پیاده سازی برنامه های گرافیکی
- آشنایی با کلاس JOptionPane برای نمایش انواع کادرهای گفتگو
- آشنایی با متد JOptionPane.showMessageDialog برای نمایش کادر پیام
- آشنایی با متد JOptionPane.showInputDialog برای دریافت ورودی از کاربر
- آشنایی با کلاس JPanel و توسعه آن برای ترسیم گرافیکی
- آشنایی با سیستم مختصات گرافیکی در جاوا
- بازنویسی یا Override کردن تابع PaintComponent برای ترسیم گرافیکی
- آشنایی با کلاس Graphics و ترسیم با آن
- ترسیم خط با استفاده از متد Graphics.DrawLine
- آشنایی با کلاس JFrame برای اجرای برنامه های گرافیکی
- تنظیم و نمایش پنجره با استفاده از کلاس JFrame
- پیاده سازی نخستین برنامه گرافیکی در جاوا
- ترسیم طرح های گرافیکی جالب با استفاده از حلقه های تکرار و شی Graphics
- تغییر رنگ ترسیم در شی Graphics با متد Graphics.SetColor
- ترسیم و پر کردن مستطیل (و مربع) با استفاده از توابع DrawRect و FillRect
- ترسیم و پر کردن بیضی (و دایره) با استفاده از متدهای DrawOval و FillOval
- نمایش و ترسیم متن با استفاده از متد DrawString
- تعریف متدها و توابع در کلاس ها و تولید اعداد تصادفی
- تعریف متدهای استاتیک یا Static و فراخوانی آن ها
- پیاده سازی کلاس EquationSolver برای حل معادلات جبری (مثال)
- حل معادله درجه اول و معادله درجه دوم با استفاده از کلاس EquationSolver
- آشنایی با مفهوم OverLoading ایجاد متدهای هم نام با امضای متفاوت
- پیاده سازی و تعریف کلاس اعداد مختلط (Complex) برای آشنایی بیشتر با مفاهیم برنامه نویسی شی گرا
- پیاده سازی سازنده های چندگانه یا Overloaded Constructors
- پیاده سازی ویژگی ها با استفاده از توابع Get و Set
- پیاده سازی ویژگی های فقط خواندنی و وابسته با تعریف متد Get
- پیاده سازی و کاربرد تابع toString برای کلاس ها
- استفاده از متد String.Format برای ایجاد و قالب بندی رشته ها
- پیاده سازی چهار عمل اصلی (جمع، تفریق، ضرب و تقسیم) برای کلاس اعداد مختلط
- تعریف مقادیر ثابت و پر استفاده به صورت Final (غیر قابل تغییر)
- محاسبه فاز و قدر مطلق (اندازه) برای اعداد مختلط
- پیاده سازی متد مزدوج یا Conjugate برای کلاس اعداد مختلط
- آشنایی با کتابخانه های استاندارد جاوا و کاربرد آن ها
- آشنایی با کلاس Java.Util.Random برای تولید اعداد تصادفی
- استفاده از متد Random.NextInt برای تولید اعداد تصادفی صحیح
- پیاده سازی برنامه پرتاب تاس شش وجهی و محاسبه احتمالات آن
- و……