Below we present the basic methods by which IT system components can be developed. IT systems and some of their components differ from traditional stand-alone applications in that, we expect them to function as a service with almost constant availability.
However, in order for an application/software to function as a service, it immediately raises the following questions:
Although this is the oldest method, but it is still used in many ways today. For example, in embedded systems, or in containers.
We compile the source code for a specific CPU and Operating System combination: e.g. (x64/Ubuntu). It is possible to fine-tune the code to be run, to optimize its speed or size. The requirement to run the components continuously as a service, requires advanced software developer knowledge.
There is no built-in resource management
There is no widely used dependency management
the life cycle of the application (starting, stopping, monitoring) is managed by the operating system
Special areas of application
Challenges
It has been widespread since the introduction of the Java VM (1997-). It defines a virtual processor and its associated so-called Byte Code, a set of instructions with its own machine code. It does not translate the source code directly to the CPU, but to the virtual machine's own byte code. Then VM converts the byte code to the machine code of the host system, when running. A virtual machine is usually a native application written in c/c++, which usually works on several platforms.
Most famous Virtual Machine implementations
Just in Time (JIT) translation
Memory management
Resource management
RELEASE/DEBUG mode compilation method is not distinguished
The life cycle of the application (starting, stopping, monitoring) is managed by the virtual machine
Development of components it is ideal for developing collaborative components, as applications running on the VM can easily communicate with each other using TCP/IP network objects can be easily used and modified with the help of self-analysis. (Java reflection)
Application server development method. It was originally released by Sun Microsystems in 1999 under the name J2EE (Java 2 Enterprise Edition). The standard specification is currently at version 8 (2017): https://javaee.github.io/javaee-spec/
The entire life cycle of applications is managed by middleware.
Web Container : managing the life cycle of web components.
Servlet: a Java class responsible for standard processing and responses to HTTP requests. Originally responsible for creating dynamic Web content. The generated content is HTML , but more recently JSON. It also includes URL mapping. It was first presented as a concept in 1996!
public class MyServlet extends HttpServlet{ public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter pw=res.getWriter(); pw.println("<html><body>"); pw.println("Hello from servlet"); pw.println("</body></html>"); pw.close(); } }
In the first versions, metadata was managed with XML descriptors. In these, it was possible to specify how a class should behave: URL mapping, number of running instances, etc.
Service BUS: Service Oriented Architecture (SOA). It is based on loosely coupled components (services). Analogy of the BUS concept known in networks.
Main functions:
Advantages:
Disadvantages:
Known implementations:
Azure Service Bus, Microsoft Biztalk Server, Mule ESB, Oracle ESB, IBM Websphere ESB, JBOSS ESB