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

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

معرفی جاوا

جاوا یک زبان برنامه نویسی شی گرا، چند منظوره و چند سکویی، تولید شده توسط Sun Microsystems است و برای اولین بار در سال 1995 منتشر شد. جاوا ابتدا به عنوان یک فناوری وب مستقل از دستگاه طراحی شد. سینتکس جاوا شبیه و بر اساس گرامر C و سی پلاس پلاس است تا کار برنامه نویسان را برای یادگیری آسان کند. از آن به بعد، جایگاه برجسته ای در جهان برنامه نویسی کامپیوتر به دست آورده است. جاوا متعلق به اوراکل است و بیش از 3 میلیارد دستگاه آن را اجرا می کند. جاوا یک زبان برنامه نویسی عمومی است که متشکل از کلاس مبتنی بر شی گرایی است و طراحی شده تا وابستگی های اجرا به همان اندازه ممکن باشد. این موضوع توسعه دهندگان نرم افزار را قادر می کند تا یک بار کد را بنویسند و در هر جا اجرا شود. برنامه های جاوا به طور معمول به bytecode متصل می شوند که می تواند بر روی هر ماشین مجازی جاوا (JVM) بدون در نظر گرفتن معماری زیرساخت کامپیوتری اجرا شود. از سال 2018، جاوا یکی از محبوب ترین زبان های برنامه نویسی به کار برده شده توسط GitHub به ویژه برای برنامه های کاربردی وب سرور و کلاینت است که 9 میلیون توسعه را گزارش می دهد. چند منظوره بودن جاوا می تواند بسیاری از برنامه های کاربردی را از برنامه های خط فرمانی به اپلت ها به 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 و نحوه عملکرد جاوا، یادگیری مهم برای هر توسعه دهنده جاوا به منظور استفاده موثر از اکوسیستم جاوا است. این مجموعه پست وبلاگ، پایه و اساس محکمی را برای داخلی و فناوری های 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 (برنامه نویسی شی گرا) و الگوهای معماری مناسب برای راحتی در ساختار و حفظ برنامه های جاوا استفاده کنید.

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

اکثر ما داستان بالا از جاوا را می دانیم و مشکل اینجاست که مهمترین مؤلفه این فرآیند - JVM به ما به عنوان یک جعبه سیاه آموزش داده می شود که می تواند به صورت جادویی بایت کد را تفسیر کند و بسیاری از فعالیتهای زمان اجرا مانند JIT را انجام دهد. به موقع) گردآوری و GC (جمع آوری زباله) در طول اجرای برنامه. در بخش های بعدی، نحوه عملکرد JVM را فاش می کنیم.

معماری JVM

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

معماری جاوا

  • ClassLoader

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

  • منطقه متد

JVM Method Area ساختارهای کلاس مانند ابرداده، استخر زمان ثابت و کد روش ها را ذخیره می کند.

  • پشته

تمام اشیاء، متغیرهای نمونه مربوط به آنها و آرایه ها در پشته ذخیره می شوند. این حافظه مشترک است و در چندین موضوع مشترک است.

  • پشته های زبان JVM

پشته های زبان جاوا متغیرهای محلی را ذخیره می کند، و این نتایج جزئی است. هر نخ پشته JVM مخصوص به خود را دارد که همزمان با ایجاد موضوع ایجاد می شود. هر زمان که یک متد فراخوانی شده است، یک فریم جدید ایجاد می شود و با اتمام مراحل فراخوانی روش حذف می شود.

  • ثبات های رایانه ای

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

  • پشته های روش نیتیو

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

  • موتور اجرا

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

  • رابط متد نیتیو

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

  • کتابخانه های روش نیتیو

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

نسخه های جاوا

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

  • 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، انتشار در ۱۹ مارس ۲۰۱۹

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

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

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

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

مثال های جاوا

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

آیا این نوشته را دوست داشتید؟