Skip to content

Introduction

Welcome to AppJars Documentation, the comprehensive guide to understanding and integrating the AppJars project into your software application development. With AppJars you can avoid implementing and maintaining by yourself common use cases like users management, lowering significantly the lines of code of your application and also the investment on analyzing, designing, testing and maintaining these parts of your system.

About AppJars

AppJars are full stack functional modules designed to simplify the application development, by targeting specific and common technical and functional features that are always implemented in a similar way. By using AppJars, the code of the application can be simplified and the maintenance efforts can be focused on pure application related logic, instead of concepts that aren't related to the business goals.

Goal & Scope

The primary goal is to simplify the development of large applications, by lowering the amount of code needed to implement recurring and usual functional and technical requirements in enterprise applications.

This allows focusing on specific features of each application and assure that usual functionalities are implemented in the best possible way, avoiding increasing the maintenance cost of the system.

AppJars is tailored to address a wide range of development scenarios. Whether you are working on a small-scale application or a complex enterprise project, AppJars modules provide a scalable solution. The scope of AppJars extends across diverse domains, including user management, activity logging, dynamic menus, process orchestration, internationalization, email management, configuration, and more.

Features

The following are common features that can be identified across all AppJars:

  • Pluggability: One of the main goals when designing the idea, is that it should be easy to add them to existing applications. Of course applications can have different architectural styles and design principles, but in most of cases integrating them is just adding the dependencies and some configurations.
  • Customization: Each of the layers offer classes that can be extended to slightly modify the behavior so it can play well with the rest of the system. When persisting the data, the DAOs could trigger updates in other tables, more validations can be added to the Service layer, extra buttons can be added to the views, etc.
  • Independency: AppJars are independent of each other, you don't need to use all them at the same time on your application, only the ones that you need. It is even possible to use only a part of the provided functionalities.
  • Fine grained modularization: To allow a clean architectural style and to be included in applications that have a strict layer isolation, separated contracts are provided so unwanted transitive dependencies are imposed to other layers. As an example, if you want to invoke a appjar's service method, you can depend on the contracts (interfaces) modules that don't force you to compile against a transitive dependency to data access layer or presentation frameworks. The same applies to the rest of the layers.
  • Internationalization: All AppJars are built in such a way that can be translated to support other languages. they're built with Vaadin I18n support with a set of keys that can be translated by adding additional messages.properties files.

In the following sections, the architecture, technologies employed, and the integration and configuration process are explained, providing you with a comprehensive understanding of how AppJars can elevate your development experience.