WFF

wffweb - Java framework to develop web applications

View sample projects on GitHub
Use latest version of wffweb to get better stability, performance and thread-safety.

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 secured ui (banking/financial products), mission critical ui development, business application, realtime application i.e. the applications which show realtime data in it, analytical applications, trading 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 almost thread safe but you have to handle thread safety while consuming this framework's classes. A lot of thread safety improvements are done in wffweb-3.0.1 or later.

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 (As of Java 10, it provides Application Class-Data Sharing to avoid this load 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.

In Java 10, it provides Application Class-Data Sharing which can be used to avoid this initial class loading time.

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 and 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.

Is there any way to generate formatted HTML, or by toHtmlString method?

No, the toHtmlString method returns the minified HTML. This framework doesn't provide any way to get formatted/pretty print HTML. There are third party java libraries available to format HTML.

Does this framework provide ready made widgets/web components?

No, it doesn't provide any ready made widgets/web components because style & element structure of widgets/web components will depend on a css file. It is independent of any CSS & JavaScript frameworks. That is the major advantage of webfirmframework, we can use any CSS/JavaScript frameworks along with this framework. You have to build your own widgets/web components with your preferred CSS framework.

What are the changes need to be done to migrate wffweb-2.x.x app to wffweb-3.x.x?

wffweb-3.x.x requires minimum of Java 8. Upgrade your project jdk/jre to Java 8 or later and recompile the project. No code changes are required for wffweb-3.0.0 but later version might need some minor code changes. Eg: in wffweb-3.0.1 or later the Style.getCssProperties method returns an unmodifiable collection of CssProperty.

What technical knowledge should I have to get started with this framework?

Basic JavaScript knowledge and an expertise in Java programming language. It's nice to have good knowledge in HTML and CSS but if your ui is designed by a UI/UX designer then you can convert that HTML templates using this tool.


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

Contact tech-support@webfirmframework.com for more info.

Subscribe on youtube for technical videos