آموزش جاوا (Java)

آموزش جاوا

آنچه در این صفحه می خوانید:

معرفی جاوا

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

جاوا در ابتدا توسط James Gosling در Sun Microsystems (که از آن زمان توسط اوراکل بدست آمده است) توسعه داده شد و در سال 1995 به عنوان یکی از اجزای اصلی پلتفرم جاوا منتشر شد. تهیه کننده اصلی و مرجع کامپایلرهای جاوا، ماشین های مجازی و کتابخانه های کلاس در ابتدا توسط Sun تحت مجوزهای اختصاصی منتشر شد. در همین حال، دیگران پیاده سازی های جایگزین از این فناوری های Sun، مانند کامپایلر GNU برای جاوا (کامپایلر bytecode)، GNU Classpath (کتابخانه های استاندارد)، و IcedTea-Web (افزونه مرورگر برای اپلت ها) را ارائه داده اند.

آخرین نسخه جاوا 13 که در سپتامبر 2019 منتشر شد و Java 11 که نسخه پشتیبانی بلند مدت پشتیبانی (LTS) در حال حاضر است که در تاریخ 25 سپتامبر 2018 منتشر شد. اوراکل برای میراث جاوا 8 LTS آخرین نسخه به روزرسانی عمومی رایگان در ژانویه 2019 را برای استفاده تجاری منتشر کرد، در حالی که در غیر این صورت همچنان از Java 8 با بروزرسانی های عمومی برای استفاده شخصی تا حداقل دسامبر سال 2020 پشتیبانی می کند. از آنجا که جاوا 9 و 10 و 12 دیگر پشتیبانی نمی شود، اوراکل به کاربران خود توصیه می کند نسخه های جاوا به دلیل خطرات جدی ناشی از مشکلات امنیتی حل نشده و سریعاً به آخرین نسخه (در حال حاضر جاوا 13) یا نسخه LTS انتقال پیدا کنند.

تاریخچه جاوا

James Gosling ،Mike Sheridan و Patrick Naughton در ژوئن 1991 پروژه زبان جاوا را آغاز کردند. جاوا در ابتدا برای تلویزیون تعاملی طراحی شده بود اما در آن زمان صنعت تلویزیون کابلی دیجیتال نیز پیشرفت کرد. بعدها پروژه با نام Green نامگذاری شد و در نهایت به نام جاوا از Java coffee تغییر یافت. Sun Microsystems نخستین اجرای عمومی را به عنوان جاوا 1.0 در سال 1996 منتشر کرد و این وعده را داد که بدون هزینه در سیستم عامل های محبوب اجرا شود (WORA) و همچنین ساده و دارای امنیت قابل تنظیم، اجازه دسترسی محدود به شبکه و فایل را فراهم کند. مرورگرهای بزرگ وب به زودی توانایی اجرای اپلت های جاوا در صفحات وب را شامل شدند و جاوا به سرعت محبوب شد. کامپایلر جاوا 1.0 به وسیله آرتور ون هوف در جاوا نوشته شده بود تا با زبان جاوا 1.0 سازگار باشد.

با ظهور جاوا 2 (در ابتدا به عنوان J2SE 1.2 در دسامبر 1998 تا 1999 منتشر شد)، نسخه های جدید دارای پیکربندی های متعدد برای انواع مختلف سیستم عامل ها بودند. J2EE شامل فناوری ها و API ها برای برنامه های سازمانی معمولا در محیط های سرور اجرا می شود، در حالی که J2ME دارای API ها بهینه سازی شده برای برنامه های تلفن همراه است. نسخه دسکتاپ به J2SE تغییر نام یافت. در سال 2006، برای اهداف بازاریابی، Sun Microsystems نسخه های جدید J2 را به ترتیب جاوا EE،Java ME و Java SE تغییر داد. در تاریخ 13 نوامبر 2006، بزرگترین مجوز ماشین جاوا (JVM) را به عنوان نرم افزار رایگان و اوپن سورس (FOSS) تحت شرایط مجوز عمومی GNU (GPL) منتشر کرد.

ویژگی های جاوا

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

ساده: جاوا برای یادگیری آسان و سینتکس آن ساده، تمیز و قابل درک است. طبق گفته Sun، زبان جاوا یک زبان برنامه نویسی ساده است زیرا گرامر جاوا مبتنی بر ++C است. جاوا بسیاری از ویژگی های پیچیده و بدون استفاده را حذف کرده است، برای مثال، نیازی به اشاره گرهای صریح، بارگذاری اپراتور حذف اشیاء بدون ارجاع و غیره نیست، زیرا جمع آوری زباله خودکار در جاوا وجود دارد.

شی گرا: جاوا یک زبان برنامه نویسی شی گرا است و همه چیز در جاوا یک شی است. Object-oriented به این معنی است که ما نرم افزار خود را به عنوان ترکیبی از انواع مختلف اشیائی که هر دو داده و رفتار را شامل می شوند، سازماندهی می کنیم. برنامه نویسی شی گرا (OOPs) یک روشی است که توسعه و نگهداری نرم افزار را با ارائه برخی از قوانین ساده می کند. مفاهیم پایه OOP ها عبارتند از:

  • شی
  • کلاس
  • وراثت
  • پلی مورفیسم
  • انتزاع
  • کپسوله سازی

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

  • محیط ران تایم
  • رابط برنامه نویسی برنامه (API)

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

امن: جاوا برای امنیت بیشتر شناخته شده است. با جاوا، ما می توانیم سیستم های بدون ویروس را توسعه دهیم. جاوا امن است زیرا:

  • برنامه های جاوا اشاره گر صریح نیستند.
  • در داخل ابزار ماشین مجازی اجرا می شود.

Classloader در جاوا بخشی از JRE است که برای دانلود کلاس های جاوا در ماشین مجازی جاوا به صورت پویا استفاده می شود. این ویژگی امنیت را با جداسازی بسته برای کلاس های سیستم فایل محلی از آنهایی که از منابع شبکه وارد می شوند، اضافه می کند. قابلیت Bytecode Verifier، قطعه کد را برای کد غیرقانونی که ممکن است حق دسترسی به اشیا را نقض کند، بررسی می کند. ویژگی مدیر امنیت تعیین می کند که چه منابع یک کلاس می تواند به خواندن و نوشتن روی دیسک محلی دسترسی پیدا کند. زبان جاوا این امنیت را به طور پیش فرض فراهم می کند. همچنین برخی از موارد امنیتی توسط توسعه دهنده نرم افزار از طریق SSL ،JAAS، رمزنگاری و غیره فراهم می شود.

قدرتمند: جاوا قوی است زیرا:

  • از مدیریت حافظه قوی استفاده می کند.
  • مجموعه جمع آوری زباله خودکار در جاوا وجود دارد که در ماشین مجازی جاوا اجرا می شود تا از اشیائی که در برنامه جاوا استفاده نمی شود خلاص شوند.
  • دستورالعمل استثنایی و مکانیزم چک کردن تایپ در جاوا وجود دارد.

معماری بی طرف:معماری جاوا بی طرف است زیرا هیچ وابستگی به پیاده سازی وجود ندارد. به عنوان مثال، اندازه انواع اولیه ثابت شده است.

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

عملکرد بالا: جاوا سریع تر از سایر زبان های برنامه نویسی تفسیر شده سنتی است، زیرا کد های جاوا به کد نیتیو نزدیک است.

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

Multi-threaded: رشته مانند یک برنامه جداگانه است که همزمان اجرا می شود. ما می توانیم برنامه های جاوا را که با چندین تسک در یک زمان با تعریف Multi-threaded حل کنیم و بنویسیم. مزیت اصلی Multi-threaded این است که حافظه را برای هر موضوع اشغال نمی کند که در واقع یک منطقه حافظه مشترک است. رشته ها برای برنامه های چند رسانه ای، برنامه های کاربردی وب و غیره مهم هستند.

پویا: جاوا یک زبان دینامیک است. این موضوع از بارگذاری دینامیکی کلاس ها پشتیبانی میکند. به این معنی است که کلاس ها براساس تقاضا بارگذاری میشوند. همچنین از توابع زبان های مادری خود، یعنی C و ++C پشتیبانی می کند.

معماری جاوا

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

محیط های جاوا (Java Environments)

تقریباً برای هر زبان برنامه نویسی، به یک محیط خاص نیاز دارید که شامل تمام مؤلفه های لازم، رابط های برنامه نویسی و کتابخانه ها جهت تهیه، تدوین، تنظیم برنامه های آن باشد. جاوا دارای 2 محیط مشابه است و هرکسی که با Java کار می کند مجبور است بعد از تنظیم یکی از این محیط ها روی سیستم عامل های محلی یا تولید محلی خود، کار خود را شروع کند.

  • JRE (Java Runtime Environment): حداقل محیط مورد نیاز برای اجرای برنامه جاوا (پشتیبانی از توسعه). این برنامه شامل JVM (ماشین مجازی جاوا) و ابزار استقرار است.
  • JDK (کیت توسعه جاوا): محیط کامل توسعه که برای توسعه و اجرای برنامه های جاوا مورد استفاده قرار می گیرد. این شامل هر دو JRE و ابزار توسعه است.
  • JRE برای کاربران در نظر گرفته شده است، در حالی که JDK برای برنامه نویسان منظور شده است.

می توانید نوشتن یک برنامه جاوا ساده را با هر ویرایشگر ترمینال (vim، nano) یا ویرایشگر گرافیکی (gedit، sublime) شروع کنید. برای یک برنامه جاوا پیچیده، ممکن است شما به یک IDE (محیط توسعه یکپارچه) مانند IntelliJ IDEA، Eclipse یا Netbeans نیاز داشته باشید. یک برنامه جاوا معمولی باید حاوی سینتکس صحیح زبان و فرمت java. باشد. توصیه می شود از مفاهیم برنامه نویسی مانند OOP (برنامه نویسی شی گرا) و الگوهای معماری مناسب برای راحتی در ساختار و حفظ برنامه های جاوا استفاده کنید.

سیستم اجرایی جاوا

جاوا JVM و بایت کد

یکی از اهداف طراحی جاوا قابلیت حمل و نقل است، به این معنی که برنامه هایی که برای پلتفرم جاوا نوشته شده اند باید به طور مشابه روی هر ترکیبی از سخت افزار و سیستم عامل با پشتیبانی کافی از ران تایم اجرا شوند. این کار با کامپایل کردن کد زبان جاوا به جای اینکه مستقیماً به کد دستگاه مخصوص معماری تبدیل شود، به نمایه واسطه ای به نام کد bytecode جاوا بدست می آید. دستورالعمل های bytecode جاوا شبیه به کد ماشین هستند، اما قرار است توسط یک ماشین مجازی (VM) که مخصوص سخت افزار میزبان نوشته شده، اجرا شود. کاربران نهایی معمولاً از یک Java Runtime Environment (JRE) نصب شده بر روی دستگاه خود برای برنامه های کاربردی Java مستقل یا در یک مرورگر وب برای برنامه های Java استفاده می کنند. کتابخانه های استاندارد روشی کلی برای دستیابی به ویژگی های خاص میزبان مانند گرافیک، رشته و شبکه دارند.

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

Non-JVM

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

مدیریت خودکار حافظه

جاوا از یک جمع کننده زباله اتوماتیک برای مدیریت حافظه در چرخه عمر آبجکت استفاده می کند. برنامه نویس زمان ایجاد آبجکت ها را تعیین می کند و ران تایم جاوا مسئولیت بازیابی حافظه را به محض استفاده از اشیاء دیگر بر عهده دارد. هنگامی که هیچ اشاره‌ای به یک شی باقی نماند، حافظه غیرقابل دسترسی واضح است که توسط جمع آوری زباله آزاد خواهد شد. اگر کد برنامه نویسی به آبجکتی که دیگر نیازی به آن نیست، اشاره کند ممکن است چیزی شبیه به نشت حافظه رخ دهد.

یکی از ایده های مدل مدیریت حافظه اتوماتیک جاوا این است که برنامه نویسان را می توان از عهده انجام مدیریت حافظه دستی صرف کرد. در بعضی از زبان ها، حافظه برای ایجاد اشیاء به طور ضمنی در پشته تخصیص می یابد یا صریحاً از پشته تخصیص یافته جدا می شود. در حالت دوم، مسئولیت مدیریت حافظه در اختیار برنامه نویس است. اگر برنامه از یک شی جدا نشده باشد، نشت حافظه رخ می دهد. اگر برنامه سعی کند به حافظه ای که از قبل تفکیک نشده است دسترسی یا جدا کند، نتیجه نامشخص است و پیش بینی آن دشوار است و احتمالاً برنامه ناپایدار یا خراب می شود. با استفاده از اشاره گرهای هوشمند می توان تا حدودی این مشکل را برطرف کرد، اما این ها اضافه و پیچیدگی را به وجود می آورد. توجه داشته باشید که جمع آوری زباله مانع نشت حافظه منطقی نمی شود، یعنی مواردی که حافظه هنوز به آن اشاره می شود اما هرگز مورد استفاده قرار نمی گیرد.

جمع آوری زباله ممکن است در هر زمان اتفاق بیفتد. در حالت ایده آل، هنگامی که یک برنامه بیکار باشد، رخ می دهد. در صورت عدم وجود حافظه آزاد کافی در پشته برای اختصاص یک شی جدید؛ تضمین می شود برنامه لحظه ای متوقف شود. مدیریت صریح حافظه در جاوا امکان پذیر نیست.

جاوا شامل چندین نوع جمع آوری زباله است. به طور پیش فرض، HotSpot از جمع آوری زباله موازی استفاده می کند. با این وجود چندین جمع آوری زباله دیگر نیز وجود دارد که می توان از آنها برای مدیریت پشته استفاده کرد. برای 90 درصد برنامه های کاربردی در جاوا، جمع آوری زباله همزمان (Mark-Sweep) (CMS) کافی است.

سینتکس جاوا

سینتکس جاوا تا حد زیادی تحت تأثیر ++C است. بر خلاف ++C، که ترکیبی از برنامه نویسی ساختاری، عمومی و شی گرا است، جاوا تقریباً منحصراً به عنوان یک زبان شی گرا ساخته شده است. همه کد ها در داخل کلاس ها نوشته شده اند، و هر مورد داده به جزء انواع داده های اولیه، (به عنوان مثال اعداد صحیح، اعداد نقطه شناور، مقادیر بولین و کاراکترها) یک شی است، بجز انواع داده ها، که به دلایلی تابع نیستند. جاوا از برخی جنبه های محبوب ++C (مانند روش printf) استفاده می کند. بر خلاف ++C، جاوا از بارگذاری بیش از حد اپراتور یا وراثت های چندگانه برای کلاس ها پشتیبانی نمی کند، اگرچه ارث چندگانه برای واسط ها پشتیبانی می شود.

الگوهای طراحی (Design Patterns) در جاوا

الگوهای طراحی راه حل اثبات شده برای حل مسئله / کار خاص است. به عنوان مثال، برای ایجاد کلاس که فقط یک نمونه واحد برای آن ایجاد شود و اینکه همه کلاس های دیگر بتوانند از شی واحد استفاده کنند، از الگوی طراحی Singleton استفاده کنید. الگوهای طراحی به طور مستقل زبان برنامه نویسی هستند، این برای حل مشکلات معمول طراحی شی گرا است. با استفاده از الگوهای طراحی می توانیم کد خود را انعطاف پذیرتر، قابل استفاده مجدد و نگهداری بیشتری کنیم. خود جاوا از نظر داخلی از الگوهای طراحی پیروی می کند.

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

آموزش جامع زبان جاوا

توسعه اپلیکیشن های دسکتاپ با جاوا

یکی از قابل توجه ترین ویژگی های جاوا برای برنامه های کاربردی دسکتاپ این است که GUI (رابط کاربر گرافیکی) فراهم می کند. جاوا اف ایکس (JavaFX) مجموعه ای از بسته های گرافیکی و رسانه ای است که قابلیت همکاری و ویژگی های سه بعدی گرافیکی و مدل استقرار مستقل فراهم می کند.

توسعه اپلیکیشن های وب با جاوا

جاوا برنامه های وب را از طریق Servlets، استرات (Struts) یا JSP پشتیبانی می کند. با کمک این فناوری ها می توانیم هر نوع برنامه وب را توسعه دهیم. برنامه های خاصی به نام اپلت ها تعبیه شده اند که در کنار صفحات وب که در سمت سرویس گیرنده کار می کنند. این یک فایل متنی کوتاه اچ تی ام ال است. همچنین نرم افزارهای جدید را در زمینه تجارت الکترونیکی نیز پیدا کرده است که با Broadleaf اجرا می شود.

توسعه اپلیکیشن های اندروید با جاوا

J2ME یا Java ME یک فریمورک چند سکویی برای ساخت برنامه های کاربردی است که در تمام دستگاه های پشتیبانی شده جاوا، از جمله گوشی های هوشمند اجرا می شود. با توجه به این واقعیت که فریمورک اندروید با جاوا همراه است، برنامه های اندروید را می توان در شرایط آسان با استفاده از کیت توسعه نرم افزار اندروید (SDK) و محیط های دیگر طراحی کرد.

جاوا برای هوش مصنوعی

در علم رایانه، هوش مصنوعی (Artificial Intelligence) که گاه به آن هوش ماشین نیز گفته می شود، برخلاف هوش طبیعی است که توسط انسان نشان داده شده است. به اصطلاح هوش مصنوعی اغلب برای توصیف ماشین ها یا رایانه ها استفاده می شود و از عملکردهای شناختی که با ذهن انسان در ارتباط است، مانند یادگیری و حل مسئله استفاده می کند.

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

جاوا برای علم داده

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

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

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

از دیگر موراد کاربرد جاوا می توان به موارد زیر اشاره کرد:

برنامه های سرور در صنعت خدمات مالی

بسیاری از بانک های سرمایه گذاری جهانی از جاوا برای نوشتن سیستم های تجارت الکترونیکی دفتر مقدماتی، سیستم های تسویه حساب و تأیید نوشتن، پروژه های پردازش داده و چندین مورد دیگر استفاده می کنند. جاوا بیشتر برای نوشتن برنامه سمت سرور استفاده می شود، بیشتر بدون هیچ گونه فرانت اند، که داده ها را از یک سرور (بالادست) دریافت می کند، آن را پردازش می کند و آن را به سایر فرآیندها (پایین دست) ارسال می کند. جاوا swing همچنین به دلیل ایجاد رابط کاربری گرافیکی ضخیم برای معامله گران محبوب بود، اما اکنون سی شارپ به سرعت سهم بازار را در آن فضا بدست می آورد و Swing از آن خارج می شود.

ابزارهای نرم افزاری

بسیاری از نرم افزارهای مفید و ابزارهای توسعه به طور مثال Eclipse ،IntelliJ Idea و NetBeans IDE در جاوا نوشته و توسعه یافته اند. من فکر می کنم آنها همچنین پرکاربردترین برنامه های دسکتاپ هستند که در جاوا نوشته شده اند. اگرچه زمانی وجود دارد که نوشتن کلاینت های عظیم، بیشتر در بخش خدمات مالی و بانک های سرمایه گذاری، بسیار محبوب بود. امروزه جاوا FX محبوبیت زیادی پیدا می کند.

برنامه معاملات

برنامه تجارت شخص ثالث، که همچنین بخشی از صنعت خدمات مالی بزرگتر است، از Java نیز استفاده می کند. یک برنامه بازرگانی محبوب مانند Murex که در بسیاری از بانک ها برای اتصال به فرانت اند بانک استفاده می شود، در جاوا نیز نوشته شده است.

فضای تعبیه شده

جاوا نیز در فضای تعبیه شده بزرگ است. این نشان می دهد که این پلتفرم چقدر توانمند است، شما فقط به 130KB نیاز دارید تا بتوانید از فناوری جاوا (بر روی کارت هوشمند یا سنسور) استفاده کنید. در ابتدا جاوا برای دستگاه های تعبیه شده طراحی شده است. در حقیقت، این منطقه یک بخشی است که بخشی از کمپین اولیه جاوا برای نوشتن "یک بار بنویس، هر جا اجرا شود" باشد و به نظر می رسد اکنون پرداخته می شود.

فناوری های کلان داده

هدوپ و سایر فناوری های کلان داده نیز از یک جا یا به عنوان مثال از جاوا استفاده می کنند. Java-based HBase و Accumulo مبتنی بر Java (منبع آزاد) و ElasticSearch نیز وجود دارد. جاوا بر این فضا مسلط نیست، زیرا فن آوری هایی مانند مانگو دی بی (MongoDB) وجود دارد که با زبان ++C نوشته شده است. اگر Hadoop یا الستیک سرچ (Elasticsearch) برجسته شود، جاوا این توانایی را دارد که سهم عمده ای در این فضای در حال رشد کسب کند.

فضای بازرگانی با فرکانس بالا

پلتفرم جاوا ویژگی های عملکردی خود را بسیار بهبود بخشیده و با JIT های مدرن قادر به ارائه عملکرد در سطح ++C است. به همین دلیل، جاوا در نوشتن سیستم های با کارایی بالا نیز محبوب است، زیرا اگرچه عملکرد در مقایسه با زبان مادری کمی کمتر است، اما می توانید ایمنی، قابلیت حمل و قابلیت حفظ سرعت را به خطر بیاندازید.

فریمورک های جاوا

فریمورک های جاوا

فریمورک اسپرینگ بوت

یک فریمورک اوپن سورس مبتنی بر جاوا است که برای ایجاد میکرو سرویس استفاده می شود. توسط تیم Pivotal ساخته شده است و برای ساختن برنامه های اسپرینگ مستقل و آماده تولید استفاده می شود. Spring Boot یک راه حل بیش از پیکربندی متعارف اسپرینگ برای ایجاد برنامه های مستقل و با درجه تولید اسپرینگ است که می توانید "فقط آن را اجرا کنید". تیم اسپرینگ از بهترین پیکربندی و استفاده از سکوی اسپرینگ و کتابخانه های شخص ثالث پیکربندی شده است تا بتوان با کمترین اشتیاق شروع به کار کرد. اکثر برنامه های اسپرینگ بوت به تنظیمات بسیار کم اسپرینگ نیاز دارند. اسپرینگ بوت باعث می شود برنامه های مستقر در سطح اسپرینگ که به راحتی قادر به اجرای آن هستید، را ایجاد کنید.

فریمورک اسپرینگ

اسپرینگ یک فریمورک کاربردی جهت کنترل کانتینر برای پلتفرم جاوا است. ویژگی های اصلی این فریمورک توسط هر برنامه جاوا قابل استفاده است، اما افزونه هایی برای ساخت برنامه های وب در بالای پلتفرم Java EE وجود دارد. اگرچه این فریمورک هیچ مدل برنامه نویسی خاصی را تحمیل نمی کند، اما در جامعه جاوا بعنوان یک برنامه افزودنی یا حتی جایگزینی برای مدل Enterprise JavaBeans محبوبیت پیدا کرده است. Spring MVC در ساخت برنامه های وب انعطاف پذیر همکاری می کند. الگوی طراحی Model-View-Controller در تفکیک منطق تجارت، منطق View و منطق کنترل کمک می کند. مدل ها وظیفه رمزگذاری داده های برنامه را دارند. View با کمک شی مدل رسپانسیو را به کاربر می دهند. کنترل کننده ها وظیفه دریافت درخواست از کاربر و تماس با سرویس back-end را دارند. شکل زیر جریان درخواست ها را در فریمورک Spring MVC نشان می دهد.

فریمورک Hibernate

Hibernate یک ابزار نقشه برداری شئ-ارتباطی برای زبان برنامه نویسی جاوا است. این فریمورک برای نقشه برداری یک مدل دامنه شی گرا را به پایگاه داده رابطه ای فراهم می کند.

فریمورک Struts

Struts فریمورک برنامه وب محبوب و کامل مبتنی بر الگوی طراحی MVC است. Struts یکی از بهترین فریمورک های وب است و بسیار مورد استفاده برای توسعه نرم افزارهای Rich Internet قرار گرفته است.

فریمورک Play

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

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

  • فریمورک Apache Accumulo : در جاوا نوشته شده است و دارای برچسب دسترسی به سطح سلولی و مکانیسم های برنامه نویسی سمت سرور است.
  • هدوپ (Apache Hadoop) : یک فریمورک برنامه نویسی مبتنی بر جاوا است که از پردازش و ذخیره مجموعه داده های بسیار بزرگ در محیط محاسباتی توزیع شده پشتیبانی می کند.
  • آپاچی کمل (Apache Camel) :این فریمورک یک رویکرد مبتنی بر EIP است که چندین پیاده سازی الگوهای out of the box را فراهم می کند که می تواند برای حل مشکلات یکپارچه سازمانی استفاده شود. Camel به توسعه دهندگان کمک می کند تا ایجاد مسیرها را در انواع زبان خاص دامنه (DSL) مانند جاوا، spring،XML،scala و غیره تسهیل بخشد.
  • فریمورک Apache HBase :یک پایگاه داده مبتنی بر ستون توزیع شده می باشد که در بالای سیستم فایل Hadoop ساخته شده است. یک مدل داده ای است که شبیه big table گوگل است که برای دسترسی سریع به مقادیر عظیم داده های ساخت یافته طراحی شده است.
  • آپاچی هایو (Apache Hive) :انتزاع لازم برای SQL برای ادغام پرس و جوهای اساسی SQL مانند (HiveQL) را به جاوا بدون نیاز به پیاده سازی پرس و جو ها در API جاوا فراهم می کند.
  • فریمورک آپاچی کافکا (Apache Kafka) :آپاچی کافکا یک فریمورک اوپن سورس است که توسط LinkedIn توسعه یافته و به بنیاد نرم افزار Apache اهدا شده است که در Scala و Java نوشته شده است.
  • فریمورک Apache Pig : یک پلتفرم سطح بالا برای ایجاد برنامه هایی است که در Apache Hadoop اجرا می شوند.
  • فریمورک Apache Solr:یک پلتفرم جستجو است که برای ساخت برنامه های جستجو استفاده می شود. برنامه های کاربردی ساخته شده با Solr پیچیده هستند و عملکرد بالایی را ارائه می دهند.
  • فریمورک Apache Spark : فریمورک پردازش کلان داده است که بر اساس سرعت، سهولت استفاده و تجزیه و تحلیل پیچیده ساخته شده است. Spark این امکان را فراهم می کند تا سریعا برنامه های کاربردی را در جاوا، اسکالا یا پایتون بنویسید.
  • فریمورک Apache CXF :فریمورک وب سرویس کاملا کاربردی با عملکرد بالا با حداقل سربار محاسباتی است.
  • فریمورک OpenCV:اوپن سی وی کتابخانه computer vision و کتابخانه نرم افزاری یادگیری ماشینی است. OpenCV برای ارائه یک زیرساخت مشترک برای برنامه های کاربردی computer vision و سرعت بخشیدن به استفاده از ادراک ماشین در محصولات تجاری ساخته شده است.دارای رابط های C،Python و JAVA می باشد.
  • سلنیوم (Selenium) : یک ابزار تست خودکار رایگان برای برنامه های وب در تمامی مرورگرهای مختلف پلتفرم است.
  • فریمورک JSF : فریمورک JavaServer Faces یک نرم‌ افزار تحت وب بر پایه جاوا که هدفش ساده‌ سازی واسط کاربر یکپارچه در توسعه وب است.
  • فریمورک JavaFX: یک کتابخانه جاوا است که برای ساخت برنامه های Rich Internet استفاده می شود. برنامه های کاربردی نوشته شده با استفاده از این کتابخانه می توانند در سراسر سیستم عامل های مختلف اجرا شوند. برنامه های توسعه یافته با استفاده از JavaFX می توانند بر روی دستگاه های مختلف مانند کامپیوترهای رومیزی، تلفن های همراه، تلویزیون، تبلت و غیره اجرا شوند.

محیط های توسعه (IDE) جاوا

IntelliJ IDEA

IntelliJ IDEA، از نظر هر دو ویژگی و قیمت، IDE برتر جاوا است که در دو نسخه ارائه می شود: نسخه رایگان انجمن، و نسخه Ultimate که دارای ویژگی های اضافی است. نسخه Community برای توسعه JVM و Android در نظر گرفته شده است. این برنامه از Java، Kotlin، Groovy و Scala پشتیبانی می کند.

نسخه نهایی، که برای توسعه وب و شرکت ها در نظر گرفته شده است، علاوه بر سایر سیستم های کنترل نسخه، از پرفورس پشتیبانی می کند. از JavaScript و تایپ اسکریپت پشتیبانی می کند. فریمورک های Java EE، Spring، GWT، Vaadin، Play، Grails و سایر فریمورک ها را پشتیبانی می کند و شامل ابزارهای پایگاه داده و پشتیبانی از اس کیوال (SQL) است.

اکلیپس (Eclipse)

Eclipse محیط توسعه یکپارچه (IDE) است که در برنامه نویسی رایانه مورد استفاده قرار می گیرد. محیط اکلیپس به عنوان پروژه‌ای در شرکت ABM تولید شد. شرکت های مختلف برای استفاده از اکلیپس، پلاگین های مختلفی مانند WebTools را به طور رایگان منتشر کردند. محیط اکلیپس با زبان های برنامه نویسی جاوا، Fortran، COBOL، پی اچ پی وسی پلاس پلاس نوشته شده است.اگر چه Eclipse برای برنامه های جاوا توسعه داده شد، افزونه ها برنامه نویسان را قادر می سازد برنامه های کاربردی با زبان های دیگر، از جمله C، C++، COBOL، Perl، PHP و پایتون را توسعه دهند.

مکانیزم پلاگین اجازه می دهد تا Eclipse با برنامه های شبکه، سیستم های مدیریت پایگاه داده، سیستم های نسخه همزمان و ابزارهای مدل سازی، در میان دیگران کار کند. Eclipse پلتفرم است که از ابتدا برای ساخت وب سایت و ابزارهای توسعه نرم افزاری طراحی شده است.Eclipse مدل رابط کاربر (UI) برای کار با ابزار فراهم می کند. Eclipse طراحی شده است که در سیستم عامل های مختلف اجرا شود و در عین حال یکپارچه سازی قوی با هر سیستم عامل داشته باشد.پلاگین ها می توانند در API های قابل حمل Eclipse برنامه نویسی شوند و بدون هیچ تغییری در هر یک از سیستم عامل های پشتیبانی شده اجرا شوند.

نت بینز (NetBeans)

اکثر توسعه دهندگان، NetBeans IDE را به عنوان IDE اصلی و رایگان جاوامی دانند. NetBeans IDE از چندین زبان (PHP،JavaFX، C++ / C، جاوا اسکریپت، و غیره) و فریمورک پشتیبانی می کند. NetBeans یک پروژه اوپن سورس است که برای ارائه محصولات توسعه جامع نرم افزار (NetBeans IDE و پلتفرم NetBeans) اختصاص داده شد تا به نیازهای توسعه دهندگان، کاربران و کسب و کارهایی که به NetBeans به عنوان پایه ای برای محصولات خود متکی هستند، پاسخ می دهد. خصوصا آنها را قادر می سازد تا با سرعت بیشتر، کارآمدتر و راحت تر این محصولات را با استفاده از نقاط قوت پلتفرم جاوا و دیگر استانداردهای صنعت مربوطه، توسعه دهند.

    مثال های جاوا

    هر زمان که یک زبان برنامه نویسی کامپیوتری را یاد می گیرید، سنت است که اولین برنامه ای که می نویسید این باشد که کامپیوتر شما می گوید "!Hello World". این یک شاهکار کوچک است، اما فرصت خوبی برای اطمینان از اینکهJDK را به درستی نصب کرده اید. کامپایلر جاوا فایل های متنی اولیه را می خواند. به یاد داشته باشید که جاوا حساس به حروف بزرگ است.

    public class HelloWorldApp {
        public static void main(String[] args) {
            System.out.println("Hello World!"); // Prints the string to the console.
        }
    }

    مثال همراه با متد ها

    // This is an example of a single line comment using two slashes

    /* This is an example of a multiple line comment using the slash and asterisk. This type of comment can be used to hold a lot of information or deactivate code, but it is very important to remember to close the comment. */

    package fibsandlies; import java.util.HashMap;

    /** * This is an example of a Javadoc comment; Javadoc can compile documentation * from this text. Javadoc comments must immediately precede the class, method, or field being documented. */ public class FibCalculator extends Fibonacci implements Calculator {

    private static Map<Integer, Integer> memoized = new HashMap<Integer, Integer>();

    /* * The main method written as follows is used by the JVM as a starting point for the program. */ public static void main(String[] args) { memoized.put(1, 1); memoized.put(2, 1); System.out.println(fibonacci(12)); //Get the 12th Fibonacci number and print to console }

    /** * An example of a method written in Java, wrapped in a class. * Given a non-negative number FIBINDEX, returns * the Nth Fibonacci number, where N equals FIBINDEX. * @param fibIndex The index of the Fibonacci number * @return The Fibonacci number */ public static int fibonacci(int fibIndex) { if (memoized.containsKey(fibIndex)) { return memoized.get(fibIndex); } else { int answer = fibonacci(fibIndex - 1) + fibonacci(fibIndex - 2); memoized.put(fibIndex, answer); return answer; } } }

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

    آیا این نوشته را دوست داشتید؟
    linkedin-java-ee-packaging-and-deploying-an-app

    آموزش Java EE: بسته بندی و استقرار یک اپلیکیشن


    در این دوره با Emmanuel Henri، بیاموزید که چگونه استراتژی صحیح را انتخاب کرده و با برخی از محبوب ترین راهکارها، مانند سرویس های وب آمازون (AWS) و Micr...

    1399/04/16 250 بازدید زیرنویس دارد
    linkedin-java-deep-dive

    درک عمیق Java


    نوشتن کد تابعی در جاوا کار سختی نیست. اما برای بهره گیری از ویژگی های شی گرا بودن آن، نیازمند یک جهش در درک آن است. در این دوره، مدرس June Clark جزئیا...

    1399/04/10 1078 بازدید زیرنویس دارد
    linkedin-android-development-retrofit-with-java

    توسعه اندروید: Retrofit با جاوا


    Square یک کتابخانه متن باز با نام Retrofit ارائه می دهد که یکپارچه سازی با یک API وب را آسان کرده است. در این دوره نحوه استفاده از Retrofit برای اتصال...

    1399/04/10 437 بازدید زیرنویس دارد
    linkedin-java-ee-application-servers

    آموزش Java EE: سرورهای اپلیکیشن


    مناسب ترین سرور را برای اپلیکیشن Java EE خود انتخاب کرده و جوانب مثبت و منفی برخی از محبوبترین آپشن ها را یاد بگیرید. در این دوره، مدرس Michael Rogers...

    1399/04/08 411 بازدید زیرنویس دارد
    linkedin-java-ee-8-javaserver-faces-jsf-2-3

    آموزش جاوا EE 8: فریمورک JavaServer Faces JSF 2.3


    در این دوره، مدرس Tayo Koleoso بر JavaServer Faces (JSF) 2.3 تمرکز دارد و مهمترین ویژگی های جدید در بستر توسعه اپلیکیشن های وب را به برنامه نویسان جاو...

    1399/04/07 302 بازدید زیرنویس دارد
    linkedin-java-ee-7-enterprise-javabeans-ejb

    آموزش Enterprise JavaBeans (EJB) :Java EE 7


    Emmanuel Henri شما را با ایجاد یک (API) رابط برنامه نویسی اپلیکیشن EJB آشنا می کند. او با توضیح مزایای EJB شروع می کند و نحوه راه اندازی یک پایگاه داد...

    1399/04/04 305 بازدید زیرنویس دارد
    linkedin-spring-design-patterns

    آموزش Spring - الگوهای طراحی


    در این دوره، Frank Moley یاد میدهد چگونه الگوهای طراحی Gang of Four را برای بهره وری بیشتر در Spring - مدیر وارونگی کنترل (IOC) و فریمورک اپلیکیشن برا...

    1399/03/26 602 بازدید
    packtpub-java-9-programming-for-complete-beginners-in-250-steps

    دوره کامل برنامه نویسی جاوا 9 برای مبتدیان در 250 مرحله


    جاوا یکی از محبوب ترین زبان های برنامه نویسی است که ویژگی های شی گرایی و برنامه نویسی تابعی را همزمان دارد. در این دوره با رویکرد ترکیب JShell و Eclip...

    1399/03/19 2713 بازدید
    linkedin-cloud-native-development-using-java-with-eclipse-microprofile

    آموزش توسعه Cloud-Native با جاوا و Eclipse MicroProfile


    این دوره به شما نشان می دهد که چگونه می توانید اپلیکیشن های جاوا موجود خود را با مشخصات MicroProfile با استفاده از سرور اپلیکیشن Open Liberty فعال کنی...

    1399/03/18 321 بازدید
    linkedin-android-development-concurrent-programming-with-java

    آموزش توسعه اندروید: برنامه نویسی همزمان با جاوا


    با مدیریت فرآیندها در چندین threads، اپلیکیشن های Android خود را کارآمدتر کنید. برنامه نویسی چندین threads (موسوم به برنامه نویسی همزمان) می تواند یک ...

    1399/02/25 863 بازدید زیرنویس دارد
    packtpub-java-se-8-programmer-1

    دوره گواهینامه Java SE 8 Programmer I


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

    1399/02/18 933 بازدید
    packtpub-beginning-java-data-structures-and-algorithms

    آموزش مقدماتی ساختارهای داده و الگوریتم های جاوا


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

    1399/02/08 918 بازدید
    udemy-java-servlet-jsp-and-hibernate-build-ecommerce-website

    دوره ساخت وب سایت تجارت الکترونیک با JSP ، Java Servlet و Hibernate


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

    1399/02/02 1751 بازدید زیرنویس دارد
    pluralsight-data-transactions-with-spring

    آموزش Data Transactions با اسپرینگ


    مدیریت تراکنش Spring یکی از پرکاربردترین و مهم ترین ویژگی های فریمورک Spring است. شما در این دوره، در مورد پشتیبانی گسترده ارائه شده برای مدیریت تراکن...

    1399/01/21 1939 بازدید
    infiniteskills-database-fundamentals-for-java-programmers

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


    توانایی برنامه نویسی و طراحی پایگاه داده، یکی از مهم ترین ویژگی هایی است که از برنامه نویسان جاوا انتظار می رود. این دوره آموزشی کدگرا، شما را با چگون...

    1399/01/15 906 بازدید
    linkedin-building-a-reactive-app-with-angular-and-spring-boot-2

    ساخت برنامه های واکنشگرا با Angular و Spring Boot 2


    Angular به دلیل ایجاد برنامه های تک صفحه ای غنی و داده محور (SPA) معروف است، در حالی که Spring Boot یک فریمورک محبوب و قدرتمند برای توسعه بک اند است. ...

    1399/01/11 1261 بازدید
    linkedin-parallel-and-concurrent-programming-with-java-2

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


    درباره هم زمانی، استخرهای نخ، تسک های غیر همزمان، ارزیابی عملکرد موازی، طراحی برنامه های موازی و موارد دیگر اطلاعات کسب کنید. پس از پایان دادن به این ...

    1399/01/06 1075 بازدید زیرنویس دارد
    linkedin-parallel-and-concurrent-programming-with-java-1

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


    این دوره آموزشی اصول برنامه نویسی موازی را در جاوا ارائه می دهد، و دانش بنیادی مورد نیاز برای نوشتن کد کارآمدتر را ارائه می دهد. این دوره مفاهیمی مانن...

    1399/01/06 1450 بازدید زیرنویس دارد
    linkedin-learning-java-applications

    آموزش اپلیکیشن های جاوا


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

    1398/12/29 1301 بازدید زیرنویس دارد
    linkedin-rxjava-design-patterns-for-android-developers

    آموزش RxJava: الگوهای طراحی برای توسعه دهندگان اندروید


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

    1398/12/26 4335 بازدید زیرنویس دارد