Environments in software development
Published: 2021-11-01 17:13:14

in software development you will encounter different environments. these are the highlevel view of these different environments.

Basically there are 3 software environments.these are 
1. Runtime Environment
2. Build Environment
3. Development Environment

so now we will see them in detail.

##1. Runtime environment

- everything you need to execute a program, but no tool to change it. it act as small operating systems and provide all the functionality** necessary for a program to run. This includes interfaces to physical parts of the hardware, user interactions, and software components.
- it is an environment which supports the execution of a program/process. for a program to execute , it requires runtime environment and it provide your program the services like ( resident memory(RAM), resources such as file, socket and others, environment variables, proper initialization  and proper disposal).
- it's an environment for the program , like the physical environment is for us.
- so programs/process cannot sustain without runtime environment.
- can be a virtual machines

> in fact, almost all programming languages use one of three kinds of runtime environment, whose essential structure does not depend on the specific details of the target machine.
> 

These three kind of runtime environmenta are

1. fully static environment( example FORTRAN77)
2. stack-based environment(C,C++)
3. Fully dynamic environment(LISP)

###Well-known examples of runtime environments

- java runtime environment(JRE) for java,
- Common language runtime(CLI) for .NET framework,
- Browser and Nodejs for JavaScript.
- ActionScript Application(ASAP); offer building block for flash developers.
- crystal Space : include a 3D engine and used for game development.
- Cygwin : a runtime environment for Linux applications that allows them to run on other os(windows, mac and others..)
- .Net framework : for windows .NET applications
- WINE : RTE for windows application to run on other operating systems , such as linux and macOS.
- Deno : a runtime environment for js and typescript

##2. Build environement

- everything you need to compile a code .
- it refers to how the application is assembled for deployment.
- deployment may be a library or an executable.
- tools are the compilers, scripting tools, code generators , host servers , build automation , test suits and other source repositories .
- datas are : scripts , libraries , configuration files , language definition's and metadata's.
- simalar to development environment but is more about consistent builds, deployement and testing and less about debugging


##3. Development environments

- A development environment is the collection of processes and tools that are used to develop the source code for a program or software product.
- helps the developers to develop the application or product using a set of processes and programming tools.
- everything you need to write a code , built it and test it.
- examples are code editors like VS code, Eclipse, Netbeans

There are various software development environments that a software has to pass through before it can be used.

The three common software development environments are:

### Development(coding) environment

In this environment, the developers code and build the application. The coding is done on a local machine, and the access is restricted to the developers themselves. Once the developer(s) are confident about a version, they release it to the beta environment for testing purposes.

### Beta testing environment

This environment is used to test the application. The software is granted access to a limited number of users who test it for some time. Developers can find out whether the code is working correctly as intended or not. Users also provide feedback regarding the application functionality, bugs, or any other features that can be added to the application.

### Production environment

This is the final stage where the application is ready to be used publicly. Only the most thoroughly tested code and application version makes it to the production environment stage. The production environment can also act as a platform where the final code is stored until the application URL is made public.