حدود دو سال میشه که با Play Framework پروژه های عملیاتی و جدی انجام میدم و توی تیم های مختلف ازش استفاده می کنیم. شروع کار از Play Framework 2.2 بود ولی بیشتر پروژه ها روی Play Framework 2.3، Spring و جاوا انجام شده.

پس از مشکل در سازگار کردن Play Framework 2.4 با Spring ، پروژه های قبلی همه روی Play 2.3 موندن تا اینکه اولین پروژه جدی با Play Framework 2.4 و جاوا رو برای یک پروژه جدید و خاص شروع کردم (البته یک پروژه با Play Framework 2.4 و اسکالا هم با یکسری دوستان دیگه داریم). 

پروژه نیازمندی های خاصی داره که از پروژه های مرسوم با معماری لایه ای متفاوتش کرده. یکی از تفاوت های بارزش اینه که قرار یک سرویس REST باشه که به چیزی حدود ۲۰۰ دیتابیس مختلف وصل میشه و هر کدوم از دیتابیس ها ممکنه schema با اونیکی فرق کنه ولی سرویسی که قراره رو همشون داده بشه یکسانه!!! یکی دیگه از تفاوت هاشم اینه که از این سرویس های REST قراره third party های شرکت هایی که ما باهاشون قرارداد داریم استفاده کنند و لود بالایی روش خواهد بود که قابلیت خوب scalability در Play Framework خیالمون رو راحت کرده.

کل ساختار Play Framework 2.4 بر پایه dependency injection شده حتی پلاگین نویسی یا lifecycle برنامه و ... ولی وابستگی شدیدی به Google Guice داره. من سال ۸۷ با Google Guice آشنا شدم و با GWT و Servlet باهاش web application تولید می کردیم. کلا موجود بی آزاریه ولی بقدرت Spring نیست اما از Spring خیلی خوش دست تر و سبک تره.

سایر تغییراتی که برای من جالب بود و بهش بر خوردم تغییر در ابزار های تست بود، برای مثال جایگزینی Hamcrest یا fest assertion یا تغییر اساسی در مکانیزم ایجاد و استفاده از FakeApplucation و FakeRequest برای تست بود.