Pippo: فریمورکی برای زبان جاوا برای پیاده‌سازی پروژه‌های تحت وب

Pippo: فریمورکی برای زبان جاوا برای پیاده‌سازی پروژه‌های تحت وب

Pippo یک میکرو فریمورک وب جاوا و اپن‌سورس که تحت لایسنس آپاچی منتشر شده است که با کمترین میزان وابستگی، امکان پیاده‌سازی سریع پروژه‌های تحت وب را برای دولوپرهای زبان برنامه‌نویسی محبوب Java فراهم می‌کند. هدف از طراحی این پروژه، ساخت میکرو فریمورکی برای اپلیکیشن‌های تحت وب جاوا بوده که استفاده از آن بسیار ساده باشد. این فریمورک قابلیت پیاده‌سازی اپلیکیشن‌های کوچک، متوسط و همچنین اپلیکیشن‌های مبتنی بر معماری میکروسرویس را دارا است (برای آشنایی بیشتر با مفهوم میکروسرویس، به مقالهٔ میکروسرویس (Microservice) چیست؟ مراجعه نمایید).

پییو ویژگی ‌اصلی‌اش که دولوپرهایش بر آن تأکید دارند، سادگی آن باشد. کِرنِل این فریمورک بسیار کم حجم است -در حدود 140k- و تلاش دولوپرها بر این است که آن را تا حد ممکن ساده و کم‌حجم نگاه دارند و قابلیت‌های جدید را به ماژول‌های Pippo و همچنین ماژول‌ها و منابع به اصطلاح Third Party اضافه کنند.

کاربران برای استفاده از این فریمورک، ملزم به استفاده از یک Template Engine خاص یا یک وب‌سرور جاسازی شده (Embedded Web Server) نیستند بلکه گزینه‌های متعدد دیگری در اختیار خواهند داشت (برای کسب اطلاعات بیشتر در این زمینه، می‌توانید به قسمت Templates و Server  در سایت رسمی Pippo مراجعه کنید). به عنوان نمونه کد این فریمورک داریم:

public class BasicApplication extends Application {

    @Override
    protected void onInit() {
        // send 'Hello World' as response
        GET("/", routeContext -> routeContext.send("Hello World"));

        // send a file as response
        GET("/file", routeContext -> routeContext.send(new File("pom.xml")));

        // send a json as response
        GET("/json", routeContext -> {
            Contact contact = createContact();
            routeContext.json().send(contact);
        });

        // send xml as response
        GET("/xml", routeContext -> {
            Contact contact = createContact();
            routeContext.xml().send(contact);
        });

        // send an object and negotiate the Response content-type, default to XML
        GET("/negotiate", routeContext -> {
            Contact contact = createContact();
            routeContext.xml().negotiateContentType().send(contact);
        });

        // send a template with name "hello" as response
        GET("/template", routeContext -> {
            routeContext.setLocal("greeting", "Hello"); // template's model/context
            routeContext.render("hello");
        });
    }

    private Contact createContact() {
        return new Contact()
            .setId(12345)
            .setName("John")
            .setPhone("0733434435")
            .setAddress("Sunflower Street, No. 6");
    }

}

از آنجایی که این فریمورک زبان برنامه‌نویسی جاوا حافظهٔ کمی را اشغال می‌کند، برای دیوایس‌های به اصطلاح اِمبِدِد که از آن جمله می‌توان به رسپبری‌پای اشاره کرد مناسب است. در پایان، بایستی به این نکته هم اشاره‌ای داشته باشیم که فریمورک Pippo بر پایهٔ Java Servlet 3.0 طراحی شده و نیازمند به نصب Java 8 روی سیستم‌تان است.