
just as if Web applications were traditional, platform–
dependent desktop applications. Therefore, applica-
tions developed using our architecture can communi-
cate with both legacy and modern servers.
3.2 Historical data acquisition
In section 3.1 we mentioned real–time data acquisi-
tion. However, another key feature in our hybrid ar-
chitecture is the capacity to acquire historical data. To
achieve this, evidently, it is necessary to have access to
servers that store and provide this information. With
historical data, systems can provide reports or trend
graphs that illustrate the state of monitored processes.
Java’s extensibility makes it possible to access
Web services, perform SQL queries or communicate
with OPC or PI (OSIsoft) servers. In Java, this infor-
mation can be obtained through a dedicated acquisi-
tion thread or can be triggered on–demand by users as
they interact with the user interface.
3.3 Multiprocessing
In the context of Web systems, there is no hard
multiprocessing concept such as the one needed for
mission–critical monitoring applications. Instead,
there are several techniques that are used to simulate
multiprocessing through asynchronous data requests
via AJAX or PHP. One example is a new technology
known as “Web Workers” [7], which enables the ex-
ecution of small pieces of JavaScript code in parallel.
However, there is a limitation on the maximum num-
ber of Web Workers that can be executed simultane-
ously. In addition, web workers do not have access to
the DOM (Document Object Model).
Java offers a very useful and powerful alterna-
tive, which is widely used in high-level languages:
multithreading. With multithreading, it is possible
to create several threads that can be used for differ-
ent purposes. For example, developers can create one
thread for each connection to legacy systems. In this
way, if an application needs to connect to 20 differ-
ent devices, it is possible to create 20 threads. In this
scenario, each thread would execute at its own pace,
asynchronously acquiring data at different frequen-
cies. This information can be stored in shared memory
areas which can be accessed by the Web browser and
then presented to users. Threads can also be used to
perform complex computations without affecting sys-
tem responsiveness. Threads allow developers to take
efficient advantage of hardware resources, especially
with new multi–core processors, which allow execut-
ing each thread on a different core.
4 Developing a Mission-critical Sys-
tem with our Hybrid Architecture
Our hybrid architecture is not just a conceptual de-
sign. Instead, it is intended as a specification of var-
ious layers of software that enable developers to de-
sign and develop mission–critical Web–based systems
in an easy and reliable manner. Therefore, developers
do not need to start from scratch or dig deep in techni-
cal aspects to achieve their objective. In addition, our
architecture is flexible because all modules that make
up the Business, Data Exchange and Presentation lay-
ers are fully customizable.
4.1 Bussiness Layer
Our architecture’s business layer is in charge of the
logic to acquire and process the information that is
displayed to users. This layer is comprised of data
acquisition, data processing and information storage
modules. This information is used by the upper lay-
ers. In this layer, events are generated in order to ex-
change information with other layers. It consists of a
software core with structured Java objects and classes
that can execute in the browser’s internal memory.
It also implements interoperability between Java and
JavaScript by enabling access to objects in memory
and making it possible to invoke Java methods from
JavaScript and vice versa. In this layer, processes op-
erate asynchronously to handle connections, data ac-
quisition and data processing. This prevents applica-
tions from becoming unresponsive or blocked when
data are being acquired or processed. With this ar-
chitecture, data are available in memory and can be
retrieved immediately thus, achieving excellent per-
formance.
Figure 3 shows a block diagram that illustrates the
operation and structure of this layer.
4.2 Data Exchange Layer
The Data Exchange Layer is used as a link between
the objects stored in the Business Layer and the Pre-
sentation Layer. Its main task is to serve as an inter-
mediary by using basic exchange objects, which are
based on JSON (JavaScript Object Notation) in order
to achieve a high degree of compatibility and reliabil-
ity in data transport.
This layer also processes requests triggered by
events in the Business Layer or in the Presentation
Layer through data serialization. Data are encapsu-
lated in text strings that are exchanged between ob-
jects. Next, this information is deserialized and in-
stantiated as an object that can be used in the Presen-
tation Layer. Since these objects are set up using an
EQUATIONS
DOI: 10.37394/232021.2022.2.1