1C కోసం సాంకేతిక వేదికగా ఎక్లిప్స్: ఎంటర్‌ప్రైజ్ డెవలప్‌మెంట్ టూల్స్

బహుశా, ఎక్లిప్స్ చాలా కాలంగా ప్రత్యేక పరిచయం అవసరం లేదు. ఎక్లిప్స్ జావా డెవలప్‌మెంట్ టూల్స్ కారణంగా చాలా మందికి ఎక్లిప్స్ గురించి బాగా తెలుసు (JDT) ఇది చాలా మంది డెవలపర్లు "ఎక్లిప్స్" అనే పదంతో అనుబంధించబడిన ఈ ప్రసిద్ధ ఓపెన్ సోర్స్ జావా IDE. ఏది ఏమైనప్పటికీ, ఎక్లిప్స్ అనేది అభివృద్ధి సాధనాలను (ఎక్లిప్స్ ప్లాట్‌ఫారమ్) సమగ్రపరచడానికి విస్తరించదగిన ప్లాట్‌ఫారమ్ మరియు JDTతో సహా దాని ఆధారంగా నిర్మించబడిన అనేక IDEలు. ఎక్లిప్స్ అనేది ఎక్లిప్స్ ప్రాజెక్ట్, ఎక్లిప్స్ ప్లాట్‌ఫారమ్ మరియు JDT యొక్క అభివృద్ధిని సమన్వయం చేసే ఉన్నత-స్థాయి ప్రాజెక్ట్ మరియు ఆ అభివృద్ధి యొక్క డెలివరీ చేయబడిన ఫలితం అయిన ఎక్లిప్స్ SDK రెండూ. చివరగా, ఎక్లిప్స్ అనేది ప్రాజెక్ట్‌ల యొక్క భారీ కమ్యూనిటీతో కూడిన ఓపెన్ సోర్స్ ఫౌండేషన్, అవన్నీ జావాలో వ్రాయబడినవి లేదా డెవలప్‌మెంట్ టూల్స్‌కు సంబంధించినవి కావు (ఉదాహరణకు, ప్రాజెక్ట్‌లు ఎక్లిప్స్ IoT и ఎక్లిప్స్ సైన్స్) ఎక్లిప్స్ ప్రపంచం చాలా వైవిధ్యమైనది.

ప్రకృతిలో స్థూలదృష్టితో కూడిన ఈ కథనంలో, సమీకృత అభివృద్ధి సాధనాలను నిర్మించడానికి వేదికగా ఎక్లిప్స్ ఆర్కిటెక్చర్ యొక్క కొన్ని ప్రాథమికాలను చూడడానికి ప్రయత్నిస్తాము మరియు సాంకేతికత యొక్క పునాదిని ఏర్పరిచే ఎక్లిప్స్ భాగాల యొక్క ప్రారంభ ఆలోచనను అందిస్తాము. "కొత్త కాన్ఫిగరేటర్" 1C కోసం ప్లాట్‌ఫారమ్: ఎంటర్‌ప్రైజ్. 1C:ఎంటర్‌ప్రైజ్ డెవలప్‌మెంట్ టూల్స్. వాస్తవానికి, అటువంటి సమీక్ష అనివార్యంగా చాలా ఉపరితలం మరియు పరిమితంగా ఉంటుంది, ఎందుకంటే మేము ఎక్లిప్స్ డెవలపర్‌లపై మాత్రమే లక్ష్య ప్రేక్షకులుగా దృష్టి పెడుతున్నాము. అయినప్పటికీ, అనుభవజ్ఞులైన ఎక్లిప్స్ డెవలపర్లు కూడా వ్యాసంలో ఆసక్తికరమైన సమాచారాన్ని కనుగొనగలరని మేము ఆశిస్తున్నాము. ఉదాహరణకు, మేము "గ్రహణం యొక్క రహస్యాలు", సాపేక్షంగా కొత్త మరియు అంతగా తెలియని ప్రాజెక్ట్ గురించి మాట్లాడుతాము. ఎక్లిప్స్ హ్యాండ్లీ, ఇది 1C ద్వారా స్థాపించబడింది మరియు మద్దతు ఇవ్వబడింది.
1C కోసం సాంకేతిక వేదికగా ఎక్లిప్స్: ఎంటర్‌ప్రైజ్ డెవలప్‌మెంట్ టూల్స్

ఎక్లిప్స్ ఆర్కిటెక్చర్ పరిచయం

ఉదాహరణను ఉపయోగించి ఎక్లిప్స్ ఆర్కిటెక్చర్ యొక్క కొన్ని సాధారణ అంశాలను మొదట చూద్దాం ఎక్లిప్స్ జావా అభివృద్ధి సాధనాలు (JDT). ఉదాహరణగా JDT ఎంపిక ప్రమాదవశాత్తు కాదు. ఇది ఎక్లిప్స్‌లో కనిపించే మొదటి సమగ్ర అభివృద్ధి వాతావరణం. ఎక్లిప్స్ C/C++ డెవలప్‌మెంట్ టూలింగ్ (CDT) వంటి ఇతర *DT ఎక్లిప్స్ ప్రాజెక్ట్‌లు తరువాత సృష్టించబడ్డాయి మరియు JDT నుండి ప్రాథమిక నిర్మాణ సూత్రాలు మరియు వ్యక్తిగత సోర్స్ కోడ్ శకలాలు రెండింటినీ అరువుగా తీసుకుంటాయి. 1C:Enterprise డెవలప్‌మెంట్ టూల్స్‌తో సహా ఎక్లిప్స్ ప్లాట్‌ఫారమ్ పైన నిర్మించబడిన దాదాపు ఏదైనా IDE కోసం JDTలో నిర్దేశించబడిన ఆర్కిటెక్చర్ యొక్క ప్రాథమిక అంశాలు నేటికీ సంబంధితంగా ఉంటాయి.

అన్నింటిలో మొదటిది, నిర్దిష్ట ప్రోగ్రామింగ్ భాషలకు మద్దతు ఇవ్వడానికి రూపొందించబడిన కార్యాచరణ నుండి భాష-స్వతంత్ర కార్యాచరణను వేరు చేయడం మరియు అనుబంధిత భాగాల నుండి UI-స్వతంత్ర "కోర్" భాగాలను వేరు చేయడంతో, ఎక్లిప్స్ చాలా స్పష్టమైన నిర్మాణ పొరల ద్వారా వర్గీకరించబడిందని గమనించాలి. సపోర్టింగ్ యూజర్ ఇంటర్‌ఫేస్‌తో.

అందువల్ల, ఎక్లిప్స్ ప్లాట్‌ఫారమ్ ఒక సాధారణ, భాష-స్వతంత్ర అవస్థాపనను నిర్వచిస్తుంది మరియు జావా డెవలప్‌మెంట్ సాధనాలు ఎక్లిప్స్‌కి పూర్తి ఫీచర్ చేసిన జావా IDEని జోడిస్తాయి. ఎక్లిప్స్ ప్లాట్‌ఫారమ్ మరియు JDT రెండూ అనేక భాగాలను కలిగి ఉంటాయి, వీటిలో ప్రతి ఒక్కటి UI-స్వతంత్ర "కోర్" లేదా UI లేయర్‌కి చెందినవి (మూర్తి 1).

1C కోసం సాంకేతిక వేదికగా ఎక్లిప్స్: ఎంటర్‌ప్రైజ్ డెవలప్‌మెంట్ టూల్స్
అన్నం. 1. ఎక్లిప్స్ ప్లాట్‌ఫారమ్ మరియు JDT

ఎక్లిప్స్ ప్లాట్‌ఫారమ్ యొక్క ప్రధాన భాగాలను జాబితా చేద్దాం:

  • రన్టైమ్ — ప్లగ్ఇన్ ఇన్‌ఫ్రాస్ట్రక్చర్‌ని నిర్వచిస్తుంది. ఎక్లిప్స్ మాడ్యులర్ ఆర్కిటెక్చర్ ద్వారా వర్గీకరించబడుతుంది. ముఖ్యంగా, ఎక్లిప్స్ అనేది "ఎక్స్‌టెన్షన్ పాయింట్స్" మరియు "ఎక్స్‌టెన్షన్స్" సమాహారం.
  • కార్యస్థలం - ఒకటి లేదా అంతకంటే ఎక్కువ ప్రాజెక్ట్‌లను నిర్వహిస్తుంది. ప్రాజెక్ట్ ఫైల్ సిస్టమ్‌కు నేరుగా మ్యాప్ చేయబడిన ఫోల్డర్‌లు మరియు ఫైల్‌లను కలిగి ఉంటుంది.
  • ప్రామాణిక విడ్జెట్ టూల్‌కిట్ (SWT) - ఆపరేటింగ్ సిస్టమ్‌తో అనుసంధానించబడిన ప్రాథమిక వినియోగదారు ఇంటర్‌ఫేస్ అంశాలను అందిస్తుంది.
  • JFace — SWT పైన నిర్మించిన అనేక UI ఫ్రేమ్‌వర్క్‌లను అందిస్తుంది.
  • పాడు — ఎక్లిప్స్ UI నమూనాను నిర్వచిస్తుంది: సంపాదకులు, వీక్షణలు, దృక్కోణాలు.

డీబగ్, కంపేర్, సెర్చ్ మరియు టీమ్‌తో సహా ఇంటిగ్రేటెడ్ డెవలప్‌మెంట్ టూల్స్ నిర్మించడానికి ఎక్లిప్స్ ప్లాట్‌ఫారమ్ అనేక ఇతర ఉపయోగకరమైన భాగాలను కూడా అందిస్తుంది అని చెప్పాలి. సోర్స్ కోడ్ యొక్క “స్మార్ట్ ఎడిటర్‌లను” రూపొందించడానికి ఆధారమైన JFace టెక్స్ట్ గురించి ప్రత్యేకంగా ప్రస్తావించాలి. దురదృష్టవశాత్తూ, ఈ భాగాలు, అలాగే UI లేయర్ కాంపోనెంట్‌ల యొక్క కర్సరీ పరిశీలన కూడా ఈ కథనం పరిధిలో సాధ్యం కాదు, కాబట్టి ఈ విభాగంలోని మిగిలిన భాగంలో మేము ప్రధాన “కోర్” భాగాల యొక్క అవలోకనానికి పరిమితం చేస్తాము. ఎక్లిప్స్ ప్లాట్‌ఫారమ్ మరియు JDT.

కోర్ రన్‌టైమ్

ఎక్లిప్స్ ప్లగ్ఇన్ ఇన్‌ఫ్రాస్ట్రక్చర్ ఆధారంగా ఉంటుంది OSGi మరియు ప్రాజెక్ట్ ద్వారా అందించబడింది ఎక్లిప్స్ విషువత్తు. ప్రతి ఎక్లిప్స్ ప్లగ్ఇన్ ఒక OSGi బండిల్. OSGi స్పెసిఫికేషన్ ప్రత్యేకించి, సంస్కరణ మరియు డిపెండెన్సీ రిజల్యూషన్ కోసం మెకానిజమ్‌లను నిర్వచిస్తుంది. ఈ ప్రామాణిక విధానాలతో పాటు, ఈక్వినాక్స్ భావనను పరిచయం చేస్తుంది విస్తరణ పాయింట్లు. ప్రతి ప్లగ్ఇన్ దాని స్వంత పొడిగింపు పాయింట్‌లను నిర్వచించగలదు మరియు అదే లేదా ఇతర ప్లగిన్‌లచే నిర్వచించబడిన పొడిగింపు పాయింట్‌లను ఉపయోగించి సిస్టమ్‌కు అదనపు కార్యాచరణను ("పొడిగింపులు") కూడా పరిచయం చేస్తుంది. OSGi మరియు ఈక్వినాక్స్ మెకానిజమ్స్ యొక్క ఏదైనా వివరణాత్మక వివరణ ఈ కథనం యొక్క పరిధికి మించినది. ఎక్లిప్స్‌లో మాడ్యులరైజేషన్ మొత్తం (రన్‌టైమ్‌తో సహా ఏదైనా సబ్‌సిస్టమ్ ఒకటి లేదా అంతకంటే ఎక్కువ ప్లగిన్‌లను కలిగి ఉంటుంది) మరియు ఎక్లిప్స్‌లోని దాదాపు ప్రతిదీ పొడిగింపు అని మాత్రమే గమనించండి. అంతేకాకుండా, ఈ సూత్రాలు OSGiని ప్రవేశపెట్టడానికి చాలా కాలం ముందు ఎక్లిప్స్ ఆర్కిటెక్చర్‌లో పొందుపరచబడ్డాయి (ఆ సమయంలో వారు OSGi మాదిరిగానే వారి స్వంత సాంకేతికతను ఉపయోగించారు).

కోర్ వర్క్‌స్పేస్

ఎక్లిప్స్ ప్లాట్‌ఫారమ్ పైన నిర్మించబడిన దాదాపు ఏదైనా సమగ్ర అభివృద్ధి పర్యావరణం ఎక్లిప్స్ వర్క్‌స్పేస్‌తో పనిచేస్తుంది. ఇది సాధారణంగా IDEలో అభివృద్ధి చేయబడిన అప్లికేషన్ యొక్క సోర్స్ కోడ్‌ని కలిగి ఉండే కార్యస్థలం. వర్క్‌స్పేస్ నేరుగా ఫైల్ సిస్టమ్‌కు మ్యాప్ చేస్తుంది మరియు ఫోల్డర్‌లు మరియు ఫైల్‌లను కలిగి ఉన్న ప్రాజెక్ట్‌లను కలిగి ఉంటుంది. ఈ ప్రాజెక్ట్‌లు, ఫోల్డర్‌లు మరియు ఫైల్‌లను అంటారు వనరులు కార్యస్థలం. ఎక్లిప్స్‌లోని వర్క్‌స్పేస్ అమలు ఫైల్ సిస్టమ్‌కు సంబంధించి కాష్‌గా పనిచేస్తుంది, ఇది రిసోర్స్ ట్రీ యొక్క ప్రయాణాన్ని గణనీయంగా వేగవంతం చేయడం సాధ్యపడుతుంది. అదనంగా, కార్యస్థలం సహా అనేక అదనపు సేవలను అందిస్తుంది వనరుల మార్పుల కోసం నోటిఫికేషన్ విధానం и పెరుగుతున్న బిల్డర్ మౌలిక సదుపాయాలు.

కోర్ రిసోర్సెస్ కాంపోనెంట్ (org.eclipse.core.resources ప్లగ్ఇన్) వర్క్‌స్పేస్ మరియు దాని వనరులకు మద్దతు ఇవ్వడానికి బాధ్యత వహిస్తుంది. ప్రత్యేకించి, ఈ భాగం రూపంలో కార్యస్థలానికి ప్రోగ్రామాటిక్ యాక్సెస్‌ను అందిస్తుంది వనరుల నమూనాలు. ఈ మోడల్‌తో సమర్థవంతంగా పని చేయడానికి, క్లయింట్‌లకు రిసోర్స్‌కి లింక్‌ను ప్రదర్శించడానికి సులభమైన మార్గం అవసరం. ఈ సందర్భంలో, క్లయింట్ యాక్సెస్ నుండి మోడల్‌లోని వనరు యొక్క స్థితిని నేరుగా నిల్వ చేసే వస్తువును దాచడం మంచిది. లేకపోతే, ఉదాహరణకు, ఫైల్‌ను తొలగించే సందర్భంలో, క్లయింట్ తదుపరి సమస్యలతో మోడల్‌లో లేని వస్తువును పట్టుకోవడం కొనసాగించవచ్చు. ఎక్లిప్స్ అనే దానిని ఉపయోగించి ఈ సమస్యను పరిష్కరిస్తుంది నిర్వహించడానికి వనరు. హ్యాండిల్ కీలకంగా పనిచేస్తుంది (ఇది వర్క్‌స్పేస్‌లోని వనరుకు మార్గం మాత్రమే తెలుసు) మరియు అంతర్గత మోడల్ ఆబ్జెక్ట్‌కు ప్రాప్యతను పూర్తిగా నియంత్రిస్తుంది, ఇది వనరు యొక్క స్థితి గురించి సమాచారాన్ని నేరుగా నిల్వ చేస్తుంది. ఈ డిజైన్ నమూనా యొక్క వైవిధ్యం హ్యాండిల్/బాడీ.

అన్నం. మూర్తి 2 రిసోర్స్ మోడల్‌కు వర్తించే విధంగా హ్యాండిల్/బాడీ ఇడియమ్‌ను వివరిస్తుంది. IResource ఇంటర్‌ఫేస్ రిసోర్స్ యొక్క హ్యాండిల్‌ను సూచిస్తుంది మరియు ఈ ఇంటర్‌ఫేస్‌ను అమలు చేసే రిసోర్స్ క్లాస్ మరియు APIలు కానటువంటి శరీరాన్ని సూచించే ResourceInfo క్లాస్ వలె కాకుండా API. హ్యాండిల్‌కి వర్క్‌స్పేస్ రూట్‌కు సంబంధించి రిసోర్స్‌కి సంబంధించిన మార్గం మాత్రమే తెలుసునని మరియు రిసోర్స్ సమాచారానికి లింక్‌ను కలిగి ఉండదని మేము నొక్కిచెబుతున్నాము. వనరుల సమాచార వస్తువులు "మూలకం చెట్టు" అని పిలవబడేవి. ఈ డేటా నిర్మాణం మెమరీలో పూర్తిగా మెటీరియలైజ్ చేయబడింది. హ్యాండిల్‌కి సంబంధించిన రిసోర్స్ ఇన్ఫో ఇన్‌స్టెన్స్‌ను కనుగొనడానికి, ఆ హ్యాండిల్‌లో స్టోర్ చేయబడిన మార్గం ప్రకారం ఎలిమెంట్ ట్రీ ప్రయాణించబడుతుంది.

1C కోసం సాంకేతిక వేదికగా ఎక్లిప్స్: ఎంటర్‌ప్రైజ్ డెవలప్‌మెంట్ టూల్స్
అన్నం. 2. IResource మరియు ResourceInfo

మేము తరువాత చూస్తాము, వనరుల నమూనా యొక్క ప్రాథమిక రూపకల్పన (మేము దీనిని హ్యాండిల్-ఆధారితంగా పిలుస్తాము) ఇతర మోడళ్లకు కూడా ఎక్లిప్స్‌లో ఉపయోగించబడుతుంది. ప్రస్తుతానికి, ఈ డిజైన్ యొక్క కొన్ని విలక్షణమైన లక్షణాలను జాబితా చేద్దాం:

  • హ్యాండిల్ ఒక విలువైన వస్తువు. విలువ వస్తువులు మార్పులేని వస్తువులు, వీటి సమానత్వం గుర్తింపుపై ఆధారపడి ఉండదు. అటువంటి వస్తువులను హ్యాష్ చేసిన కంటైనర్లలో సురక్షితంగా కీగా ఉపయోగించవచ్చు. హ్యాండిల్ యొక్క బహుళ సందర్భాలు ఒకే వనరును సూచించగలవు. వాటిని పోల్చడానికి, మీరు సమాన (ఆబ్జెక్ట్) పద్ధతిని ఉపయోగించాలి.
  • హ్యాండిల్ వనరు యొక్క ప్రవర్తనను నిర్వచిస్తుంది, కానీ వనరు యొక్క స్థితి గురించి సమాచారాన్ని కలిగి ఉండదు (ఇది నిల్వ చేసే ఏకైక డేటా "కీ", వనరుకు మార్గం).
  • హ్యాండిల్ ఉనికిలో లేని వనరును సూచించవచ్చు (ఇంకా సృష్టించబడని వనరు లేదా ఇప్పటికే తొలగించబడిన వనరు). IResource.exists() పద్ధతిని ఉపయోగించి వనరు ఉనికిని తనిఖీ చేయవచ్చు.
  • కొన్ని కార్యకలాపాలు హ్యాండిల్‌లోనే నిల్వ చేయబడిన సమాచారం ఆధారంగా అమలు చేయబడతాయి (హ్యాండిల్-మాత్రమే కార్యకలాపాలు అని పిలవబడేవి). ఉదాహరణలు IResource.getParent(), getFullPath(), మొదలైనవి. అటువంటి ఆపరేషన్ విజయవంతం కావడానికి వనరు అవసరం లేదు. వనరు ఉనికిలో లేనట్లయితే, విజయవంతం కావడానికి వనరు అవసరమయ్యే ఆపరేషన్లు కోర్ఎక్సెప్షన్‌ను విసురుతాయి.

వర్క్‌స్పేస్ రిసోర్స్ మార్పులను తెలియజేయడానికి ఎక్లిప్స్ సమర్థవంతమైన మెకానిజంను అందిస్తుంది (మూర్తి 3). ఎక్లిప్స్ IDE లోనే చేసిన చర్యల ఫలితంగా లేదా ఫైల్ సిస్టమ్‌తో సమకాలీకరణ ఫలితంగా వనరులు మారవచ్చు. రెండు సందర్భాల్లో, నోటిఫికేషన్‌లకు సభ్యత్వం పొందిన క్లయింట్లు "రిసోర్స్ డెల్టాస్" రూపంలో మార్పుల గురించి వివరణాత్మక సమాచారం అందించబడతాయి. డెల్టా వర్క్‌స్పేస్ రిసోర్స్ (ఉప-) చెట్టు యొక్క రెండు రాష్ట్రాల మధ్య మార్పులను వివరిస్తుంది మరియు దానిలో ప్రతి నోడ్ రిసోర్స్‌లో మార్పును వివరిస్తుంది మరియు పిల్లల వనరులకు మార్పులను వివరించే తదుపరి స్థాయిలో డెల్టాల జాబితాను కలిగి ఉంటుంది.

1C కోసం సాంకేతిక వేదికగా ఎక్లిప్స్: ఎంటర్‌ప్రైజ్ డెవలప్‌మెంట్ టూల్స్
అన్నం. 3. IResourceChangeEvent మరియు IResourceDelta

వనరుల డెల్టాల ఆధారంగా నోటిఫికేషన్ విధానం క్రింది లక్షణాలను కలిగి ఉంది:

  • ఒకే మార్పు మరియు అనేక మార్పులు ఒకే నిర్మాణాన్ని ఉపయోగించి వివరించబడ్డాయి, ఎందుకంటే డెల్టా పునరావృత కూర్పు సూత్రాన్ని ఉపయోగించి నిర్మించబడింది. సబ్‌స్క్రైబర్ క్లయింట్‌లు డెల్టాల చెట్టు ద్వారా రికర్సివ్ డిసెంట్‌ని ఉపయోగించి వనరుల మార్పు నోటిఫికేషన్‌లను ప్రాసెస్ చేయవచ్చు.
  • డెల్టా దాని కదలిక మరియు/లేదా దానితో అనుబంధించబడిన "మార్కర్లలో" మార్పులతో సహా వనరుకు మార్పుల గురించి పూర్తి సమాచారాన్ని కలిగి ఉంటుంది (ఉదాహరణకు, సంకలన లోపాలు గుర్తులుగా సూచించబడతాయి).
  • రిసోర్స్ రిఫరెన్స్‌లు హ్యాండిల్ ద్వారా తయారు చేయబడినందున, డెల్టా సహజంగా రిమోట్ రిసోర్స్‌ను సూచించగలదు.

మేము త్వరలో చూడబోతున్నట్లుగా, రిసోర్స్ మోడల్ మార్పు నోటిఫికేషన్ మెకానిజం రూపకల్పన యొక్క ప్రధాన భాగాలు ఇతర హ్యాండిల్-ఆధారిత నమూనాలకు కూడా సంబంధించినవి.

JDT కోర్

ఎక్లిప్స్ వర్క్‌స్పేస్ రిసోర్స్ మోడల్ అనేది ప్రాథమిక భాష-అజ్ఞేయ మోడల్. JDT కోర్ భాగం (plugin org.eclipse.jdt.core) జావా దృక్కోణం నుండి వర్క్‌స్పేస్ నిర్మాణాన్ని నావిగేట్ చేయడానికి మరియు విశ్లేషించడానికి APIని అందిస్తుంది, దీనిని "జావా మోడల్" అని పిలుస్తారు (జావా మోడల్) ఫోల్డర్‌లు మరియు ఫైల్‌ల పరంగా నిర్వచించబడిన అంతర్లీన వనరు మోడల్ APIకి విరుద్ధంగా ఈ API జావా మూలకాల పరంగా నిర్వచించబడింది. జావా మూలకం చెట్టు యొక్క ప్రధాన ఇంటర్‌ఫేస్‌లు అంజీర్‌లో చూపబడ్డాయి. 4.

1C కోసం సాంకేతిక వేదికగా ఎక్లిప్స్: ఎంటర్‌ప్రైజ్ డెవలప్‌మెంట్ టూల్స్
అన్నం. 4. జావా మోడల్ ఎలిమెంట్స్

జావా మోడల్ రిసోర్స్ మోడల్ వలె అదే హ్యాండిల్/బాడీ ఇడియమ్‌ని ఉపయోగిస్తుంది (మూర్తి 5). IJavaElement అనేది హ్యాండిల్, మరియు JavaElementInfo శరీరం యొక్క పాత్రను పోషిస్తుంది. IJavaElement ఇంటర్‌ఫేస్ అన్ని జావా మూలకాలకు సాధారణమైన ప్రోటోకాల్‌ను నిర్వచిస్తుంది. దాని పద్ధతులు కొన్ని హ్యాండిల్-మాత్రమే: getElementName(), getParent(), etc. JavaElementInfo ఆబ్జెక్ట్ సంబంధిత మూలకం యొక్క స్థితిని నిల్వ చేస్తుంది: దాని నిర్మాణం మరియు గుణాలు.

1C కోసం సాంకేతిక వేదికగా ఎక్లిప్స్: ఎంటర్‌ప్రైజ్ డెవలప్‌మెంట్ టూల్స్
అన్నం. 5. IJavaElement మరియు JavaElementInfo

జావా మోడల్‌కు రిసోర్స్ మోడల్‌తో పోలిస్తే బేసిక్ హ్యాండిల్/బాడీ డిజైన్ అమలులో కొన్ని తేడాలు ఉన్నాయి. పైన పేర్కొన్న విధంగా, రిసోర్స్ మోడల్‌లో, మూలకం ట్రీ, దీని నోడ్‌లు వనరుల సమాచార వస్తువులు, పూర్తిగా మెమరీలో ఉంటాయి. కానీ జావా మోడల్ రిసోర్స్ ట్రీ కంటే చాలా పెద్ద సంఖ్యలో మూలకాలను కలిగి ఉంటుంది, ఎందుకంటే ఇది .java మరియు .క్లాస్ ఫైల్‌ల అంతర్గత నిర్మాణాన్ని కూడా సూచిస్తుంది: రకాలు, ఫీల్డ్‌లు మరియు పద్ధతులు.

మెమరీలోని మూలకాల యొక్క మొత్తం ట్రీని పూర్తిగా మెటీరియలైజ్ చేయకుండా నివారించడానికి, జావా మోడల్ అమలు మూలకం సమాచారం యొక్క పరిమిత పరిమాణ LRU కాష్‌ని ఉపయోగిస్తుంది, ఇక్కడ కీ హ్యాండిల్ IJavaElement. మూలకం ట్రీ నావిగేట్ చేయబడినందున మూలకం సమాచార వస్తువులు డిమాండ్‌పై సృష్టించబడతాయి. ఈ సందర్భంలో, తక్కువ తరచుగా ఉపయోగించే అంశాలు కాష్ నుండి తొలగించబడతాయి మరియు మోడల్ యొక్క మెమరీ వినియోగం పేర్కొన్న కాష్ పరిమాణానికి పరిమితం చేయబడుతుంది. ఇది హ్యాండిల్-ఆధారిత డిజైన్ యొక్క మరొక ప్రయోజనం, ఇది క్లయింట్ కోడ్ నుండి అటువంటి అమలు వివరాలను పూర్తిగా దాచిపెడుతుంది.

జావా మూలకాలకు మార్పులను తెలియజేసే విధానం సాధారణంగా పైన చర్చించిన వర్క్‌స్పేస్ వనరులకు మార్పులను ట్రాక్ చేసే విధానం వలె ఉంటుంది. జావా మోడల్‌లో మార్పులను పర్యవేక్షించాలనుకునే క్లయింట్ నోటిఫికేషన్‌లకు సబ్‌స్క్రయిబ్ చేస్తారు, ఇది IJavaElementDelta (Figure 6)ని కలిగి ఉన్న ElementChangedEvent ఆబ్జెక్ట్‌గా సూచించబడుతుంది.

1C కోసం సాంకేతిక వేదికగా ఎక్లిప్స్: ఎంటర్‌ప్రైజ్ డెవలప్‌మెంట్ టూల్స్
అన్నం. 6. ElementChangedEvent మరియు IJavaElementDelta

జావా మోడల్ మెథడ్ బాడీస్ లేదా నేమ్ రిజల్యూషన్ గురించి సమాచారాన్ని కలిగి ఉండదు, కాబట్టి జావాలో వ్రాసిన కోడ్ యొక్క వివరణాత్మక విశ్లేషణ కోసం, JDT కోర్ అదనపు (నాన్-హ్యాండిల్-ఆధారిత) మోడల్‌ను అందిస్తుంది: నైరూప్య సింటాక్స్ చెట్టు (నైరూప్య సింటాక్స్ చెట్టు, AST). AST అనేది మూల వచనాన్ని అన్వయించడం యొక్క ఫలితాన్ని సూచిస్తుంది. AST నోడ్‌లు సోర్స్ మాడ్యూల్ (డిక్లరేషన్‌లు, ఆపరేటర్‌లు, ఎక్స్‌ప్రెషన్‌లు మొదలైనవి) యొక్క నిర్మాణం యొక్క మూలకాలకు అనుగుణంగా ఉంటాయి మరియు సోర్స్ టెక్స్ట్‌లోని సంబంధిత మూలకం యొక్క కోఆర్డినేట్‌ల గురించి సమాచారాన్ని అలాగే (ఒక ఎంపికగా) పేరు రిజల్యూషన్ గురించి సమాచారాన్ని కలిగి ఉంటాయి. అని పిలవబడే లింక్‌ల రూపం బైండింగ్స్. బైండింగ్‌లు అనేవి కంపైలర్‌కు తెలిసిన రకాలు, పద్ధతులు మరియు వేరియబుల్స్ వంటి పేరున్న ఎంటిటీలను సూచించే వస్తువులు. చెట్టును ఏర్పరిచే AST నోడ్‌ల వలె కాకుండా, బైండింగ్‌లు క్రాస్-రిఫరెన్సింగ్‌కు మద్దతు ఇస్తాయి మరియు సాధారణంగా గ్రాఫ్‌ను ఏర్పరుస్తాయి. వియుక్త తరగతి ASTNode అన్ని AST నోడ్‌లకు సాధారణ బేస్ క్లాస్. ASTNode సబ్‌క్లాస్‌లు జావా భాష యొక్క నిర్దిష్ట వాక్యనిర్మాణ నిర్మాణాలకు అనుగుణంగా ఉంటాయి.

సింటాక్స్ ట్రీలు గణనీయమైన మెమరీని వినియోగించుకోగలవు కాబట్టి, యాక్టివ్ ఎడిటర్ కోసం JDT ఒక ASTని మాత్రమే క్యాష్ చేస్తుంది. జావా మోడల్ వలె కాకుండా, AST సాధారణంగా "ఇంటర్మీడియట్", "తాత్కాలిక" మోడల్‌గా పరిగణించబడుతుంది, AST యొక్క సృష్టికి దారితీసిన ఆపరేషన్ సందర్భం వెలుపల క్లయింట్‌లు సూచనలను కలిగి ఉండకూడదు.

జాబితా చేయబడిన మూడు మోడల్‌లు (జావా మోడల్, AST, బైండింగ్‌లు) కలిసి JDTలో “ఇంటెలిజెంట్ డెవలప్‌మెంట్ టూల్స్” నిర్మించడానికి ఆధారం, ఇందులో వివిధ “సహాయకులు”, సోర్స్ కోడ్‌ను ప్రాసెస్ చేయడం కోసం వివిధ చర్యలు (దిగుమతి జాబితాను నిర్వహించడంతో సహా) శక్తివంతమైన జావా ఎడిటర్ ఉన్నాయి. అనుకూలీకరించిన శైలి ప్రకారం పేర్లు మరియు ఫార్మాటింగ్), శోధన మరియు రీఫ్యాక్టరింగ్ సాధనాలు. ఈ సందర్భంలో, జావా మోడల్ ప్రత్యేక పాత్రను పోషిస్తుంది, ఎందుకంటే ఇది అభివృద్ధి చేయబడుతున్న అప్లికేషన్ యొక్క నిర్మాణం యొక్క దృశ్యమాన ప్రాతినిధ్యానికి ఆధారంగా ఉపయోగించబడుతుంది (ఉదాహరణకు, ప్యాకేజీ ఎక్స్‌ప్లోరర్, అవుట్‌లైన్, శోధన, కాల్ హైరార్కీ మరియు టైప్ సోపానక్రమం).

1Cలో ఉపయోగించే ఎక్లిప్స్ భాగాలు: ఎంటర్‌ప్రైజ్ డెవలప్‌మెంట్స్ టూల్స్

అంజీర్లో. 7C: ఎంటర్‌ప్రైజ్ డెవలప్‌మెంట్ టూల్స్ కోసం టెక్నాలజీ ప్లాట్‌ఫారమ్‌కు పునాదిగా ఉండే ఎక్లిప్స్ భాగాలను మూర్తి 1 చూపిస్తుంది.

1C కోసం సాంకేతిక వేదికగా ఎక్లిప్స్: ఎంటర్‌ప్రైజ్ డెవలప్‌మెంట్ టూల్స్
అన్నం. 7. ఎక్లిప్స్ 1C కోసం వేదికగా: ఎంటర్‌ప్రైజ్ డెవలప్‌మెంట్ టూల్స్

గ్రహణం వేదిక ప్రాథమిక మౌలిక సదుపాయాలను అందిస్తుంది. మేము మునుపటి విభాగంలో ఈ మౌలిక సదుపాయాలకు సంబంధించిన కొన్ని అంశాలను పరిశీలించాము.

ఎక్లిప్స్ మోడలింగ్ ఫ్రేమ్‌వర్క్ (EMF) నిర్మాణాత్మక డేటాను మోడలింగ్ చేయడానికి సాధారణ మార్గాలను అందిస్తుంది. EMF ఎక్లిప్స్ ప్లాట్‌ఫారమ్‌తో అనుసంధానించబడింది, కానీ సాధారణ జావా అప్లికేషన్‌లలో కూడా విడిగా ఉపయోగించవచ్చు. చాలా తరచుగా, కొత్త ఎక్లిప్స్ డెవలపర్‌లు ఇప్పటికే EMFతో బాగా పరిచయం కలిగి ఉన్నారు, అయినప్పటికీ వారు ఎక్లిప్స్ ప్లాట్‌ఫారమ్ యొక్క చిక్కులను పూర్తిగా అర్థం చేసుకోలేదు. అటువంటి అర్హత కలిగిన జనాదరణకు గల కారణాలలో ఒకటి సార్వత్రిక రూపకల్పన, ఇది ఇతర విషయాలతోపాటు, ఏకీకృత మెటా-స్థాయి APIని కలిగి ఉంటుంది, ఇది ఏదైనా EMF మోడల్‌తో సాధారణ మార్గంలో పని చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. EMF అందించిన మోడల్ వస్తువుల కోసం ప్రాథమిక అమలులు మరియు మెటా-మోడల్ ఆధారంగా మోడల్ కోడ్‌ను రూపొందించడానికి ఉపవ్యవస్థ అభివృద్ధి వేగాన్ని గణనీయంగా పెంచుతాయి మరియు లోపాల సంఖ్యను తగ్గిస్తాయి. EMF మోడల్‌లను సీరియలైజ్ చేయడం, మోడల్‌లో మార్పులను ట్రాక్ చేయడం మరియు మరెన్నో కోసం మెకానిజమ్‌లను కూడా కలిగి ఉంది.

ఏదైనా నిజమైన సాధారణ-ప్రయోజన సాధనం వలె, EMF విస్తృత శ్రేణి మోడలింగ్ సమస్యలను పరిష్కరించడానికి అనుకూలంగా ఉంటుంది, అయితే కొన్ని తరగతుల నమూనాలు (ఉదాహరణకు, పైన చర్చించిన హ్యాండిల్-ఆధారిత నమూనాలు) మరింత ప్రత్యేకమైన మోడలింగ్ సాధనాలు అవసరం కావచ్చు. EMF గురించి మాట్లాడటం కృతజ్ఞత లేని పని, ప్రత్యేకించి ఒక వ్యాసం యొక్క పరిమిత పరిమితుల్లో, ఇది ఒక ప్రత్యేక పుస్తకం యొక్క అంశం మరియు చాలా మందపాటిది. EMF అంతర్లీనంగా ఉన్న సాధారణీకరణల యొక్క అధిక-నాణ్యత వ్యవస్థ మోడలింగ్‌కు అంకితమైన మొత్తం శ్రేణి ప్రాజెక్ట్‌ల పుట్టుకను అనుమతించిందని మాత్రమే గమనించండి, ఇవి ఉన్నత-స్థాయి ప్రాజెక్ట్‌లో చేర్చబడ్డాయి. ఎక్లిప్స్ మోడలింగ్ EMFతో పాటు. అటువంటి ప్రాజెక్ట్ ఎక్లిప్స్ ఎక్స్‌టెక్స్ట్.

ఎక్లిప్స్ Xటెక్స్ట్ "టెక్స్ట్ మోడలింగ్" అవస్థాపనను అందిస్తుంది. Xటెక్స్ట్ ఉపయోగిస్తుంది ANTLR మూల వచనాన్ని అన్వయించడం కోసం మరియు ఫలిత ASG (అబ్‌స్ట్రాక్ట్ సెమాంటిక్ గ్రాఫ్, ఇది తప్పనిసరిగా AST మరియు బైండింగ్‌ల కలయిక), దీనిని "సెమాంటిక్ మోడల్" అని కూడా పిలుస్తారు. Xtext ద్వారా రూపొందించబడిన భాష యొక్క వ్యాకరణం Xtext యొక్క స్వంత భాషలో వివరించబడింది. ఇది ANTLR కోసం వ్యాకరణ వివరణను రూపొందించడానికి మాత్రమే కాకుండా, AST సీరియలైజేషన్ మెకానిజం (అనగా Xtext ఒక పార్సర్ మరియు అన్‌పార్సర్ రెండింటినీ అందిస్తుంది), సందర్భ సూచన మరియు అనేక ఇతర భాషా భాగాలను పొందేందుకు కూడా మిమ్మల్ని అనుమతిస్తుంది. మరోవైపు, Xtextలో ఉపయోగించే వ్యాకరణ భాష ANTLRలో ఉపయోగించిన వ్యాకరణ భాష కంటే తక్కువ అనువైనది. అందువల్ల, కొన్నిసార్లు అమలు చేయబడిన భాషను Xtextకి "వంగడం" అవసరం, ఇది మేము మొదటి నుండి అభివృద్ధి చేయబడుతున్న భాష గురించి మాట్లాడుతున్నట్లయితే ఇది సాధారణంగా సమస్య కాదు, కానీ ఇప్పటికే ఏర్పాటు చేయబడిన సింటాక్స్ ఉన్న భాషలకు ఆమోదయోగ్యం కాదు. అయినప్పటికీ, ఎక్స్‌టెక్స్ట్ ప్రస్తుతం ప్రోగ్రామింగ్ లాంగ్వేజెస్ మరియు డెవలప్‌మెంట్ టూల్స్‌ను రూపొందించడానికి ఎక్లిప్స్‌లో అత్యంత పరిణతి చెందిన, ఫీచర్-రిచ్ మరియు బహుముఖ సాధనం. ముఖ్యంగా, ఇది వేగవంతమైన నమూనా కోసం ఒక ఆదర్శ సాధనం డొమైన్-నిర్దిష్ట భాషలు (డొమైన్-నిర్దిష్ట భాష, DSL). ANTLR మరియు EMF ఆధారంగా పైన పేర్కొన్న “లాంగ్వేజ్ కోర్”తో పాటు, Xtext ఇండెక్సింగ్ మెకానిజమ్స్, ఇంక్రిమెంటల్ కన్‌స్ట్రక్షన్, “స్మార్ట్ ఎడిటర్” మరియు మరెన్నో సహా అనేక ఉపయోగకరమైన ఉన్నత-స్థాయి భాగాలను అందిస్తుంది, కానీ హ్యాండిల్‌ను వదిలివేస్తుంది- ఆధారిత భాషా నమూనాలు. EMF వలె, Xtext అనేది ఒక ప్రత్యేక పుస్తకానికి అర్హమైన అంశం, మరియు మేము ప్రస్తుతం దాని అన్ని సామర్థ్యాల గురించి క్లుప్తంగా మాట్లాడలేము.

1C:ఎంటర్‌ప్రైజ్ డెవలప్‌మెంట్ టూల్స్ EMF మరియు అనేక ఇతర ఎక్లిప్స్ మోడలింగ్ ప్రాజెక్ట్‌లు రెండింటినీ చురుకుగా ఉపయోగిస్తాయి. ప్రత్యేకించి, అంతర్నిర్మిత ప్రోగ్రామింగ్ లాంగ్వేజ్ మరియు క్వెరీ లాంగ్వేజ్ వంటి 1C: ఎంటర్‌ప్రైజ్ భాషల కోసం అభివృద్ధి సాధనాల పునాదులలో Xtext ఒకటి. ఈ డెవలప్‌మెంట్ టూల్స్‌కు మరొక ఆధారం ఎక్లిప్స్ హ్యాండ్‌లీ ప్రాజెక్ట్, దీనిని మేము మరింత వివరంగా చర్చిస్తాము (లిస్ట్ చేయబడిన ఎక్లిప్స్ భాగాలలో, ఇది ఇప్పటికీ చాలా తక్కువగా తెలిసినది).

ఎక్లిప్స్ హ్యాండ్లీ, ఎక్లిప్స్ టెక్నాలజీ టాప్-లెవల్ ప్రాజెక్ట్ యొక్క ఉపప్రాజెక్ట్, 1లో 2014C చేసిన ఎక్లిప్స్ ఫౌండేషన్‌కు ప్రారంభ కోడ్ సహకారం ఫలితంగా ఉద్భవించింది. అప్పటి నుండి, 1C ప్రాజెక్ట్ అభివృద్ధికి మద్దతునిస్తూనే ఉంది: హ్యాండ్లీ కమిటర్లు కంపెనీ ఉద్యోగులు. ప్రాజెక్ట్ చిన్నది, కానీ ఇది ఎక్లిప్స్‌లో ప్రత్యేకమైన సముచిత స్థానాన్ని ఆక్రమించింది: హ్యాండిల్ ఆధారిత నమూనాల అభివృద్ధికి మద్దతు ఇవ్వడం దీని ప్రధాన లక్ష్యం.

హ్యాండిల్/బాడీ ఇడియమ్ వంటి హ్యాండిల్-ఆధారిత నమూనాల ప్రాథమిక నిర్మాణ సూత్రాలు, రిసోర్స్ మోడల్ మరియు జావా మోడల్‌ను ఉదాహరణలుగా ఉపయోగించి పైన చర్చించబడ్డాయి. రిసోర్స్ మోడల్ మరియు జావా మోడల్ రెండూ ఎక్లిప్స్ జావా డెవలప్‌మెంట్ టూల్స్ (జెడిటి)కి ముఖ్యమైన పునాదులు అని కూడా ఇది పేర్కొంది. మరియు దాదాపు అన్ని *DT ఎక్లిప్స్ ప్రాజెక్ట్‌లు JDTకి సమానమైన నిర్మాణాన్ని కలిగి ఉంటాయి కాబట్టి, ఎక్లిప్స్ ప్లాట్‌ఫారమ్ పైన నిర్మించబడిన అన్ని IDEలు కాకపోయినా, హ్యాండిల్-ఆధారిత మోడల్‌లు చాలా వరకు ఉన్నాయని చెప్పడం గొప్ప అతిశయోక్తి కాదు. ఉదాహరణకు, ఎక్లిప్స్ C/C++ డెవలప్‌మెంట్ టూలింగ్ (CDT) హ్యాండిల్ ఆధారిత C/C++ మోడల్‌ను కలిగి ఉంది, ఇది JDTలో జావా మోడల్ చేసే విధంగానే CDT ఆర్కిటెక్చర్‌లో అదే పాత్రను పోషిస్తుంది.

హ్యాండ్లీకి ముందు, హ్యాండిల్-ఆధారిత భాషా నమూనాలను రూపొందించడానికి ఎక్లిప్స్ ప్రత్యేకమైన లైబ్రరీలను అందించలేదు. ప్రస్తుతం ఉన్న నమూనాలు ప్రధానంగా జావా మోడల్ కోడ్ (కాపీ/పేస్ట్)ను నేరుగా స్వీకరించడం ద్వారా సృష్టించబడ్డాయి. అది అనుమతించే సందర్భాలలో ఎక్లిప్స్ పబ్లిక్ లైసెన్స్ (EPL). (సహజంగా, ఇది సాధారణంగా ఎక్లిప్స్ ప్రాజెక్ట్‌లకు సంబంధించిన చట్టపరమైన సమస్య కాదు, కానీ క్లోజ్డ్ సోర్స్ ఉత్పత్తులకు కాదు.) ఈ సాంకేతికత దాని స్వాభావికమైన అస్థిరతతో పాటుగా బాగా తెలిసిన సమస్యలను పరిచయం చేస్తుంది: లోపాలను స్వీకరించేటప్పుడు కోడ్ డూప్లికేషన్‌ను ప్రవేశపెట్టింది, మొదలైనవి అధ్వాన్నమైన విషయం ఏమిటంటే, ఫలిత నమూనాలు "తమలో ఉన్నవి"గా మిగిలిపోతాయి మరియు ఏకీకరణ సంభావ్యతను ఉపయోగించవు. కానీ హ్యాండిల్-ఆధారిత భాషా నమూనాల కోసం సాధారణ భావనలు మరియు ప్రోటోకాల్‌లను వేరుచేయడం వలన EMF విషయంలో ఏమి జరిగిందో అదే విధంగా వాటితో పని చేయడానికి పునర్వినియోగ భాగాలను సృష్టించవచ్చు.

ఈ సమస్యలను ఎక్లిప్స్ అర్థం చేసుకోలేదని కాదు. తిరిగి 2005లో మార్టిన్ ఈష్లిమాన్, CDT ప్రోటోటైప్‌ను అభివృద్ధి చేసిన అనుభవాన్ని సంగ్రహించడం, వాదించారు హ్యాండిల్ ఆధారిత నమూనాలతో సహా భాషా నమూనాల కోసం ఒక సాధారణ మౌలిక సదుపాయాలను సృష్టించాల్సిన అవసరం ఉంది. కానీ, తరచుగా జరిగే విధంగా, అధిక ప్రాధాన్యత కలిగిన పనుల కారణంగా, ఈ ఆలోచనల అమలు దాని చుట్టూ ఎప్పుడూ రాలేదు. ఇంతలో, *DT కోడ్ యొక్క కారకం ఇప్పటికీ ఎక్లిప్స్‌లో అభివృద్ధి చెందని అంశాలలో ఒకటి.

ఒక నిర్దిష్ట కోణంలో, హ్యాండ్లీ ప్రాజెక్ట్ EMF వలె దాదాపు అదే సమస్యలను పరిష్కరించడానికి రూపొందించబడింది, కానీ హ్యాండిల్-ఆధారిత నమూనాలు మరియు ప్రాథమికంగా భాషా వాటిని (అంటే, కొన్ని ప్రోగ్రామింగ్ భాష యొక్క నిర్మాణం యొక్క అంశాలను సూచిస్తుంది). హ్యాండ్‌లీని డిజైన్ చేసేటప్పుడు సెట్ చేయబడిన ప్రధాన లక్ష్యాలు క్రింద ఇవ్వబడ్డాయి:

  • విషయం ప్రాంతం యొక్క ప్రధాన సంగ్రహాల గుర్తింపు.
  • ప్రయత్నాన్ని తగ్గించడం మరియు కోడ్ పునర్వినియోగం ద్వారా హ్యాండిల్ ఆధారిత భాషా నమూనాల అమలు నాణ్యతను మెరుగుపరచడం.
  • ఫలిత నమూనాలకు ఏకీకృత మెటా-స్థాయి APIని అందించడం, భాష హ్యాండిల్-ఆధారిత నమూనాలతో పని చేసే సాధారణ IDE భాగాలను సృష్టించడం సాధ్యమవుతుంది.
  • వశ్యత మరియు స్కేలబిలిటీ.
  • Xtextతో ఏకీకరణ (ప్రత్యేక పొరలో).

సాధారణ భావనలు మరియు ప్రోటోకాల్‌లను హైలైట్ చేయడానికి, భాష హ్యాండిల్-ఆధారిత నమూనాల ప్రస్తుత అమలులు విశ్లేషించబడ్డాయి. హ్యాండ్లీ అందించిన ప్రధాన ఇంటర్‌ఫేస్‌లు మరియు ప్రాథమిక అమలులు అంజీర్‌లో చూపబడ్డాయి. 8.

1C కోసం సాంకేతిక వేదికగా ఎక్లిప్స్: ఎంటర్‌ప్రైజ్ డెవలప్‌మెంట్ టూల్స్
అన్నం. 8. సాధారణ ఇంటర్‌ఫేస్‌లు మరియు హ్యాండ్‌లీ ఎలిమెంట్‌ల ప్రాథమిక అమలులు

IElement ఇంటర్‌ఫేస్ ఒక మూలకం యొక్క హ్యాండిల్‌ను సూచిస్తుంది మరియు అన్ని హ్యాండ్లీ-ఆధారిత నమూనాల మూలకాలకు సాధారణం. వియుక్త తరగతి మూలకం సాధారణీకరించిన హ్యాండిల్/బాడీ మెకానిజం (Fig. 9)ను అమలు చేస్తుంది.

1C కోసం సాంకేతిక వేదికగా ఎక్లిప్స్: ఎంటర్‌ప్రైజ్ డెవలప్‌మెంట్ టూల్స్
అన్నం. 9. IElement మరియు జెనరిక్ హ్యాండిల్/బాడీ ఇంప్లిమెంటేషన్

అదనంగా, మోడల్ మూలకాలలో మార్పుల గురించి తెలియజేయడానికి హ్యాండ్లీ సాధారణీకరించిన మెకానిజంను అందిస్తుంది (Fig. 10). మీరు చూడగలిగినట్లుగా, ఇది రిసోర్స్ మోడల్ మరియు జావా మోడల్‌లో అమలు చేయబడిన నోటిఫికేషన్ మెకానిజమ్‌లకు స్థూలంగా సమానంగా ఉంటుంది మరియు మూలకం మార్పు సమాచారం యొక్క ఏకీకృత ప్రాతినిధ్యాన్ని అందించడానికి IElementDeltaని ఉపయోగిస్తుంది.

1C కోసం సాంకేతిక వేదికగా ఎక్లిప్స్: ఎంటర్‌ప్రైజ్ డెవలప్‌మెంట్ టూల్స్
అన్నం. 10. హ్యాండ్లీ నోటిఫికేషన్ మెకానిజం యొక్క సాధారణ ఇంటర్‌ఫేస్‌లు మరియు ప్రాథమిక అమలులు

పైన చర్చించిన హ్యాండ్లీ భాగం (Fig. 9 మరియు 10) దాదాపు ఏదైనా హ్యాండిల్-ఆధారిత నమూనాలను సూచించడానికి ఉపయోగించవచ్చు. సృష్టించడం కోసం భాషాపరమైన నమూనాలు, ప్రాజెక్ట్ అదనపు కార్యాచరణను అందిస్తుంది - ప్రత్యేకించి, సోర్స్ టెక్స్ట్ స్ట్రక్చర్ యొక్క మూలకాల కోసం సాధారణ ఇంటర్‌ఫేస్‌లు మరియు ప్రాథమిక అమలులు, అని పిలవబడేవి మూల అంశాలు (Fig. 8). ISourceFile ఇంటర్‌ఫేస్ సోర్స్ ఫైల్‌ను సూచిస్తుంది మరియు ISourceConstruct సోర్స్ ఫైల్‌లోని ఒక మూలకాన్ని సూచిస్తుంది. వియుక్త తరగతులు SourceFile మరియు SourceConstruct సోర్స్ ఫైల్‌లు మరియు వాటి మూలకాలతో పని చేయడానికి సాధారణీకరించిన మెకానిజమ్‌లను అమలు చేస్తాయి, ఉదాహరణకు, టెక్స్ట్ బఫర్‌లతో పని చేయడం, సోర్స్ టెక్స్ట్‌లోని మూలకం యొక్క కోఆర్డినేట్‌లకు బైండింగ్, వర్కింగ్ కాపీ బఫర్‌లోని ప్రస్తుత కంటెంట్‌లతో మోడల్‌లను పునరుద్దరించడం. , మొదలైనవి ఈ మెకానిజమ్‌లను అమలు చేయడం సాధారణంగా చాలా సవాలుగా ఉంటుంది మరియు అధిక-నాణ్యత ప్రాథమిక అమలులను అందించడం ద్వారా హ్యాండిల్-ఆధారిత భాషా నమూనాలను అభివృద్ధి చేసే ప్రయత్నాన్ని హ్యాండ్లీ గణనీయంగా తగ్గిస్తుంది.

పైన పేర్కొన్న కోర్ మెకానిజమ్‌లతో పాటు, హ్యాండ్‌లీ టెక్స్ట్ బఫర్‌లు మరియు స్నాప్‌షాట్‌ల కోసం మౌలిక సదుపాయాలను అందిస్తుంది, సోర్స్ కోడ్ ఎడిటర్‌లతో (Xtext ఎడిటర్‌తో బాక్స్ వెలుపల ఇంటిగ్రేషన్‌తో సహా) ఏకీకరణకు మద్దతు ఇస్తుంది, అలాగే కొన్ని సాధారణ UI భాగాలు సోర్స్ కోడ్ ఎడిటర్‌లతో పని చేయండి. అవుట్‌లైన్ ఫ్రేమ్‌వర్క్ వంటి హ్యాండ్లీ మోడల్‌లు. దాని సామర్థ్యాలను వివరించడానికి, ప్రాజెక్ట్ హ్యాండ్లీలో జావా మోడల్ అమలుతో సహా అనేక ఉదాహరణలను అందిస్తుంది. (JDTలో జావా మోడల్ పూర్తి అమలుతో పోలిస్తే, ఈ మోడల్ మరింత స్పష్టత కోసం ఉద్దేశపూర్వకంగా కొంత సరళీకృతం చేయబడింది.)

ముందుగా గుర్తించినట్లుగా, హ్యాండ్లీ యొక్క ప్రారంభ రూపకల్పన మరియు తదుపరి అభివృద్ధి సమయంలో ప్రధాన దృష్టి స్కేలబిలిటీ మరియు ఫ్లెక్సిబిలిటీపై కొనసాగుతుంది.

సూత్రప్రాయంగా, హ్యాండిల్-ఆధారిత నమూనాలు "డిజైన్ ద్వారా" బాగా స్కేల్ చేస్తాయి. ఉదాహరణకు, హ్యాండిల్/బాడీ ఇడియమ్ మోడల్ ద్వారా వినియోగించబడే మెమరీ మొత్తాన్ని పరిమితం చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. కానీ సూక్ష్మ నైపుణ్యాలు కూడా ఉన్నాయి. అందువల్ల, స్కేలబిలిటీ కోసం హ్యాండ్‌లీని పరీక్షిస్తున్నప్పుడు, నోటిఫికేషన్ మెకానిజం అమలులో సమస్య కనుగొనబడింది - పెద్ద సంఖ్యలో మూలకాలు మార్చబడినప్పుడు, డెల్టాలను నిర్మించడానికి చాలా సమయం పట్టింది. అదే సమస్య JDT జావా మోడల్‌లో ఉందని, దాని నుండి సంబంధిత కోడ్ ఒకసారి స్వీకరించబడిందని తేలింది. మేము హ్యాండ్లీలో బగ్‌ని పరిష్కరించాము మరియు JDT కోసం ఇదే విధమైన ప్యాచ్‌ను సిద్ధం చేసాము, దానిని కృతజ్ఞతతో స్వీకరించాము. ఇది కేవలం ఒక ఉదాహరణ మాత్రమే, ప్రస్తుతం ఉన్న మోడల్ ఇంప్లిమెంటేషన్స్‌లో హ్యాండ్‌లీని పరిచయం చేయడం సమర్థవంతంగా ఉపయోగపడుతుంది, ఎందుకంటే ఈ సందర్భంలో అటువంటి బగ్‌ను కేవలం ఒకే చోట పరిష్కరించవచ్చు.

ఇప్పటికే ఉన్న మోడల్ ఇంప్లిమెంటేషన్‌లలో హ్యాండ్‌లీని అమలు చేయడం సాంకేతికంగా సాధ్యమయ్యేలా చేయడానికి, లైబ్రరీ తప్పనిసరిగా ముఖ్యమైన సౌలభ్యాన్ని కలిగి ఉండాలి. API మోడల్‌లో వెనుకబడిన అనుకూలతను కొనసాగించడం ప్రధాన సమస్య. లో ఈ సమస్య పరిష్కరించబడింది హ్యాండ్లీ 0.5 లైబ్రరీ అందించిన ఏకీకృత మెటా-స్థాయి API నుండి డెవలపర్చే నిర్వచించబడిన మరియు పూర్తిగా నియంత్రించబడే మోడల్-నిర్దిష్ట APIని స్పష్టంగా వేరు చేయడం ద్వారా. ఇది సాంకేతికంగా ఇప్పటికే ఉన్న ఇంప్లిమెంటేషన్‌లలో హ్యాండ్‌లీని అమలు చేయడం సాధ్యం చేయడమే కాకుండా, APIని డిజైన్ చేసేటప్పుడు కొత్త మోడల్ డెవలపర్‌కు గణనీయమైన స్వేచ్ఛను కూడా ఇస్తుంది.

వశ్యత ఇతర అంశాలను కూడా కలిగి ఉంటుంది. ఉదాహరణకు, హ్యాండ్లీ మోడల్ నిర్మాణంపై దాదాపు ఎటువంటి పరిమితులను విధించదు మరియు సాధారణ-ప్రయోజనం మరియు డొమైన్-నిర్దిష్ట భాషలను మోడల్ చేయడానికి ఉపయోగించవచ్చు. సోర్స్ ఫైల్ యొక్క నిర్మాణాన్ని నిర్మిస్తున్నప్పుడు, హ్యాండ్‌లీ ఏ నిర్దిష్టమైన AST ప్రాతినిధ్యాన్ని సూచించదు మరియు సూత్రప్రాయంగా, AST ఉనికిని కూడా అవసరం లేదు, తద్వారా దాదాపు ఏదైనా పార్సింగ్ మెకానిజంతో అనుకూలతను నిర్ధారిస్తుంది. చివరగా, హ్యాండ్లీ ఎక్లిప్స్ వర్క్‌స్పేస్‌తో పూర్తి ఇంటిగ్రేషన్‌కు మద్దతు ఇస్తుంది, కానీ ఫైల్ సిస్టమ్‌లతో నేరుగా పని చేయవచ్చు. ఎక్లిప్స్ ఫైల్ సిస్టమ్ (EFS).

ప్రస్తుత వెర్షన్ హ్యాండ్లీ 0.6 డిసెంబర్ 2016లో వచ్చింది. ప్రాజెక్ట్ ప్రస్తుతం పొదిగే స్థితిలో ఉన్నప్పటికీ మరియు API ఇంకా పరిష్కరించబడనప్పటికీ, హ్యాండ్లీ ఇప్పటికే రెండు పెద్ద వాణిజ్య ఉత్పత్తులలో ఉపయోగించబడింది, ఇది "ప్రారంభ స్వీకర్తలుగా" వ్యవహరించే ప్రమాదాన్ని తీసుకుంది మరియు నేను తప్పక చెప్పాలి, ఇంకా చింతించకండి.

పైన పేర్కొన్నట్లుగా, ఈ ఉత్పత్తులలో ఒకటి 1C: ఎంటర్‌ప్రైజ్ డెవలప్‌మెంట్ టూల్స్, ఇక్కడ 1C: ఎంటర్‌ప్రైజ్ భాషల యొక్క ఉన్నత-స్థాయి నిర్మాణం యొక్క మోడల్ ఎలిమెంట్‌లకు అంతర్నిర్మిత ప్రోగ్రామింగ్ లాంగ్వేజ్ మరియు క్వెరీ లాంగ్వేజ్‌గా హ్యాండ్‌లీ మొదటి నుండి ఉపయోగించబడుతుంది. . మరొక ఉత్పత్తి సామాన్య ప్రజలకు అంతగా తెలియదు. ఈ కోడాసిప్ స్టూడియో, అప్లికేషన్-స్పెసిఫిక్ ఇన్‌స్ట్రక్షన్-సెట్ ప్రాసెసర్ (ASIP) కోసం సమీకృత డిజైన్ వాతావరణం, చెక్ కంపెనీ కోడాసిప్‌లోనే మరియు దాని క్లయింట్ల ద్వారా కూడా ఉపయోగించబడుతుంది AMD, AVG, మొబైల్, సిగ్మా డిజైన్స్. కోడాసిప్ హ్యాండ్లీ 2015 వెర్షన్‌తో ప్రారంభించి 0.2 నుండి ఉత్పత్తిలో హ్యాండ్‌లీని ఉపయోగిస్తోంది. Codasip Studio యొక్క తాజా విడుదల జూన్ 0.5లో విడుదలైన వెర్షన్ 2016ని ఉపయోగిస్తుంది. Codasip వద్ద IDE అభివృద్ధికి నాయకత్వం వహిస్తున్న Ondřej Ilčík, "థర్డ్ పార్టీ అడాప్టర్" తరపున కీలకమైన అభిప్రాయాన్ని అందిస్తూ ప్రాజెక్ట్‌తో సంప్రదింపులు జరుపుతున్నారు. అతను ప్రాజెక్ట్ యొక్క అభివృద్ధిలో నేరుగా పాల్గొనడానికి కొంత ఖాళీ సమయాన్ని కూడా కనుగొనగలిగాడు, హ్యాండ్లీ ఉదాహరణలలో ఒకటైన జావా మోడల్ కోసం UI లేయర్ (~4000 లైన్ల కోడ్) అమలు చేశాడు. అడాప్టర్‌ల ద్వారా హ్యాండ్‌లీని ఉపయోగించడం గురించి మరింత వివరమైన ఫస్ట్-హ్యాండ్ సమాచారాన్ని పేజీలో చూడవచ్చు విజయ గాథలు ప్రాజెక్ట్.

API స్థిరత్వం యొక్క హామీతో వెర్షన్ 1.0 విడుదలైన తర్వాత మరియు ప్రాజెక్ట్ ఇంక్యుబేషన్ స్థితిని విడిచిపెట్టిన తర్వాత, Handlyకి కొత్త అడాప్టర్‌లు ఉంటాయని మేము ఆశిస్తున్నాము. ఈలోగా, ప్రాజెక్ట్ APIని పరీక్షించడం మరియు మరింత మెరుగుపరచడం కొనసాగిస్తూ, సంవత్సరానికి రెండు "ప్రధాన" విడుదలలను విడుదల చేస్తూనే ఉంది - జూన్‌లో (ఏకకాల గ్రహణం విడుదలైన అదే తేదీ) మరియు డిసెంబర్‌లో, అడాప్టర్‌లు ఆధారపడే ఊహాజనిత షెడ్యూల్‌ని అందజేస్తుంది. ప్రాజెక్ట్ యొక్క “బగ్ రేట్” స్థిరంగా తక్కువ స్థాయిలో ఉందని మరియు హ్యాండ్లీ మొదటి సంస్కరణల నుండి ప్రారంభ స్వీకర్తల ఉత్పత్తులలో విశ్వసనీయంగా పనిచేస్తుందని కూడా మేము జోడించవచ్చు. ఎక్లిప్స్ హ్యాండ్లీని మరింతగా అన్వేషించడానికి, మీరు ఉపయోగించవచ్చు ట్యుటోరియల్‌ని ప్రారంభించడం и ఆర్కిటెక్చరల్ అవలోకనం.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి