آنچه یاد خواهید گرفت:
مبانی Java شامل اصول OOP، کلمات کلیدی، عملگرها، آبجکت ها، کلاسها، متدها، سازندهها، دستورات کنترل جریان، حلقهها، وراثت، Interface و موارد دیگر.
مفاهیم میانی Java شامل مدیریت استثناها، Wrapper Classها، کالکشن ها، Enumها، Date and Time API
مفاهیم پیشرفته Java شامل Generics، برنامهنویسی تابعی، Lambda Expressionها، Functional رابط ها، Method Referenceها، Streams API، و Multi Threading
رسیدن به تسلط حرفهای در برنامهنویسی Java
کسب مهارت عملی با تکمیل بیش از 100 تمرین کدنویسی
تسلط به بهترین شیوههای Java با راهنمایی یک توسعهدهنده باتجربه
پیشنیازهای دوره
نیازی به تجربه قبلی برنامهنویسی نیست، اما آشنایی با مفاهیم پایه برنامهنویسی مفید خواهد بود.
یک رایانه با دسترسی به اینترنت و انگیزه برای یادگیری و تمرین
توضیحات دوره
به دوره تسلط به برنامهنویسی مدرن Java: از مبتدی تا حرفهای خوش آمدید؛ یک دوره جامع که برای مجهز کردن توسعهدهندگان در همه سطوح به مهارتها و دانش ضروری طراحی شده است تا برنامهنویسی Java را از مبانی تا مباحث پیشرفته، تا Java 25، بهخوبی بیاموزند. چه مبتدی باشید و بخواهید مسیر برنامهنویسی خود را آغاز کنید، و چه توسعهدهندهای باتجربه که به دنبال ارتقای تخصص Java خود است، این دوره چیزی ارزشمند برای ارائه دارد.
بررسی دوره:
این دوره با دقت طراحی شده تا همه جنبههای برنامهنویسی Java را بهصورت عمیق پوشش دهد و درک محکمی از مفاهیم اساسی و جدیدترین پیشرفتهای این زبان فراهم کند. در ادامه میبینید که در طول دوره چه چیزهایی یاد خواهید گرفت:
بخش 1: سلامی به Java
Java چیست و چرا باید آن را یاد بگیرید؟
رویکرد یادگیری زبان Java
نوشتن اولین دستور Java با استفاده از jshell
تاریخچه کوتاه Java و خط زمانی انتشار آن
چرا در اکوسیستم Java، عرضهکنندگان مختلف JDK داریم؟
نصب Java
بخش 2: انواع دادهی primitive در Java
آشنایی با کلمات کلیدی Java
بررسی عمیق انواع داده byte ،short ،int ،long ،float، double
سینتکس تعریف انواع داده primitive و ذخیره داده با آنها
چگونه یک متغیر Java را نامگذاری کنیم؟
سبکهای نوشتاری در برنامهنویسی
بررسی عمیق نوع داده primitive از نوع boolean
بررسی عمیق نوع داده primitive از نوع char
دمو Overflow و Underflow
[Java 7] استفاده از underscore در literalهای عددی
دمو قالب عدد octal در Java
دمو قالب عدد hexadecimal در Java
دمو قالب عدد binary در Java
Type casting در Java
دمو تبدیل ضمنی و صریح
آشنایی با String در Java
دمو String در Java
بخش 3: هنگام اجرای یک برنامه Java در پشت صحنه چه اتفاقی میافتد؟
آشنایی با چرخه عمر یک برنامه Java
JDK ،JRE ،JVM چیست؟
Java چگونه به یک زبان مستقل از پلتفرم تبدیل شد؟
آشنایی با ساختار کد برنامه Java
نوشتن اولین کلاس Java، کامپایل و اجرای آن
آشنایی با IDE و IntelliJ IDEA
ساخت اولین پروژه Java در IntelliJ و تنظیم یک تم
نوشتن اولین کلاس Java در IntelliJ
بخش 4: بررسی عمیق کلاسها، متدها، فیلدها و سازندهها در Java
Java از برنامهنویسی آبجکتگرا (OOP) پشتیبانی میکند.
دمو ساخت یک کلاس Java
تعریف فیلدها در یک کلاس Java
دمو متدهای Java
آشنایی با امضای متد
هدف دستور return در متدهای Java
سینتکس فراخوانی متد در Java
دوباره به متد main سلام کنیم.
چگونه آبجکت های Java را ایجاد و مقداردهی اولیه کنیم؟
آشنایی با Constructor در Java
دمو Constructor در Java و آشنایی با debugging
مشکل Constructor پیشفرض یا بدون آرگومان
Overloading سازنده در Java
زنجیرهسازی سازنده در Java
کاربرد دستور return در سازنده
Instance Initialization Block در کلاس Java - بخش 1
Instance Initialization Block در کلاس Java - بخش 2
آشنایی با متغیرهای static در Java
چگونه متغیرهای ثابت final static را تعریف کنیم؟
تفاوت متغیرهای static و instance
آشنایی با متدهای static در Java
Static Initialization Block در کلاس Java
اشکال زدایی فراخوانی متدها در IntelliJ
Java کلاسها، آبجکت ها، متغیرها و متدها را کجا ذخیره میکند؟
بررسی عمیق حافظه Heap و حافظه Stack
آشنایی با null در Java
تخریب آبجکت ها و Garbage Collection در Java
Class در برابر Object در برابر Instance در برابر Reference
کپسولهسازی در Java چیست؟
بخش 5: Comments در Java
Comments تکخطی در Java
Comments چندخطی در Java
آشنایی با javadoc comments
تولید javadoc با استفاده از IntelliJ
بخش 6: بررسی عمیق String در Java
آشنایی با String Pool در Java
متد intern در String
متد concat در String
کاراکترهای escape sequence و مقادیر Unicode در String
پیدا کردن طول یک String
مقایسه Stringها در Java
گرفتن کاراکتر در یک اندیس از String
بررسی خالی بودن یک String
تغییر حالت حروف در String
تبدیل مقادیر به String
جستوجوی یک مقدار در String
Trim کردن یک String
گرفتن Substring از یک String
جایگزینی بخشی از یک String
تقسیم Stringها
[JAVA 8] Join کردن Stringها
متد ()format در String
متد ()System.out.printf
درک اینکه چرا آبجکت های String تغییرناپذیر هستند.
چگونه در Java Stringهای قابلتغییر بسازیم؟
[JAVA 15] Text Block در Java
تبدیل String به مقادیر انواع داده primitive
تبدیل String به نوع داده double
بخش 7: عملگرها در Java
آشنایی با عملگرها و عملوندها در Java
عملگر انتساب در Java
آشنایی با عملگرهای حسابی در Java
عملگر جمع در Java
عملگر الحاق String
عملگر تقسیم در Java
عملگر باقیمانده در Java
عملگرهای یکانی مثبت و منفی
عملگرهای ترکیبی انتساب حسابی در Java
عملگرهای افزایش و کاهش در Java
آشنایی با عملگرهای رابطهای در Java
عملگر برابری در Java
عملگر نابرابری در Java
عملگرهای بزرگتر از، بزرگتر یا مساوی، کوچکتر از، کوچکتر یا مساوی
آشنایی با عملگرهای منطقی در Java
عملگر NOT منطقی در Java
عملگرهای Logical Short-Circuit AND و Logical AND در Java
عملگرهای Logical Short-Circuit OR و Logical OR در Java
عملگر XOR منطقی در Java
عملگرهای ترکیبی انتساب منطقی در Java
عملگرهای بیتی در Java
عملگر NOT بیتی یا مکمل 1 در Java
عملگر AND بیتی در Java
عملگر OR بیتی در Java
عملگر XOR بیتی در Java
عملگر شیفت چپ در Java
عملگر شیفت راست علامتدار در Java
عملگر شیفت راست بدون علامت در Java
عملگرهای بیتی ترکیبی انتساب در Java
عملگر سهتایی یا شرطی در Java
جزئیات تقدم و associativity عملگرهای Java
بخش 8: دستورات کنترل جریان در Java
آشنایی با دستورات کنترل جریان در Java
بررسی عمیق if ،else if ،else در Java
دستورات تودرتو if-else if-else
استفاده از عملگر سهتایی بهجای دستور if-else
بررسی عمیق دستور switch case
[JAVA 14] بررسی عمیق switch expression
بررسی عمیق دستور while
بررسی عمیق دستور do while
بررسی عمیق حلقه for
بررسی عمیق حلقههای for تودرتو
دستور break
دستور continue
دستور return
متغیرهای محلی و Scope
بخش 9: packageها در Java
آشنایی با packageها و مزایای آنها
ساخت یک package
قواعد و استانداردهای نامگذاری package
استفاده از اعضای package با دستور import
package عالی java.lang
دستورهای static import
نکات مهم درباره packageها و importها
آشنایی با access modifierها
دمو access modifierها برای کلاسهای Java
دمو access modifierها برای متدها و فیلدها در کلاسها
بررسی عمیق کلاسهای POJO
بخش 10: وراثت در Java
آشنایی با وراثت در Java
کلاس Object ،superclass پیشفرض است.
رابطههای is-a و has-a در Java
یک زیرکلاس چه چیزهایی را از superclass خود به ارث میبرد
آشنایی با upcasting در Java
آشنایی با downcasting و دمو آن
عملگر instanceof
Static Binding و Dynamic Binding در Java
Polymorphism در Java چیست؟
Method Overriding
کلمه کلیدی super برای فراخوانی متدهای superclass از زیرکلاس
Method Overloading
تفاوت Method Overriding و Method Overloading
پنهانسازی متد در وراثت Java
پنهانسازی فیلد در وراثت Java
داستان سازندهها و وراثت در کنار هم
کلمات کلیدی this و super در Java
انواع وراثت در Java
متدها و کلاسهای abstract
کلمه کلیدی final در Java
[JAVA 17] sealed classها و رابط ها
بخش 11: رابط ها در Java
آشنایی با رابط ها
تعریف فیلدهای ثابت در interface
[JAVA 8] چگونه متدهای default را در رابط ها بسازیم؟
[JAVA 8] چگونه متدهای static را در رابط ها بسازیم؟
وراثت چندگانه با استفاده از رابط ها
رابط یک نوع جدید تعریف میکند
Marker Interface
[JAVA 8] Functional Interface
Class در برابر Abstract Class در برابر Interface
بخش 12: آرایهها در Java
آرایه در Java چیست؟
تعریف و مقداردهی اولیه آرایهها
طول آرایه
پیمایش عناصر آرایه با حلقه for
پیمایش عناصر آرایه با حلقه for-each
مزایا و معایب آرایهها
کپی کردن آرایهها با استفاده از حلقهها
کپی کردن آرایهها با استفاده از متدهای arraycopy و copyOf
تبدیل آرایهها
مرتبسازی آرایهها
جستوجو در آرایه
پر کردن آرایه
آشنایی با آرایههای چندبعدی یا تودرتو
آرایههای دوبعدی یا 2D
آرایههای نامنظم
آرایههای سهبعدی یا 3D
بخش 13: دریافت ورودی با BufferedReader و Scanner
درک System.out.println
آشنایی با BufferedReader و دمو آن
آشنایی با Scanner و دمو آن
مقایسه BufferedReader و Scanner
در کدهای Production از System.out.println استفاده نکنید
Logging در Java
بخش 14: مدیریت استثنا با try، catch و finally
اولین تجربه با Exception
بلوک try-catch
چندین بلوک catch
بلوک finally
[JAVA 7] دستور try-with-resources
قواعد مدیریت استثناها
سلسلهمراتب Exception
Checked Exceptionها
Unchecked Exceptionها
کلمه کلیدی throws
کلمه کلیدی throw
تفاوت throw و throws
انتشار Exception
بلوک try تودرتو
Custom Checked Exception
Custom Unchecked Exception
final ،finally و finalize
بخش 15: رمزگشایی از رازهای superclass جاوا (java.lang.Object)
آشنایی با متدهای کلاس Object
بررسی عمیق ()getClass در کلاس Object
بررسی عمیق ()hashCode در کلاس Object
بررسی عمیق ()equals در کلاس Object
بازنویسی متدهای ()hashCode و ()equals
بازنویسی متدهای ()hashCode و ()equals با استفاده از IntelliJ
بررسی عمیق ()toString در کلاس Object
دمو متدهای ()hashCode() ،equals و ()toString در String
بررسی عمیق ()finalize در کلاس Object
بررسی عمیق ()clone در کلاس Object
جزئیات مربوط به Shallow Cloning و Deep Cloning
آبجکت های mutable و immutable
[JAVA 16] Record classها
[JAVA 10] var (استنباط نوع متغیر محلی)
بخش 16: آشنایی با Collections و Wrapper Classها
آرایهها محدودیت دارند
Collections چیستند و چرا فقط آبجکت ها را میپذیرند؟
آشنایی با Wrapper Classها
تبدیل نوع primitive به آبجکت های Wrapper (Boxing)
تبدیل آبجکت های Wrapper به انواع primitive (Unboxing)
Autoboxing و Unboxing
Caching با متدهای valueOf()
سلسلهمراتب Java Collection Framework
بخش 17: Lists و ArrayListها؛ سفری سرگرمکننده در ساختارهای داده
بررسی عمیق Interface Collection
[JAVA 21] بررسی عمیق Sequenced Collections
بررسی عمیق Interface List
چگونه از ArrayList آبجکت بسازیم؟
دمو ArrayList
[JAVA 7] Diamond Operator در Java
کارایی ArrayList
[JAVA 9] ساخت Listهای immutable
پیمایش ArrayList با for-each و ()iterator
پیمایش ArrayList با ()listIterator
مرتبسازی ArrayList با متدهای ()sort
مرتبسازی ArrayList با Comparator سفارشی
مرتبسازی ArrayList از نوع داده سفارشی با Comparable
مرتبسازی ArrayList از نوع داده سفارشی با Comparator
Arrays در برابر ArrayList
بخش 18: LinkedListها - رقص گرهها در Java
آشنایی با LinkedList
چگونه از LinkedList آبجکت بسازیم؟
دمو LinkedList
پیمایش عناصر LinkedList
مرتبسازی عناصر LinkedList
کارایی LinkedList
ArrayList در برابر LinkedList
بخش 19: Generics در Java
آشنایی با Generics در Java
چرا به Generics در Java نیاز داریم؟
کلاس generic در Java
متدهای generic در Java
Collections بدون Generics
دمو Covariance
Wildcardهای subtype یا upper bound
Wildcardهای supertype یا lower bound
Wildcardهای بدون محدودیت
بخش 20: بررسی عمیق Map ،HashMap ،TreeMap، LinkedHashMap
آشنایی با Map در Java
دمو HashMap
HashMap چگونه Key و Value را ذخیره میکند؟
HashMap چگونه Value را بازیابی میکند؟
[JAVA 8] بهبودهای HashMap در Java 8
پیمایش HashMap با ()keySet و ()entrySet
پیمایش HashMap با ()values
آشنایی با TreeMap در Java
دمو TreeMap در Java
دمو LinkedHashMap در Java
[JAVA 9] ساخت Mapهای immutable
بخش 21: Set، HashSet، TreeSet، LinkedHashSet
آشنایی با Set در Java
دمو HashSet
HashSet چگونه درونی کار میکند؟
پیمایش HashSet
عملیات Set
دمو TreeSet در Java
دمو LinkedHashSet در Java
[JAVA 9] ساخت Setهای immutable
List در برابر Set
بخش 22: Enumها در Java
آشنایی با Enumها
مشکلات رویکرد معمول ثابتها در کلاس Java
دمو رویکرد Enum
ارتباط دادن داده به ثابتهای Enum
دمو EnumSet و متدهای مهم آن
مزایای Enumها
بخش 23: Date و Time در Java
Java چگونه از Date و Time پشتیبانی میکند؟
چرا یک Date API جدید در Java 8 معرفی شد؟
دمو java.util.Date
قالببندی و تجزیه Date با SimpleDateFormat
دمو java.sql.Date
دمو java.util.Calendar
Date و Time وابسته به TimeZone
[JAVA 8] آشنایی با Date و Time API جدید در Java 8
[JAVA 8] متدهای ()of در java.time Date and Time API
[JAVA 8] متدهای ()from و ()withXxx در java.time Date and Time API
[JAVA 8] متدهای ()toXxx و ()atXxx در java.time Date and Time API
[JAVA 8} متدهای ()getXxx() ،plusXxx و ()minusXxx در Date و Time API جدید
[JAVA 8] آشنایی با Instant و Duration در java.time Date and Time API
[JAVA 8] دمو Instant و Duration در java.time Date and Time API
[JAVA 8] Period در java.time Date and Time API
[JAVA 8] متدهای ()multipliedBy() ،dividedBy و ()negated
[JAVA 8] متد ()truncatedTo
[JAVA 8] دمو ZoneId و ZonedDateTime
[JAVA 8] دمو ZoneOffset
[JAVA 8] دمو OffsetDateTime و OffsetTime
[JAVA 8] دمو Day Light Saving با ZonedDateTime
[JAVA 8] تقویمهای غیر ISO در java.time Date and Time API
[JAVA 8] قالببندی Date و Time با DateTimeFormatter
[JAVA 8] تجزیه Date و Time با DateTimeFormatter
بخش 24: [JAVA 8] برنامهنویسی تابعی با استفاده از Lambda Expressionها
آشنایی با برنامهنویسی تابعی
برنامهنویسی به سبک imperative در برابر سبک functional
Lambda Expressionها چیستند و سینتکس آنها چگونه است؟
چگونه Lambda Expression بسازیم؟
بررسی عمیق Functional رابط ها
Functional Interface و Lambda Expressionها چگونه به هم مرتبطاند؟
کلاس ناشناس درونی بهجای Lambda Expressionها
Functional رابط های از پیش تعریفشده در JDK
بررسی عمیق Functional Interface از نوع Predicate
بررسی عمیق Functional Interface از نوع Function
بررسی عمیق رابط ها از نوع UnaryOperator
بررسی عمیق رابط ها از نوع Consumer
بررسی عمیق رابط ها از نوع Supplier
بررسی عمیق BiFunctional رابط ها
Functional رابط های نوع primitive
بررسی عمیق Lexical Scoping در Lambda Expressionها
this و super درون Lambda Expression
بخش 25: [JAVA 8] ساخت Lambda Expressionها با Method Referenceها
آشنایی با ارجاعهای متد
دموی ارجاع به متد ایستا
دموی ارجاع به متد نمونه
دموی ارجاع به متد نمونه با استفاده از نوع Class
دموی ارجاع به Constructor
بخش 26: [JAVA 8] Streams API
آشنایی با java.util.stream API
ساخت Stream از Collections
Streamها هیچ فضایی برای ذخیرهسازی ندارند
آشنایی با Stream Pipeline
دمو متد ()map در Streamها
دمو متد ()flatMap در Streamها
دمو متد ()filter در Streamها
دمو متد ()limit در Streamها
دمو متد ()skip در Streamها
Streamها فقط یکبار قابل پیمایش هستند
آشنایی با متد ()reduce در Streamها
دمو متد ()reduce در Streamها
دمو متد ()collect در Streamها
دمو متد ()collectingAndThen در Streamها
دمو متد ()groupingBy و partitioningBy() در Streamها
متدهای finding و matching در Streamها
مرور سریع درباره stream pipeline
بررسی عمیق parallel streamها و دمو آن
Collections در برابر Streams
بخش 27: [JAVA 8] Optional برای کار با nullها در Java
آشنایی با کلاس Optional
دمو Optional
دمو متدهای ifPresent ،ifPresentOrElse ،orElse، orElseGet
دمو متدهای orElseThrow ،map ،filter
نکته سریع برای فیلتر کردن عناصر null با Stream API
بخش 28: MultiThreading در Java
MultiThreading چیست؟
یک برنامه یا نرمافزار چگونه درون رایانه اجرا میشود
اجرای موازی در برابر اجرای همزمان
چگونه چندین thread عملکرد را بهبود میدهند؟
ساخت Thread در Java
برنامه دموی MultiThreading
دمو متدهای Thread شامل getId ،threadId، getName ،setName ،currentThread ،sleep
دمو متدهای Thread شامل join ،getPriority، setPriority
دمو ()wait() ،notify() ،notifyAll
آشنایی با Race Condition و کلمه کلیدی synchronized
دمو متدها و بلوکهای synchronized
آشنایی و دمو کلمه کلیدی volatile
آشنایی با Deadlock
دمو Deadlock و راهحلهای ممکن
[JAVA 21] آشنایی با Virtual Threadها
بخش 29 - ویژگیهای جدید Java 22 ،Java 23 و Java 24
اجرای برنامههای چندفایلی Source Code
متغیرها و الگوهای بدون نام
Comments مستندات Markdown
Stream Gatherers API
بخش 30 - ویژگیهای جدید Java 25
اعلانهای ایمپورت ماژول
فایلهای منبع فشرده و متدهای main نمونه
بدنههای انعطافپذیر سازنده
مقادیر محدودهای
بهبودهای عملکرد با استفاده از AOT
در طول این دوره، با تمرینهای کدنویسی عملی، تکالیف و پروژهها درگیر خواهید شد تا یادگیری شما تقویت شود و مفاهیم را در سناریوهای واقعی به کار ببرید. مدرسهای باتجربه ما راهنمایی، پشتیبانی و بینش لازم را ارائه میکنند تا بتوانید پیچیدگیهای برنامهنویسی Java را بهطور مؤثر مدیریت کنید.
چه هدف شما تبدیل شدن به یک توسعهدهنده Java باشد، چه بخواهید فرصتهای شغلی خود را بهبود دهید، یا صرفاً درک عمیقتری از یکی از پرکاربردترین زبانهای برنامهنویسی به دست آورید، این دوره شما را توانمند میکند تا به اهداف خود در دنیای برنامهنویسی Java برسید.
پیشنیازها:
نیازی به تجربه قبلی برنامهنویسی نیست، اما آشنایی با مفاهیم پایه برنامهنویسی مفید خواهد بود.
یک رایانه با دسترسی به اینترنت و انگیزه برای یادگیری و تمرین
مخاطبان هدف:
مبتدیانی که مشتاق یادگیری برنامهنویسی Java هستند.
توسعهدهندگان باتجربهای که میخواهند مهارتهای Java خود را گسترش دهند.
دانشجویان و متخصصانی که به دنبال پیشرفت شغلی در توسعه نرمافزار هستند.
همین حالا در این دوره شرکت کنید و سفر خود را برای تسلط جامع به برنامهنویسی Java، از مبانی تا Java 24 و فراتر از آن، آغاز کنید!
این دوره برای چه کسانی مناسب است؟
مبتدیانی که مشتاق یادگیری برنامهنویسی Java هستند.
توسعهدهندگان باتجربهای که میخواهند مهارتهای Java خود را گسترش دهند.
دانشجویان و متخصصانی که به دنبال پیشرفت شغلی در توسعه نرمافزار هستند.