బహుశా,
ప్రకృతిలో స్థూలదృష్టితో కూడిన ఈ కథనంలో, సమీకృత అభివృద్ధి సాధనాలను నిర్మించడానికి వేదికగా ఎక్లిప్స్ ఆర్కిటెక్చర్ యొక్క కొన్ని ప్రాథమికాలను చూడడానికి ప్రయత్నిస్తాము మరియు సాంకేతికత యొక్క పునాదిని ఏర్పరిచే ఎక్లిప్స్ భాగాల యొక్క ప్రారంభ ఆలోచనను అందిస్తాము. "కొత్త కాన్ఫిగరేటర్" 1C కోసం ప్లాట్ఫారమ్: ఎంటర్ప్రైజ్.
ఎక్లిప్స్ ఆర్కిటెక్చర్ పరిచయం
ఉదాహరణను ఉపయోగించి ఎక్లిప్స్ ఆర్కిటెక్చర్ యొక్క కొన్ని సాధారణ అంశాలను మొదట చూద్దాం
అన్నింటిలో మొదటిది, నిర్దిష్ట ప్రోగ్రామింగ్ భాషలకు మద్దతు ఇవ్వడానికి రూపొందించబడిన కార్యాచరణ నుండి భాష-స్వతంత్ర కార్యాచరణను వేరు చేయడం మరియు అనుబంధిత భాగాల నుండి UI-స్వతంత్ర "కోర్" భాగాలను వేరు చేయడంతో, ఎక్లిప్స్ చాలా స్పష్టమైన నిర్మాణ పొరల ద్వారా వర్గీకరించబడిందని గమనించాలి. సపోర్టింగ్ యూజర్ ఇంటర్ఫేస్తో.
అందువల్ల, ఎక్లిప్స్ ప్లాట్ఫారమ్ ఒక సాధారణ, భాష-స్వతంత్ర అవస్థాపనను నిర్వచిస్తుంది మరియు జావా డెవలప్మెంట్ సాధనాలు ఎక్లిప్స్కి పూర్తి ఫీచర్ చేసిన జావా IDEని జోడిస్తాయి. ఎక్లిప్స్ ప్లాట్ఫారమ్ మరియు JDT రెండూ అనేక భాగాలను కలిగి ఉంటాయి, వీటిలో ప్రతి ఒక్కటి UI-స్వతంత్ర "కోర్" లేదా UI లేయర్కి చెందినవి (మూర్తి 1).
అన్నం. 1. ఎక్లిప్స్ ప్లాట్ఫారమ్ మరియు JDT
ఎక్లిప్స్ ప్లాట్ఫారమ్ యొక్క ప్రధాన భాగాలను జాబితా చేద్దాం:
- రన్టైమ్ — ప్లగ్ఇన్ ఇన్ఫ్రాస్ట్రక్చర్ని నిర్వచిస్తుంది. ఎక్లిప్స్ మాడ్యులర్ ఆర్కిటెక్చర్ ద్వారా వర్గీకరించబడుతుంది. ముఖ్యంగా, ఎక్లిప్స్ అనేది "ఎక్స్టెన్షన్ పాయింట్స్" మరియు "ఎక్స్టెన్షన్స్" సమాహారం.
- కార్యస్థలం - ఒకటి లేదా అంతకంటే ఎక్కువ ప్రాజెక్ట్లను నిర్వహిస్తుంది. ప్రాజెక్ట్ ఫైల్ సిస్టమ్కు నేరుగా మ్యాప్ చేయబడిన ఫోల్డర్లు మరియు ఫైల్లను కలిగి ఉంటుంది.
- ప్రామాణిక విడ్జెట్ టూల్కిట్ (SWT) - ఆపరేటింగ్ సిస్టమ్తో అనుసంధానించబడిన ప్రాథమిక వినియోగదారు ఇంటర్ఫేస్ అంశాలను అందిస్తుంది.
- JFace — SWT పైన నిర్మించిన అనేక UI ఫ్రేమ్వర్క్లను అందిస్తుంది.
- పాడు — ఎక్లిప్స్ UI నమూనాను నిర్వచిస్తుంది: సంపాదకులు, వీక్షణలు, దృక్కోణాలు.
డీబగ్, కంపేర్, సెర్చ్ మరియు టీమ్తో సహా ఇంటిగ్రేటెడ్ డెవలప్మెంట్ టూల్స్ నిర్మించడానికి ఎక్లిప్స్ ప్లాట్ఫారమ్ అనేక ఇతర ఉపయోగకరమైన భాగాలను కూడా అందిస్తుంది అని చెప్పాలి. సోర్స్ కోడ్ యొక్క “స్మార్ట్ ఎడిటర్లను” రూపొందించడానికి ఆధారమైన JFace టెక్స్ట్ గురించి ప్రత్యేకంగా ప్రస్తావించాలి. దురదృష్టవశాత్తూ, ఈ భాగాలు, అలాగే UI లేయర్ కాంపోనెంట్ల యొక్క కర్సరీ పరిశీలన కూడా ఈ కథనం పరిధిలో సాధ్యం కాదు, కాబట్టి ఈ విభాగంలోని మిగిలిన భాగంలో మేము ప్రధాన “కోర్” భాగాల యొక్క అవలోకనానికి పరిమితం చేస్తాము. ఎక్లిప్స్ ప్లాట్ఫారమ్ మరియు JDT.
కోర్ రన్టైమ్
ఎక్లిప్స్ ప్లగ్ఇన్ ఇన్ఫ్రాస్ట్రక్చర్ ఆధారంగా ఉంటుంది
కోర్ వర్క్స్పేస్
ఎక్లిప్స్ ప్లాట్ఫారమ్ పైన నిర్మించబడిన దాదాపు ఏదైనా సమగ్ర అభివృద్ధి పర్యావరణం ఎక్లిప్స్ వర్క్స్పేస్తో పనిచేస్తుంది. ఇది సాధారణంగా IDEలో అభివృద్ధి చేయబడిన అప్లికేషన్ యొక్క సోర్స్ కోడ్ని కలిగి ఉండే కార్యస్థలం. వర్క్స్పేస్ నేరుగా ఫైల్ సిస్టమ్కు మ్యాప్ చేస్తుంది మరియు ఫోల్డర్లు మరియు ఫైల్లను కలిగి ఉన్న ప్రాజెక్ట్లను కలిగి ఉంటుంది. ఈ ప్రాజెక్ట్లు, ఫోల్డర్లు మరియు ఫైల్లను అంటారు వనరులు కార్యస్థలం. ఎక్లిప్స్లోని వర్క్స్పేస్ అమలు ఫైల్ సిస్టమ్కు సంబంధించి కాష్గా పనిచేస్తుంది, ఇది రిసోర్స్ ట్రీ యొక్క ప్రయాణాన్ని గణనీయంగా వేగవంతం చేయడం సాధ్యపడుతుంది. అదనంగా, కార్యస్థలం సహా అనేక అదనపు సేవలను అందిస్తుంది
కోర్ రిసోర్సెస్ కాంపోనెంట్ (org.eclipse.core.resources ప్లగ్ఇన్) వర్క్స్పేస్ మరియు దాని వనరులకు మద్దతు ఇవ్వడానికి బాధ్యత వహిస్తుంది. ప్రత్యేకించి, ఈ భాగం రూపంలో కార్యస్థలానికి ప్రోగ్రామాటిక్ యాక్సెస్ను అందిస్తుంది వనరుల నమూనాలు. ఈ మోడల్తో సమర్థవంతంగా పని చేయడానికి, క్లయింట్లకు రిసోర్స్కి లింక్ను ప్రదర్శించడానికి సులభమైన మార్గం అవసరం. ఈ సందర్భంలో, క్లయింట్ యాక్సెస్ నుండి మోడల్లోని వనరు యొక్క స్థితిని నేరుగా నిల్వ చేసే వస్తువును దాచడం మంచిది. లేకపోతే, ఉదాహరణకు, ఫైల్ను తొలగించే సందర్భంలో, క్లయింట్ తదుపరి సమస్యలతో మోడల్లో లేని వస్తువును పట్టుకోవడం కొనసాగించవచ్చు. ఎక్లిప్స్ అనే దానిని ఉపయోగించి ఈ సమస్యను పరిష్కరిస్తుంది నిర్వహించడానికి వనరు. హ్యాండిల్ కీలకంగా పనిచేస్తుంది (ఇది వర్క్స్పేస్లోని వనరుకు మార్గం మాత్రమే తెలుసు) మరియు అంతర్గత మోడల్ ఆబ్జెక్ట్కు ప్రాప్యతను పూర్తిగా నియంత్రిస్తుంది, ఇది వనరు యొక్క స్థితి గురించి సమాచారాన్ని నేరుగా నిల్వ చేస్తుంది. ఈ డిజైన్ నమూనా యొక్క వైవిధ్యం
అన్నం. మూర్తి 2 రిసోర్స్ మోడల్కు వర్తించే విధంగా హ్యాండిల్/బాడీ ఇడియమ్ను వివరిస్తుంది. IResource ఇంటర్ఫేస్ రిసోర్స్ యొక్క హ్యాండిల్ను సూచిస్తుంది మరియు ఈ ఇంటర్ఫేస్ను అమలు చేసే రిసోర్స్ క్లాస్ మరియు APIలు కానటువంటి శరీరాన్ని సూచించే ResourceInfo క్లాస్ వలె కాకుండా API. హ్యాండిల్కి వర్క్స్పేస్ రూట్కు సంబంధించి రిసోర్స్కి సంబంధించిన మార్గం మాత్రమే తెలుసునని మరియు రిసోర్స్ సమాచారానికి లింక్ను కలిగి ఉండదని మేము నొక్కిచెబుతున్నాము. వనరుల సమాచార వస్తువులు "మూలకం చెట్టు" అని పిలవబడేవి. ఈ డేటా నిర్మాణం మెమరీలో పూర్తిగా మెటీరియలైజ్ చేయబడింది. హ్యాండిల్కి సంబంధించిన రిసోర్స్ ఇన్ఫో ఇన్స్టెన్స్ను కనుగొనడానికి, ఆ హ్యాండిల్లో స్టోర్ చేయబడిన మార్గం ప్రకారం ఎలిమెంట్ ట్రీ ప్రయాణించబడుతుంది.
అన్నం. 2. IResource మరియు ResourceInfo
మేము తరువాత చూస్తాము, వనరుల నమూనా యొక్క ప్రాథమిక రూపకల్పన (మేము దీనిని హ్యాండిల్-ఆధారితంగా పిలుస్తాము) ఇతర మోడళ్లకు కూడా ఎక్లిప్స్లో ఉపయోగించబడుతుంది. ప్రస్తుతానికి, ఈ డిజైన్ యొక్క కొన్ని విలక్షణమైన లక్షణాలను జాబితా చేద్దాం:
- హ్యాండిల్ ఒక విలువైన వస్తువు. విలువ వస్తువులు మార్పులేని వస్తువులు, వీటి సమానత్వం గుర్తింపుపై ఆధారపడి ఉండదు. అటువంటి వస్తువులను హ్యాష్ చేసిన కంటైనర్లలో సురక్షితంగా కీగా ఉపయోగించవచ్చు. హ్యాండిల్ యొక్క బహుళ సందర్భాలు ఒకే వనరును సూచించగలవు. వాటిని పోల్చడానికి, మీరు సమాన (ఆబ్జెక్ట్) పద్ధతిని ఉపయోగించాలి.
- హ్యాండిల్ వనరు యొక్క ప్రవర్తనను నిర్వచిస్తుంది, కానీ వనరు యొక్క స్థితి గురించి సమాచారాన్ని కలిగి ఉండదు (ఇది నిల్వ చేసే ఏకైక డేటా "కీ", వనరుకు మార్గం).
- హ్యాండిల్ ఉనికిలో లేని వనరును సూచించవచ్చు (ఇంకా సృష్టించబడని వనరు లేదా ఇప్పటికే తొలగించబడిన వనరు). IResource.exists() పద్ధతిని ఉపయోగించి వనరు ఉనికిని తనిఖీ చేయవచ్చు.
- కొన్ని కార్యకలాపాలు హ్యాండిల్లోనే నిల్వ చేయబడిన సమాచారం ఆధారంగా అమలు చేయబడతాయి (హ్యాండిల్-మాత్రమే కార్యకలాపాలు అని పిలవబడేవి). ఉదాహరణలు IResource.getParent(), getFullPath(), మొదలైనవి. అటువంటి ఆపరేషన్ విజయవంతం కావడానికి వనరు అవసరం లేదు. వనరు ఉనికిలో లేనట్లయితే, విజయవంతం కావడానికి వనరు అవసరమయ్యే ఆపరేషన్లు కోర్ఎక్సెప్షన్ను విసురుతాయి.
వర్క్స్పేస్ రిసోర్స్ మార్పులను తెలియజేయడానికి ఎక్లిప్స్ సమర్థవంతమైన మెకానిజంను అందిస్తుంది (మూర్తి 3). ఎక్లిప్స్ IDE లోనే చేసిన చర్యల ఫలితంగా లేదా ఫైల్ సిస్టమ్తో సమకాలీకరణ ఫలితంగా వనరులు మారవచ్చు. రెండు సందర్భాల్లో, నోటిఫికేషన్లకు సభ్యత్వం పొందిన క్లయింట్లు "రిసోర్స్ డెల్టాస్" రూపంలో మార్పుల గురించి వివరణాత్మక సమాచారం అందించబడతాయి. డెల్టా వర్క్స్పేస్ రిసోర్స్ (ఉప-) చెట్టు యొక్క రెండు రాష్ట్రాల మధ్య మార్పులను వివరిస్తుంది మరియు దానిలో ప్రతి నోడ్ రిసోర్స్లో మార్పును వివరిస్తుంది మరియు పిల్లల వనరులకు మార్పులను వివరించే తదుపరి స్థాయిలో డెల్టాల జాబితాను కలిగి ఉంటుంది.
అన్నం. 3. IResourceChangeEvent మరియు IResourceDelta
వనరుల డెల్టాల ఆధారంగా నోటిఫికేషన్ విధానం క్రింది లక్షణాలను కలిగి ఉంది:
- ఒకే మార్పు మరియు అనేక మార్పులు ఒకే నిర్మాణాన్ని ఉపయోగించి వివరించబడ్డాయి, ఎందుకంటే డెల్టా పునరావృత కూర్పు సూత్రాన్ని ఉపయోగించి నిర్మించబడింది. సబ్స్క్రైబర్ క్లయింట్లు డెల్టాల చెట్టు ద్వారా రికర్సివ్ డిసెంట్ని ఉపయోగించి వనరుల మార్పు నోటిఫికేషన్లను ప్రాసెస్ చేయవచ్చు.
- డెల్టా దాని కదలిక మరియు/లేదా దానితో అనుబంధించబడిన "మార్కర్లలో" మార్పులతో సహా వనరుకు మార్పుల గురించి పూర్తి సమాచారాన్ని కలిగి ఉంటుంది (ఉదాహరణకు, సంకలన లోపాలు గుర్తులుగా సూచించబడతాయి).
- రిసోర్స్ రిఫరెన్స్లు హ్యాండిల్ ద్వారా తయారు చేయబడినందున, డెల్టా సహజంగా రిమోట్ రిసోర్స్ను సూచించగలదు.
మేము త్వరలో చూడబోతున్నట్లుగా, రిసోర్స్ మోడల్ మార్పు నోటిఫికేషన్ మెకానిజం రూపకల్పన యొక్క ప్రధాన భాగాలు ఇతర హ్యాండిల్-ఆధారిత నమూనాలకు కూడా సంబంధించినవి.
JDT కోర్
ఎక్లిప్స్ వర్క్స్పేస్ రిసోర్స్ మోడల్ అనేది ప్రాథమిక భాష-అజ్ఞేయ మోడల్. JDT కోర్ భాగం (plugin org.eclipse.jdt.core) జావా దృక్కోణం నుండి వర్క్స్పేస్ నిర్మాణాన్ని నావిగేట్ చేయడానికి మరియు విశ్లేషించడానికి APIని అందిస్తుంది, దీనిని "జావా మోడల్" అని పిలుస్తారు (జావా మోడల్) ఫోల్డర్లు మరియు ఫైల్ల పరంగా నిర్వచించబడిన అంతర్లీన వనరు మోడల్ APIకి విరుద్ధంగా ఈ API జావా మూలకాల పరంగా నిర్వచించబడింది. జావా మూలకం చెట్టు యొక్క ప్రధాన ఇంటర్ఫేస్లు అంజీర్లో చూపబడ్డాయి. 4.
అన్నం. 4. జావా మోడల్ ఎలిమెంట్స్
జావా మోడల్ రిసోర్స్ మోడల్ వలె అదే హ్యాండిల్/బాడీ ఇడియమ్ని ఉపయోగిస్తుంది (మూర్తి 5). IJavaElement అనేది హ్యాండిల్, మరియు JavaElementInfo శరీరం యొక్క పాత్రను పోషిస్తుంది. IJavaElement ఇంటర్ఫేస్ అన్ని జావా మూలకాలకు సాధారణమైన ప్రోటోకాల్ను నిర్వచిస్తుంది. దాని పద్ధతులు కొన్ని హ్యాండిల్-మాత్రమే: getElementName(), getParent(), etc. JavaElementInfo ఆబ్జెక్ట్ సంబంధిత మూలకం యొక్క స్థితిని నిల్వ చేస్తుంది: దాని నిర్మాణం మరియు గుణాలు.
అన్నం. 5. IJavaElement మరియు JavaElementInfo
జావా మోడల్కు రిసోర్స్ మోడల్తో పోలిస్తే బేసిక్ హ్యాండిల్/బాడీ డిజైన్ అమలులో కొన్ని తేడాలు ఉన్నాయి. పైన పేర్కొన్న విధంగా, రిసోర్స్ మోడల్లో, మూలకం ట్రీ, దీని నోడ్లు వనరుల సమాచార వస్తువులు, పూర్తిగా మెమరీలో ఉంటాయి. కానీ జావా మోడల్ రిసోర్స్ ట్రీ కంటే చాలా పెద్ద సంఖ్యలో మూలకాలను కలిగి ఉంటుంది, ఎందుకంటే ఇది .java మరియు .క్లాస్ ఫైల్ల అంతర్గత నిర్మాణాన్ని కూడా సూచిస్తుంది: రకాలు, ఫీల్డ్లు మరియు పద్ధతులు.
మెమరీలోని మూలకాల యొక్క మొత్తం ట్రీని పూర్తిగా మెటీరియలైజ్ చేయకుండా నివారించడానికి, జావా మోడల్ అమలు మూలకం సమాచారం యొక్క పరిమిత పరిమాణ LRU కాష్ని ఉపయోగిస్తుంది, ఇక్కడ కీ హ్యాండిల్ IJavaElement. మూలకం ట్రీ నావిగేట్ చేయబడినందున మూలకం సమాచార వస్తువులు డిమాండ్పై సృష్టించబడతాయి. ఈ సందర్భంలో, తక్కువ తరచుగా ఉపయోగించే అంశాలు కాష్ నుండి తొలగించబడతాయి మరియు మోడల్ యొక్క మెమరీ వినియోగం పేర్కొన్న కాష్ పరిమాణానికి పరిమితం చేయబడుతుంది. ఇది హ్యాండిల్-ఆధారిత డిజైన్ యొక్క మరొక ప్రయోజనం, ఇది క్లయింట్ కోడ్ నుండి అటువంటి అమలు వివరాలను పూర్తిగా దాచిపెడుతుంది.
జావా మూలకాలకు మార్పులను తెలియజేసే విధానం సాధారణంగా పైన చర్చించిన వర్క్స్పేస్ వనరులకు మార్పులను ట్రాక్ చేసే విధానం వలె ఉంటుంది. జావా మోడల్లో మార్పులను పర్యవేక్షించాలనుకునే క్లయింట్ నోటిఫికేషన్లకు సబ్స్క్రయిబ్ చేస్తారు, ఇది IJavaElementDelta (Figure 6)ని కలిగి ఉన్న ElementChangedEvent ఆబ్జెక్ట్గా సూచించబడుతుంది.
అన్నం. 6. ElementChangedEvent మరియు IJavaElementDelta
జావా మోడల్ మెథడ్ బాడీస్ లేదా నేమ్ రిజల్యూషన్ గురించి సమాచారాన్ని కలిగి ఉండదు, కాబట్టి జావాలో వ్రాసిన కోడ్ యొక్క వివరణాత్మక విశ్లేషణ కోసం, JDT కోర్ అదనపు (నాన్-హ్యాండిల్-ఆధారిత) మోడల్ను అందిస్తుంది:
సింటాక్స్ ట్రీలు గణనీయమైన మెమరీని వినియోగించుకోగలవు కాబట్టి, యాక్టివ్ ఎడిటర్ కోసం JDT ఒక ASTని మాత్రమే క్యాష్ చేస్తుంది. జావా మోడల్ వలె కాకుండా, AST సాధారణంగా "ఇంటర్మీడియట్", "తాత్కాలిక" మోడల్గా పరిగణించబడుతుంది, AST యొక్క సృష్టికి దారితీసిన ఆపరేషన్ సందర్భం వెలుపల క్లయింట్లు సూచనలను కలిగి ఉండకూడదు.
జాబితా చేయబడిన మూడు మోడల్లు (జావా మోడల్, AST, బైండింగ్లు) కలిసి JDTలో “ఇంటెలిజెంట్ డెవలప్మెంట్ టూల్స్” నిర్మించడానికి ఆధారం, ఇందులో వివిధ “సహాయకులు”, సోర్స్ కోడ్ను ప్రాసెస్ చేయడం కోసం వివిధ చర్యలు (దిగుమతి జాబితాను నిర్వహించడంతో సహా) శక్తివంతమైన జావా ఎడిటర్ ఉన్నాయి. అనుకూలీకరించిన శైలి ప్రకారం పేర్లు మరియు ఫార్మాటింగ్), శోధన మరియు రీఫ్యాక్టరింగ్ సాధనాలు. ఈ సందర్భంలో, జావా మోడల్ ప్రత్యేక పాత్రను పోషిస్తుంది, ఎందుకంటే ఇది అభివృద్ధి చేయబడుతున్న అప్లికేషన్ యొక్క నిర్మాణం యొక్క దృశ్యమాన ప్రాతినిధ్యానికి ఆధారంగా ఉపయోగించబడుతుంది (ఉదాహరణకు, ప్యాకేజీ ఎక్స్ప్లోరర్, అవుట్లైన్, శోధన, కాల్ హైరార్కీ మరియు టైప్ సోపానక్రమం).
1Cలో ఉపయోగించే ఎక్లిప్స్ భాగాలు: ఎంటర్ప్రైజ్ డెవలప్మెంట్స్ టూల్స్
అంజీర్లో. 7C: ఎంటర్ప్రైజ్ డెవలప్మెంట్ టూల్స్ కోసం టెక్నాలజీ ప్లాట్ఫారమ్కు పునాదిగా ఉండే ఎక్లిప్స్ భాగాలను మూర్తి 1 చూపిస్తుంది.
అన్నం. 7. ఎక్లిప్స్ 1C కోసం వేదికగా: ఎంటర్ప్రైజ్ డెవలప్మెంట్ టూల్స్
గ్రహణం వేదిక ప్రాథమిక మౌలిక సదుపాయాలను అందిస్తుంది. మేము మునుపటి విభాగంలో ఈ మౌలిక సదుపాయాలకు సంబంధించిన కొన్ని అంశాలను పరిశీలించాము.
ఏదైనా నిజమైన సాధారణ-ప్రయోజన సాధనం వలె, EMF విస్తృత శ్రేణి మోడలింగ్ సమస్యలను పరిష్కరించడానికి అనుకూలంగా ఉంటుంది, అయితే కొన్ని తరగతుల నమూనాలు (ఉదాహరణకు, పైన చర్చించిన హ్యాండిల్-ఆధారిత నమూనాలు) మరింత ప్రత్యేకమైన మోడలింగ్ సాధనాలు అవసరం కావచ్చు. EMF గురించి మాట్లాడటం కృతజ్ఞత లేని పని, ప్రత్యేకించి ఒక వ్యాసం యొక్క పరిమిత పరిమితుల్లో, ఇది ఒక ప్రత్యేక పుస్తకం యొక్క అంశం మరియు చాలా మందపాటిది. EMF అంతర్లీనంగా ఉన్న సాధారణీకరణల యొక్క అధిక-నాణ్యత వ్యవస్థ మోడలింగ్కు అంకితమైన మొత్తం శ్రేణి ప్రాజెక్ట్ల పుట్టుకను అనుమతించిందని మాత్రమే గమనించండి, ఇవి ఉన్నత-స్థాయి ప్రాజెక్ట్లో చేర్చబడ్డాయి.
1C:ఎంటర్ప్రైజ్ డెవలప్మెంట్ టూల్స్ EMF మరియు అనేక ఇతర ఎక్లిప్స్ మోడలింగ్ ప్రాజెక్ట్లు రెండింటినీ చురుకుగా ఉపయోగిస్తాయి. ప్రత్యేకించి, అంతర్నిర్మిత ప్రోగ్రామింగ్ లాంగ్వేజ్ మరియు క్వెరీ లాంగ్వేజ్ వంటి 1C: ఎంటర్ప్రైజ్ భాషల కోసం అభివృద్ధి సాధనాల పునాదులలో Xtext ఒకటి. ఈ డెవలప్మెంట్ టూల్స్కు మరొక ఆధారం ఎక్లిప్స్ హ్యాండ్లీ ప్రాజెక్ట్, దీనిని మేము మరింత వివరంగా చర్చిస్తాము (లిస్ట్ చేయబడిన ఎక్లిప్స్ భాగాలలో, ఇది ఇప్పటికీ చాలా తక్కువగా తెలిసినది).
హ్యాండిల్/బాడీ ఇడియమ్ వంటి హ్యాండిల్-ఆధారిత నమూనాల ప్రాథమిక నిర్మాణ సూత్రాలు, రిసోర్స్ మోడల్ మరియు జావా మోడల్ను ఉదాహరణలుగా ఉపయోగించి పైన చర్చించబడ్డాయి. రిసోర్స్ మోడల్ మరియు జావా మోడల్ రెండూ ఎక్లిప్స్ జావా డెవలప్మెంట్ టూల్స్ (జెడిటి)కి ముఖ్యమైన పునాదులు అని కూడా ఇది పేర్కొంది. మరియు దాదాపు అన్ని *DT ఎక్లిప్స్ ప్రాజెక్ట్లు JDTకి సమానమైన నిర్మాణాన్ని కలిగి ఉంటాయి కాబట్టి, ఎక్లిప్స్ ప్లాట్ఫారమ్ పైన నిర్మించబడిన అన్ని IDEలు కాకపోయినా, హ్యాండిల్-ఆధారిత మోడల్లు చాలా వరకు ఉన్నాయని చెప్పడం గొప్ప అతిశయోక్తి కాదు. ఉదాహరణకు, ఎక్లిప్స్ C/C++ డెవలప్మెంట్ టూలింగ్ (CDT) హ్యాండిల్ ఆధారిత C/C++ మోడల్ను కలిగి ఉంది, ఇది JDTలో జావా మోడల్ చేసే విధంగానే CDT ఆర్కిటెక్చర్లో అదే పాత్రను పోషిస్తుంది.
హ్యాండ్లీకి ముందు, హ్యాండిల్-ఆధారిత భాషా నమూనాలను రూపొందించడానికి ఎక్లిప్స్ ప్రత్యేకమైన లైబ్రరీలను అందించలేదు. ప్రస్తుతం ఉన్న నమూనాలు ప్రధానంగా జావా మోడల్ కోడ్ (కాపీ/పేస్ట్)ను నేరుగా స్వీకరించడం ద్వారా సృష్టించబడ్డాయి. అది అనుమతించే సందర్భాలలో ఎక్లిప్స్ పబ్లిక్ లైసెన్స్ (EPL). (సహజంగా, ఇది సాధారణంగా ఎక్లిప్స్ ప్రాజెక్ట్లకు సంబంధించిన చట్టపరమైన సమస్య కాదు, కానీ క్లోజ్డ్ సోర్స్ ఉత్పత్తులకు కాదు.) ఈ సాంకేతికత దాని స్వాభావికమైన అస్థిరతతో పాటుగా బాగా తెలిసిన సమస్యలను పరిచయం చేస్తుంది: లోపాలను స్వీకరించేటప్పుడు కోడ్ డూప్లికేషన్ను ప్రవేశపెట్టింది, మొదలైనవి అధ్వాన్నమైన విషయం ఏమిటంటే, ఫలిత నమూనాలు "తమలో ఉన్నవి"గా మిగిలిపోతాయి మరియు ఏకీకరణ సంభావ్యతను ఉపయోగించవు. కానీ హ్యాండిల్-ఆధారిత భాషా నమూనాల కోసం సాధారణ భావనలు మరియు ప్రోటోకాల్లను వేరుచేయడం వలన EMF విషయంలో ఏమి జరిగిందో అదే విధంగా వాటితో పని చేయడానికి పునర్వినియోగ భాగాలను సృష్టించవచ్చు.
ఈ సమస్యలను ఎక్లిప్స్ అర్థం చేసుకోలేదని కాదు. తిరిగి 2005లో
ఒక నిర్దిష్ట కోణంలో, హ్యాండ్లీ ప్రాజెక్ట్ EMF వలె దాదాపు అదే సమస్యలను పరిష్కరించడానికి రూపొందించబడింది, కానీ హ్యాండిల్-ఆధారిత నమూనాలు మరియు ప్రాథమికంగా భాషా వాటిని (అంటే, కొన్ని ప్రోగ్రామింగ్ భాష యొక్క నిర్మాణం యొక్క అంశాలను సూచిస్తుంది). హ్యాండ్లీని డిజైన్ చేసేటప్పుడు సెట్ చేయబడిన ప్రధాన లక్ష్యాలు క్రింద ఇవ్వబడ్డాయి:
- విషయం ప్రాంతం యొక్క ప్రధాన సంగ్రహాల గుర్తింపు.
- ప్రయత్నాన్ని తగ్గించడం మరియు కోడ్ పునర్వినియోగం ద్వారా హ్యాండిల్ ఆధారిత భాషా నమూనాల అమలు నాణ్యతను మెరుగుపరచడం.
- ఫలిత నమూనాలకు ఏకీకృత మెటా-స్థాయి APIని అందించడం, భాష హ్యాండిల్-ఆధారిత నమూనాలతో పని చేసే సాధారణ IDE భాగాలను సృష్టించడం సాధ్యమవుతుంది.
- వశ్యత మరియు స్కేలబిలిటీ.
- Xtextతో ఏకీకరణ (ప్రత్యేక పొరలో).
సాధారణ భావనలు మరియు ప్రోటోకాల్లను హైలైట్ చేయడానికి, భాష హ్యాండిల్-ఆధారిత నమూనాల ప్రస్తుత అమలులు విశ్లేషించబడ్డాయి. హ్యాండ్లీ అందించిన ప్రధాన ఇంటర్ఫేస్లు మరియు ప్రాథమిక అమలులు అంజీర్లో చూపబడ్డాయి. 8.
అన్నం. 8. సాధారణ ఇంటర్ఫేస్లు మరియు హ్యాండ్లీ ఎలిమెంట్ల ప్రాథమిక అమలులు
IElement ఇంటర్ఫేస్ ఒక మూలకం యొక్క హ్యాండిల్ను సూచిస్తుంది మరియు అన్ని హ్యాండ్లీ-ఆధారిత నమూనాల మూలకాలకు సాధారణం. వియుక్త తరగతి మూలకం సాధారణీకరించిన హ్యాండిల్/బాడీ మెకానిజం (Fig. 9)ను అమలు చేస్తుంది.
అన్నం. 9. IElement మరియు జెనరిక్ హ్యాండిల్/బాడీ ఇంప్లిమెంటేషన్
అదనంగా, మోడల్ మూలకాలలో మార్పుల గురించి తెలియజేయడానికి హ్యాండ్లీ సాధారణీకరించిన మెకానిజంను అందిస్తుంది (Fig. 10). మీరు చూడగలిగినట్లుగా, ఇది రిసోర్స్ మోడల్ మరియు జావా మోడల్లో అమలు చేయబడిన నోటిఫికేషన్ మెకానిజమ్లకు స్థూలంగా సమానంగా ఉంటుంది మరియు మూలకం మార్పు సమాచారం యొక్క ఏకీకృత ప్రాతినిధ్యాన్ని అందించడానికి IElementDeltaని ఉపయోగిస్తుంది.
అన్నం. 10. హ్యాండ్లీ నోటిఫికేషన్ మెకానిజం యొక్క సాధారణ ఇంటర్ఫేస్లు మరియు ప్రాథమిక అమలులు
పైన చర్చించిన హ్యాండ్లీ భాగం (Fig. 9 మరియు 10) దాదాపు ఏదైనా హ్యాండిల్-ఆధారిత నమూనాలను సూచించడానికి ఉపయోగించవచ్చు. సృష్టించడం కోసం భాషాపరమైన నమూనాలు, ప్రాజెక్ట్ అదనపు కార్యాచరణను అందిస్తుంది - ప్రత్యేకించి, సోర్స్ టెక్స్ట్ స్ట్రక్చర్ యొక్క మూలకాల కోసం సాధారణ ఇంటర్ఫేస్లు మరియు ప్రాథమిక అమలులు, అని పిలవబడేవి మూల అంశాలు (Fig. 8). ISourceFile ఇంటర్ఫేస్ సోర్స్ ఫైల్ను సూచిస్తుంది మరియు ISourceConstruct సోర్స్ ఫైల్లోని ఒక మూలకాన్ని సూచిస్తుంది. వియుక్త తరగతులు SourceFile మరియు SourceConstruct సోర్స్ ఫైల్లు మరియు వాటి మూలకాలతో పని చేయడానికి సాధారణీకరించిన మెకానిజమ్లను అమలు చేస్తాయి, ఉదాహరణకు, టెక్స్ట్ బఫర్లతో పని చేయడం, సోర్స్ టెక్స్ట్లోని మూలకం యొక్క కోఆర్డినేట్లకు బైండింగ్, వర్కింగ్ కాపీ బఫర్లోని ప్రస్తుత కంటెంట్లతో మోడల్లను పునరుద్దరించడం. , మొదలైనవి ఈ మెకానిజమ్లను అమలు చేయడం సాధారణంగా చాలా సవాలుగా ఉంటుంది మరియు అధిక-నాణ్యత ప్రాథమిక అమలులను అందించడం ద్వారా హ్యాండిల్-ఆధారిత భాషా నమూనాలను అభివృద్ధి చేసే ప్రయత్నాన్ని హ్యాండ్లీ గణనీయంగా తగ్గిస్తుంది.
పైన పేర్కొన్న కోర్ మెకానిజమ్లతో పాటు, హ్యాండ్లీ టెక్స్ట్ బఫర్లు మరియు స్నాప్షాట్ల కోసం మౌలిక సదుపాయాలను అందిస్తుంది, సోర్స్ కోడ్ ఎడిటర్లతో (Xtext ఎడిటర్తో బాక్స్ వెలుపల ఇంటిగ్రేషన్తో సహా) ఏకీకరణకు మద్దతు ఇస్తుంది, అలాగే కొన్ని సాధారణ UI భాగాలు సోర్స్ కోడ్ ఎడిటర్లతో పని చేయండి. అవుట్లైన్ ఫ్రేమ్వర్క్ వంటి హ్యాండ్లీ మోడల్లు. దాని సామర్థ్యాలను వివరించడానికి, ప్రాజెక్ట్ హ్యాండ్లీలో జావా మోడల్ అమలుతో సహా అనేక ఉదాహరణలను అందిస్తుంది. (JDTలో జావా మోడల్ పూర్తి అమలుతో పోలిస్తే, ఈ మోడల్ మరింత స్పష్టత కోసం ఉద్దేశపూర్వకంగా కొంత సరళీకృతం చేయబడింది.)
ముందుగా గుర్తించినట్లుగా, హ్యాండ్లీ యొక్క ప్రారంభ రూపకల్పన మరియు తదుపరి అభివృద్ధి సమయంలో ప్రధాన దృష్టి స్కేలబిలిటీ మరియు ఫ్లెక్సిబిలిటీపై కొనసాగుతుంది.
సూత్రప్రాయంగా, హ్యాండిల్-ఆధారిత నమూనాలు "డిజైన్ ద్వారా" బాగా స్కేల్ చేస్తాయి. ఉదాహరణకు, హ్యాండిల్/బాడీ ఇడియమ్ మోడల్ ద్వారా వినియోగించబడే మెమరీ మొత్తాన్ని పరిమితం చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. కానీ సూక్ష్మ నైపుణ్యాలు కూడా ఉన్నాయి. అందువల్ల, స్కేలబిలిటీ కోసం హ్యాండ్లీని పరీక్షిస్తున్నప్పుడు, నోటిఫికేషన్ మెకానిజం అమలులో సమస్య కనుగొనబడింది - పెద్ద సంఖ్యలో మూలకాలు మార్చబడినప్పుడు, డెల్టాలను నిర్మించడానికి చాలా సమయం పట్టింది. అదే సమస్య JDT జావా మోడల్లో ఉందని, దాని నుండి సంబంధిత కోడ్ ఒకసారి స్వీకరించబడిందని తేలింది. మేము హ్యాండ్లీలో బగ్ని పరిష్కరించాము మరియు JDT కోసం ఇదే విధమైన ప్యాచ్ను సిద్ధం చేసాము, దానిని కృతజ్ఞతతో స్వీకరించాము. ఇది కేవలం ఒక ఉదాహరణ మాత్రమే, ప్రస్తుతం ఉన్న మోడల్ ఇంప్లిమెంటేషన్స్లో హ్యాండ్లీని పరిచయం చేయడం సమర్థవంతంగా ఉపయోగపడుతుంది, ఎందుకంటే ఈ సందర్భంలో అటువంటి బగ్ను కేవలం ఒకే చోట పరిష్కరించవచ్చు.
ఇప్పటికే ఉన్న మోడల్ ఇంప్లిమెంటేషన్లలో హ్యాండ్లీని అమలు చేయడం సాంకేతికంగా సాధ్యమయ్యేలా చేయడానికి, లైబ్రరీ తప్పనిసరిగా ముఖ్యమైన సౌలభ్యాన్ని కలిగి ఉండాలి. API మోడల్లో వెనుకబడిన అనుకూలతను కొనసాగించడం ప్రధాన సమస్య. లో ఈ సమస్య పరిష్కరించబడింది
వశ్యత ఇతర అంశాలను కూడా కలిగి ఉంటుంది. ఉదాహరణకు, హ్యాండ్లీ మోడల్ నిర్మాణంపై దాదాపు ఎటువంటి పరిమితులను విధించదు మరియు సాధారణ-ప్రయోజనం మరియు డొమైన్-నిర్దిష్ట భాషలను మోడల్ చేయడానికి ఉపయోగించవచ్చు. సోర్స్ ఫైల్ యొక్క నిర్మాణాన్ని నిర్మిస్తున్నప్పుడు, హ్యాండ్లీ ఏ నిర్దిష్టమైన AST ప్రాతినిధ్యాన్ని సూచించదు మరియు సూత్రప్రాయంగా, AST ఉనికిని కూడా అవసరం లేదు, తద్వారా దాదాపు ఏదైనా పార్సింగ్ మెకానిజంతో అనుకూలతను నిర్ధారిస్తుంది. చివరగా, హ్యాండ్లీ ఎక్లిప్స్ వర్క్స్పేస్తో పూర్తి ఇంటిగ్రేషన్కు మద్దతు ఇస్తుంది, కానీ ఫైల్ సిస్టమ్లతో నేరుగా పని చేయవచ్చు.
ప్రస్తుత వెర్షన్
పైన పేర్కొన్నట్లుగా, ఈ ఉత్పత్తులలో ఒకటి 1C: ఎంటర్ప్రైజ్ డెవలప్మెంట్ టూల్స్, ఇక్కడ 1C: ఎంటర్ప్రైజ్ భాషల యొక్క ఉన్నత-స్థాయి నిర్మాణం యొక్క మోడల్ ఎలిమెంట్లకు అంతర్నిర్మిత ప్రోగ్రామింగ్ లాంగ్వేజ్ మరియు క్వెరీ లాంగ్వేజ్గా హ్యాండ్లీ మొదటి నుండి ఉపయోగించబడుతుంది. . మరొక ఉత్పత్తి సామాన్య ప్రజలకు అంతగా తెలియదు. ఈ
API స్థిరత్వం యొక్క హామీతో వెర్షన్ 1.0 విడుదలైన తర్వాత మరియు ప్రాజెక్ట్ ఇంక్యుబేషన్ స్థితిని విడిచిపెట్టిన తర్వాత, Handlyకి కొత్త అడాప్టర్లు ఉంటాయని మేము ఆశిస్తున్నాము. ఈలోగా, ప్రాజెక్ట్ APIని పరీక్షించడం మరియు మరింత మెరుగుపరచడం కొనసాగిస్తూ, సంవత్సరానికి రెండు "ప్రధాన" విడుదలలను విడుదల చేస్తూనే ఉంది - జూన్లో (ఏకకాల గ్రహణం విడుదలైన అదే తేదీ) మరియు డిసెంబర్లో, అడాప్టర్లు ఆధారపడే ఊహాజనిత షెడ్యూల్ని అందజేస్తుంది. ప్రాజెక్ట్ యొక్క “బగ్ రేట్” స్థిరంగా తక్కువ స్థాయిలో ఉందని మరియు హ్యాండ్లీ మొదటి సంస్కరణల నుండి ప్రారంభ స్వీకర్తల ఉత్పత్తులలో విశ్వసనీయంగా పనిచేస్తుందని కూడా మేము జోడించవచ్చు. ఎక్లిప్స్ హ్యాండ్లీని మరింతగా అన్వేషించడానికి, మీరు ఉపయోగించవచ్చు
మూలం: www.habr.com