నేమ్‌స్పేస్ (Namespace)

31 
అక్టోబర్ 
2011 

ఆ సుబ్బారావుని నన్ను కలవమని చెప్పు...
ఏ సుబ్బారావండి?
అదేరా ఆ శివాలయం పక్కన ఉంటాడు కదా... వాడు.
అలాగేనండి.
అలాగే ఆ చెరువు పక్కన ఉంటాడే ఆ సుబ్బారావుని కూడా పిలవరా.
ఈ సారి బాగా చెప్పారు ఏ సుబ్బారావో... పిలుచుకొస్తానులెండి
* * *
పై సంభాషణ చూసారు కదా. ఒక ఊళ్ళో ఒకరి కన్నా ఎక్కువ మంది సుబ్బారావులు ఉంటే వాళ్ళను ఒంటి పేర్లతో గుర్తించడం ఎంత తలనొప్పో తెలిసిందికదా!
కాబట్టి వాళ్లను వాళ్ళ ఇంటి పేరుతోనో, ఉంటున్న చోటు పేరుతోనో, లేక ఇంకేదన్నా గుర్తించే విధంగా సంభోదిస్తుంటాం మనం.
* * *
ఇక సామాన్య శాస్త్రం నుండి సాంకేతికంలోకి వచ్చేద్దాం...
* * *
సాధారణంగా కంప్యూటర్ ప్రోగ్రాములలో మనం రాసే ప్రోగ్రాముని ఒక ప్యాకేజి లేదా నేమ్‌స్పేస్‌లో రాస్తుంటాం. అంటే మనం రాసే ప్రోగ్రాంకి ఒక విభిన్నతను ఆపాదిస్తున్నాం అన్నమాట.
ఇలా ఎందుకు చెయ్యాల్సొస్తుందో ఒకసారి చూద్దాం!
నేనొక ప్రోగ్రామ్ రాస్తున్నాను. నా సొంత ఫార్మేట్‌లో నా తేదీని ఉపయోగించుకోవాలనుకుంటున్నాను.  నేను నేరుగా Date అన్న క్లాసుని రాసెయ్యొచ్చు. కానీ జావా API ని చూస్తే అప్పటికే utilలో భాగంగా ఒక Date క్లాసు sqlలో భాగంగా ఒక  Date క్లాసు అందుబాటులో ఉన్నాయి.
కాబట్టి నేను రాస్తున్న క్లాసుకి ఒక విభిన్నత ఉంటే అర్థవంతంగా ఉంటుంది. నా క్లాసుని ఉపయోగించుకునే ఇతర ప్రోగ్రాములకి సరళీకృతమౌతుంది.
అందుకని నేను రాసే ప్రోగ్రాంని org.harivillu.tithi అన్న ప్యాకేజిలో Date అన్న క్లాసు పేరుతో రాస్తాను. అప్పుడు దానిని ఉపయోగించుకోవాలనుకునే వారికి ఆ క్లాసు ఎందుకో దాని ఉపయోగం ఏమిటో తెలుసుకుని తమ తమ ప్రోగ్రాములలో ఉపయోగించుకుంటారు.
ఇక్కడ నేమ్‌స్పేస్ (namespace)  (డాట్‌నెట్ మరియి ఎక్స్‌.ఎమ్‌.ఎల్) అన్నా ప్యాకేజీ (package in Java) అన్నా ఒకటే్.
కానీ కంప్యూటర్ భాషలలో ఉపయోగించే పేర్లను పక్కన పెడితే దీని భావం మాత్రం ఒక్కటే!
 * * *
ఇక ఉదాహరణలు చూద్దాం...
----జావాలో

package org.harivillu.java.date
class Date {
}

----సీ షార్ప్ (c#) లో
namespace org.harivillu.java.date{
    class Date{
    }
}
* * *
ఈ namespace అన్నది XMLలలో ముఖ్యంగా ఉపయోగయుక్తమైనది.
ఒక XML ఫైల్‌లో మనం అనేక నేమ్‌స్పేస్‌లను ఉపయోగిస్తాం.
దీని గురించి మరింత వివరంగా తర్వాత... :-)
మళ్ళీ కలుద్దాం.