Software is usually designed and created (aka coded/written/programmed) in integrated development environments (IDE) like Eclipse , IntelliJ and Microsoft Visual Studio that can simplify the process and compile the software (if applicable). As noted in a different section, software is usually created on top of existing software and the application programming interface (API) that the underlying software provides like GTK+ , JavaBeans or Swing . Libraries (APIs) can be categorized by their purpose. For instance, the Spring Framework is used for implementing enterprise applications , the Windows Forms library is used for designing graphical user interface (GUI) applications like Microsoft Word , and Windows Communication Foundation is used for designing web services . When a program is designed, it relies upon the API. For instance, if a user is designing a Microsoft Windows desktop application, he or she might use the .NET Windows Forms library to design the desktop application and call its APIs like () and ()  to close or open the application, and write the additional operations him/herself that it needs to have. Without these APIs, the programmer needs to write these APIs him/herself. Companies like Oracle and Microsoft provide their own APIs so that many applications are written using their software libraries that usually have numerous APIs in them.