display and data entry. A view component can have
input and output parameters.
The user interactivity is expressed by Events in
association with ViewContainers and View-
Components. The event triggers actions that can
affect the interface; the reaction is denoted by
InteractionFlows that connect the event to a View-
Container, aViewComponent, or an Action. An
input-output dependency between elements can be
specified through parameter bindings associated
with navigation flows or through data flows that
only describe data transfer.
3 IFML EXECUTABILITY
The Model Driven Approach has appeared due to
the constraints related to the productivity and time to
market. It prompted the developers to focus on
modeling in the hopes of improving productivity by
increasing the levels of abstraction, automation, and
analysis.
According to MDA (OMG, 2015), developers
start with modeling their systems, after that they
generate an executable code (C, C++, Ada, Java,
Forth, even VHDL) automatically from their models
or directly execute them in order to generate the
equivalent binary.
For executing models, we need to define a
complete model that outlines the structure and the
behavior required enough to be executed.
IFML executability defines the execution
semantics of IFML language. It is an informal
description of the kind of computation that an IFML
model specifies. It defines the computation of values
shown in the views.
With the execution semantics we can reach any
executable behaviors in a specific user interface
platform from the platform independent IFML.
A user interacts with an interactive application
within a view and produces events that affect the
software system which reacts by changing the status
of views and executing actions that signal another
event and that are what the execution semantics of
IFML. The action functioning is not described by the
semantics of IFML.
Triggering events is one of execution semantics
aspects. With IFML execution semantics the Event
computation is treated after an event came out, it can
update the state of the ViewContainers and the
ViewComponents.
In fact, there are two forms of triggering events
produced by a user: event in a ViewContainer that
affect another ViewContainer by a NavigationFlow
and an event that affect an element inside the same
ViewContainer.
Events have effects on the state of user
interfaces. A state of interface gather visible
Viewcontainers, active ViewComponents, and
events.
AViewContainer is visible when it respects its
visibility turn according to a composition model that
contains the entire ViewContainers of the system.
A ViewComponent is active if its ViewContainer
is visible and its input parameters values are
available.
4 BYTECODE INTERMEDIATE
REPRESENTATION
Bytecode is a small and easy-to-understand set of
instructions designed for efficient execution by a
software interpreter.
It is a binary code that is usually processed by a
program, and then converted by a virtual machine
into a specific machine instructions understood by a
computer's processor. It includes instructions that are
executable by a virtual machine interpreter.
Bytecode is compiling source code result of a
language that comes with a virtual machine for each
platform thing that make the source language
statements compiled only once and then run on any
platform.
The most famous language today that uses the
bytecode and virtual machine approach is Java.
The Java compiler translates the java source code
into bytecode (class files), which can be executed
after by the Java Virtual Machine interpreter.
A bytecode, result from a source code
compilation, can be run in java virtual machine even
if the source code is not written in java.
One of the advantages of Java bytecode is that it
can be recompiled at each particular system platform
by a just-in-time compiler. Usually, this will enable
the Java program to run faster.
It is an output programming language
implementation used as an intermediate
representation which is hardware and operating
system independent, thing that makes interpretation
easy and fast.
After a Java file is compiled, all references to
variables and methods are stored in the constant pool
table as a symbolic reference in the java class file.
The constant pool table contains many structures
of various string constants, class and interface
names, field names, and other constants.