wffweb - Java framework to develop web applications

View sample projects on GitHub

Is it possible to create single page application with wffweb?

Yes, it's mainly intended for single page application development.

When should I choose wffweb for ui development?

If you are developing single page application, highly secure ui, mission critical ui development, business application, realtime application i.e. the applications which show realtime data in it, analytical applications etc..

Is wffweb suitable for a normal web development?

Yes, but for a normal website (which doesn't have a user login) it's better to use any other MVC based framework.

Is there any platform dependency for this framework?

No, it's purely built by Java.

Is wffweb thread-safe?

Yes, it's thread safe.

Is it possible to use external js, css files along with wffweb?

Yes, that's how an amazing ui can be built.

Do I have to use any specific application server to use wffweb?

No, wffweb has no dependency on any servers. You can configure wffweb for any server. wffweb can also be used with embedded servers like embedded jetty, embedded tomcat etc..

Which is the stable final version of wffweb?

We haven't officially announced a stable final version yet as we have different stages of testing to be passed but the latest version is safe to use.

Is there any web ui feature that will be impossible to do with this framework?

There is nothing impossible with this framework. However, file upload and file download options should be handled in some other way (other framework/servlet) because currently it doesn't support multiplexing.

Is there any known demerits with this framework?

To gain more readability and maintenance flexibility we use anonymous class style coding in Java but sometimes it is referred to as an anti-design pattern. It has an initial first time performance impact if the tag hierarchy is heavy but it's only once in the whole life time. And also this kind of development makes a method very lengthy unless it's properly managed/modularized. But if you don't like anonymous class style coding you can follow normal object creation coding style. It's always recommended to develop reusable components which will increase the productivity & maintenance comfortability. You can also maintain separate package (.jar) for the custom components (.class files).

Kotlin solves the issue of Java anonymous class, using apply function block we can get the same readability as Java anonymous class style coding without generating anonymous class. Checkout this code from Kotlin wffweb sample project.

How wffweb is different from MVC framework?

In an MVC framework, the application is categorized in to three, i.e. Model, View and Controller. We have to write code for each part separately and need to connect each other. In wffweb, it introduces a new architecture for application called M-LT-P i.e. Model Logical-template Push. We have to write code for the Model and Logical-template only the Push is handled by the framework itself. Any changes in the server side is updated with the browser by the framework, the developer doesn't have to write any webservice, server calls etc.. he can write coding just like a client side application, eg:- swing application.

How wffweb is different from a swing application?

In a swing application, we use ready made components/listeners like Button, TextField, ActionListener etc.. But wffweb is a web framework so we build html tags and attributes which can make a ui, for eg:- to show a text field we use new Input(null, new Type(Type.TEXT)). You can build your own components to reuse it. The events in wffweb is handled by event attributes like OnClick, OnChange etc.. which can be used to handle event either at server side, client side or both sides.

Is it possible to generate an extremely large & complicated HTML (used for reporting purpose) with toHtmlString/toOutputStream methods?

Yes, but they consume memory while generating HTML string (if the tag hierarchy contains a deep nested tags) so if there is no enough memory available while generate the HTML string then it might throw an error. In such case, there are alternative methods introduced in the latest version, they are toBigHtmlString and toBigOutputStream. The toBigHtmlString and toBigOutputStream methods will never throw any error but may be slower than toHtmlString/toOutputStream methods.

Login to WFF Hub to discuss more! It is built by wffweb-2.x.x.

Contact for more info.

Subscribe on youtube for technical videos