During learn and experience

۲ مطلب با کلمه‌ی کلیدی «جاوا» ثبت شده است

Spring reactive stack web framework یا همان Spring WebFlux

از این بعد نام Spring reactive stack web framework را بیشتر بیشتر خواهید شنید. این stack جدید که برای توسعه برنامه های تحت وب در Spring 5 معرفی شده است و نسل بعدی توسعه برنامه های تحت وب در Spring Framework است که پس از Spring MVC و Spring Boot (Spring Servlet stack based web framework) که سال ها در بین توسعه دهندگان جاوا استفاده می شد آمده است و قابلیت تولید سیستم های reactive و non-blocking درون Spring Framework را با استفاده از پروژه Reactor خواهد داد.

برنامه های تولید شده با Spring WebFlux هم قابلیت اجرا درون Servlet container ها  مثل Tomcat, Jetty, Servlet 3.1 و هم قابلیت اجرا بر روی سرور هایی مانند Netty یا Undertow را دارد.

من اولین بار این مدل تولید برنامه تحت وب در دنیای جاوا رو با Play Framework تجربه کردم (حدود ۴ سال پیش) و سیستم های خوبی با Play Framework تولید کردیم ولی همیشه مشکل کمبود توسعه دهنده و پلاگین برای Play Framework را داشتیم ولی کاملا مشخص بود که أینده تولید برنامه تحت وب در دنیای جاوا از servlet container ها نمی گذرد و مدل پردازشی با event-loop بهمراه تعداد thread های کم آینده توسعه برنامه های تحت وب جاوا را رقم خواهد زد و قدرت JVM بصورت کامل نمایش داده خواهد شد.

سازگاری کامل Reactor با استاندارد Reactive Stream که در جاوا ۹ معرفی شده است آینده Spring WebFlux را تضمین خواهد کرد.

فعلا Spring 5 M5 عرضه شده و مستندات Spring WebFlux کامل نیست و مثال های کاملی برای آن وجود نداره ولی چیزی که واضح هستش اینه که مثل همیشه Backward compatibility وجود خواهد داشت. در زیر یک کنترلر که با Spring WebFlux پیاده سازی شده است را می بینیم:

@GetMapping("/persons")
Flux<Person> getPersons() {
    return this.repository.getPersons();
}
۲۵ ارديبهشت ۹۶ ، ۲۳:۲۷ ۲ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

کدنویسی به سبک اسکالا با استفاده از Javaslang در جاوا 8

برنامه نویسی فانکشنال با اسکالا خیلی لذت بخش و آسونه و به نظر من علاوه بر سینتکس روان و موجر اسکالا، یکی از دلایل اصلی اون وجود لایبرری های فانکشنال بسیار عالی در دنیای اسکالا هست.

یک لایبرری بسیار خوب برای برنامه نویسی فانکشنال در جاوا توسعه داده شده با نام Javaslang که خیلی امکانات فوق العاده ای داره. علاوه بر امکانات و کامل بودن ابزار های فانکشنال در Javaslang، یکی دیگر از مزایای اون (حداقل برای من) اینه که ابزار ها و امکانات این لایبرری بسیار شبیه لایبرری های اسکالا طراحی شده. به چند مثال نگاه کنید متوجه میشید:

 

pattern matching:

Number plusOne = Match(obj).of(
    Case(instanceOf(Integer.class), i -> i + 1),
    Case(instanceOf(Double.class), d -> d + 1),
    Case($(), o -> { throw new NumberFormatException(); })
);

functional For:

Iterator<String> iterator =
    For(persons.filter(Person::hasAddress), p ->
        For(p.addresses).yield(a ->
             p.name + "," + a.street
        )
    );

 

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

 

برای مطالعه بیشتر درباره این لایبرری می تونید مستندات مفصل این لایبرری رو مطالعه کنید.

 

شاد باشید.

۲۰ تیر ۹۵ ، ۱۴:۴۳ ۱ نظر موافقین ۱ مخالفین ۰
سعید زرین فام