Kiss Java-based, Open Source, Full Stack, Web Development Framework


Build secure, robust, and fast web-based business applications that are quicker and easier to learn, develop, support, and enhance.

About


The Kiss framework differs from the many other development tools in the following ways:

  1. Kiss supports an entire application; meaning both the front-end and the back-end.
  2. Kiss is oriented towards business applications or portals rather than general public informational sites.
  3. Kiss emphasizes the KISS (Keep It Simple...) approach. To that end, learning and using Kiss is far simpler than other environments.
Kiss comes as an entire running and deployable web application that can be modified (while running) to meet your application requirements. Kiss includes the back-end and front-end already configured, communicating, and running. Development occurs on a running system without re-builds or re-deploys. Development time is drastically reduced due to the micro-service architecture and advanced development facilities. When ready, deployment occurs by dropping a single file in place.

KISS is written in pure Java, HTML, and JavaScript. Your front-end code is written in HTML/CSS/JavaScript. Your back-end code is written in any combination of Java, Groovy, or Common Lisp.

Please note that although Kiss has various UI components and has some small overlap with other UI frameworks, Kiss is not focused as a UI framework and isn't attempting to compete against UI frameworks such as React, Angular, and the like. In fact, Kiss may be used, and has been used, in conjunction with those frameworks. Kiss provides a broader solution to the issues revolving around the development of business web applications.

Features


  1. Kiss is open source, can be freely used commercially, and can be downloaded at https://github.com/blakemcbride/Kiss
  2. Kiss is built on Java, HTML, JavaScript, and SQL.
  3. The front-end and back-end communicate over stateless REST services.
  4. The back-end is architected with micro-services. This means back-end services can be added, changed, or deleted on a running system!
  5. Front-end code can also be added, changed, or deleted on a running system without rebuilds or reboots.
  6. The back-end processes REST calls asynchronously with a defined set of worker threads to provide support for heavy loads and high throughput.
  7. Browser cache control - maximize the value of browser cache while being able to change code. The user never has to clear their cache!
  8. HTML components - create your own HTML tags that encapsulate any amount of code into a simple HTML tag that can be re-used anywhere.
  9. Kiss comes with a rich set of business oriented custom components with a consistent interface.
  10. Back-end code can be written in Groovy, Java, or Lisp. Other languages will follow.
  11. Adding a web service amounts to dropping a single, simple file in place. No wiring or configuration. Web services are just a few lines of code.
  12. Front-end code is written in HTML, CSS, and JavaScript. No complex build process.
  13. User authentication is built-in.
  14. Powerful SQL access library supporting PostgreSQL, Microsoft SQL Server, Oracle, MySQL, and SQLite.
  15. Alternate front-end frameworks such as React or AngularJS can be used in place of the Kiss front-end.
  16. Applications can be served with Linux, BSD, Microsoft, or Solaris servers.
  17. Use in conjunction with Electron to build desktop applications that are portable between Windows, Mac, and Linux.
  18. With all of these features, Kiss offers an unprecedented RAD environment offering shortened development time, reduced support time, efficient processing, and heavy load support.

Samples


Sample Back-end Web Service

For example, the following file is located in the services directory.

class MyWebService {
    void myWebMethod(JSONObject injson, JSONObject outjson) {
        int num1 = injson.getInt("num1");
        int num2 = injson.getInt("num2");
        outjson.put("result", num1 + num2);
    }
}
Note that web services can be added, changed, or deleted on a running system. There is no registration or configuration needed! Changes take effect immediatly. No need to bring the server down, rebuild, redeploy, and reboot the server. This very significantly speeds development time. You can also make these changes on a running production system without disrupting existing users. Lastly, all services are fully compiled by the system and run at full speed.

Sample Front-end Use Of Web Service

The following front-end example utilizes the web service defined above.

const data = {
    num1: 22,
    num2: 11
};
const res = await Server.call("services/MyWebService", "myWebMethod", data);
if (res._Success) {
    let result = res.result;
    //...
}
Full authentication and error handling occurs automatically. (The user must have logged in first.)

HTML Component Usage

The KISS front-end comes with a variety of custom built-in HTML tags to make application development easier such as check-box, date-input, drop-down, file-upload, list-box, numeric-input, picture, popup, push-button, radio-button, text-input, time-input. Many of these are enhanced versions of what HTML already supplies while others are additions to standard HTML functionality. All are designed to be full-featured business standard controls.

Developers may use any of the supplied tags and may also define their own. Custom tags may encapsulate any amount of HTML, CSS, and JavaScript code and may be re-used in any number of places.

Kiss also supports tag-less components that can encapsulate arbitrary functionality including pop-up windows.

Database API

Kiss comes with a powerful library for accessing SQL databases. This API provides the following benefits:

Supported Databases

Other databases are easy to add.

Single Page Application

Kiss applications are single page applications in the sense that there is a single <body> tag and all other pages essentially get placed into that tag on a single page. However, Kiss is not a single page application in the sense that the entire application gets loaded with a single GET request. This doesn't make sense for a large business application in which many hundreds of pages may exist. Kiss lazy-loads pages as they are used, and except for browser cache, eliminates them once another page is loaded.

Training Videos and Articles


The following introductory videos are available:

An article about KISS is available at The KISS Web Development Framework
Another article about KISS is available at Developing REST Microservices Simply

Connect


Source code is at https://github.com/blakemcbride/Kiss

Public discussion and support is available at https://github.com/blakemcbride/Kiss/discussions

Issue tracking is at https://github.com/blakemcbride/Kiss/issues

Commercial support is available. Contact us via email at kissweb.org@gmail.com