జావా
1991లో ఒక సెట్ టాప్ బాక్సు ప్రాజెక్టు కోసం మొట్టమొదటి సారిగా జావాను తయారుచేసారు. దీని రూపకర్తలు జేమ్స్ గోస్లింగ్, పాట్రిక్ నాటన్, క్రిస్ వర్త్, ఎడ్వర్డ్ ఫ్రాంక్, మరియు మైక్ షెరిడాన్.[1] ఇంకా బిల్ జాయ్, జోనాథన్ పేన్, ఫ్రాంక్ యెల్లిన్, ఆర్థర్ వాన్ హాఫ్, టిమ్ లింఢామ్ మొదలైన వారు దీన్ని అభివృద్ధి పరచడంలో పాలు పంచుకొన్నారు. మొట్ట మొదటి పనిచేసే వర్షన్ ను రూపొందించడానికి గోస్లింగ్ బృందానికి 18 నెలల సమయం పట్టింది. మొదట్లో జావాను ఓక్ అని పిలిచేవారు (గోస్లింగ్ పని చేసే ఆఫీస్ బయట ఉండే ఓక్ వృక్షానికి గుర్తుగా ఆ పేరు పెట్టాడు). తరువాత గ్రీన్ అనీ, చివరకు జావా అనీ రూపాంతరం చెందింది.[2] జావాను ఇప్పుడు ఇంటర్నెట్ అప్లికేషన్లలో విరివిగా వాడుతున్నప్పటికీ నిజానికి మొదట్లో దీన్ని ఇంటర్నెట్ ను దృష్టిలో పెట్టుకొని రూపొందించలేదు. మైక్రోవేవ్ ఒవెన్లు, రిమోట్ కంట్రోళ్ళు తదితర ఎలక్ట్రానిక్ ఉపకరణాలు దీనిని రూపొందించడానికి ప్రేరణ. వీటిలో చాలా రకాలైన సిపియు లను కంట్రోలర్లుగా వాడుతుంటారు. ఒక వర్చువల్ మెషీన్ను తయారు చేసి, దానికోసం సీ/సీ ప్లస్ ప్లస్ భాషలను పోలి ఉండే ఒక కంప్యూటరు భాషను తయారు చేయాలన్నది గోస్లింగ్ మొదట్లో నిర్దేశించుకున్న లక్ష్యాలు.[3] సీ/సీ ప్లస్ ప్లస్ లతో వచ్చిన సమస్య ఏమిటంటే వీటిలో వ్రాసిన ప్రోగ్రాములు ఏవో కొద్ది ప్లాట్ ఫాం లకోసం కంపైల్ చెయ్యబడేలా రూపొందించబడి ఉంటాయి. సీ/సీ ప్లస్ ప్లస్ ప్రోగ్రామును ఒక సిపియు మీద నడపాలంటే దానికి సంబంధించిన కంపైలర్ వ్రాయాలి. కానీ మార్కెట్లో లభిస్తున్న ప్రతీ సిపియుకూ కంపైలర్ను రూపొందించాలంటే అది ఖర్చు మరియు సమయంతో కూడిన పని. ఈ సమస్యకు పరిష్కారంగానే జావాను కనుగొనడం జరిగింది. జావా మొట్ట మొదటి సారిగా 1995 లో జావా 1.0గా విడుదల అయ్యింది. ఒక్క సారి ప్రోగ్రామును వ్రాయండి, ఎక్కడైనా నడపండి అన్న నినాదంతో, ప్రస్తుతం ప్రధానంగా ప్రాచుర్యంలో ఉన్న కొన్ని ప్లాట్ ఫాం లకోసం వర్చువల్ మెషీన్ను తయారు చేశారు. ఈ వర్చువల్ మెషీన్ మంచి రక్షణ వ్యవస్థ కలిగిఉండి, నెట్ వర్క్ యాక్సెస్ ను, మరియు ఫైల్ యాక్సెస్ ను నియంత్రించడం మొదలైన రక్షణపరమైన సౌలభ్యాన్ని కూడా కల్గించింది. అనతి కాలంలోనే ప్రజాదరణ పొందిన వెబ్ బ్రౌజర్లన్నీ జావా అప్లెట్లు నడపడానికి కావాల్సిన సౌకర్యాలను కల్పించాయి. జావా 2 రాకతో వేర్వేరు ప్లాట్ ఫాం లకు వేర్వేరు కాన్ఫిగరేషన్ లతో విడుదల అయ్యింది. ఎంటర్ ప్రైస్ అప్లికేషన్ల కోసం J2EE గా, మొబైల్ అప్లికేషన్ల కోసం J2ME, సాధారణ అప్లికేషన్ల కోసం J2SE సరికొత్త రూపాన్ని సంతరించుకొంది.
సాఫ్ట్‌వేర్ దోషం
ప్రోగ్రామ్ రాసేటప్పుడు మానవ అంశాల స్వభావం యొక్క పరిణామంగా దోషాలను చెబుతారు. పనుల నిర్దేశం, రూపకల్పన, కోడ్ రాయడం (కోడింగ్), సమాచారాన్ని ఎక్కించడం (డాటా ఎంట్రీ) మరియు ప్రమాణ పత్రరచన సమయంలో ఒక సాఫ్ట్‌వేర్ బృందం చేసే పరిశీలనలు లేదా పరస్పర అవగాహనాలోపాల వల్ల దోషాలు తలెత్తుతాయి. ఉదాహరణకు పదాల జాబితాను ఒక వర్ణక్రమంలో అమర్చే దిశగా సాపేక్షకంగా ఒక సాధారణ ప్రోగ్రామ్‌ను రూపొందించడంలో ఏదైనా ఒక పదం హైఫన్ (అక్షరముల మధ్య అవసరాన్ని బట్టి వేసే అడ్డుగీత)ను కలిగి ఉంటే ఏమి జరుగుతుందనే విషయాన్ని ఆలోచించడంలో ఒకరి డిజైన్ వైఫల్యం చెందవచ్చు. సంభవనీయంగా, సంగ్రహ రూపకల్పనను ఎంపిక చేసిన ప్రోగ్రామింగ్ భాషలోకి మార్చేటప్పుడు ఒకరు తెలియకుండా ఒక ఆఫ్-బై-వన్ ఎర్రర్‌ను సృష్టించడం మరియు చివరి పదాన్ని జాబితాలో అమర్చడంలో వైఫల్యం చెందవచ్చు. చివరగా కంప్యూటర్‌లో ఫలిత ప్రోగ్రామ్‌ను టైపు చేసేటప్పుడు ఒకరు '' అని టైపు చేయాల్సి ఉంటుంది. సంభవనీయంగా, ఫలిత పదాలు విలోమ వర్ణక్రమంలో అమర్చబడవచ్చు. అత్యంత క్లిష్టమైన దోషాలు కంప్యూటర్ ప్రోగ్రామ్ యొక్క వివిధ భాగాల మధ్య ఉద్దేశరహిత సంభాషణల ద్వారా తలెత్తవచ్చు. ఇది తరచూ సంభవించవచ్చు. అందుకు కారణం కొన్ని సందర్భాల్లో కంప్యూటర్ ప్రోగ్రామ్‌లు మిలియన్ల కొద్దీ పంక్తులతో క్లిష్టంగా ఉండొచ్చు. తరచూ అనేక మంది కలిసి ప్రోగ్రామ్‌లను సుదీర్ఘ కాలం పాటు కూడా సిద్ధం చేయొచ్చు. అందువల్ల భాగాలు సంబంధం కలిగి ఉండే ప్రతి సాధ్యమైన మార్గాన్ని ప్రోగ్రామర్లు మానసికంగా గుర్తించలేకపోతారు. దోషానికి సంబంధించిన మరొక తరగతిని "రేస్ కండిషన్" (ఒక తప్పిదం) అంటారు. ఇది ఏదైనా ఒక ప్రక్రియ ఒక సందేశాల వరుస కంటే ఎక్కువ వాటిలో నిర్వహించబడుతున్నప్పుడు లేదా రెండు లేదా అంతకంటే ఎక్కువ ప్రక్రియలు ఏకకాలంలో జరుగుతున్నప్పుడు తలెత్తుతుంది. ఫలితంగా కోడు యొక్క కీలక క్రమాల కచ్చితమైన అమలు క్రమం అనేది ఏకకాలంలో సరిగా జరగదు.