آموزش جاوا (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 انتقال پیدا کنند.

جاوا متعلق به اوراکل است و بیش از 3 میلیارد دستگاه آن را اجرا می کند. جاوا یک زبان برنامه نویسی عمومی است که متشکل از کلاس مبتنی بر شی گرایی است و طراحی شده تا وابستگی های اجرا به همان اندازه ممکن باشد. این موضوع توسعه دهندگان نرم افزار را قادر می کند تا یک بار کد را بنویسند و در هر جا اجرا شود. برنامه های جاوا به طور معمول به bytecode متصل می شوند که می تواند بر روی هر ماشین مجازی جاوا (JVM) بدون در نظر گرفتن معماری زیرساخت کامپیوتری اجرا شود. چند منظوره بودن جاوا می تواند بسیاری از برنامه های کاربردی را از برنامه های خط فرمانی به اپلت ها به Swing windows (اساسا، رابط کاربر گرافیکی پیچیده) تولید کند. در ایجاد زبان جاوا پنج هدف اصلی وجود داشت:

  • باید ساده، شی گرا و آشنا باشد.
  • باید قوی و امن باشد.
  • باید معماری خنثی داشته باشد و قابل حمل باشد.
  • باید با عملکرد بالا اجرا شود.
  • باید تفسیر شود، Multi-threding و پویا باشد.

تاریخچه جاوا

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 برای برنامه نویسان منظور شده است. چگونه Java کار می کند.

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

معماری JVM

قدرت اصلی جاوا این است که برای اجرای بر روی سیستم عامل های مختلف با مفهوم WORA طراحی شده است - "یک بار بنویسید، در هر نقطه اجرا کنید". اگرچه زبان هایی مانند ++C کد منبع آن را کاملاً کاملاً تطبیق می دهند تا فقط با یک سیستم عامل خاص مطابقت داشته باشند و بطور طبیعی روی سیستم عامل و سخت افزار آن اجرا شوند، اما کدهای منبع جاوا با استفاده از کامپایلر Java (جاوا) که وارد می شود به حالت میانی به نام bytecode (یعنی یک فایل .class) وارد می شوند. ساخته شده با JDK. این bytecode در قالب شش ضلعی با خطوط opcode-operand است و JVM می تواند این دستورالعمل ها را (بدون جبران اضافی بیشتر) به زبان ماشین بومی تفسیر کند که توسط سیستم عامل و بستر سخت افزاری اساسی قابل درک است. بنابراین، بایت کد به عنوان یک واسطه مستقل از پلتفرم عمل می کند که بدون توجه به سیستم عامل اساسی و معماری سخت افزار، در بین هر JVM قابل حمل است. با این حال، از آنجا که JVM ها برای اجرا و برقراری ارتباط با ساختار سخت افزاری و سیستم عامل اساسی ایجاد شده اند، ما باید نسخه JVM مناسب را برای نسخه سیستم عامل خود (ویندوز، لینوکس، مک) و معماری پردازنده (x86، x64) انتخاب کنیم.

اکثر ما داستان بالا از جاوا را می دانیم و مشکل اینجاست که مهمترین مؤلفه این فرآیند - JVM به ما به عنوان یک جعبه سیاه آموزش داده می شود که می تواند به صورت جادویی بایت کد را تفسیر کند و بسیاری از فعالیت های زمان اجرا مانند JIT را انجام دهد.

معماری جاوا

  • ClassLoader: یک زیر سیستم است که برای بارگذاری فایل های کلاس استفاده می شود. این کار سه عملکرد اصلی را دارد. بارگیری، پیوند دادن و شروع کار.
  • منطقه متد: JVM Method Area ساختارهای کلاس مانند ابرداده، استخر زمان ثابت و کد متد ها را ذخیره می کند.
  • پشته:تمام اشیاء، متغیرهای نمونه مربوط به آنها و آرایه ها در پشته ذخیره می شوند. این حافظه مشترک است و در چندین موضوع مشترک است.
  • پشته های زبان JVM: پشته های زبان جاوا متغیرهای محلی را ذخیره می کند، و این نتایج جزئی است. هر نخ پشته JVM مخصوص به خود را دارد که همزمان با ایجاد موضوع ایجاد می شود. هر زمان که یک متد فراخوانی شده است، یک فریم جدید ایجاد می شود و با اتمام مراحل فراخوانی روش حذف می شود.
  • ثبات های رایانه ای: رجیسترهای رایانه شخصی آدرس دستورالعمل ماشین مجازی جاوا را که در حال حاضر اجرا می شود، ذخیره می کنند. در جاوا، هر موضوع دارای یک رایانه شخصی جداگانه است.
  • پشته های متد نیتیو: پشته های متد نیتیو دستورالعمل کد نیتیو بستگی به کتابخانه بومی دارند. به زبان جاوا به زبان دیگری نوشته شده است.
  • موتور اجرا: این نوعی نرم افزاری است که برای تست سخت افزار، نرم افزار یا سیستم های کامل مورد استفاده قرار می گیرد. موتور اجرای آزمایشی هیچگاه اطلاعاتی در مورد محصول آزمایش شده ندارد.
  • رابط متد نیتیو: رابط بومی روش یک فریمورک برنامه نویسی است. این اجازه می دهد تا کد جاوا که در JVM در حال اجرا است تماس بگیرد توسط کتابخانه ها و برنامه های بومی.
  • کتابخانه های متد نیتیو: کتابخانه های نیتیو مجموعه ای از کتابخانه های نیتیو (C++، C) هستند که توسط موتور اجرا لازم است.

Non-JVM

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

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

برنامه های اندروید

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

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

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

برنامه های وب جاوا

جاوا نیز در تجارت الکترونیکی و فضای برنامه های کاربردی وب بزرگ است. بسیاری از خدمات RESTfull با استفاده از فریمورک های مشابه Spring MVC، Struts و مشابه ایجاد می شوند. حتی برنامه های ساده مبتنی بر Servlet، JSP و Struts در پروژه های مختلف دولتی کاملاً محبوب هستند. بسیاری از بخش های دولتی، بهداشت و درمان، بیمه، آموزش، دفاع و چندین بخش دیگر برنامه وب خود را در جاوا ساخته اند.

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

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

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

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

برنامه های J2ME

اگرچه ظهور iOS و اندروید تقریباً بازار J2ME را نابود کرد، اما هنوز بازار بزرگی از گوشی های کم مصرف نوکیا و سامسونگ وجود دارد که از J2ME استفاده می کند. زمانی وجود داشت که تقریباً تمام بازی ها، برنامه های موجود در Android با استفاده از MIDP و CLDC، بخشی از پلتفرم J2ME نوشته شده است. J2ME هنوز هم در محصولاتی مانند Blu-ray، Cards، جعبه های Set-top و غیره بسیار محبوب است یکی از دلایل محبوبیت واتس اپ به این دلیل است که برای همه گوشی های نوکیا که هنوز هم بسیار بزرگ هستند، در J2ME نیز موجود است.

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

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

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

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

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

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

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

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

در حال حاضر 3032 شرکت گزارش می دهند که در بخش های فناوری خود از جاوا استفاده می کنند از جمله:

Airbnb، Uber، Spotify، Netflix، Instagram، Google، Pinterest، Slack، Lyft، ebay، LinkedIn، 9GAG، Asana، Square، MIT، Groupon.com، Zillow، Intuit، Zalando، Bodybuilding.com، OpenGov، PedidosYa، Hubspot، Fitbit، Alibaba.com، Keen IO.

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

فریمورک Play

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

فریمورک Spring Boot

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

فریمورک Spring MVC

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

فریمورک Akka

یک ابزار رایگان جهت ساده ساختن برنامه های همزمان و توزیع شده در JVM است. Akka از چندین مدل برنامه نویسی برای همگام سازی پشتیبانی می کند. اتصال زبان برای Java و Scala وجود دارد.

فریمورک Apache Accumulo

Accumulo در جاوا نوشته شده است و دارای برچسب دسترسی به سطح سلولی و مکانیسم های برنامه نویسی سمت سرور است.

فریمورک Apache Hadoop

Hadoop یک فریمورک برنامه نویسی مبتنی بر جاوا است که از پردازش و ذخیره مجموعه داده های بسیار بزرگ در محیط محاسباتی توزیع شده پشتیبانی می کند.

فریمورک Apache Camel

Apache Camel یک رویکرد مبتنی بر EIP است که چندین پیاده سازی الگوهای out of the box را فراهم می کند که می تواند برای حل مشکلات یکپارچه سازمانی استفاده شود. Camel به توسعه دهندگان کمک می کند تا ایجاد مسیرها را در انواع زبان خاص دامنه (DSL) مانند جاوا، spring،XML،scala و غیره تسهیل بخشد.

فریمورک Apache HBase

HBase یک پایگاه داده مبتنی بر ستون توزیع شده می باشد که در بالای سیستم فایل Hadoop ساخته شده است. یک مدل داده ای است که شبیه big table گوگل است که برای دسترسی سریع به مقادیر عظیم داده های ساخت یافته طراحی شده است.

فریمورک Apache Hive

Hive انتزاع لازم برای SQL برای ادغام پرس و جوهای اساسی SQL مانند (HiveQL) را به جاوا بدون نیاز به پیاده سازی پرس و جو ها در API جاوا فراهم می کند.

فریمورک Apache Kafka

آپاچی کافکا یک فریمورک اوپن سورس است که توسط LinkedIn توسعه یافته و به بنیاد نرم افزار Apache اهدا شده است که در Scala و Java نوشته شده است.

فریمورک Apache Pig

Apache Pig یک پلتفرم سطح بالا برای ایجاد برنامه هایی است که در Apache Hadoop اجرا می شوند.

فریمورک Apache Solr

یک پلتفرم جستجو است که برای ساخت برنامه های جستجو استفاده می شود. برنامه های کاربردی ساخته شده با Solr پیچیده هستند و عملکرد بالایی را ارائه می دهند.

فریمورک Apache Spark

Apache Spark یک فریمورک پردازش کلان داده است که بر اساس سرعت، سهولت استفاده و تجزیه و تحلیل پیچیده ساخته شده است. Spark این امکان را فراهم می کند تا سریعا برنامه های کاربردی را در جاوا، اسکالا یا پایتون بنویسید.

فریمورک Apache Storm

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

فریمورک Apache CXF

Apache CXF یک فریمورک وب سرویس کاملا کاربردی با عملکرد بالا با حداقل سربار محاسباتی است.

فریمورک Hibernate

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

فریمورک OpenCV

OpenCV کتابخانه computer vision و کتابخانه نرم افزاری یادگیری ماشینی است. OpenCV برای ارائه یک زیرساخت مشترک برای برنامه های کاربردی computer vision و سرعت بخشیدن به استفاده از ادراک ماشین در محصولات تجاری ساخته شده است.دارای رابط های C ،Python و JAVA می باشد.

فریمورک Selenium

Selenium یک ابزار تست خودکار رایگان برای برنامه های وب در تمامی مرورگرهای مختلف پلتفرم است.

فریمورک JSF

JavaServer Faces یک فریمورک نرم‌افزاری تحت وب بر پایه جاوا که هدفش ساده‌سازی واسط کاربر یکپارچه در توسعه وب است.

فریمورک Struts

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

فریمورک JavaFX

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

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

IntelliJ IDEA

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

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

ایده این است که نسخه تجاری (Ultimate) جایگاه خود را در دسکتاپ یک حرفه ای کسب می کند، و با افزایش بهره وری برنامه نویس، اشتراک پولی را توجیه می کند. اگر شما به عنوان یک توسعه دهنده جاوا در سال 50K - 100K $ درآمد کسب می کنید، افزایش بهره وری را به شما نمی دهد تا یک ROI سریع در یک اشتراک IDEA تجاری 500 دلار در سال به شما ارائه دهد. قیمت در سال های بعد برای مشاغل پایین می آید، برای مبتدیان و افراد بسیار پایین تر است و برای دانش آموزان، معلمان، "قهرمانان جاوا" و توسعه دهندگان اوپن سورس رایگان است.

IntelliJ tout IDEA برای درک عمیق به کد، ارگونومی توسعه دهنده، ابزارهای برنامه نویسی داخلی و تجربه برنامه نویسی چند زبانه مورد استفاده قرار می گیرد.

اکلیپس (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 به عنوان پایه ای برای محصولات خود متکی هستند، پاسخ می دهد. خصوصا آنها را قادر می سازد تا با سرعت بیشتر، کارآمدتر و راحت تر این محصولات را با استفاده از نقاط قوت پلتفرم جاوا و دیگر استانداردهای صنعت مربوطه، توسعه دهند.

پیاده سازی های جاوا

شركت اوراكل پس از كسب آن در Sun Microsystems در تاریخ 27 ژانویه 2010، صاحب كنترل اجرای رسمی پلتفرم Java SE است. این اجرا براساس اجرای اولیه جاوا توسط Sun است. اجرای اوراکل برای مایکروسافت ویندوز، macOS ،Linux و Solaris در دسترس است (هنوز برای XP کار می کند، در حالی که در حال حاضر فقط نسخه های بعدی به طور رسمی پشتیبانی می شوند). از آنجا که جاوا فاقد هرگونه استاندارد رسمی است که توسط Ecma International، ISO / IEC، ANSI یا سایر سازمان های استاندارد شخص ثالث شناخته شده باشد، اجرای اوراکل استاندارد de facto است.

اجرای Oracle به دو توزیع مختلف بسته بندی شده است: Java Runtime Environment (JRE) که شامل قسمت هایی از پلتفرم Java SE است که برای اجرای برنامه های جاوا مورد نیاز است و برای کاربران نهایی در نظر گرفته شده است و کیت توسعه جاوا (JDK) که برای توسعه دهندگان نرم افزار در نظر گرفته شده است و شامل ابزارهای توسعه مانند کامپایلر جاوا، Javadoc ،Jar و یک اشکال زدایی است. اوراکل همچنین GraalVM، کامپایلر پویا و عملکرد مفصل جاوا را منتشر کرده است.

OpenJDK یکی دیگر از برنامه های قابل توجه Java SE است که تحت مجوز GNU GPL مجاز است. اجرای این برنامه زمانی آغاز شد که Sun شروع به انتشار کد منبع جاوا تحت GPL کرد. از Java SE 7، OpenJDK اجرای رسمی مرجع جاوا است.

هدف جاوا ساختن کلیه پیاده سازی های سازگار با جاوا است. از نظر تاریخی، مجوز علامت تجاری Sun برای استفاده از مارک جاوا تأکید می کند که همه پیاده سازی ها سازگار باشند. این امر منجر به اختلاف نظر حقوقی با مایکروسافت پس از آن شد که سان ادعا کرد که اجرای مایکروسافت از RMI یا JNI پشتیبانی نمی کند و ویژگی های خاص پلتفرم خاص خود را اضافه کرده است. سان در سال 1997 شکایت کرد، و در سال 2001، 20 میلیون دلار تسویه حساب کرد، و همچنین حکم دادگاه برای اجرای شرایط مجوز از Sun دریافت کرد. در نتیجه، مایکروسافت دیگر جاوا را با ویندوز ارسال نمی کند.

نسخه های جاوا

جاوای ۸ و ۱۱ به عنوان نسخه‌های دارای پشتیبانی بلندمدت می‌باشند. نسخه‌های بزرگ منتشرشده، به همراه تاریخ انتشار آن ها:

  • JDK 1.0، انتشار در ۲۱ ژانویهٔ ۱۹۹۶
  • JDK 1.1، انتشار در ۱۹ فوریهٔ ۱۹۹۷
  • J2SE 1.2، انتشار در ۸ دسامبر ۱۹۹۸
  • J2SE 1.3، انتشار در ۸ مه ۲۰۰۰
  • J2SE 1.4، انتشار در ۶ فوریهٔ ۲۰۰۲
  • J2SE 5.0، انتشار در ۳۰ سپتامبر ۲۰۰۴
  • Java SE 6، انتشار در ۱۱ دسامبر ۲۰۰۶
  • Java SE 7، انتشار در ۲۱۲۸ ژوئیه ۲۰۱۱
  • Java SE 8، انتشار در ۱۸ مارس ۲۰۱۴
  • Java SE 9، انتشار در ۲۱ سپتامبر ۲۰۱۷
  • Java SE 10، انتشار در ۲۰ مارس ۲۰۱۸
  • Java SE 11، انتشار در ۲۵ سپتامبر ۲۰۱۸
  • Java SE 12، انتشار در ۱۹ مارس ۲۰۱۹
  • Java SE 13، انتشار در 17 سپتامبر ۲۰۱۹

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

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

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

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

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

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

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

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

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

  • الگوی طراحی Singleton
  • الگوی طراحی کارخانه
  • الگوی طراحی دکوراتور
  • الگوی طراحی کامپوزیت
  • الگوی طراحی آداپتور
  • الگوی طراحی نمونه اولیه
  • الگوی طراحی نما
  • الگوی طراحی پروکسی
  • الگوی طراحی Iterator

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

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

جاوا پرکاربردترین زبان برنامه نویسی در جهان است. سازمان های بزرگ در بخش دولتی و خصوصی از پایگاه های عظیم جاوا استفاده می کنند و به JVM به عنوان یک محیط محاسبات بسیار متکی هستند. به طور خاص، بخش عمده ای از داده های بزرگ منبع آزاد برای JVM نوشته شده است. این شامل Apache Hadoop برای مدیریت داده های توزیع شده است. آپاچی اسپارک به عنوان یک زمان پخش توزیع شده برای سریع ETL؛ آپاچی کافکا به عنوان صف پیام؛ ElasticSearch، Apache Lucene و Apache Solr برای جستجو. و Apache Cassandra برای ذخیره اطلاعات برای نامگذاری چند مورد.

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

یادگیری ماشین در جاوا

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

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

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

  • Weka
  • Massive Online Analysis
  • Deeplearning4j
  • MALLET
  • ELKI

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

علم داده یک علم چند رشته ای است که از روش های علمی، فرآیندها، الگوریتم ها و سیستم ها برای استخراج دانش و بینش از داده های ساختاری و بدون ساختار استفاده می کند. علم داده به منظور فهم و تحلیل پدیده های واقعی با داده ها مفهومی برای متحد کردن آمار، تحلیل داده، یادگیری ماشین و روش های مرتبط با آنها است. تکنیک ها و تئوری هایی را استخراج می کند که از بسیاری زمینه ها در فریمورک ریاضیات، آمار، علوم کامپیوتر و علوم اطلاعات به دست آمده است. جیم گری برنده جوایز تورینگ، علم داده را به عنوان "الگوی چهارم" علم (تجربی، نظری، محاسباتی و اکنون داده محور) تصور می کند و ادعا می کند که "همه چیز در مورد علم به دلیل تأثیر فن آوری اطلاعات تغییر می کند". انجمن آماری آمریكا مدیریت پایگاه داده، آمار و یادگیری ماشینی را مشخص كرد و سیستم های توزیع و موازی را به عنوان سه انجمن حرفه ای بنیادی در حال ظهور معرفی كرد. اکنون اغلب با مفاهیم قبلی مانند آنالیز تجارت، هوش تجاری، مدل سازی پیش بینی و آمار به صورت متقابل مورد استفاده قرار می گیرد. در حالی که اکنون بسیاری از برنامه های دانشگاهی دارای مدرک علوم داده هستند، در مورد تعریف محتوای برنامه درسی مناسب اجماع وجود ندارد. با این وجود، بسیاری از پروژه های علوم داده و داده های بزرگ نتوانسته اند نتایج مفیدی را بدست آورند، که غالباً به دلیل عدم مدیریت و استفاده از منابع است.

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

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

اسپرینگ و جاوا

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

فریمورک اسپرینگ در اطراف DispatcherServlet طراحی شده است که کلیه درخواست ها و پاسخ های HTTP را کنترل می کند. هنگامی که یک درخواست به فریمورک Spring MVC ارسال می شود، دنباله ای از وقایع اتفاق می افتد، شامل:

  • DispatcherServlet ابتدا درخواست را دریافت می کند.
  • DispatcherServlet با HandlerMapping مشاوره می کند و کنترل کننده مرتبط با درخواست را فراخوانی می کند.
  • Controller با فراخوانی متد های سرویس مناسب، درخواست را پردازش می کند و یک شی ModelAndView را به DispatcherServlet باز می گرداند. شی ModelAndView شامل داده های مدل و نام View است.
  • DispatcherServlet نام View را به یک ViewResolver می فرستد تا View واقعی را برای استعلام پیدا کند.
  • حال، DispatcherServlet شی مدل را به Viewش منتقل می کند تا نتیجه را نمایش دهد.
  • View با کمک داده های مدل نتیجه را به کاربر باز می گرداند.

اسپرینگ بوت و جاوا

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

سینتکس جاوا

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

بر خلاف ++C، جاوا از بارگذاری بیش از حد اپراتور یا وراثت های چندگانه برای کلاس ها پشتیبانی نمی کند، اگرچه ارث چندگانه برای واسط ها پشتیبانی می شود.

جاوا از نظرات مشابه نظرات ++C استفاده می کند. سه سبک مختلف از نظرات وجود دارد: یک سبک خط واحد که با دو برش مشخص شده است (//)، یک سبک چند خطی که با / * بسته شده است و با * بسته می شود و سبک تفسیر Javadoc با / ** باز و بسته با * / . شیوه اظهار نظر Javadoc به کاربر اجازه می دهد تا Javadoc اجرایی را اجرا کند تا مستندات لازم را برای این برنامه ایجاد کند و می تواند توسط برخی از محیط های توسعه یکپارچه (IDE) مانند اکلیپس (Eclipse) خوانده شود تا به توسعه دهندگان دسترسی پیدا کند تا به اسناد داخل IDE دسترسی پیدا کنند.

مثال های جاوا

هر زمان که یک زبان برنامه نویسی کامپیوتری را یاد می گیرید، سنت است که اولین برنامه ای که می نویسید این باشد که کامپیوتر شما می گوید "!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 که ترکیبی از شی گرایی و ساختار ها است، دارای شی گرایی خالص است. جاوا یک زبان محبوب و فوق العاده کاربردی در سراسر جهان می باشد و دارای پشتیبانی قوی است و به همین علت خیلی کم پیش می آید که اگر در این زبان محبوب به مشکل بربخورید و نتوانید مشکل خود را به آسانی حل کنید. در این صفحه آموزش های برنامه نویسی جاوا را می توانید دانلود نمایید.

آیا این نوشته را دوست داشتید؟
teamtreehouse-java-basics

آشنایی با مبانی جاوا


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

1398/10/04 1065 بازدید
teamtreehouse-generics-in-java

آموزش Generics در جاوا


در این دوره بیاموزید که چگونه پارامترهای تایپ را به آبجکت ها یا توابع به وسیله generics انتقال دهید....

1398/10/02 883 بازدید
teamtreehouse-inheritance-in-java

آموزش وراثت در جاوا


در این دوره یاد می گیریم که چگونه می توان از میراث استفاده کرد تا از یک کلاس به عنوان پایه و اساس دیگری استفاده شود!...

1398/10/01 663 بازدید
teamtreehouse-java-lists

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


در این دوره یاد می گیرید که چگونه از لیست ها برای ذخیره گروه هایی از آبجکت ها استفاده کنید. همچنین خواهید دید که چه موقع به جای Array (آرایه) از یک لی...

1398/09/30 674 بازدید
teamtreehouse-java-maps

آموزش Maps در جاوا


در این دوره یاد می گیریم که چگونه با استفاده از Map می توان key-value pairs را ذخیره کرد!...

1398/09/30 747 بازدید
skillshare-create-advanced-excel-files-using-java

آموزش ایجاد فایل های پیشرفته اکسل با جاوا


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

1398/09/05 1317 بازدید
linkedin-build-spring-boot-apps-with-the-kotlin-programming-language

آموزش ساخت اپلیکیشن های Spring Boot با زبان برنامه نویسی کوتلین


در این دوره نحوه ساخت اپلیکیشن های با کیفیت Spring Boot با کوتلین را می آموزید خصوصا نسخه ی کوتلینی که در ماشین مجازی جاوا (JVM) اجرا می شود. علاوه بر...

1398/09/03 4354 بازدید زیرنویس دارد
packtpub-grpc-java-master-class-build-modern-api-and-microservices

دوره مسترکلاس gRPC (جاوا) - ساخت API مدرن و میکروسرویس ها


در این دوره با تئوری gRPC برای درک نحوه کارکرد gRPC، مقایسه gRPC و پارادایم REST API، نوشتن تعاریف سرویس gRPC در فایل های proto. و ایجاد سرور و کد کلا...

1398/09/01 2014 بازدید
pluralsight-java-performance-tuning

دوره Performance Tuning در جاوا


در این دوره با نحوه به حداکثر رساندن کارایی برنامه‌های جاوا با ابزارها و تکنیک‌هایی برای آنالیز کارایی برنامه خود و عیب یابی مشکلات کارایی و موارد دیگ...

1398/08/24 2098 بازدید
packtpub-spring-boot-2-0-in-7-days-video

آموزش Spring Boot 2.0 در 7 روز


این دوره راهنمای کاملی برای توسعه سریع برنامه در سطح سازمانی با Boot Spring است. شما با سیستم‌های بیلد - Maven، Gradle، Starters، سرویس‌های وب RESTfu...

1398/08/22 1542 بازدید
packtpub-hands-on-data-science-with-java

آموزش کاربردی علم داده با جاوا


در این دوره از کتابخانه های جاوا برای ساده سازی تجزیه و تحلیل داده های خود استفاده خواهید کرد....

1398/08/04 1425 بازدید
linkedin-learning-jdbc

یادگیری JDBC


در این دوره با اصطلاحات کلیدی JDBC، اصول اولیه پیکربندی پایگاه داده PostgreSQL، نحوه انتخاب و به روزرسانی داده‌ها، کار با transaction ها، اداره کردن ا...

1398/07/25 1297 بازدید زیرنویس دارد
packtpub-learn-automation-testing-with-java-and-selenium-webdriver

یادگیری تست اتوماسیون با جاوا و Webdriver سلنیوم (Selenium)


در این دوره جامع بطور کامل با اصول زبان برنامه نویسی جاوا از جمله متغیرها، عبارات شرطی، وراثت، شیء گرایی و غیره آشنا شده و بعد به سراغ انجام تست اتوما...

1398/07/22 1618 بازدید
linkedin-kubernetes-for-java-developers

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


در این دوره با کوبرنیتز (Kubernetes) برای توسعه دهندگان جاوا با مباحثی مثل بسته بندی برنامه‌ها، ایجاد Kubernetes manifests، پیکره بندی Istio service m...

1398/07/21 2235 بازدید زیرنویس دارد
pluralsight-spring-retry-getting-started

آموزش شروع کار با Spring Retry


در این دوره با Spring Retry و نحوه پیاده سازی آن در اپلیکیشن های موجود آشنا می شوید. علاوه بر این یاد خواهید گرفت تا retry را در Spring’s venerable Re...

1398/07/19 1046 بازدید
packtpub-real-world-projects-with-java-11

آموزش پروژه های دنیای واقعی با جاوا 11


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

1398/07/17 2159 بازدید
linkedin-java-ee-web-services

آموزش Java EE: وب سرویس‌ها


در این دوره با چگونگی ساخت وب سرویس‌های مبتنی بر RESTful و SOAP در Java EE برای ساخت، بروزرسانی، حذف و کوئری داده از پروژه نمونه، رفع خطاها و انجام تس...

1398/07/17 1632 بازدید زیرنویس دارد
packtpub-java-se-new-features-covers-versions-9-10-11-and-12

آموزش ویژگی های جدید Java SE - نسخه های 9، 10، 11 و 12


این دوره کوتاه شما را با درک جدیدترین ویژگی های کلیدی جاوا آشنا می سازد. ما با توضیح مدل انتشار جدید و چگونگی تأثیر آن بر شما شروع می کنیم. یاد می گیر...

1398/07/14 1143 بازدید
pluralsight-java-bdd-fundamentals

آموزش جاوا - اصول BDD


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

1398/07/13 1180 بازدید
packtpub-building-web-services-with-java-network-programming

ساخت وب سرویس با برنامه نویسی شبکه در جاوا


در این دوره با نحوه ی کار وب سرویس ها آشنا می شوید.طریقه ی کار با سرویس HTTP و وب سرویس های SOAP و REST را نیز فرا خواهید گرفت.در این دوره مفاهیم، دست...

1398/07/12 1268 بازدید