1) What is an API? Application programming interfaces hide complexity from developers, extend systems to partners, organize code, and make components reusable
They take an overwhelming amount of complexity and define a relatively simple set of interactions that you can utilize instead of doing it all yourself. In any software project, youâre likely using tens if not hundreds of APIs directly, and each of those APIs relies on other APIs and so on.
2) In the article the author compares Java API to Twitter API. What is the main difference between these two APIs?
Java API - A library of software components available âout of the boxâ to anyone who has installed the Java Development Kit. These components implement common tasks and generally increase productivity because programmers donât have to start from scratch every time.
Twitter API - The Twitter API is a web-based JSON API that allows developers to programmatically interact with Twitter data. Unlike the Java API, which is included in the Java Development Kit, the Twitter API is a web-based API. It must be accessed by making requests over the Internet to services that Twitter hosts. With a web-based API such as Twitterâs, your application sends an HTTP request, just like a web browser does. But instead of the response being delivered as a webpage, for human understanding, itâs returned in a format that applications can easily parse.
3) The section in the article about abstraction is important, try to understand it and write down an abstraction from your daily life.
Abstraction is just a way of organizing the complexity of a system so that complicated actions can be handled in a simple way.
I monitor network devices, systems and various components, for a service provider in both internet data and tele-communications. There are thousands of combined computer network devices, systems and components, whereby at any given time of day, an event and/or incident may occur, causing impaired, partially down to fully-down network, for various devices, systems or components.
I am responsible for checking on each and every network devicesâ health and operational state, and proactively supporting the companies private network.
Example:
Servers [CPU, Memory, Hard Drive, Power Supply]
Network Devices Router / Switch (I /O interfaces, CPU, Memory, Power Supply).
Imagine, having thousands on devices, systems and components to be responsible for and having to generate a report, by the second, minute, hour, daily, monthly, quarterly and yearly? This would take 24/7 hours to manually accomplish, and still, I may not be able to perform all of my responsibilities, with efficiency and as per my job requirement.
Implementing API as abstraction layer:
I can install network monitoring software with integrated APIs to perform details for end-to-end monitoring, reporting and automatically generate alert notifications by email or text; whenever an event / or incident may occur.
Example: Critical device, system or component becomes impaired. These can then be categorize by low, medium, high incident level, for escalations purposes (Break /Fix).
Low - errors detected by system at the component level & still operations
Medium - partially impacted one or more critical component, such as a redundant power supply ( 1 of 2 failed) system partially operational as long
High - Critical Failure where the device, system, component failed
With API Abstraction - Network monitoring tools help take away the mundane, and complexity, for manually monitoring and reporting on thousands of network devices, systems their components; abstract away complicity and instead handled by API abstraction layer.