من برنامه نویسی Functional رو با Scala یاد گرفتم، Java 8 امکانات Functional خوبی اضافه کرده ولی در برابر Scala واقعا حرفی برای گفتن نداره همونطور که Scala در زمینه community و library در برابر جاوا حرفی برای گفتن نداره (هر چی باشه من بالاخره جاوا کارم ).
فکر کنم برای community بزرگ توسعه دهندگان جاوا، عرضه Java 8 اولین قدم کوچک برای رفتن به سمت برنامه نویسی Functional باشه. علاوه بر یکسری امکانات مهم در برنامه نویسی Functional مثل pattern matching و ... که در جاوا وجود نداره، حجم عظیم library های دنیای جاوا هم هنوز Functional نیستند و از Lambda Expression، انواع داده Optional یا CompletableFuture و ... استفاده نمی کنند. library های مهمی مثل JUnit یا JPA و ... باید در نسخه های بعدی تغییرات بزرگی داشته باشند و با مفاهیم Functional در Java 8 بازنویسی شوند.
Java 8 در سال ۲۰۱۴ عرضه شده و در حال حاضر با گذشت حدود ۲ سال، هنوز community بزرگ توسعه دهندگان جاوا حرکت چشمگیری برای رفتن به سمت Functional شدن انجام نداده. هنوز هم ما از انواع داده mutable استفاده می کنیم، متد های ما نوع Optional بر نمی گردانند و استفاده از sream ها و Lambda Expression در کدنویسی ما مرسوم نشده و کماکان از if else استفاده بیشتری می کنیم تا map و flatMap.
من خیلی خوشحالم که تجربه برنامه نویسی Functional رو با Scala شروع کردم و همچنین تو همون دنیا با reactive بودن سیستم آشنا شدم. همین باعث شده الان که برنامه نویسی Functional در Java 8 رو می بینم هم خوب درکش کنم و هم بسادگی بفهمم که دنیای جاوا چقدر راه داره تا از این نظر به دنیای Scala برسه (از ابعاد دیگه جاوا خیلی قویتر و جلوتره ).