Facebook ఓపెన్ సోర్స్డ్ హీర్మేస్ జావాస్క్రిప్ట్ ఇంజిన్
Facebook ఓపెన్ సోర్స్ లైట్ వెయిట్ జావాస్క్రిప్ట్ ఇంజన్ హీర్మేస్, ఫ్రేమ్వర్క్ ఆధారంగా అప్లికేషన్లను అమలు చేయడానికి ఆప్టిమైజ్ చేయబడింది స్థానికంగా స్పందించండి ఆండ్రాయిడ్ ప్లాట్ఫారమ్లో. హీర్మేస్ మద్దతు అంతర్నిర్మిత నేటి 0.60.2 విడుదలతో రియాక్ట్ నేటివ్లో ప్రారంభమవుతుంది. స్థానిక JavaScript అప్లికేషన్లు మరియు ముఖ్యమైన వనరుల వినియోగం కోసం దీర్ఘకాల ప్రారంభ సమయాలతో సమస్యలను పరిష్కరించడానికి ప్రాజెక్ట్ రూపొందించబడింది. కోడ్ వ్రాసిన వారు C++లో మరియు MIT లైసెన్స్ క్రింద పంపిణీ చేయబడింది.
హీర్మేస్ను ఉపయోగించడం వల్ల కలిగే ప్రయోజనాల్లో, అప్లికేషన్ స్టార్టప్ సమయం తగ్గడం, మెమరీ వినియోగం తగ్గడం మరియు అప్లికేషన్ పరిమాణం తగ్గడం వంటివి ఉన్నాయి. V8ని ఉపయోగిస్తున్నప్పుడు, సోర్స్ కోడ్ను అన్వయించడం మరియు ఫ్లైలో కంపైల్ చేయడం వంటి దశలు ఎక్కువ సమయం తీసుకునే దశలు. హీర్మేస్ ఈ దశలను నిర్మాణ దశకు తీసుకువస్తుంది మరియు కాంపాక్ట్ మరియు సమర్థవంతమైన బైట్కోడ్ రూపంలో అప్లికేషన్లను బట్వాడా చేయడానికి అనుమతిస్తుంది.
అనువర్తనాన్ని నేరుగా అమలు చేయడానికి, ప్రాజెక్ట్లో అభివృద్ధి చేయబడిన వర్చువల్ మెషీన్ సెమీస్పేస్ చెత్త కలెక్టర్తో ఉపయోగించబడుతుంది, ఇది బ్లాక్లను అవసరమైనంత మాత్రమే పంపిణీ చేస్తుంది (ఆన్-డిమాండ్), బ్లాక్లను తరలించడం మరియు డిఫ్రాగ్మెంటేషన్ చేయడం, ఆపరేటింగ్ సిస్టమ్కు ఫ్రీడ్ మెమరీని తిరిగి ఇవ్వడం వంటి వాటికి మద్దతు ఇస్తుంది. మొత్తం కుప్పలోని విషయాలను స్కాన్ చేస్తోంది.
జావాస్క్రిప్ట్ ప్రాసెసింగ్ అనేక దశలుగా విభజించబడింది. మొదట, మూల గ్రంథాలు అన్వయించబడతాయి మరియు కోడ్ యొక్క ఇంటర్మీడియట్ ప్రాతినిధ్యం రూపొందించబడుతుంది (హీర్మేస్ IR), ప్రాతినిధ్యం ఆధారంగా SSA (స్టాటిక్ సింగిల్ అసైన్మెంట్). తరువాత, ఇంటర్మీడియట్ ప్రాతినిధ్యం ఆప్టిమైజర్లో ప్రాసెస్ చేయబడుతుంది, ఇది ప్రోగ్రామ్ యొక్క అసలైన సెమాంటిక్స్ను సంరక్షించేటప్పుడు ప్రాథమిక ఇంటర్మీడియట్ కోడ్ను మరింత సమర్థవంతమైన ఇంటర్మీడియట్ ప్రాతినిధ్యంగా మార్చడానికి ఫార్వర్డ్ స్టాటిక్ ఆప్టిమైజేషన్ పద్ధతులను వర్తిస్తుంది. చివరి దశలో, రిజిస్టర్డ్ వర్చువల్ మెషీన్ కోసం బైట్కోడ్ రూపొందించబడుతుంది.
ఇంజిన్ లో ద్వారా మద్దతు ECMAScript 2015 JavaScript ప్రమాణంలో భాగం (దీనికి పూర్తిగా మద్దతు ఇవ్వడమే అంతిమ లక్ష్యం) మరియు ఇప్పటికే ఉన్న చాలా రియాక్ట్ నేటివ్ అప్లికేషన్లతో అనుకూలతను అందిస్తుంది. RegExpలో స్టేట్మెంట్లు, ప్రతిబింబం (రిఫ్లెక్ట్ మరియు ప్రాక్సీ), Intl API మరియు కొన్ని ఫ్లాగ్లతో eval() యొక్క స్థానిక అమలుకు మద్దతు ఇవ్వకూడదని హెర్మేస్ నిర్ణయించుకుంది. రియాక్ట్ నేటివ్ అప్లికేషన్లో హీర్మేస్ని ఎనేబుల్ చేయడానికి, ప్రాజెక్ట్కి “enableHermes: true” ఎంపికను జోడించండి. CLI మోడ్లో హెర్మేస్ను నిర్మించడం కూడా సాధ్యమే, కమాండ్ లైన్ నుండి ఏకపక్ష JavaScript ఫైల్లను అమలు చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. డీబగ్గింగ్ కోసం ఒక లేజీ కంపైలేషన్ మోడ్ అందుబాటులో ఉంది, ఇది డెవలప్మెంట్ ప్రాసెస్లో ప్రతిసారీ జావాస్క్రిప్ట్ను కంపైల్ చేయకుండా మిమ్మల్ని అనుమతిస్తుంది, కానీ ఇప్పటికే పరికరంలో ఉన్న ఫ్లైలో బైట్కోడ్ని రూపొందించడానికి.
అదే సమయంలో, Facebook మొబైల్ అప్లికేషన్లపై మాత్రమే దృష్టి సారించి, Node.js మరియు ఇతర పరిష్కారాల కోసం హెర్మెస్ని స్వీకరించడానికి ప్లాన్ చేయలేదు (పరిమిత RAM మరియు నెమ్మదిగా ఉండే ఫ్లాష్ ఉన్న మొబైల్ సిస్టమ్ల సందర్భంలో JITకి బదులుగా AOT సంకలనం అత్యంత అనుకూలమైనది). మైక్రోసాఫ్ట్ ఉద్యోగులు నిర్వహించే ప్రాథమిక పనితీరు పరీక్ష బహిర్గతంహెర్మేస్ని ఉపయోగిస్తున్నప్పుడు, Android కోసం Microsoft Office అప్లికేషన్ 1.1 సెకన్లలో ఉపయోగం కోసం అందుబాటులోకి వస్తుంది. ప్రారంభించిన తర్వాత మరియు 21.5MB RAMని వినియోగిస్తుంది, V8 ఇంజిన్ను ఉపయోగిస్తున్నప్పుడు ప్రారంభించడానికి 1.4 సెకన్లు పడుతుంది మరియు మెమరీ వినియోగం 30MB.
అదనంగా: Facebook ప్రచురించిన సొంత పరీక్ష ఫలితాలు. MatterMost అప్లికేషన్తో హీర్మేస్ని ఉపయోగిస్తున్నప్పుడు, పని కోసం లభ్యతను ప్రారంభించే సమయం (TTI, ఇంటరాక్ట్ చేయడానికి సమయం) 4.30 నుండి 2.01 సెకన్లకు తగ్గింది, APK ప్యాకేజీ పరిమాణం 41 నుండి 22 MBకి మరియు మెమరీ వినియోగం 185 నుండి 136కి తగ్గించబడింది. MB.