# செயலி நிரலாக்க இடைமுகம்


**செயலி நிரலாக்க இடைமுகம்** அல்லது **பயன்பாட்டு நிரல்படுத்தல் இடைமுகம்** (application programming interface - **API** ) என்பது ஒரு மென்பொருள் மற்றொரு மென்பொருளுடன் தொடர்பு கொள்வதற்காக நிறுவப்படும் ஓர் இடைமுகமாகும். எளிமையாக கூறுவதானால், இது மனிதர்களுக்கும், கணினிகளுக்கும் இடையில் தொடர்பு கொள்ள உதவும் ஒரு பயனர் இடைமுகத்தைப் போன்றது.  

API ஆனது பயன்பாடுகளாலும், நூலகங்களாலும் (libraries) மற்றும் இயங்குதளங்களாலும் நிறுவப்படுகின்றன. இது வாடிக்கையாளரும், API-ன் நிறுவுனரும் தொடர்பு கொள்வதற்கு பயன்படுத்தும் வழக்கமான செயல்முறைகள், தரவு அமைப்புகள், ஆப்ஜெக்ட் பிரிவுகள் மற்றும் நெறிமுறைகளுக்கான தொழில்நுட்பக்குறிப்புகளை உள்ளடக்கி இருக்கும்.  

## கொள்கை

ஓர் API ஆனது ஒரு மென்பொருள் அமைப்பின் உட்கூறுகளால் (components of software system) பயன்படுத்தப்படும் பல செயல்முறைகளுடன் (set of functions) தொடர்புகொள்வதற்கான ஓர் இடைமுகத்தை வரையறுக்கிறது.  

ஓர் API-யினால் வரையறுக்கப்பட்ட செயல்பாடுகளை அளிக்கும் மென்பொருளானது, ஏபிஐ-ன் *நிறுவுதல்* (implementation) என்று கூறப்படும்.  

ஒரு API இவ்வாறு இருக்கலாம்:  

- பொதுவானதாக இருக்கக்கூடும். ஒரு நிரல்மொழியில் இருக்கும் நூலகங்களில் (libraries) தொகுக்கப்பட்ட API-ன் முழு தொகுப்பாக இருக்கலாம் (எடுத்துக்காட்டு, C++ அல்லது Java API-ல் இருக்கும் தரமுறைப்பட்ட வார்ப்புரு நூலகம்)
- பிரத்யேகமானதாக இருக்கலாம். கூகுள் வரைப்பட சேவையின் API அல்லது XML வலை சேவைகளுக்கான JAVA API போன்ற ஒரு குறிப்பிட்ட பிரச்சினையைக் கவனிப்பதற்காக இருக்கலாம்.
- மொழி சார்ந்ததாக இருக்கலாம்.
- மொழி-சாராமல் இருக்கலாம். பல்வேறு நிரல்மொழிகளின் மூலமாக அதை பயன்படுத்தக் கூடிய வகையில் எழுதப்பட்டிருக்கும்.

எடுத்துக்காட்டாக, பயனர்களுக்கு உள்ளூர் உணவகங்களைப் பார்வையிட அனுமதிக்கும் ஒரு வலைத்தளமானது, கூகுள் நிலவரைப்படங்களில் இருந்து எடுக்கப்பட்ட வரைபடங்களைப் பயன்படுத்தக்கூடும். ஏனென்றால் கூகுள் மேப்ஸ் கொண்டிருக்கும் API, அதை அனுமதிக்கிறது. இருப்பினும், அதில் போதிய கட்டுப்பாடுகளையும் அது அதற்குள்ளாகவே கொண்டிருக்கிறது.  

"API" என்பது ஒரு நிறுவனத்தால் அளிக்கப்பட்ட ஒரு முழு இடைமுகத்தையோ, ஒரு தனிப்பட்ட செயல்பாட்டையோ, அல்லது பல்வேறு API-களின் ஒரு தொகுப்பையோ கூட குறிப்பதற்கு பயன்படுத்தப்படக்கூடும். இவ்வாறு, அர்த்தப்படுத்தப்படும் விதம் பொதுவாக தகவல் பரிமாற்றம் செய்யும் அந்த நபரால் அல்லது ஆவணத்தால் தீர்மானிக்கப்படுகிறது.  

## சில விளக்கங்கள்
யூனிக்ஸ் சிஸ்டங்களில் C மொழிக்கான <code>math.h</code> என்ற இன்க்லூட் கோப்பு (include file), கணக்கியல் செயல்முறைக்கான C மொழி நூலகத்தில் (பொதுவாக இது <code>libm</code> என்று அழைக்கப்படுகிறது) இருக்கும் கணிதவியல் செயல்பாடுகளின் வரையறைகளைக் கொண்டிருக்கும். இது வாசிக்கக்கூடியதாகவே இருக்கும். அதன் விபரங்களை உதவி (man) பக்கங்களில் காணலாம்.  

ஜாவா மொழி API ஆனது <code>Serializable</code> என்ற இடைமுகத்தைக் கொண்டிருக்கிறது. இது எப்போதும் வரிசையாக இருக்கக்கூடிய வகையில் implementationகளைக் கொண்டிருக்கும் பிரிவை எதிர்பார்க்கும் ஓர் இடைமுகமாகும். இதை அணுகுவதற்கான எவ்வித பொதுவான அனுமதிகளும் தேவைப்படுவதில்லை, மாறாக class அனுமதிகள் தேவைப்படுகின்றன.  

ஆப்ஜெக்ட் சார்ந்த மொழிகளில், ஏபிஐ தொடர்ந்து library வடிவத்தில் வினியோகிக்கப்படுகிறது.  

ஆவணமுறை பொதுவாக சில எளிய உதவி பக்கங்களின் வடிவத்தில் அளிக்கப்படுவதில்லை. ஆனால் பெரும்பாலும் ஆவணங்கள் ஓர் உயர்தரமான மற்றும் சிக்கலான தொகுப்பாகவே வழங்கப்படுகின்றன.  

JAVA மொழி library ஓர் API தொகுப்பை உள்ளடக்கி இருக்கும். இந்த தொகுப்பு புதிய JAVA நிரல்களை உருவாக்க அபிவிருத்தியாளர்களால் (developers) பயன்படுத்தப்பட்ட JDK வடிவத்தில் அளிக்கப்பட்டிருக்கும். இந்த JDK ஆனது, Javadoc குறிப்புரையில் API-ன் ஆவணமுறையை உள்ளடக்கி இருக்கும்.  

## தரவுகளைப் பகிர்ந்து கொள்வதில் ஏபிஐ-களின் பயன்
ஒரு குறிப்பிட்ட குழுவுடன் பயன்பாட்டு தரவுகளையும், கருத்துக்களையும் பகிர்ந்து கொள்வதற்கான ஒரு கட்டற்ற கட்டமைப்பை உருவாக்க API-கள் உதவுகின்றன. இந்த வகையில், ஓரிடத்தில் உருவாக்கப்பட்ட கருத்தை மாற்றிமாற்றி பதிப்பிக்க முடியும். அத்தோடு இணையத்தில் பல இடங்களில் இருந்து அவற்றை இற்றைப்படுத்தவும் முடியும்.  

1. ஃப்ளிக்கர் (flickr) மற்றும் போட்டோபக்கெட் போன்ற தளங்களில் இருந்து புகைப்படங்களை ஃபேஸ்புக் மற்றும் மைஸ்பேஸ் போன்ற சமூக வலையமைப்பு தளங்களில் பகிர்ந்து கொள்ள முடியும்.  

2. தரவுகளை உள்ளடக்கி அளிக்க முடியும்.  

3. தரவுகளை மாற்றிமாற்றி பிரசுரிக்க முடியும். எடுத்துக்காட்டாக, இட்வீட்டரால் (Twitter) அளிக்கப்பட்ட பதிலிடுகைகளை ஃபேஸ்புக் கணக்கிற்கு மாற்றும் வகையில் இட்வீட்டர் மற்றும் ஃபேஸ்புக்கின் API-களில் வசதி இருக்கிறது.  

4. வீடியோ தரவுகளை தங்களின் தளங்களில் சேர்க்க முடியும். எடுத்துக்காட்டாக, எவரொருவரும் தமது வலைத்தளத்தில் யூ-டியூப்பின் ஒரு வீடியோ தரவை உள்ளடக்கி கொள்ளலாம்.  

5. பயனர் தகவல்களை வலை சமூகத்தில் இருந்து வெளிப்புற பயன்பாடுகளோடு பகிர்ந்து கொள்ளலாம். இதற்கான சிறந்த எடுத்துக்காட்டுகளில் ஒன்று தான் ஃபேஸ்புக் பயன்பாட்டு பணித்தளம்..  

## வெளியீட்டு கொள்கைகள்
API வெளியீட்டு கொள்கைகள் பொதுவாக பின்வருவனவற்றை உள்ளடக்கி இருக்கும்:  

- நிறுவனங்கள் தங்களின் நிறுவனத்திற்கு வெளியில் இருக்கும் எவருக்கும் API தகவல்களை வெளியிடக்கூடாது.
- நிறுவனங்கள் அவற்றின் API-கள் பற்றிய தகவல்களைப் பொதுமக்களிடம் இருந்து பாதுகாக்கும். எடுத்துக்காட்டாக, சோனி அதன் உரிமம் பெற்ற பிளேஸ்டேஷன் அபிவிருத்தியாளர்களுக்கு மட்டும் கிடைக்கும் வகையில் அதன் உத்தியோகப்பூர்வமான பிளேஸ்டேஷன் 2 API-ஐ பயன்படுத்தியது. இது, பிளேஸ்டேஷன் 2 விளையாட்டுக்களின் நிரல்களை எழுதியவர்கள் யார் என்பதைக் கட்டுப்பாட்டில் வைத்திருக்க சோனி நிறுவனத்திற்கு உதவியது.
- சில நிறுவனங்கள் தங்களின் API-கள் இலவசமாக கிடைக்கும்படியும் செய்யும். எடுத்துக்காட்டாக, மைக்ரோஃசாப்ட் நிறுவனம் அதன் மைக்ரோஃசாப்ட் விண்டோஸ் API-யை பொதுப்படையாக வெளியிட்டது. அதேபோல, ஆப்பிள் அதன் API-களான கார்பன் மற்றும் கோக்கோ ஆகியவற்றை வெளியிடுகிறது. இதன் மூலமாக அவர்களின் இயங்குத்தளங்களில் செயல்படும் வேறுபல பயன்பாட்டு மென்பொருட்களை வேறெந்த நிரலாளரும் எழுத முடியும்.

## மொழி இணைப்புகளும், இடைமுக பிறப்பிகளும்
ஒன்றுக்கு மேற்பட்ட உயர்-மட்ட நிரல்படுத்தல் மொழியால் (high level programming language) பயன்படுத்தப்படும் வகையில் அமைக்கப்பட்டிருக்கும் API-கள், பெரும்பாலும் தானாகவே வசதிகளைப் பொருத்தி வைக்கும் வசதிகளைக் கொண்டிருக்கும். இந்த வசதிகள் அவற்றின் மொழியில் மிகவும் இயல்பாக இருக்கும். இதுவே மொழி இணைப்புகள் எனப்படுகின்றன.  

தொகுக்கும் போது API-களுடன் மொழிகளை இணைக்கும் இடைமுக உருவாக்கி கருவிகள் (Interface development tools) சிலவை கீழே கொடுக்கப்பட்டுள்ளன.  

- SWIG என்பது பல மொழிகளுக்காக இடைமுகங்களை உருவாக்குகிறது.
- F2PY: இஃபோர்ட்டானில் (Forton) இருந்து பைத்தான் இடைமுகத்திற்கான உருவாக்கி.
- XPCOM - இது மொஜில்லாவில் இருந்து வந்த ஒரு பன்முக பணித்தள கூறுபாட்டின் மாதிரியாகும்.

## மேலும் பார்க்க
- API எழுதி
- Application Binary Interface (ABI)
- ஆவண ஆப்ஜெக்ட் மாதிரி (DOM)
- 3D கிராபிக்ஸ் API-களின் பட்டியல்
- கட்டற்ற இடைமுக சேவை வரையறைகள் (OSID)
- பணித்தளம் சார்ந்த வலைத்தளம்
- மென்பொருள் அபிவிருத்தி தொகுப்பு (SDK)
- வலைச்சேவை

## குறிப்புதவிகள்
<references></references>