# Framework - what exactly is?

There are a lot of fundamental conceptions to find out while learn programming. Specially, at the beginning of learning process. 😄

Many of them are simple and easy to understand, but on the other hand we have some terms which are quite complicated and complex. 😧

**Framework** term is definitely one, which could be **more difficult to understand at the beginning.** 🏁


<img src="https://media2.giphy.com/media/SiKqz6IPADLF6IvONF/giphy.gif?cid=ecf05e47zsqd9y67hp2kajctzjeup8gecsui5wua9n5ztwil&rid=giphy.gif&ct=g" style="margin: 0 auto; justify-content: center;" />

## Definition ✅


> A software which is structure of the application and helps build application in easier and faster way.



 It provides a basic backbone of application, so there is no reason to start building an app from scratch. 

There are a lot of frameworks and each of them is suited to concrete programming language and unique purpose - for example:

- Java -> Spring, Hibernate
- JavaScript -> React, Angular
- Python -> Django, Flask

## Real-life example

Imagine that you want to publish a book. 📖 <br><br>


You can do it yourself...

![PUBLISHING BOOK BY YOURSELF](https://cdn.hashnode.com/res/hashnode/image/upload/v1642891379154/ryz6UTBg_.png)



or outsource this job to the publishing house. You will only decide about your book properties and of course be responsible for deliver content for book. But what is important:

> You will treat whole process of publishing a book as a black box which has input(your preferences, content and book properties) and output(ready-to-sell books). 



![PUBLISHING BOOK BY PUBLISHING HOUSE](https://cdn.hashnode.com/res/hashnode/image/upload/v1642893730862/FGkaZkdgP.png)


Referring it to programming situation, you can see that if you want to create an app you can outsource a lot of tasks to a variety of ready libraries which does the work for you. The collection of this kind of libraries is exactly framework.


![FRAMEWORK EXPLANATION](https://cdn.hashnode.com/res/hashnode/image/upload/v1642893746902/UEumqE9fU.png)



## Library vs framework


Library and framework are completely other things, but in some way they are connected.<br>

### Library

<img src="https://media4.giphy.com/media/l0HlAgJTVaAPHEGdy/giphy.gif?cid=ecf05e47d7tebzyuzqmb8cpc4mofd6v90wegr45l2z0ugdv1&rid=giphy.gif&ct=g" style="margin: 0 auto; justify-content: center;" />


Basic difference is fact, that library is some kind of collection of ready-to-use methods and classes which could be really helpful, when we want to solve the problem solved many times by other developers. 

<br>
There is a great question which could be answer for other question, why libraries are necessary?

>Why reinvent the wheel? Specially when it is invented and patented.


### Framework

<img src="https://media1.giphy.com/media/OqBITvbrblVyeG5w0l/giphy.gif" style="margin: 0 auto; justify-content: center;" />

Although, framework is some kind of abstraction, which simplify process of creating applications. Framework provide a standard way to build and deploy apps. It is collection of libraries and backbone of application.


## Examples

### Spring

<img src="https://spring.io/images/OG-Spring.png" style="margin: 0 auto; justify-content: center;" />

It will be separate article about **Spring Framework and Spring Boot**, but there I will tell a few words about that.


>Spring Framework is a Java's framework.
Spring Framework is definitely the most popular Java framework, so knowledge of it is crucial for everyone who want to become a Java Developer. 
<br>
The most of job offers for Java Software Engineers has Spring knowledge as requirement. 

### Angular

![1-Q7DY9kt8B2rRz-A-RPw_w.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1642895034210/r8-9DhDwv.png)

>Angular is a platform and framework for building single-page client applications using HTML and TypeScript. Angular is written in TypeScript. It implements core and optional functionality as a set of TypeScript libraries that you import into your applications.

In short, Angular is a TypeScript written framework and it is used for front-end part of web application, that is interface of user.

## Conclusion


As you can see framework is a complex term which has a few meanings, depending on the language/environment etc. 
<br>
I hope that I brought you closer framework term. 

<br>Don't forget to follow my blog to don't miss the recent posts. 
<br>
Next will be about **Spring Framework. ** 👋



