Play Framework در هر نسخه بالغتر و کاملتر میشه و من خیلی خوشحالم که از نسخه 2.1 شاهد این فرایند بودم.
بر خلاف گفته های توسعه دهندگان Play Framework که استفاده از Akka streams بجای iteratee مهمترین تغییر در Play Framework 2.5 بوده است ولی به نظر من تغییرات Java API در Play Framework 2.5 خیلی مهمتر بوده، در Play Framework 2.5 تمام کلاس هایی که توسعه دهندگان Play Framework برای پشتیبانی از asynchronous functional programming به Play اضافه کرده بودند (مانند F.Option یا F.Promise و ...) با معادل های جاوا 8 آن جایگزین شده اند:
- استفاده از functional interface های جاوا 8: استفاده از Runnable, Consumer, Predicate, و ... بجای Function0، Function ، Callback و ...
- استفاده از Optional بجای F.Option
- استفاده از CompletionStage بجای F.Promise
این تغییرات باعث میشه که کدنویسی در Play با استاندارد های برنامه نویسان جاوا سازگاری کامل داشته باشه. این درحالیه که Java EE بعنوان مرجع اصلی برنامه نویسی وب و Enterprise در دنیای جاوا همیشه کمترین و دیرترین سازگاری رو با نسخه های جدید جاوا دارد!
یکی دیگر از تغییرات مهم Play Framework 2.5 برای توسعه دهندگان جاوا، فراهم شدن API های جدیدی در Play Framework 2.5 است که تا قبل از این نسخه فقط برای زبان اسکالا وجود داشت:
- HttpRequestHandler: اجازه دستگاری درخواست رسیده به سرور با زبان جاوا قبل از رسیدن آن به router را می دهد.
- EssentialAction: پیاده سازی Action های سطح پایین با زبان جاوا.
- EssentialFilter و Filter: نوشتن فیلتر با استفاده از زبان جاواو
- BodyParser: نوشتن Body Parser سفارشی با زبان جاوا.
در هر نسخه جدید Play Framework همیشه بهبود performance هم وجود داره که در این نسخه به نسبت نسخه 2.4 حدود ۲۰ درصد بهبود performance داشتیم.
یک قابلیت جدید Play Framework 2.5 که زیاد بهش پرداخته نشده پشتیبانی وب سرور Play یعنی Netty از native socket transport در لینوکس است که باعث میشه Play Framework بر روی لینوکس performance بهتری داشته باشه.