జావాలో పనిచేస్తున్నప్పుడు, మేము తరచుగా పెద్ద సంఖ్యలో తరగతులను ఉపయోగిస్తాము. ఈ జావా క్లాసులు మెమరీలో ఒకేసారి లోడ్ చేయబడవు, బదులుగా, అవి అప్లికేషన్ ద్వారా అవసరమైనప్పుడు లోడ్ అవుతాయి. ఇక్కడే జావా క్లాస్లోడర్లు చిత్రంలోకి వస్తాయి. కాబట్టి ఈ వ్యాసంలో, జావాలోని క్లాస్లోడర్ను ఉదాహరణలతో పాటు ఎలా ఉపయోగించాలో చర్చిస్తాను.
ఈ వ్యాసంలో ఈ క్రింది విషయాలు కవర్ చేయబడతాయి:
- క్లాస్లోడర్ అంటే ఏమిటి?
- క్లాస్లోడర్ రకాలు
- క్లాస్లోడర్ యొక్క సూత్రాలు
- క్లాస్లోడర్ యొక్క పద్ధతులు
- అనుకూల తరగతి లోడర్
ప్రారంభిద్దాం!
జావాలో క్లాస్లోడర్ అంటే ఏమిటి?
జావాలోని క్లాస్లాడర్ను జావా రన్టైమ్ ఎన్విరాన్మెంట్ అంటారు, అప్లికేషన్ ద్వారా అవసరమైనప్పుడు తరగతులను డైనమిక్గా లోడ్ చేస్తుంది. జావా వర్చువల్ మెషిన్ . క్లాస్లోడర్లు జావా రన్టైమ్ ఎన్విరాన్మెంట్లో ఒక భాగం కాబట్టి, జావా వర్చువల్ మెషీన్కు అంతర్లీన ఫైల్లు మరియు ఫైల్స్ సిస్టమ్స్ గురించి ఎటువంటి ఆలోచన ఉండదు.
ఇప్పుడు, జావాలోని వివిధ రకాల అంతర్నిర్మిత క్లాస్లోడర్లను అర్థం చేసుకుందాం.
SQL ఉదాహరణలో తేదీ డేటాటైప్
జావాలో క్లాస్లోడర్ రకాలు
జావాలోని వివిధ రకాల క్లాస్లోడర్లు ఈ క్రింది విధంగా ఉన్నాయి:
వాటిలో ప్రతి ఒక్కటి ఒక్కొక్కటిగా చర్చిద్దాం.
పొడిగింపు క్లాస్లోడర్
పేరు సూచించినట్లుగా ఎక్స్టెన్షన్ క్లాస్లాడర్ కోర్ జావా క్లాస్ల పొడిగింపులను లోడ్ చేస్తుంది జెడికె పొడిగింపు లైబ్రరీ. ఇది బూట్స్ట్రాప్ క్లాస్లోడర్ యొక్క పిల్లవాడు మరియు JRE / lib / text డైరెక్టరీ లేదా java.ext.dirs సిస్టమ్ ప్రాపర్టీలో పేర్కొన్న ఏదైనా ఇతర డైరెక్టరీ నుండి పొడిగింపులను లోడ్ చేస్తుంది.
అప్లికేషన్ లేదా సిస్టమ్ క్లాస్లోడర్
అప్లికేషన్ లేదా సిస్టమ్ క్లాస్లోడర్ ఎక్స్టెన్షన్ క్లాస్లోడర్ యొక్క పిల్లవాడు. ఈ రకమైన క్లాస్లోడర్ -cp కమాండ్-లైన్ ఎంపికలో కనిపించే అన్ని అప్లికేషన్ స్థాయి తరగతులను లోడ్ చేస్తుంది లేదా క్లాస్పాత్ ఎన్విరాన్మెంట్ వేరియబుల్.
బూట్స్ట్రాప్ క్లాస్లోడర్
మనందరికీ అది తెలుసు జావా క్లాసులు యొక్క ఉదాహరణ ద్వారా లోడ్ చేయబడతాయి java.lang.ClassLoade. క్లాస్లోడర్లు తరగతులు కాబట్టి, జెడికె అంతర్గత తరగతులను లోడ్ చేయాల్సిన బాధ్యత బూట్స్ట్రాప్ క్లాస్లోడర్. బూట్స్ట్రాప్ క్లాస్లోడర్ అనేది మెషిన్ కోడ్, ఇది JVM పిలిచినప్పుడు ఆపరేషన్ ప్రారంభించి rt.jar నుండి తరగతులను లోడ్ చేస్తుంది. కాబట్టి, బూట్స్ట్రాప్ క్లాస్లోడర్ సేవలకు పేరెంట్ క్లాస్లోడర్ లేదని మీరు అర్థం చేసుకోవచ్చు మరియు దీనిని ప్రిమోర్డియల్ క్లాస్లోడర్ అని పిలుస్తారు.
గమనిక: బూట్స్ట్రాప్ యొక్క ప్రాధాన్యత పొడిగింపు కంటే ఎక్కువ, మరియు పొడిగింపు క్లాస్లోడర్కు ఇచ్చిన ప్రాధాన్యత అప్లికేషన్ క్లాస్లోడర్ కంటే ఎక్కువ. దిగువ చిత్రాన్ని చూడండి:
ఈ వ్యాసంలో తరువాత, క్లాస్లోడర్ పనిచేసే సూత్రాలను అర్థం చేసుకుందాం.
జావాలో క్లాస్లోడర్ సూత్రాలు
జావా క్లాస్లోడర్ పనిచేసే నియమాల సమితి క్రింది మూడు సూత్రాలు:
వాటిలో ప్రతి ఒక్కటి అర్థం చేసుకుందాం.
ప్రత్యేక ఆస్తి
ఈ ఆస్తి తరగతుల పునరావృతం లేదని నిర్ధారిస్తుంది మరియు అన్ని తరగతులు ప్రత్యేకమైనవి. ప్రత్యేకత ఆస్తి కూడా తరగతుల పేరెంట్ చేత లోడ్ చేయబడిందని నిర్ధారిస్తుంది క్లాస్లోడర్ పిల్లల క్లాస్లోడర్ చేత లోడ్ చేయబడదు. ఒక దృష్టాంతంలో, మాతృ క్లాస్లాడర్ తరగతిని కనుగొనలేకపోతే, ప్రస్తుత ఉదాహరణ దానిని స్వయంగా చేయడానికి ప్రయత్నిస్తుంది.
ప్రతినిధి మోడల్
ప్రతినిధి మోడల్ ఇచ్చిన కార్యకలాపాల సమితి ఆధారంగా జావాలో క్లాస్లోడర్ పనిచేస్తుంది. కాబట్టి, తరగతి లేదా వనరును కనుగొనడానికి ఒక అభ్యర్థన ఏర్పడినప్పుడల్లా, క్లాస్లోడర్ ఉదాహరణ తరగతి లేదా వనరు యొక్క శోధనను మాతృ క్లాస్లోడర్కు అప్పగిస్తుంది.
క్లాస్లోడర్ పనిచేసే కార్యకలాపాల సమితి క్రింది విధంగా ఉంటుంది:
- జావా వర్చువల్ మెషీన్ క్లాస్ లో లోడ్ అయినదా అని తనిఖీ చేస్తుంది.
- తరగతి లోడ్ అయిన సందర్భంలో జెవిఎం తరగతి అమలుతో ముందుకు వెళుతుంది, కానీ తరగతి లోడ్ చేయని సందర్భంలోఆ నిర్దిష్ట తరగతిని లోడ్ చేయమని JVM జావా క్లాస్లోడర్ ఉప వ్యవస్థను అడుగుతుంది. ఆ తరువాత, క్లాస్లోడర్ ఉప వ్యవస్థ అప్లికేషన్ క్లాస్లోడర్కు నియంత్రణను ఇస్తుంది.
- అప్లికేషన్ క్లాస్లోడర్ ఆ అభ్యర్థనను ఎక్స్టెన్షన్ క్లాస్లోడర్కు అప్పగిస్తుంది, ఆ తర్వాత అభ్యర్థనను బూట్స్ట్రాప్ క్లాస్లోడర్కు పంపుతుంది.
- ఇప్పుడు, బూట్స్ట్రాప్ క్లాస్లోడర్ లో శోధిస్తుందితరగతి అందుబాటులో ఉందో లేదో తనిఖీ చేయడానికి బూట్స్ట్రాప్ క్లాస్పాత్. తరగతి అందుబాటులో ఉంటే, అది లోడ్ అవుతుంది, లేకపోతే అభ్యర్థన మళ్ళీ ఎక్స్టెన్షన్ క్లాస్లోడర్కు పంపబడుతుంది.
- ఎక్స్టెన్షన్ క్లాస్పాదర్లో ఎక్స్టెన్షన్ క్లాస్లోడర్ క్లాస్ కోసం తనిఖీ చేస్తుంది.తరగతి అందుబాటులో ఉంటే, అది లోడ్ అవుతుంది, లేకపోతే అభ్యర్థన మళ్లీ అప్లికేషన్ క్లాస్లోడర్కు పంపబడుతుంది.
- చివరగా, అప్లికేషన్ క్లాస్ లాడర్ అప్లికేషన్ క్లాస్ పాత్ లో క్లాస్ కోసం శోధిస్తుంది.తరగతి అందుబాటులో ఉంటే, అప్పుడు లోడ్ అవుతుంది, లేకపోతే మీరు క్లాస్నోట్ఫౌండ్ఎక్సెప్షన్ మినహాయింపును చూస్తారు.
క్రింద ఉన్న చిత్రాన్ని చూడండి.
దృశ్యమానత సూత్రం
ఈ సూత్రం ప్రకారం, పిల్లల తరగతులు దాని మాతృ క్లాస్లోడర్లు లోడ్ చేసిన తరగతులకు కనిపిస్తాయి, కానీ దీనికి విరుద్ధంగా నిజం కాదు. కాబట్టి, అప్లికేషన్ క్లాస్లోడర్ లోడ్ చేసిన తరగతులకు ఎక్స్టెన్షన్ మరియు బూట్స్ట్రాప్ క్లాస్లోడర్ లోడ్ చేసిన తరగతులకు దృశ్యమానత ఉంటుంది.
ఉదాహరణకు, మనకు రెండు తరగతులు ఉంటే: A & B, క్లాస్ A అప్లికేషన్ క్లాస్లోడర్ చేత లోడ్ చేయబడిందని మరియు క్లాస్ B ను ఎక్స్టెన్షన్స్ క్లాస్లోడర్ లోడ్ చేస్తుందని అనుకోండి. ఇక్కడ, అప్లికేషన్ క్లాస్లోడర్ లోడ్ చేసిన అన్ని తరగతులకు A మరియు B తరగతులు కనిపిస్తాయి, కాని క్లాస్ B ఎక్స్టెన్షన్ క్లాస్లోడర్ లోడ్ చేసిన తరగతులకు మాత్రమే కనిపిస్తుంది.
అలాగే, మీరు బూట్స్ట్రాప్ క్లాస్లోడర్ ఉపయోగించి ఈ తరగతులను లోడ్ చేయడానికి ప్రయత్నిస్తే, మీరు చూస్తారు java.lang.ClassNotFoundException . మినహాయింపు.
సరే, ఇప్పుడు మీకు క్లాస్లోడర్ల రకాలు మరియు దాని వెనుక ఉన్న సూత్రాలు తెలుసు, కొన్ని ముఖ్యమైన పద్ధతులను పరిశీలిద్దాంనుండి java.lang.ClassLoader తరగతి.
జావాలో క్లాస్లోడర్ యొక్క పద్ధతులు
కొన్ని అవసరం క్లాస్లోడర్ యొక్క ఈ క్రింది విధంగా ఉన్నాయి:
- లోడ్ క్లాస్ (స్ట్రింగ్ పేరు, బూలియన్ పరిష్కారం)
- ineClass ()
- findClass (స్ట్రింగ్ పేరు)
- Class.forName (స్ట్రింగ్ పేరు, బూలియన్ ప్రారంభించడం, క్లాస్లోడర్ లోడర్)
- getParent ()
- getResource ()
లోడ్ క్లాస్ (స్ట్రింగ్ పేరు, బూలియన్ పరిష్కారం)
ఈ పద్ధతి క్లాస్లోడర్ యొక్క ఎంట్రీ పాయింట్ మరియు JVM చే సూచించబడిన తరగతిని లోడ్ చేయడానికి ఉపయోగించబడుతుంది. ఇది పేరు తీసుకుంటుంది పరామితిగా. బూలియన్ విలువను ఒప్పుకు సెట్ చేయడం ద్వారా తరగతి సూచనలను పరిష్కరించడానికి JVM లోడ్ క్లాస్ () పద్ధతిని అమలు చేస్తుంది. తరగతి ఉందో లేదో మనం గుర్తించాల్సిన అవసరం ఉంటే మాత్రమే, బూలియన్ పరామితి తప్పుకు సెట్ చేయబడుతుంది.
విండోస్ 10 లో php ని ఇన్స్టాల్ చేస్తోంది
ప్రకటన:
పబ్లిక్ క్లాస్ లోడ్ క్లాస్ (స్ట్రింగ్ పేరు, బూలియన్ పరిష్కారం) క్లాస్నోట్ఫౌండ్ఎక్సెప్షన్ విసురుతుంది {
ineClass ()
తరగతి యొక్క ఉదాహరణగా బైట్ల శ్రేణిని నిర్వచించడానికి ఉపయోగించే తుది పద్ధతి. ఒకవేళ తరగతి చెల్లకపోతే, అది క్లాస్ఫార్మాట్ ఎర్రర్ను విసురుతుంది.
ప్రకటన:
రక్షిత ఫైనల్ క్లాస్ డెఫినిక్క్లాస్ (స్ట్రింగ్ పేరు, బైట్ [] బి, ఇంట్ ఆఫ్, ఇంటెంట్ లెన్) క్లాస్ఫార్మాట్ ఎర్రర్ను విసురు
findClass (స్ట్రింగ్ పేరు)
పేర్కొన్న తరగతిని కనుగొనడానికి ఫైండ్క్లాస్ పద్ధతి ఉపయోగించబడుతుంది. కాబట్టి, ఇది పరామితిగా పూర్తి అర్హత గల పేరుతో తరగతిని కనుగొంటుంది కాని తరగతిని లోడ్ చేయదు. పేరెంట్ క్లాస్లోడర్ అభ్యర్థించిన తరగతిని కనుగొనలేకపోతే లోడ్ క్లాస్ () పద్ధతి ఈ పద్ధతిని అమలు చేస్తుంది. అలాగే, క్లాస్లోడర్ యొక్క తల్లిదండ్రులు ఎవరూ తరగతిని కనుగొనకపోతే డిఫాల్ట్ అమలు a విసురుతుంది క్లాస్నోట్ఫౌండ్ఎక్సెప్షన్.
ప్రకటన:
రక్షిత క్లాస్ ఫైండ్క్లాస్ (స్ట్రింగ్ పేరు) క్లాస్నోట్ఫౌండ్ఎక్సెప్షన్ను విసురుతుంది
Class.forName (స్ట్రింగ్ పేరు, బూలియన్ ప్రారంభించడం, క్లాస్లోడర్ లోడర్)
తరగతిని లోడ్ చేయడానికి మరియు ప్రారంభించడానికి ఈ పద్ధతి ఉపయోగించబడుతుంది. ఇది క్లాస్లోడర్లలో దేనినైనా ఎన్నుకోవటానికి మరియు క్లాస్లోడర్ పరామితిని NULL గా ఉంచడానికి ఒక ఎంపికను ఇస్తుంది, ఆపై స్వయంచాలకంగా బూట్స్ట్రాప్ క్లాస్లోడర్ ఉపయోగించబడుతుంది.
ప్రకటన:
పబ్లిక్ స్టాటిక్ క్లాస్ ఫర్ నేమ్ (స్ట్రింగ్ పేరు, బూలియన్ ప్రారంభించడం, క్లాస్లోడర్ లోడర్) క్లాస్నోట్ఫౌండ్ఎక్సెప్షన్ను విసురుతుంది
getParent ()
GetParent పద్ధతి ప్రతినిధి బృందం కోసం మాతృ క్లాస్లోడర్ను తిరిగి ఇవ్వడానికి ఉపయోగించబడుతుంది.
ప్రకటన:
పబ్లిక్ ఫైనల్ క్లాస్లోడర్ getParent ()
getResource ()
పేరు సూచించినట్లుగా, getResource () పద్ధతి ఇచ్చిన పేరుతో వనరును కనుగొనడానికి ప్రయత్నించింది. ఇది ప్రారంభంలో వనరు కోసం మాతృ క్లాస్లోడర్కు అభ్యర్థనను అప్పగిస్తుంది. ఒకవేళ పేరెంట్ శూన్యంగా ఉంటే, అప్పుడు JVM లో నిర్మించిన క్లాస్లోడర్ యొక్క మార్గం శోధించబడుతుంది. ఇప్పుడు, ఇది విఫలమైతే, వనరును కనుగొనటానికి పద్ధతి ఫైండ్ రిసోర్స్ (స్ట్రింగ్) ను ప్రేరేపిస్తుంది, ఇక్కడ రిసోర్స్ పేరు సంపూర్ణ లేదా సాపేక్ష క్లాస్పాత్ కావచ్చు ఇన్పుట్గా పేర్కొనబడుతుంది. అప్పుడు, వనరును చదవడానికి ఇది ఒక URL వస్తువును తిరిగి ఇస్తుంది లేదా వనరును తిరిగి ఇవ్వడానికి వనరులకు తగిన అధికారాలు లేకపోతే లేదా కనుగొనబడకపోతే శూన్య విలువను అందిస్తుంది.
ప్రకటన:
పబ్లిక్ URL getResource (స్ట్రింగ్ పేరు)
తరువాత, జావాలోని క్లాస్లోడర్పై ఈ వ్యాసంలో, కస్టమ్ క్లాస్లోడర్ను అర్థం చేసుకుందాం.
జావాలో కస్టమ్ క్లాస్లోడర్
ఫైల్ సిస్టమ్లో ఇప్పటికే ఫైల్లు ఉన్న చాలా సందర్భాలను అంతర్నిర్మిత క్లాస్లోడర్లు చూసుకుంటారు, కాని మీరు స్థానిక హార్డ్ డ్రైవ్ నుండి తరగతులను లోడ్ చేయాలనుకుంటే, మీరు కస్టమ్ క్లాస్లోడర్లను ఉపయోగించుకోవాలి.
అనుకూల తరగతి లోడర్ను సృష్టించండి
అనుకూల క్లాస్లోడర్ను సృష్టించడానికి, మీరు విస్తరించాలి క్లాస్లోడర్ తరగతి మరియు భర్తీ చేయండి findClass () పద్ధతి:
ఉదాహరణ: డిఫాల్ట్ క్లాస్లోడర్ను విస్తరించి, పేర్కొన్న ఫైల్ నుండి బైట్ శ్రేణిని లోడ్ చేసే కస్టమ్ క్లాస్లోడర్ను సృష్టిద్దాం. దిగువ కోడ్ను చూడండి.
ప్యాకేజీ ఎడ్యూరెకా దిగుమతి java.io.ByteArrayOutputStream దిగుమతి java.io.File దిగుమతి java.io.IOException దిగుమతి java.io.InputStream పబ్లిక్ క్లాస్ నమూనా క్లాస్లోడర్ను విస్తరించింది public public పబ్లిక్ క్లాస్ ఫైండ్క్లాస్ (స్ట్రింగ్ శాంపిల్ నేమ్) క్లాస్నోట్ఫౌండ్క్లాస్ = కస్టమ్ [బైట్] (నమూనా పేరు) రిటర్న్ డెఫినిక్క్లాస్ (నమూనా పేరు, బి, 0, బి.లెంగ్త్)} ప్రైవేట్ బైట్ [] కస్టమ్లాడ్క్లాస్ఫ్రోమ్ఫైల్ (స్ట్రింగ్ డెమోఫైల్ నేమ్) {ఇన్పుట్స్ట్రీమ్ ఇన్స్ట్రీమ్ = గెట్క్లాస్ (). గెట్క్లాస్లాడర్ (). సెపరేటర్ చార్) + '.క్లాస్') బైట్ [] బఫర్ బైట్అర్రేఆట్పుట్ స్ట్రీమ్ bStream = కొత్త బైట్అర్రేఆట్పుట్ స్ట్రీమ్ () పూర్ణాంకం విలువ = 0 ప్రయత్నించండి {అయితే ((నెక్స్ట్వాల్యూ = ఇన్ స్ట్రీమ్.రెడ్ ())! = -1) {bStream.write (nextValue)}} క్యాచ్ (IOException ఇ) {e.printStackTrace ()} బఫర్ = bStream.toByteArray () రిటర్న్ బఫర్}}
దీనితో, మేము జావాలోని క్లాస్లోడర్పై ఈ కథనాన్ని ముగించాము. జావాలో క్లాస్లోడర్లు, దాని పద్ధతులు, వివిధ రకాల క్లాస్లోడర్లు మొదలైనవి ఏమిటో మీరు అర్థం చేసుకున్నారని నేను ఆశిస్తున్నాను.
“జావాలోని క్లాస్లోడర్” లో మీరు ఈ కథనాన్ని కనుగొంటే, చూడండి ప్రపంచవ్యాప్తంగా 250,000 కంటే ఎక్కువ సంతృప్తికరమైన అభ్యాసకుల నెట్వర్క్తో విశ్వసనీయ ఆన్లైన్ లెర్నింగ్ సంస్థ ఎడురేకా చేత. మీ ప్రయాణంలో అడుగడుగునా మీకు సహాయం చేయడానికి మేము ఇక్కడ ఉన్నాము, ఈ జావా ఇంటర్వ్యూ ప్రశ్నలతో పాటుగా, మేము ఒక పాఠ్యాంశంతో ముందుకు వచ్చాము, ఇది విద్యార్థులు మరియు నిపుణుల కోసం రూపొందించబడింది జావా డెవలపర్.
మాకు ప్రశ్న ఉందా? దయచేసి ఈ “జావాలోని క్లాస్లోడర్” యొక్క వ్యాఖ్యల విభాగంలో పేర్కొనండి ' మరియు మేము వీలైనంత త్వరగా మిమ్మల్ని సంప్రదిస్తాము.