ജാവ (പ്രോഗ്രാമിങ് ഭാഷ)
കമ്പ്യൂട്ടറുകളിലും മറ്റും ഉപയോഗിക്കുന്ന വിവിധോദ്ദേശ്യ പ്രോഗ്രാമിങ് ഭാഷയാണ് ജാവ. ജെയിംസ് ഗോസ്ലിങ്ങ്, ബിൽ ജോയ് മുതലായവരുടെ നേതൃത്വത്തിൽ സൺ മൈക്രോസിസ്റ്റംസ് വികസിപ്പിച്ചെടുത്ത ഒബ്ജക്റ്റ് ഓറിയന്റഡ് പ്രോഗ്രാമിങ് ഭാഷയായ ജാവ, ഇന്ന് വെബ് സെർവറുകൾ, കമ്പ്യൂട്ടറുകൾ, മൊബൈൽ ഫോണുകൾ തുടങ്ങി ഒട്ടനവധി ഇലക്ട്രോണിക് ഉപകരണങ്ങളിൽ ഉപയോഗിക്കപ്പെടുന്നു. വെബ് പ്രോഗ്രാമിങിനാണ് കൂടുതൽ ഉപയോഗിക്കുന്നതെങ്കിലും, അതിലേറെ കാര്യങ്ങൾ ചെയ്യാൻ ഉപയോഗിക്കുന്ന വിവിധോദ്ദേശ്യ പ്രോഗ്രാമിങ് ഭാഷയാണിത്[3]. സൺ മൈക്രോസിസ്റ്റംസിനെ 2009 മദ്ധ്യത്തിൽ ഒറാക്കിൾ വാങ്ങിയതോടെ ജാവ ഒറാക്കിളിന്റെ നിയന്ത്രണത്തിലായി[4].
ശൈലി: | വസ്തുതാ അധിഷ്ഠിതം, structured, imperative |
---|---|
പുറത്തുവന്ന വർഷം: | 1995 |
രൂപകൽപ്പന ചെയ്തത്: | സൺ മൈക്രോസിസ്റ്റംസ് (ഇപ്പോൾ ഓറക്കിൾ കോർപ്പറേഷന്റെ ഉടമസ്ഥതയിൽ) |
ഡാറ്റാടൈപ്പ് ചിട്ട: | Static, strong, safe, nominative |
പ്രധാന രൂപങ്ങൾ: | Numerous |
സ്വാധീനിക്കപ്പെട്ടത്: | സി, സി++, സ്മോൾടോക്ക്, ഈഫൽ,[1] സി#[2] |
സ്വാധീനിച്ചത്: | സി#, ഡി, ജെ#, അഡ 2005, ഇഗ്മാസ്ക്രിപ്റ്റ്, സ്കാല |
ഓപറേറ്റിങ്ങ് സിസ്റ്റം: | വിവിധം |
അനുവാദപത്രം: | ഗ്നൂ സാർവ്വജനിക അനുവാദപത്രം / Java Community Process |
വെബ് വിലാസം: | http://www.oracle.com/technetwork/java/ |
കമ്പ്യൂട്ടറുകളിൽ തന്നെ സെർവറുകളിലും ക്ലൈന്റുകളിലും പ്രത്യേകം പ്രത്യേകം പ്രവർത്തിക്കാൻ പ്രാപ്തമായ പ്രോഗ്രാമുകൾ സൃഷ്ടിക്കാൻ ജാവ ഉപയോഗപ്പെടുത്താം. ഇതിനുപുറമേ സ്വതന്ത്രമായി പ്രവർത്തിക്കുന്ന ആപ്ലിക്കേഷനുകൾ നിർമ്മിക്കാനും ജാവ ഉപയോഗിക്കുന്നു. ഓരോ ഓപ്പറേറ്റിങ് സിസ്റ്റത്തിനുമായി വെവ്വേറെ സോഫ്റ്റ്വെയറുകൾ നിർമ്മിക്കുക എന്ന മറ്റു പല പ്രോഗ്രാമിങ് ഭാഷകൾക്കും ഉള്ള പരിമിതി ജാവക്കില്ല. പ്ലാറ്റ്ഫോം സ്വാതന്ത്ര്യം (Platform Independence) എന്ന ഈ ഗുണം ജാവ സാധ്യമാക്കുന്നത് ജാവ വിർച്ച്വൽ മെഷീൻ അഥവാ ജെ.വി.എം (JVM-Java Virtual Machine) എന്ന സാങ്കേതികത ഉപയോഗിച്ചാണ്. ജെ.വി.എം. എല്ലാ ഓപ്പറേറ്റിങ് സിസ്റ്റത്തിനും വ്യത്യസ്തമാണ്.
ജാവയിൽ സോഫ്റ്റ്വെയറുകൾ സൃഷ്ടിക്കാൻ, സൺ മൈക്രോസിസ്റ്റംസ് ജാവ ഡവലപ്മെന്റ് കിറ്റ് അഥവാ ജെ. ഡി. കെ (Java Development Kit - JDK) എന്നൊരു വികസനോപാധിയും സൃഷ്ടിച്ചിട്ടുണ്ട്. പ്രോഗ്രാമിങ് താരതമ്യേന എളുപ്പമാക്കാൻ എക്ലിപ്സ്, നെറ്റ്ബീൻസ്, ബോർലാൻഡ് ജെബിൽഡർ തുടങ്ങിയ ഇന്റഗ്രേറ്റ്ഡ് ഡവലപ്മെന്റ് എൻവിയോണ്മെന്റുകളും(ഐ.ഡി.ഇ) ഇന്ന് ലഭ്യമാണ്. ഇന്ന് ജാവയുടെ പതിപ്പ് 7 (ജാവ 7) ഉം, ജെ.ഡി.കെ പതിപ്പ് 7u10 ഉം ആണ്[5]. ജാവയുടെ പ്രധാന പതിപ്പുകളിൽ എട്ടാമത്തേതാണിത്. 2005 ആയപ്പോഴേക്കും, 250 കോടിയോളം ഉപകരണങ്ങളിൽ ജാവ ഉപയോഗിക്കപ്പെടുകയും, 45 ലക്ഷം ആളുകൾ ജാവ പഠിക്കുകയും ചെയ്തിട്ടുണ്ട്. [6].
ഏറക്കുറേ സി, സി++ എന്നീ പ്രോഗ്രാമിങ് ഭാഷകളുടെ വാക്യഘടന (syntax) തന്നെയാണ് ജാവയിലും ഉപയോഗിക്കുന്നത്. മൈക്രോസോഫ്റ്റിന്റെ സി# (സി ഷാർപ്പ്, മുമ്പ് ജെ++) പോലുള്ള ഭാഷകളിൽ ജാവയുടെ സ്വാധീനം ഏറെയുണ്ട്. സി ഷാർപ്പിൽ നിന്നും ജാവയും ചില പ്രത്യേകതകൾ കടംകൊണ്ടിട്ടുണ്ട്. പേരിലും, ലേഖനരീതിയിലും സാമ്യങ്ങളുണ്ടെങ്കിലും ജാവാസ്ക്രിപ്റ്റ് എന്ന സ്ക്രിപ്റ്റിങ്ങ് ഭാഷയ്ക്ക് ജാവയുമായി ബന്ധമൊന്നുമില്ല.
1990 കളുടെ ആദ്യപാദത്തിൽ സൺ മൈക്രോസിസ്റ്റംസ് വികസിപ്പിച്ച ജാവ കമ്മ്യൂണിറ്റി പ്രോസസിന്റെ നിർദ്ദേശങ്ങൾക്കനുസൃതമായി ജാവ കംപൈലർ, ജാവ വിർച്ച്വൽ മെഷീൻ എന്നിവയ്ക്ക് സൺ മൈക്രോസിസ്റ്റംസ് ഗ്നൂ സാർവ്വജനിക അനുവാദപത്രം നൽകിയിട്ടുണ്ട്[7].
ചരിത്രം
തിരുത്തുകപശ്ചാത്തലം
തിരുത്തുകസി പ്രോഗ്രാമിങ് ഭാഷയിൽ നിന്നും 1980-ൽ @Quách Tĩnh അവതരിപ്പിച്ച സി++-ഉം അതിനോടൊപ്പം രൂപം കൊണ്ട വസ്തുതാധിഷ്ഠിത പ്രോഗ്രാമിങ് രീതിയും 1990 ആയപ്പോഴേക്കും വൻതോതിൽ ജനകീയമായി. പ്രോഗ്രാം പ്രവർത്തിക്കാനാവശ്യമായ മെമ്മറി പ്രത്യേകം കുറിച്ചുകൊടുക്കണം എന്നുള്ളതുകൊണ്ടും, അതു കൊണ്ടു തന്നെ ഹാർഡ്വെയറിനനുസൃതമായി പ്രോഗ്രാം പുതുക്കേണ്ടി വരുമെന്നതും പിൽക്കാലത്ത് സി++നു തിരിച്ചടിയായി. മെമ്മറിയുടെ കൈകാര്യം പ്രോഗ്രാമറുടെ കൈയ്യിലായിരുന്നതിനാൽ വിനാശബുദ്ധികൾക്ക് ദോഷകരങ്ങളായ പ്രോഗ്രാമുകൾ എഴുതാൻ സി, സി++ ഭാഷകളിൽ എളുപ്പമായിരുന്നു.
ജാവയുടെ സൃഷ്ടി
തിരുത്തുക1990-ൽ പരസ്പര സംവേദനക്ഷമമായ ഒരു ടിവി പരിപാടി നിർമ്മിക്കാനുള്ള പദ്ധതിക്കിടയിൽ ജെയിംസ് ഗോസ്ലിങ്ങ് എന്ന സോഫ്റ്റ്വേർ വിദഗ്ദ്ധൻ സി++ ചില പ്രത്യേകതകളിൽ സംതൃപ്തനാകാതെ പദ്ധതിക്കനുസരിച്ച ഒരു പ്രോഗ്രാമിങ് ഭാഷ നിർമ്മിക്കാനുള്ള ശ്രമം തുടങ്ങിയതുമുതലാണ് ജാവയുടെ ചരിത്രം തുടങ്ങുന്നത്[8]. ടെലിവിഷൻ സംവേദനക്ഷമമാക്കാനുള്ള “സെറ്റ് റ്റോപ്” ബോക്സ് പോലുള്ള, ഇലക്ട്രോണിക് ഉപകരണങ്ങൾക്കായിട്ടാണ് “ഗ്രീൻ” (Green) എന്ന കോഡുനാമത്തിൽ അന്നറിയപ്പെട്ട ഈ ഭാഷ നിർമ്മിക്കാനാരംഭിച്ചത്[9]. സി യിൽ നിന്നും സി++ ഉണ്ടാക്കിയതുപോലെ സി++ ൽ അനുബന്ധങ്ങൾ ചേർത്ത് പുതിയൊരു ഭാഷയും, ഏതൊരു ഹാർഡ്വെയറുമായി ആശയവിനിമയം നടത്താൻ കഴിവുള്ള ഒരു ഇടനിലപ്രോഗ്രാമും നിർമ്മിക്കാനായിരുന്നു ആദ്യശ്രമമെങ്കിലും അത് വളരെ പെട്ടെന്നു തന്നെ തികച്ചും പുതിയൊരു ഭാഷയെന്ന ലക്ഷ്യത്തിലെത്തിച്ചേർന്നു. 1991 ൽ ‘ ഓക് ’ എന്ന പേരിലാണ് ഗോസ്ലിങ് പുതിയ പ്രോഗ്രാമിങ് ഭാഷയ്ക്കുള്ള ശ്രമം തുടങ്ങിയത്. സി, സി++ പ്രോഗ്രാമിംഗ് ഭാഷകളോട് സാമ്യമുള്ള ഒരു പ്രോഗ്രാമിംഗ് ഭാഷ സൃഷ്ടിക്കുകയും, ആ ഭാഷയിലെഴുതുന്ന പ്രോഗ്രാമുകൾ എല്ലാത്തരം കമ്പ്യൂട്ടറുകളിലും, ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റങ്ങളിലും എന്നതിനുപരിയായി ഏത് ഇലക്ട്രോണിക് ഉപകരണത്തിലും പ്രവർത്തിപ്പിക്കുവാൻ സഹായിക്കുന്ന ഒരു വിർച്ച്വൽ മെഷീൻ നിർമ്മിക്കുകയുമായിരുന്നു അദ്ദേഹത്തിന്റെ ലക്ഷ്യം. ബിൽ ജോയ്, ആർതർ വാൻ ഹോഫ്, ജോനാതൻ പെയ്ൻ, ഫ്രാങ്ക് യെല്ലിൻ, റ്റിം ലിൻഡോം തുടങ്ങിയവർ മറ്റു പ്രധാന സഹസ്രഷ്ടാക്കളാണ്[10]. 18 മാസം കൊണ്ട് ഇതിന്റെ ആദ്യരൂപം 1992-ൽ പുറത്തിറങ്ങി. ജാവ ആദ്യം എംബഡഡ് സിസ്റ്റങ്ങളേയും കമ്പ്യൂട്ടറുകളേയും ആയിരുന്നു ലക്ഷ്യം വച്ചിരുന്നത്. എംബഡഡ് സിസ്റ്റങ്ങൾ ഒന്നിനൊന്നു വ്യത്യസ്തങ്ങളായിരുന്നതിനാൽ ഒരേ പ്രോഗ്രാമിന്റെ വിതരണം എപ്പോഴും പ്രശ്നങ്ങളെ നേരിട്ടു, അതേ പ്രോഗ്രാം തന്നെ കമ്പ്യൂട്ടറിൽ ഉപയോഗിക്കുക എന്നത് പലപ്പോഴും അസാധ്യമായിത്തീർന്നു. അപ്പോഴേക്കും ഇന്റർനെറ്റിന് ഒരു പൂർണ്ണത കൈവന്നിരുന്നു. അതോടെ സ്രഷ്ടാക്കളുടെ ശ്രദ്ധ പുതിയമേഖലയിലേക്കു തിരിഞ്ഞു. പുതിയ ലക്ഷ്യം ജാവയുടെ വളർച്ചയിൽ നിർണ്ണായകമായി. രൂപകല്പനയിലെ നിഷ്പക്ഷത(Architectural neutral) എന്ന ഗുണം ഏവരുടേയും ശ്രദ്ധ ആദ്യം തന്നെ ജാവയിലേക്കു തിരിയാൻ കാരണമായിരുന്നുവെന്നാലും ആത്യന്തികമായി ഇന്റർനെറ്റാണ് ജാവയുടെ വൻവിജയത്തിന് കാരണമായത്[11].
സണ്ണിന്റെ സംവേദനക്ഷമമായ ടി.വി. എന്ന പദ്ധതി വിജയിച്ചില്ലെങ്കിലും പുതിയൊരു കഴിവുറ്റ ഭാഷയുടെ ഉദയത്തിനതു കാരണമായി. 'ഓക്' 1995-മെയ് മാസത്തിൽ ജാവ എന്ന പുതിയ പേരിൽ താരതമ്യേന പൂർണ്ണരൂപത്തിൽ പുറത്തിറങ്ങി[11]. “ ഒരിക്കലെഴുതൂ എവിടെയും പ്രവർത്തിപ്പിക്കൂ ” ( Write Once, Run Anywhere -WORA) എന്ന ആപ്തവാക്യവുമായാണ് ജാവ വന്നത്. ജാവയുടെ ആദ്യപതിപ്പ് കേവലമൊരു ഫ്ലോപ്പി ഡിസ്കിൽ ഉൾക്കൊള്ളിക്കാമായിരുന്നു. കാതലായ ഭാഗം കേവലം നൂറ് കെ.ബി. ആണുണ്ടായിരുന്നത്. ഗണിത പ്രശ്നങ്ങൾ കൈകാര്യം ചെയ്യാനുള്ള ഭാഗമായ മാത് ലൈബ്രറി (math library) 20 കെ.ബി. മാത്രമാണുണ്ടായിരുന്നത്. മിക്ക ക്ലാസ് ലൈബ്രറികളും കൂടെ 375 കെ.ബി. മാത്രമായിരുന്നു ഉണ്ടായിരുന്നത്. ചിത്രീകരണങ്ങൾക്കായി വ്യത്യസ്ത പ്ലാറ്റ്ഫോമുകൾക്കായുണ്ടായിരുന്ന ഭാഗങ്ങളും കൂടി ചേർത്താൽ ഒരു എം.ബി. അടുത്തായിരുന്നു ജാവയുടെ വലിപ്പം[12].
പ്രത്യേകതകൾ
തിരുത്തുകബൈറ്റ്കോഡ്
തിരുത്തുകസി, സി++ തുടങ്ങിയ ഭാഷകളെല്ലാം കംപൈൽ ചെയ്യുമ്പോൾ പ്രവർത്തനക്ഷമമായ (executable) കോഡാണ് ലഭിക്കുന്നത്. എന്നാൽ ജാവ ഒരു ബൈറ്റ്കോഡ് ആണ് സൃഷ്ടിക്കുന്നത്[13][14]. ക്ലാസ് (ഉദാ: Hello.class) എന്നായിരിക്കും ഈ ബൈറ്റ്കോഡ് ഫയലിന്റെ എക്സ്റ്റെൻഷൻ. ഈ ബൈറ്റ്കോഡ് പ്രവർത്തിപ്പിക്കണമെങ്കിൽ ഒരു വിർച്ച്വൽ മെഷീൻ അത്യന്താപേക്ഷമാണ്. ജെ.വി.എം-നു മനസ്സിലാകത്തക്കവിധം അങ്ങെയറ്റം കൃത്യമാക്കി സൃഷ്ടിക്കുന്ന നിർദ്ദേശങ്ങളുടെ ഗണമാണ് ബൈറ്റ്കോഡ്[15]. പ്രോഗ്രാമിനെ പ്രവർത്തിപ്പിക്കുന്ന ബാദ്ധ്യത ബൈറ്റ്കോഡിനില്ല, പ്രവർത്തിപ്പിക്കുകയെന്നത് ജാവ വിർച്ച്വൽ മെഷീന്റെ ഉത്തരവാദിത്തമാണ്. അതുകൊണ്ട് തന്നെ ബൈറ്റ്കോഡ് വളരെ ചെറുതും നെറ്റുവർക്കുകളിലൂടെ എളുപ്പം കൈമാറ്റം ചെയ്യാനാവുന്നതുമായിരിക്കും.
ജാവ സാങ്കേതിക വിദ്യയിൽ ജാവ പ്രോഗ്രാമിങ് ഭാഷ ഇഴുകിച്ചേർന്നിട്ടുള്ളതാണ്. എന്നിരുന്നാലും മറ്റുഭാഷകൾ കമ്പൈൽ ചെയ്യുമ്പോൾ ജാവ ബൈറ്റ്കോഡ് സൃഷ്ടിക്കാനും അവ ജാവ വിർച്ച്വൽ മെഷീനുപയോഗിച്ചു പ്രവർത്തിപ്പിക്കാനുമുള്ള ശ്രമങ്ങൾ നടന്നിട്ടുണ്ട്[16][17]. അവയൊന്നും വേണ്ടത്ര പിന്തുണ നേടിയില്ല. പൈത്തൺ ഭാഷ ഉപയോഗിച്ച് ജാവ ബൈറ്റ്കോഡ് സൃഷ്ടിക്കാനുള്ള ശ്രമമായ "ജൈത്തൺ"[18] ആണ് അക്കൂട്ടത്തിൽ കുറച്ചെങ്കിലും ശ്രദ്ധ നേടിയത്.
വിർച്ച്വൽ മെഷീൻ
തിരുത്തുകജാവയിൽ എഴുതിയ പ്രോഗ്രാമിനെ കമ്പ്യൂട്ടറുമായി ബന്ധപ്പെടുത്തുന്ന ഇടനില സോഫ്റ്റ്വെയറാണ് ജാവ വിർച്ച്വൽ മെഷീൻ. ഒരു പ്രോഗ്രാമിനെ പ്രവർത്തിപ്പിക്കുവാൻ പറ്റിയ അന്തരീക്ഷം സൃഷ്ടിക്കുക എന്നതാണ് വിർച്ച്വൽ മെഷീന്റെ കടമ, ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റവുമായി സംവദിച്ച് യന്ത്രഭാഗങ്ങളെ അഥവാ കമ്പ്യൂട്ടർ ഹാർഡ്വെയറിനെ, പ്രവർത്തിച്ചു കൊണ്ടിരിക്കുന്ന പ്രോഗ്രാമിന്റെ ആവശ്യാനുസരണം ലഭ്യമാക്കുക, ഒരു കവചം പോലെ നിലനിന്നു കൊണ്ട് പ്രോഗ്രാം ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിൽ അനാവശ്യ ഇടപെടലുകൾ നടത്താതെ നോക്കുക എന്നിങ്ങനെയുള്ള കാര്യങ്ങളാണ് വിർച്ച്വൽ മെഷീൻ ചെയ്യുന്നത്. വിർച്ച്വൽ മെഷീൻ അധിഷ്ഠിതമായ പ്രോഗ്രാമിങ്ങ് ഭാഷകൾ സൃഷ്ടിക്കുന്നതിന്റെ ഉദ്ദേശ്യം ഏതു തരം ഹാർഡ്വെയറിലും, ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റത്തിലും പ്രവർത്തിക്കുന്ന പ്രോഗ്രാമുകൾ എഴുതുക എന്നുള്ളതാണ്. ഇത്തരം പ്രോഗ്രാമുകൾ ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റത്തെയോ, ഹാർഡ്വെയറിനെയോ കാണുന്നില്ല കാരണം ഇവ വിർച്ച്വൽ മെഷീനുമായി മാത്രമേ ബന്ധപ്പെടുന്നുള്ളൂ. ഓപ്പറേറ്റിങ്ങ് സിസ്റ്റവും ഹാർഡ്വെയറും മാറുന്നതിനനുസരിച്ച് പ്രോഗ്രാമുകൾ അപ്പോൾ മാറ്റിയെഴുതേണ്ടി വരില്ല, പകരം എല്ലാ സാഹചര്യങ്ങൾക്കും വേണ്ടിയുള്ള വിർച്ച്വൽ മെഷീനുകൾ ആദ്യം വികസിപ്പിക്കുകയാണ് ചെയ്യുന്നത്. ബൈറ്റ്കോഡ് ഇക്കാരണം കൊണ്ട് വഹനീയം (portable) ആണെന്നു പറയുന്നു. മെമ്മറിയിൽ പ്രോഗ്രാമർ നടത്തുന്ന അനാവശ്യ കൈകടത്തലുകളെ ജാവ വിർച്ച്വൽ മെഷീൻ അനുവദിക്കുന്നില്ല. അതുകൊണ്ട് ജാവയിൽ വൈറസുകൾ എഴുതുക തീരെ എളുപ്പമല്ല. ഓപ്പറേറ്റിങ് സിസ്റ്റത്തെ അമിതമായി സ്വാധീനിക്കാൻ വിർച്ച്വൽ മെഷീൻ അനുവദിക്കാത്തതിനാൽ ജാവ ഏറെ സുരക്ഷിതമായ പ്രോഗ്രാമിങ് ഭാഷയാണ്. പ്രോഗ്രാമുകൾ പ്രവർത്തിപ്പിക്കാനായി 'ജാവ വിർച്ച്വൽ മെഷീൻ' പ്രോഗ്രാമിനെ പ്രവർത്തനക്ഷമമായി കമ്പൈൽ ചെയ്യുകയും പ്രവർത്തിപ്പിക്കുകയുമാണ് ചെയ്യുന്നത്. ഇത് പ്രോഗ്രാം പ്രവർത്തിക്കുന്നത് മെല്ലെയാക്കുമെങ്കിലും ജാവയിൽ ഈ വൈകൽ തുലോം നിസ്സാരമാണ്. ഒരു പ്രോഗ്രാം പ്രവർത്തിക്കുമ്പോൾ വേണ്ട പലതരത്തിലുള്ള പരിശോധനകൾ നടത്തുക, പ്രവർത്തിക്കാനുള്ള സ്ഥലം അനുവദിച്ചുകൊടുക്കുക തുടങ്ങി ഒട്ടനവധി കാര്യങ്ങൾ ചെയ്യണം, അതിന്റെ കൂടെ ബൈറ്റ്കോഡ് കമ്പൈൽ ചെയ്യുകയും പ്രോഗ്രാം പ്രവർത്തിപ്പിക്കുകയും ചെയ്യേണ്ടതുണ്ട്. ഒരു വലിയ പ്രോഗ്രാമിൽ ഇതെല്ലാം ഒരുമിച്ചു ചെയ്യുക എന്നത് ഏറെ സമയമെടുക്കുന്ന ഒന്നാണ്. അതുകൊണ്ട് സൺ ജെ.വി.എമ്മിൽ ബൈറ്റ്കോഡിനായി ജസ്റ്റ് ഇൻ റ്റൈം കമ്പൈലർ (Just In Time Compiler - JIT) എന്നൊരു കമ്പൈലർ ചേർത്തിരിക്കുന്നു. ഒരു പ്രോഗ്രാം പ്രവർത്തിക്കുമ്പോൾ പ്രോഗ്രാമിന്റെ ഭാഗങ്ങളെ ആവശ്യമുള്ളപ്പോൾ മാത്രം കമ്പൈൽ ചെയ്തു പ്രവർത്തിപ്പിക്കുന്നതിനാണ് ജെ.ഐ.റ്റി. ഉപയോഗിക്കുന്നത്[19][20]. ഇത് ഉപയോക്താക്കൾക്ക് യാതൊരുവിധ താമസവും അനുഭവപ്പെടാതെ തന്നെ പ്രോഗ്രാം പ്രവർത്തിക്കുന്നതിനു സഹായിക്കുന്നു. ജാവ 2-ലാണ് ജെ.ഐ.റ്റി. രംഗപ്രവേശം ചെയ്തത്. ജാവ റൺറ്റൈം എൻവിയറന്മെന്റ് അഥവാ ജെ.ആർ.ഇ. എന്നും ജാവ സോഫ്റ്റ്വേർ എന്നും അറിയപ്പെടുന്ന സോഫ്റ്റ്വെയറിലാണ് വിർച്ച്വൽ മെഷീനുള്ളത്. ജെ.ആർ.ഇ. ആർക്കും സണ്ണിന്റെ സൈറ്റിൽ നിന്നും ശേഖരിക്കാനും പുനർവിതരണം ചെയ്യാനും കഴിയും.
ജാവയുടെ അതേ സിന്റാക്സ് ഉപയോഗിക്കുന്ന ജി.സി.ജെ. (GCJ - Gnu Compiler for Java) കമ്പൈലറിന് ജാവ പ്രോഗ്രാമുകളെ ഒബ്ജക്റ്റ് കോഡ് അഥവാ കമ്പ്യൂട്ടറുമായി സംവദിക്കാൻ പ്രാപ്തമായ കോഡായും ബൈറ്റ്കോഡ് ആയും കംപൈൽ ചെയ്യാൻ കഴിയും[21]. ജി.സി.ജെ ഉപയോഗിച്ച് ഒബ്ജക്റ്റ്കോഡ് ആണ് സൃഷ്ടിക്കുന്നതെങ്കിൽ വിർച്ച്വൽ മെഷീന്റെ ആവശ്യമില്ല. പക്ഷേ ഇങ്ങനെ ചെയ്യുമ്പോൾ ജാവപ്രോഗ്രാമുകളുടെ വഹനീയത(portability) എന്ന ഗുണം നഷ്ടപ്പെടുന്നു.
പ്രോഗ്രാമിങ്
തിരുത്തുകക്ലൈന്റ് കമ്പ്യൂട്ടറുകളിൽ ബ്രൗസറുകളിൽ പ്രവർത്തിക്കുന്ന ജാവ പ്രോഗ്രാമിനെ ആപ്ലറ്റ് എന്നു വിളിക്കുന്നു. സ്വതന്ത്രമായി പ്രവർത്തിക്കുന്ന പ്രോഗ്രാമുകളെ ആപ്ലിക്കേഷൻ എന്ന് വിളിക്കുന്നു. റ്റി.സി.പി/ഐ.പി. അനുസരിച്ച് ആപ്ലറ്റുകളും, ആപ്ലിക്കേഷനുകളും എല്ലാം സമഞ്ജസമായി ഒരുമിപ്പിച്ച് ഒരു നെറ്റ്വർക്കിൽ പടർന്നു കിടക്കുന്ന പ്രോഗ്രാമെഴുതാനും ജാവ ഉപയോഗിക്കുന്നു. പ്രോഗ്രാമിങ് ഭാഷയുടെ ആവശ്യമുള്ള ഭാഗങ്ങൾ മാത്രമേ ഒരു പ്രത്യേക പ്രോഗ്രാമിലുണ്ടാകൂ. ഇത് പ്രോഗ്രാം വളരെ ചെറുതായിരിക്കാൻ സഹായിക്കുന്നു. ഉദാഹരണത്തിന് ഒരു ജാവ ആപ്ലിക്കേഷനിൽ ആപ്ലറ്റിന്റെ അംശം ഉണ്ടായിരിക്കില്ല. പാക്കേജുകൾ എന്നറിയപ്പെടുന്ന ജാവയുടെ പ്രോഗ്രാമിങ് ഭാഷാശകലങ്ങൾ ആവശ്യാനുസരണം ചേർത്താണിത് സാധ്യമാക്കുന്നത്. ഇരുനൂറിലധികം എ.പി.ഐകൾ ജാവ സ്റ്റാൻഡേർഡ് എഡിഷനിൽ ലഭ്യമാണ്. ഒരു പ്രോഗ്രാമറെ സംബന്ധിച്ച് ഇത് പ്രോഗ്രാമിങ് കൂടുതൽ എളുപ്പമാക്കാനും പ്രോഗ്രാമിന്റെ ഘടന പുനരുപയോഗത്തിനായി ആർക്കും മനസ്സിലാകുന്നതരത്തിൽ എഴുതാനും കാരണമാകുന്നു. വെബ് പ്രോഗ്രാമിങ്ങിനായി ജാവയെ ഉപജീവിച്ച് സൃഷ്ടിച്ചിട്ടുള്ള കമ്പ്യൂട്ടർ ഭാഷയാണ് ജെ.എസ്.പി. . ജാവയുടെ നിർമ്മാണത്തിൽ സൃഷ്ടിച്ചിട്ടുള്ള പ്രത്യേകതകൾകൊണ്ട് ആർക്കും അനുബന്ധങ്ങൾ അഥവാ മറ്റ് എ.പി.ഐ.കൾ ഉണ്ടാക്കാനും അവയുടെ സഹായത്തോടെ പ്രോഗ്രാമിങ് കൂടുതൽ എളുപ്പമാക്കാനും കഴിയും. ജാവമെയിൽ (ഇ-മെയിലുകളുടെ കൈകാര്യത്തിനായുള്ള എ.പി.ഐ.), സ്റ്റ്രറ്റ്സ്, ജെ.എസ്.എഫ്. (രണ്ടും വെബ് പ്രോഗ്രാമിങ്ങിനായുള്ള ഫ്രെയിംവർക്കുകൾ ) തുടങ്ങിയവ ഇത്തരത്തിലുള്ള അനുബന്ധങ്ങൾക്കുദാഹരണമാണ്. ജാവാമെയിൽ, ജാവ 3ഡി, ജാവ സെർവ്ലറ്റ്സ്, ജാവ മീഡിയ, ജാവ ക്രിപ്റ്റോഗ്രാഫി എന്നിങ്ങനെ ഒരു പിടി അനുബന്ധങ്ങൾ ഔദ്യോഗികമായി ലഭ്യമാണ്.
ഉപയോഗത്തിനനുസരിച്ച് വ്യത്യസ്ത ക്രമീകരണങ്ങൾ അനുവദിക്കുന്ന സോഫ്റ്റ്വെയറുകൾ ഔദ്യോഗികമായി തന്നെ സൺ നിർമ്മിച്ചിട്ടുണ്ട്. എന്റർപ്രൈസ് ആപ്ലിക്കേഷനുകൾക്കായി ജാവ ഇ.ഇ.(Java EE - Java Enterprise Edition), മൊബൈൽ ആപ്ലിക്കേഷനുകൾക്കായി ജാവ എം.ഇ. (Java ME-Java Mobile Edition) എന്നിങ്ങനെ; മാനക പതിപ്പിനെ ജാവ എസ്.ഇ. (Java SE-Java Standard Edition) എന്നുവിളിക്കുന്നു. ജാവ എസ്.ഇ., ജെ.ഡി.കെ. ആയി ലഭ്യമാകുന്നു. ജെ.ഡി.കെ.യിൽ ജാവ കമ്പൈലർ, ഡീബഗ്ഗർ, ജാവാഡോക്, ജാർ ഫയൽ നിർമ്മാണത്തിനുള്ള സോഫ്റ്റ്വേർ തുടങ്ങി 23 ഉപകരണങ്ങൾ ഉൾക്കൊള്ളിച്ചിരിക്കുന്നു
എഴുത്തു രീതി
തിരുത്തുകജാവയുടെ എഴുത്തു രീതി സി പ്ലസ് പ്ലസ്സിൽ നിന്നും രൂപപ്പെടുത്തിയിട്ടുള്ളതാണ്. എങ്കിലും, സി പ്ലസ് പ്ലസിൽ നിന്നും വ്യത്യസ്തമായി, ജാവ, വസ്തുതാ അധിഷ്ഠിത പ്രോഗ്രാമുകൾക്കു (Object Oriented Programs) മാത്രമായാണ് രൂപപ്പെടുത്തിയിരിക്കുന്നത്. താഴെ ജാവയിൽ ഉള്ള ഒരു ഹലോ വേൾഡ് പ്രോഗ്രാം കൊടുത്തിരിക്കുന്നു. കമാൻഡ് ലൈനിൽ “Hello, World!" എന്നു പ്രിന്റ് ചെയ്യുകയാണ് ഈ പ്രോഗ്രാം ചെയ്യുക.
// Hello.java
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
ജി.യു.ഐ. സൃഷ്ടിക്കാനും ജാവ ഉപയോഗിച്ചു സാധിക്കും.
import javax.swing.*;
//HelloWorld.java
public class HelloWorld {
public static void main( String[] args ) {
JFrame frame = new JFrame( "ലോകമേ വന്ദനം" );
JLabel label = new JLabel("Hello World!", JLabel.CENTER );
frame.add( label );
frame.setSize( 300, 300 );
frame.setVisible( true );
}
}
ജാവ പ്ലാറ്റ്ഫോമുകൾ
തിരുത്തുകജാവയിൽ പ്രോഗ്രാമുകൾ നിർമ്മിക്കാനായും അവ സുസജ്ജമായ രീതിയിൽ വിവിധ ഉപകരണങ്ങളിൽ വിന്യസിക്കാനും ഒരു പ്രോഗ്രാമർക്ക് തിരഞ്ഞെടുക്കാൻ പാകത്തിൽ സൺ മൂന്നു മണ്ഡലങ്ങൾ അഥവാ പ്ലാറ്റ്ഫോമുകൾ ഔദ്യോഗികമായി സജ്ജീകരിച്ചിട്ടുണ്ട്. ജാവ എസ്.ഇ, ജാവ ഇ.ഇ, ജാവ എം.ഇ. എന്നിവയാണവ. ജാവ 2, 1.4 -നു ശേഷം കമ്യൂണിറ്റി പ്രോസസ് വിളിക്കപ്പെടുന്ന പ്രവർത്തനത്തിലൂടെയാണ് പ്ലാറ്റ്ഫോമുകൾ പുറത്തിറങ്ങുന്നത്.
ജാവ എസ്.ഇ.
തിരുത്തുകപൊതു ഉപയോഗത്തിനുള്ള സോഫ്റ്റ്വെയറുകൾ നിർമ്മിക്കാൻ സാധാരണ ഉപയോഗിക്കുന്ന പ്ലാറ്റ്ഫോമാണ് ജാവ എസ്.ഇ. (Java SE - Java Platform, Standard Edition). ജാവ എസ്.ഇ.യിൽ ജെ.വി.എം., പ്രോഗ്രാമിങ്ങിനായുള്ള ശേഖരം (ലൈബ്രറി അഥവാ പാക്കേജ്) തുടങ്ങിയവ ഉൾക്കൊള്ളുന്നു. ജാവയുടെ മാനകപതിപ്പാണ് ജാവ എസ്.ഇ. . ജാവയുടെ പുതിയ വേർഷൻ നിശ്ചയിക്കപ്പെടുന്നത് ജാവ എസ്.ഇ. പുറത്തിറങ്ങുന്നതോടെയാണ്. ‘ജാവ 5‘ വരെ ഇത് ജെ2എസ്.ഇ (J2SE) എന്നാണ് ജാവ എസ്.ഇ. അറിയപ്പെട്ടിരുന്നത്.
ജാവ ഇ.ഇ.
തിരുത്തുകജാവ പ്രോഗ്രാമിങ് ഭാഷ ഉപയോഗിച്ചുള്ള സെർവർ സൈഡ് പ്രോഗ്രാമിങ്ങിനായി സൃഷ്ടിച്ചിട്ടുള്ള പ്ലാറ്റ്ഫോമാണ് ജാവ ഇ.ഇ. അഥവാ ജാവ എന്റർപ്രൈസ് എഡിഷൻ (Java EE - Java Platform, Enterprise Edition), വിവിധ കമ്പ്യൂട്ടറുകളിലേക്കായി വിന്യസിക്കാൻ പ്രാപ്തമായ രീതിയിൽ പ്രോഗ്രാമുകളെ ഒരുക്കാനുള്ള കഴിവ് ഈ മണ്ഡലത്തിൽ ഉൾക്കൊള്ളിച്ചിരിക്കുന്നു. ജാവ ഇ.ഇ.യെ അതിന്റെ മാനദണ്ഡങ്ങൾക്കനുസരിച്ചുമാത്രമേ ഉപയോഗിക്കാൻ കഴിയുകയുള്ളു. അതുകൊണ്ട് തന്നെ ജാവ കമ്മ്യൂണിറ്റി പ്രോസസ് നിർദ്ദേശിച്ചിട്ടുള്ള മാർഗ്ഗരേഖകൾ പ്രകാരം നിർമ്മിച്ച ജാവ ഇ.ഇ. ആപ്ലിക്കേഷൻ മാത്രമേ അതിനു യോജ്യമായി കണക്കാക്കാറുള്ളു. ജാവ എസ്.ഇ.യിലുള്ള എ.പി.ഐ.കൾക്കു പുറമേ സെർവ്ലറ്റ്, എന്റർപ്രൈസ് ജാവാബീൻ തുടങ്ങി ഒരു കൂട്ടം എ.പി.ഐകൾ ജാവ ഇ.ഇ.യിൽ കൂടുതലായി ഉണ്ട്. ജാവ 5-നു മുമ്പ് ജാവ ഇ.ഇ., ജെ2ഇ.ഇ (J2EE) എന്നറിയപ്പെട്ടു വന്നു.
ജാവ എം.ഇ.
തിരുത്തുകപ്രവർത്തനശേഷികുറഞ്ഞ ഉപകരണങ്ങൾക്കായുള്ള ജാവയുടെ ഒരു ഉപഗണമാണ് ജാവ എം.ഇ. (Java ME - Java Platform, Micro Edition). മറ്റ് പ്ലാറ്റ്ഫോമുകളിൽ നിന്നും ജാവ എം.ഇ.യ്ക്കുള്ള പ്രധാനവ്യത്യാസം ജാവ എം.ഇ. പ്രോഗ്രാമുകൾ പ്രവർത്തിക്കാനാവശ്യമായ റൺറ്റൈം എൻവയേണ്മെന്റ് സൗജന്യമായി സൺ നൽകുന്നില്ല എന്നതാണ്. ഇന്ന് റഫ്രിജറേറ്റർ, അലക്കുയന്ത്രം, മൊബൈൽ ഫോൺ തുടങ്ങി ഒട്ടനവധി നിത്യോപയോഗ ഉപകരണങ്ങളിൽ ജാവ. എം.ഇ. ഉപയോഗിക്കുന്നു. 'ജാവ 5' പുറത്തിറങ്ങുന്നതിനുമുമ്പ് ജാവ എം.ഇ.യും ജെ2എം.ഇ.(J2ME) എന്നാണ് അറിയപ്പെട്ടിരുന്നത്.
ഗുണങ്ങൾ
തിരുത്തുകജാവയെ നിർവ്വചിച്ചവർ ജാവയുടെ ഗുണങ്ങൾ എന്തൊക്കെയാണെന്ന് വ്യക്തമായി പറഞ്ഞിട്ടുണ്ട്[22]:-
ലളിതം : ഒരു നല്ലപ്രോഗ്രാമർക്ക് ജാവയിലെഴുതിയ പ്രോഗ്രാം എന്താണെന്ന് പെട്ടെന്നു മനസ്സിലാക്കാൻ കഴിയും. ജാവയിൽ പരിചയമില്ലെങ്കിൽ തന്നെയും സി, സി++ തുടങ്ങിയ പ്രോഗ്രാമിങ് ഭാഷകൾ ഏതെങ്കിലും വശമുള്ളയാളാണെങ്കിൽ ജാവയുടെ കോഡിങ് രീതി അപ്രാപ്യമായിരിക്കില്ല.
ഒബ്ജക്റ്റ് ഓറിയന്റഡ് : ജാവ പോഗ്രാമുകൾ പൂർണ്ണമായും ഒബ്ജക്റ്റ് ഓറിയന്റഡാണ്. ഇത് പ്രോഗ്രാമുകൾ ലളിതമാകാനും പുനരുപയോഗത്തിനു സഹായകരമാകാനും തെറ്റുകൾ കണ്ടെത്താനും സഹായിക്കുന്നു. എന്നാൽ സി++ൽ ഉണ്ടായിരുന്നതു പോലെ മൾട്ടിപ്പിൾ ഇൻഹെറിറ്റൻസ് ജാവയിൽ നേരിട്ട് അനുവദിക്കുന്നില്ല. അത് പ്രോഗ്രാം കൂടുതൽ സങ്കീർണ്ണമാകാതിരിക്കാൻ സഹായിക്കുന്നു.
ചിതറിക്കിടക്കുന്നത് (Distributed) : റ്റി.സി.പി./ഐ.പി. ഉപയോഗിച്ച് ഒരു നെറ്റ്വർക്കിനാവശ്യമുള്ള പ്രോഗ്രാമുകൾ എഴുതാൻ ജാവ ഉപയോഗിച്ചു കഴിയും. അതിനായുള്ള വിപുലമായ ശേഖരങ്ങൾ ജാവയിൽ ഇണക്കിച്ചേർത്തിരിക്കുന്നു. ജാവ ആപ്ലിക്കേഷനുകൾക്ക് യൂ.ആർ.എല്ലുകൾ ഉപയോഗിച്ച് ഫയൽ സിസ്റ്റങ്ങളെ സമീപിക്കാൻ കഴിയും.
അബദ്ധരഹിതം (Robust) : പ്രോഗ്രാമുകളിലെ തെറ്റുകുറ്റങ്ങൾ എപ്രകാരമെല്ലാം കുറയ്ക്കാമോ ആ വഴികളെല്ലാം ജാവയിൽ ചേർത്തിട്ടുണ്ട്. ഉണ്ടാകാനിടയുള്ള തെറ്റുകളെ മുമ്പേ തിരിച്ചറിയാനും അവയെ ഒഴിവാക്കാനുമുള്ള വഴികൾ ജാവയിലുണ്ട്. മെമ്മറിയുടെ കൈകാര്യം മുമ്പൊക്കെ പ്രോഗ്രാമറുടെ മുന്നിലെ കീറാമുട്ടികളായിരുന്നുവെങ്കിൽ ജാവ അതു സ്വയം കൈകാര്യം ചെയ്യുന്നതിനാൽ ഉപയോഗം ഏറെ ഏളുപ്പമാക്കുന്നു. ഉപയോഗിച്ചശേഷം പ്രയോജനരഹിതമാകുന്ന മെമ്മറിയെ പുനരുപയോഗിക്കാൻ ഓട്ടോമാറ്റിക് ഗാർബേജ് കളക്ഷൻ എന്ന വിദ്യ ജാവ ഉപയോഗിക്കുന്നു. കമ്പൈൽ ചെയ്യുമ്പോഴും പ്രവർത്തിപ്പിക്കുമ്പോഴും ജാവ കോഡിങ് പരിശോധിക്കുന്നുണ്ട്. ഇത് പ്രോഗ്രാമറുടെ കണ്ണിൽ പെടാതെ പോകുന്ന തെറ്റുകളെ തിരിച്ചറിയാൻ സഹായകമാകുന്നു. വ്യത്യസ്തമായ സാഹചര്യങ്ങളിൽ ഒരേ ജാവ പ്രോഗ്രാം എപ്രകാരമൊക്കെ പ്രവർത്തിക്കാനിടയുണ്ടെന്നു മുൻകൂട്ടി പറയാൻ കഴിയും. പ്രവർത്തന സമയത്തുണ്ടാകാവുന്ന ഒഴിവാക്കേണ്ട പ്രശ്നങ്ങൾ അഥവാ എക്സെപ്ഷനുകൾ (Exceptions- ഉദാ:പൂജ്യം കൊണ്ട് ഹരിക്കുക) തികച്ചും ഒബ്ജക്റ്റ് ഓറിയന്റഡ് രീതിയിൽ കൈകാര്യം ചെയ്യാൻ ഈ പ്രോഗ്രാമിങ് ഭാഷയിൽ കഴിയും.
സുരക്ഷിതം : വ്യത്യസ്ത വ്യവസ്ഥകളിൽനിന്നും നെറ്റ്വർക്കുകളിലും പ്രവർത്തിക്കാൻ പ്രാപ്തമായ പ്രോഗ്രാമുകളാണ് ജാവയിൽ എഴുതുന്നത്, അതുകൊണ്ട് ജാവ സുരക്ഷിതമായ ഒരു ഭാഷയായാണ് സൃഷ്ടിച്ചിരിക്കുന്നത്[23].
ആർക്കിറ്റെക്ചർ നിഷ്പക്ഷം: ജാവ കമ്പൈലർ ബൈറ്റ്കോഡിനെ സൃഷ്ടിക്കുകയും ആ ബൈറ്റ്കോഡിനെ ഒരു ജെ.വി.എം പ്രവർത്തിപ്പിക്കുകയും ചെയ്യുന്നതുകൊണ്ട് പ്രോസസറിന്റേയോ മറ്റേതെങ്കിലും ഹാഡ്വെയറിലോ ഉണ്ടാകുന്ന മാറ്റം ജാവ പ്രോഗ്രാമുകളെ തെല്ലും ബാധിക്കില്ല. മറ്റുഭാഷകളിൽ ഒരു പ്രത്യേക യന്ത്രത്തിനായി കമ്പൈൽ ചെയ്യുന്ന പ്രോഗ്രാം അതേ യന്ത്രത്തിന്റെ ഭാഗങ്ങൾ മാറിയാൽ പോലും പ്രവർത്തിക്കാതെ വരാം. എന്നാൽ ജാവയ്ക്കീ പ്രശ്നമില്ല. ജാവ വിർച്ച്വൽ മെഷീനുമായി മാത്രമേ ആശയവിനിമയം നടത്തുന്നുള്ളു എന്നതാണിതിനു കാരണം. ജാവ വിർച്ച്വൽ മെഷീനുള്ള ഏതൊരു കമ്പ്യൂട്ടറിലും യന്ത്രത്തിലും ഏതൊരു ജാവ പ്രോഗ്രാമും പ്രവർത്തിക്കും.
വഹനീയം (Portable) : ജാവ പ്രോഗ്രാമുകൾ ബൈറ്റ്കോഡായതിനാൽ ജെ.വി.എം. ഉള്ള ഏതൊരു ഉപകരണത്തിലേക്കും മാറ്റാനും അവിടെ വച്ച് പ്രവർത്തിപ്പിക്കാനും കഴിയും.
ഇടനിലവത്കരിക്കപ്പെട്ടത് (Interpreted) : ജാവ പ്രോഗ്രാമുകൾ കമ്പ്യൂട്ടർ ഹാഡ്വെയറിനേയോ ഓപ്പറേറ്റിങ് സിസ്റ്റത്തിനേ തന്നെയോ പ്രവർത്തിക്കാനായി കാണുന്നില്ല. ഇത് പ്രോഗ്രാമുകൾ സുരക്ഷിതവും, വഹനീയവും, ആർക്കിറ്റെക്ചർ നിഷ്പക്ഷവുമാക്കുന്നു.
അതിവേഗ പ്രവർത്തനം : സാധാരണഗതിയിൽ ഇടനിലവത്കരിക്കപ്പെട്ട പ്രോഗ്രാമുകൾ അത്രവേഗത്തിൽ പ്രവർത്തികാനിടയില്ല. എന്നാൽ ജാവ ജെ.ഐ.റ്റി. തുടങ്ങിയ വിദ്യകൾ ഉപയോഗിച്ച് മറ്റ് പ്രോഗ്രാമിങ് ഭാഷകളോട് കിടപിടിക്കത്തക്ക വേഗത്തിൽ പ്രോഗ്രാമുകളെ പ്രവർത്തിപ്പിക്കുന്നു.
മൾട്ടി ത്രെഡെഡ് : ഒരു പ്രോഗ്രാമർക്ക് പ്രോഗ്രാമിനെ വിവിധ ഭാഗങ്ങളായി തിരിക്കാനും ഈ ഭാഗങ്ങളെ ഒരേസമയം പ്രവർത്തിപ്പിക്കാനും അങ്ങനെ പ്രോഗ്രാമിന്റെ വേഗത വർദ്ധിപ്പിക്കാനും കഴിയും, പ്രോഗ്രാം ഭാഗങ്ങൾക്ക് ഫലപ്രദമായ രീതിയിൽ പ്രോസസ്സറിൽ പ്രവർത്തിക്കാനുള്ള സമയം പങ്ക് വെച്ചു നൽകിയാണിത് സാധ്യമാക്കുന്നത്. ജാവയുടെ ഈ ഗുണമാണ് മൾട്ടിത്രെഡിങ്.
കാലാനുസൃതം (Dynamic) : ഉദിച്ചുവന്നുകൊണ്ടിരിക്കുന്നതോ വന്നേക്കാവുന്നതോ ആയ ഏതൊരു സാങ്കേതികവിദ്യയേയും സ്വാംശീകരിക്കാൻ പ്രാപ്തമായ വിധത്തിലാണ് ജാവ സൃഷ്ടിച്ചിരിക്കുന്നത്. അതുകൊണ്ട് ജാവ കാലഹരണപ്പെട്ട് പോകാനിടയില്ല. ഉദാഹരണത്തിന് മുൻ പ്രോഗ്രാമിങ് ഭാഷകൾ ആസ്കി അക്ഷരങ്ങളെയായിരുന്നു ഉപയോഗിച്ചിരുന്നത്. അതുകൊണ്ട് അവയ്ക്ക് ലാറ്റിൻ അക്ഷരങ്ങൾക്കപ്പുറത്തേയ്ക്ക് പോകാൻ കഴിയില്ലായിരുന്നു. ജാവ യൂണീകോഡ് അംഗീകരിച്ചിട്ടുള്ള അക്ഷരങ്ങളെയെല്ലാം പിന്തുണയ്ക്കുന്നു. അതുകൊണ്ട് ഒരു ഉപയോക്താവിനാവശ്യമുള്ള ഭാഷയിൽ സോഫ്റ്റ്വെയർ നിർമ്മിച്ചു നൽകാൻ ജാവ ഉപയോഗിച്ചു കഴിയും.
ജാവയും വെബും
തിരുത്തുകഇന്ന് ജാവയുടെ സാന്നിദ്ധ്യം ഏറ്റവും കൂടുതലുള്ളത് വെബ്ബിലാണ്. വെബ് സെർവീസുകൾക്കായോ, ഇന്റർനെറ്റ് ഉപയോഗിച്ച് വിവിധ കമ്പ്യൂട്ടറുകളിൽ പ്രവർത്തിക്കുന്നവയായോ, റ്റി.സി.പി./ഐ.പി ഉപയോഗിച്ച് പ്രവർത്തിക്കുന്നവയായോ ആണ് ബഹുഭൂരിഭാഗം പ്രോഗ്രാമുകളും രൂപകല്പന ചെയ്തിരിക്കുന്നത്. ജാവയുടെ ആരംഭകാലത്ത് വെബ്ബിൽ ക്ലയന്റ് ഭാഗത്തുനിന്നും ജാവയ്ക്ക് നല്ല പിന്തുണലഭിച്ചിരുന്നു. പിന്നീട് മൈക്രോസോഫ്റ്റുമായുണ്ടായ തർക്കത്തെത്തുടർന്ന് ക്ലയന്റ് ഭാഗത്തു നിന്നുമുള്ള പിന്തുണ കുറഞ്ഞുപോയി. പ്രധാനമായും ആപ്ലറ്റുകൾ എന്നറിയപ്പെടുന്ന ജാവ പ്രോഗ്രാമുകൾ വെബ് ക്ലയന്റിൽ ഉപയോഗിക്കുന്നു. ജാവയുടെ ഔദ്യോഗിക അനുബന്ധമായി ലഭിക്കുന്ന സെർവ്ലറ്റോ സെർവ്ലറ്റുകളുടെ കൂടുതൽ വിപുലീകരിച്ച ഫ്രെയിംവർക്കുകളോ വെബ് സെർവറുകളിൽ ഉപയോഗിക്കുന്നു. ഇന്റർനെറ്റിലോ മറ്റേതെങ്കിലും നെറ്റുവർക്കിലോ ആപ്ലിക്കേഷനുകൾ കൂടുതൽ വിപുലമായി ഉപയോഗിക്കാൻ സമീപകാലത്ത് വികസിപ്പിച്ചെടുത്ത ജാവ വെബ് സ്റ്റാർട്ട് എന്ന സാങ്കേതിക വിദ്യയും ഉപയോഗിച്ചുവരുന്നു.
ആപ്ലെറ്റ്
തിരുത്തുകമറ്റുള്ള പ്രോഗ്രാമുകളിൽ സന്നിവേശിക്കപ്പെടുന്ന ചെറിയ ജാവ പ്രോഗ്രാമുകളെയാണ് പൊതുവെ ജാവ ആപ്ലെറ്റുകൾ എന്ന് പറയുന്നത്, വെബ് പേജുകളിൽ സന്നിവേശിക്കപ്പെട്ട രീതിയിലാണ് ഇവ കൂടുതലും ഉപയോഗിക്കപ്പെടുന്നത്. ആപ്ലറ്റ് ഉപയോഗിച്ച് കാണാൻ ഭംഗിയുള്ള ഭാഗങ്ങൾ വെബ്താളിൽ സൃഷ്ടിക്കാം എന്നതിനാലാണിത്. സാധാരണ എച്ച്.റ്റി.എം.എൽ. ഉപയോഗിച്ച് ചെയ്യാൻ കഴിയാത്ത വീഡിയോ ഉപയോഗം,ത്രിമാന ചിത്രീകരണം തുടങ്ങിയ കാര്യങ്ങൾക്കായാണ് ആപ്ലറ്റ് വെബിൽ ഉപയോഗിക്കുന്നത്. ആപ്ലറ്റുകൾ ജാവയുടെ എല്ലാ ഗുണങ്ങളും ഉൾക്കൊള്ളുന്നതും അതേ സമയം വെബ് ബ്രൌസർ അനുവദിച്ചു നൽകുന്ന പരിധിയ്ക്കപ്പുറത്തേയ്ക്ക് പോകാൻ ശേഷിയില്ലാത്തവയുമായിരിക്കും. അതുകൊണ്ട് ആപ്ലറ്റുകൾ ക്ലൈന്റിന്റെ സുരക്ഷ സ്വയം ഉറപ്പു നൽകുന്നു. ജാവ പ്ലഗ്-ഇൻ ഉള്ള ബ്രൌസറുകളിലാണ് ജാവ ആപ്ലറ്റുകൾ പ്രവർത്തിക്കുക.
എന്നിരുന്നാലും ഇപ്പോൾ വെബിൽ ആപ്ലറ്റ് സാധാരണമല്ല. 1990-കളുടെ അവസാനത്തോടെ കാണാൻ ഭംഗിയുള്ള ഭാഗങ്ങൾ വെബിൽ ഉൾപ്പെടുത്താൻ കൂടുതൽ സാങ്കേതിക വിദ്യകൾ ഉണ്ടായതും, വെബ് ബ്രൌസറുകൾ ജാവ ഇല്ലാതെ പുറത്തിറങ്ങാൻ തുടങ്ങിയതും, എന്റർപ്രൈസ് ആപ്ലിക്കേഷനുകൾക്കായി ജാവ കൂടുതലായി ഉപയോഗിക്കാൻ തുടങ്ങിയതുമാണ് ഇതിനു കാരണം[24].
സെർവ്ലെറ്റ്
തിരുത്തുകസെർവർ കമ്പ്യൂട്ടറുകളിൽ പ്രവർത്തിക്കുന്ന ജാവ പ്രോഗ്രാമുകളാണ് ജാവ സെർവ്ലെറ്റുകൾ. ജാവയുടെ ഔദ്യോഗിക അനുബന്ധമായാണ് സെർവ്ലറ്റ് എ.പി.ഐ. ലഭിക്കുന്നത്. ജാവ ഇ.ഇ.യോടൊപ്പം സെർവ്ലറ്റ് എ.പി.ഐ. സ്വതേ ലഭിക്കുന്നു. ഒരേ കമ്പ്യൂട്ടറിലുള്ളതോ മറ്റുള്ള കമ്പ്യൂട്ടറിൽ പ്രവർത്തിക്കുന്നതോ ആയ പ്രോഗ്രാമുകളിൽ നിന്ന് (പ്രധാനമായും വെബ് ബ്രൗസറുകൾ) വരുന്ന നിർദ്ദേശങ്ങൾക്കനുസരിച്ച് സേവനം പ്രദാനം ചെയ്യുന്ന (വെബ് താളുകൾ തയ്യാറാക്കുക പോലുള്ള) ജാവ പ്രോഗ്രാമുകളാണ് സെർവ്ലെറ്റുകൾ. സെർവ്ലറ്റുകൾ പ്രവർത്തിപ്പിക്കാൻ ജാവ സെർവർ പ്രോഗ്രാമുകൾ ആവശ്യമാണ്. ജെബോസ്, വെബ്ലോജിക്, റ്റോംകാറ്റ് വെബ് സെർവർ, സൺ‘സ് ജാവ വെബ് സെർവർ തുടങ്ങിയവയാണ് ഇത്തരത്തിൽ ഉപയോഗിക്കാൻ കഴിയുന്ന പ്രധാന വെബ്സെർവറുകൾ.
ജാവ വെബ് സ്റ്റാർട്ട്
തിരുത്തുകവെബ് സ്റ്റാർട്ട് എ.പി.ഐ. വെബ് ബ്രൌസറിൽ നിന്നുകൊണ്ട് തന്നെ ആപ്ലിക്കേഷനുകൾ ക്ലയന്റ് കമ്പ്യൂട്ടറുകളിൽ ഇൻസ്റ്റോൾ ചെയ്യാനനുവദിക്കുന്നു. വെബ് സ്റ്റാർട്ടിന് സ്വയം സോഫ്റ്റ്വെയറിനെ പുതുക്കാനും കഴിയും. ജെ.എൻ.എൽ.പി. (JNLP-Java Network Launching Protocol) എന്ന പ്രോട്ടോക്കോളാണ് ഇതിനെല്ലാം വെബ് സ്റ്റാർട്ട് ഉപയോഗിക്കുന്നത്. വെബ് സ്റ്റാർട്ട് ഉപയോഗിച്ച് ഇൻസ്റ്റാൾ ചെയ്യുന്ന സോഫ്റ്റ് വെയറുകൾക്ക് ജാവ റൺറ്റൈമിന്റെ സുരക്ഷാ മാനദണ്ഡങ്ങൾക്കുള്ളിൽ നിന്നുകൊണ്ട് സാധാരണ സോഫ്റ്റ്വെയറുകളെ പോലെ പ്രവർത്തിക്കാനുള്ള കഴിവുണ്ടായിരിക്കും[3]
നാൾവഴി
തിരുത്തുകപതിപ്പ് | വർഷം | ക്ലാസ്സുകളും ഇന്റർഫേസുകളും | മെത്തേഡുകളും ഫീൽഡുകളും | പുതുമ |
---|---|---|---|---|
1.0 | 1995 | 212 | 2125 | |
1.1 | 1997 | 504 | 5478 | ഇന്നർ ക്ലാസ്സുകൾ |
1.2 | 1998 | 1781 | 20935 | സ്വിങ്, കളക്ഷൻസ് |
1.3 | 2000 | 2130 | 23901 | പ്രവർത്തന മെച്ചപ്പെടുത്തലുകൾ |
1.4 | 2002 | 3020 | 32138 | അസേർഷനുകൾ, എക്സ്.എം.എൽ. |
5 | 2004 | -- | -- | ജനറിക് ക്ലാസ്, മെച്ചപ്പെട്ട ഫോർ ലൂപ്, ഓട്ടോ-ബോക്സിങ്, എന്യൂമറേഷൻ |
6 | 2006 | -- | -- | ലൈബ്രറിയിലെ മെച്ചപ്പെടുത്തലുകൾ |
7 | 2011 | -- | -- | മെച്ചപ്പെട്ട ആപ്ലിക്കേഷൻ പ്രോഗ്രാമിങ് ഇന്റർഫേസ് |
സൺ നിർമ്മിച്ചു വിതരണം ചെയ്യുന്ന ജെ.ഡി.കെ. ആണ് ജാവയുടെ പതിപ്പുകളുടെ മാനകം. ജാവയുടെ ആദ്യരൂപമായിരുന്നു 1995 മെയിൽ ഇറങ്ങിയ ജാവ 1.0. ആപ്ലറ്റുകളും, ലഘുവായ ആപ്ലിക്കേഷനുകളുമെല്ലാമെഴുതാൻ ജാവ 1.0 ഉപയോഗിച്ചു സാധിക്കുമായിരുന്നു. ജാവയുടെ തൊട്ടടുത്ത വേർഷൻ 1.1 ഇറങ്ങിയതോടെ ജാവ 1.0 കാലഹരണപ്പെട്ടു.
ജെ.ഡി.കെ. 1.1 തൊട്ടുപിറകേ തന്നെ വന്നു. ജി.യു.ഐ നിർമ്മിക്കാനുള്ള അബ്സ്റ്റ്രാക്റ്റ് വിൻഡോയിങ് റ്റൂൾകിറ്റ് (AWT) പാക്കേജ്, ഇവന്റ് പാറ്റേണുകൾ, ഇന്നർ ക്ലാസ്സുകൾ തുടങ്ങി ഒട്ടനവധി നിർണ്ണായക കൂട്ടിച്ചേർക്കലുകളുമുണ്ടായിരുന്നു. നെറ്റ്സ്കേപ്, ഇന്റർനെറ്റ് എക്സ്പ്ലോറർ ബ്രൌസറുകൾ അക്കാലത്ത് ജാവയെ പിന്തുണക്കുമായിരുന്നു. പിന്നീട് മൈക്രോസോഫ്റ്റ് ജാവയ്ക്കുള്ള പിന്തുണ ഇന്റർനെറ്റ് എക്സ്പ്ലോററിനോടൊപ്പം വിതരണം ചെയ്യുന്നത് നിർത്തിക്കളഞ്ഞു.
സൺ “ജാവ 2“എന്നു വിളിച്ച വലിയൊരു മാറ്റമാണ് 1998 ഡിസംബറിൽ പുറത്തിറങ്ങിയ എസ്.ഡി.കെ.1.2-വിൽ ഉണ്ടായിരുന്നത്. പല മെച്ചപ്പെടുത്തലുകളും കൂട്ടിച്ചേർക്കലുകളും ഈ പതിപ്പിലുണ്ടായിരുന്നു. ദ്വിമാന ചിത്രീകരണത്തിനായി സ്വിങ് (Swing) എന്ന ഒരു പൂർണ്ണമായ ആപ്ലിക്കേഷൻ പ്രോഗ്രാമിങ് ഇന്റർഫേസ്(API) കോർ എ.പി.ഐയിൽ ചേർത്തതാണ് ഏറ്റവും വലിയ മാറ്റം. പഴയ അബ്സ്റ്റ്രാക്റ്റ് വിൻഡോയിങ് റ്റൂൾകിറ്റിനെ അധികരിക്കുന്ന കഴിവുകൾ സ്വിങ്ങിനുണ്ട്. കളക്ഷൻ എ.പി.ഐയുടെ ശരിയായ സംയോജനവും ജാവ 2-വിൽ ചേർത്തിരുന്നു. ഈ വേർഷനിൽ അതുവരെ ജെ.ഡി.കെ. (JDK-Java Development Kit) എന്നു വിളിച്ചിരുന്ന ഡിവലപ്മെന്റ് കിറ്റിനെ സൺ എസ്.ഡി.കെ.(SDK-Software Developement Kit) എന്നു വിളിക്കാൻ തുടങ്ങി.
2000 ആരംഭത്തിൽ 1.3 പുറത്തുവന്നു. പ്രവർത്തനക്ഷമത മെച്ചപ്പെടുത്താനുള്ള അനവധി ചെറുമാറ്റങ്ങളോടെയായിരുന്നു ഈ പതിപ്പു പുറത്തുവന്നത്. സ്വിങിന്റെ പ്രവർത്തനത്തിൽ മെച്ചപ്പെട്ട വേഗത മിക്ക പ്ലാറ്റ്ഫോമുകളിലും ജാവ ഈ പതിപ്പോടെ കൈവരിച്ചു.
കാത്തിരുന്ന പലസൗകര്യങ്ങളോടെയുമാണ് 2002-ൽ ജാവ 1.4 പുറത്തിറങ്ങിയത്. പുതിയ ഐ/ഒ സിസ്റ്റം, എ.ഡബ്ല്യു.റ്റിയിലും സ്വിങിലും ഉണ്ടായ അടിസ്ഥാനപരമായ മാറ്റം എന്നിവയാണിതിൽ പ്രധാനം.
2004-ൽ ഇറങ്ങിയ ജെ.ഡി.കെ 1.5-വിൽ കാതലായ മാറ്റങ്ങളുണ്ടായിരുന്നു. കോഡിങ് ശൈലിയെ വരെ സ്വാധീനിക്കാവുന്ന മാറ്റങ്ങൾ ഈ പതിപ്പിലുണ്ടായി. ജെനെറിക്സ്, എനുമറേഷൻസ്, സ്റ്റാറ്റിക് ഇംപോർട്ട്സ്, ഓട്ടോബോക്സിങ്, അൺബോക്സിങ് തുടങ്ങി ഒട്ടുവളരെ പുതിയ പ്രോഗ്രാമിങ് ശൈലികൾ ജാവയും ഈ പതിപ്പോടെ ഉപയോഗിക്കാൻ തുടങ്ങി. സ്റ്റാൻഡേർഡ് എക്സ്.എം.എൽ. എ.പി.ഐയിൽ വലിയതോതിലുള്ള കൂട്ടിച്ചേർക്കലുകളും ഈ മാറ്റത്തിലുണ്ടായിരുന്നു. ഇവയിൽ ചില രീതികൾ സി ഷാർപ്പിൽ നിന്നും കടംകൊണ്ടതും മറ്റുചിലത് ജാവ കമ്യൂണിറ്റി വികസിപ്പിച്ചെടുത്തതുമായിരുന്നു. ഈ മാറ്റത്തിൽ ജാവയെ ‘ജാവ 5‘ എന്നും ഡിവലപ്മെന്റ് കിറ്റിനെ ജെ.ഡി.കെ എന്നും സൺ വിളിച്ചു.
ക്ലാസ്സ് ഫയലിന്റെ പ്രവർത്തനസമയത്തുള്ള പരിശോധനയിലെ വലിയവ്യത്യാസവും, സ്വിങ്, ആർ.എം.ഐ., ജാവ ഡി.ബി. തുടങ്ങി നിരവധി മാറ്റങ്ങളുമായാണ്[25] 2006 ഡിസംബർ 6-നു ജാവ 6 പുറത്തിറങ്ങിയത്.
ജാവയുടെ ഏറ്റവും പുതിയ പതിപ്പായ ജാവ 7, 2011 ജൂലൈ 7 നു ഒറാക്കിൾ പുറത്തിറക്കി[26]. മെച്ചപ്പെടുത്തിയ ഐ/ഒ, ഗ്രാഫിക്സ്, നെറ്റ് വർക്കിംഗ് ലൈബ്രറി, ഒന്നിൽ കൂടുതൽ പ്രവർത്തനങ്ങൾ ഒരുമിച്ചു ചെയ്യാനുള്ള കഴിവ് മെച്ചപ്പെടുത്തി, ചെറിയ ഭാഷാപരമായ മികവുകൾ, പ്രവർത്തന സമയത്ത് ഉപയോഗിക്കാവുന്ന പ്രോഗ്രമുകൾക്കുള്ള(Dynamic Programs) വേണ്ട പിന്തുണ ഇവയൊക്കെയാണ് ജാവ 7ലെ പ്രധാന മാറ്റങ്ങൾ.
ജാവയുടെ അടുത്ത പതിപ്പായ ജാവ 8, 2013 പകുതിയോടെ പുറത്തിറങ്ങുമെന്ന് പ്രതീക്ഷിക്കുന്നു. ഇതിന്റെ ആദ്യ രൂപം 2012 ഡിസംബർ 18നു പുറത്തിറങ്ങി [27].
വികസനം
തിരുത്തുകഇന്ന് ജാവയുടെ വികസനം നടക്കുന്നത് ജാവ കമ്മ്യൂണിറ്റി പ്രോസസ് എന്നറിയപ്പെടുന്ന സൺ മൈക്രോസിസ്റ്റംസിന്റെ മേൽനോട്ടത്തിൽ നടക്കുന്ന ഒരു പ്രക്രിയയിലൂടെയാണ്[28]. കമ്പനികളോ വ്യക്തികളോ ആയ സന്നദ്ധസേവകരുടെ ശ്രമഫലമായാണ് ജാവയുടെ വികസനം നടക്കുന്നത്. ജാവയുടെ പകർപ്പവകാശം സണ്ണിന്റെ കൈയ്യിൽ തന്നെയാണെങ്കിലും 2007 മേയ് എട്ടോടെ ജാവയുടെ അടിസ്ഥാന കോഡിൽ ബഹുഭൂരിഭാഗവും സൺ “ഗ്നൂ സാർവ്വജനിക അനുവാദപത്രം“ (GNU General Public License-GPL) പ്രകാരം സ്വതന്ത്രവും ഓപ്പൺ സോഴ്സും ആയി നൽകി[29]. സണ്ണിന്റെ കൈയ്യിൽ പകർപ്പവകാശമില്ലാത്ത ചില ഭാഗങ്ങൾ മാത്രമേ ഇനി സ്വതന്ത്രമാകാനുള്ളു[30].
ജാവയും മൈക്രോസോഫ്റ്റും
തിരുത്തുകആദ്യകാലത്ത് ജാവയുടെ നിർമ്മാണപ്രവർത്തനങ്ങളിൽ മൈക്രോസോഫ്റ്റും പങ്കാളിയായിരുന്നു. പിന്നീട് മൈക്രോസോഫ്റ്റ് വിൻഡോസിനൊപ്പം വിതരണം ചെയ്തുവന്ന ജാവ സോഫ്റ്റ്വെയറിൽ ശരിക്കുമുള്ള ജാവയിലെ ചില ഭാഗങ്ങൾ പ്രവർത്തിക്കില്ലായിരുന്നു. അതേസമയം മൈക്രോസോഫ്റ്റിന്റെ സ്വന്തമായ പ്രത്യേകതകളെ അത് പിന്തുണക്കുകയും ചെയ്യുമായിരുന്നു. ഇത് ജാവയുടെ ഉപയോഗാനുമതിയുടെ ലംഘനമായതിനാൽ സൺ മൈക്രോസോഫ്റ്റിനെതിരേ കോടതിനടപടികൾ സ്വീകരിക്കുകയും 2 കോടി ഡോളർ നഷ്ടപരിഹാരം നേടുകയും ചെയ്തു[31] [12]. മൈക്രോസോഫ്റ്റ് ജാവ വിൻഡോസിനൊപ്പം വിതരണം ചെയ്യുന്നതു നിർത്തി. പിന്നീട് ഇന്റർനെറ്റ് എക്സ്പ്ലോററിൽ നിന്നും ആപ്ലറ്റുകൾക്കുള്ള പിന്തുണ നീക്കം ചെയ്യുകയും ചെയ്തു. എന്നാൽ സൺ തരുന്ന പ്ലഗ്ഗിന്നുകൾ ഉപയോഗിച്ച് ഇന്റർനെറ്റ് എക്സ്പ്ലോററിൽ ആപ്ലറ്റുകൾ പ്രവർത്തിപ്പിക്കാവുന്നതാണ്. ജാവയിലെ മൈക്രോസോഫ്റ്റിന്റെ പങ്കാളിത്തവും കോടതിയിലെത്തിയിട്ടുണ്ട്. വ്യവസായങ്ങൾ തമ്മിലുള്ള മത്സരത്തെ അതിജീവിക്കാൻ മോശപ്പെട്ട രീതികൾ മൈക്രോസോഫ്റ്റ് പുറത്തെടുത്തു എന്ന ഗൗരവകരമായ ആരോപണമാണ് അന്നുന്നയിക്കപ്പെട്ടത്[32]. അവർ നൽകുന്ന പതിപ്പുകളിൽ ശരിക്കുമുള്ള ജാവയുമായി പൊരുത്തക്കേടുകൾ ഉണ്ടാക്കി ജാവയെ നശിപ്പിക്കാനുള്ള ശ്രമങ്ങൾ സോഫ്റ്റ്വെയർ ഭീമൻ നടത്തിയിട്ടുണ്ടെന്ന് കോടതി നിരീക്ഷിച്ചു[3]. മുമ്പ് ജെ++ എന്നൊരു ഭാഷയും മൈക്രോസോഫ്റ്റ് രൂപകല്പന ചെയ്തിരുന്നു. അതും വിവാദത്തിലായിത്തീർന്നു, പിന്നീട് ലേഖനവ്യവസ്ഥയിലും ഉള്ളടക്കത്തിലും ജാവയെ അനുസ്മരിപ്പിക്കുന്നതും ജാവയോടു കിടപിടിക്കുന്നതുമായ സി ഷാർപ്പ് എന്ന പുതിയ ഭാഷ മൈക്രോസോഫ്റ്റ് നിർമ്മിച്ചു. ഇന്ന് വിൻഡോസിൽ ജാവയും സി ഷാർപ്പും സമാന്തരങ്ങളായി മുന്നോട്ടു പോകുന്നു. സി ഷാർപ്പിൽ നിന്നും ‘ജാവ 5‘ ചില വിശേഷഗുണങ്ങൾ കടംകൊണ്ടിട്ടുമുണ്ട്.
മൈക്രോസോഫ്റ്റ് വിൻഡോസ് ഉപകരണങ്ങൾക്കായി സൃഷ്ടിച്ച ജാവ സമാന പ്ലാറ്റ്ഫോമായ ഡോട്ട് നെറ്റിൽ വിഷ്വൽ ജെ++ എന്ന ജാവയുടെ ലേഖനവ്യവസ്ഥ തന്നെ ഉപയോഗിക്കുന്ന പഴയ ഭാഷയെ വിഷ്വൽ ജെഷാർപ്പ് ഡോട്ട് നെറ്റ് (Visual J# .NET) എന്ന പേരിൽ വിളക്കിച്ചേർത്തിട്ടുണ്ട്. ജാവയുടെ ആദ്യകാല പതിപ്പുകളിലൊന്നായ ജെ.ഡി.കെ 1.1.4 -നെയാണ് ജെ# ഡോട്ട് നെറ്റ് അനുവർത്തിക്കുന്നത്. അതുകൊണ്ട് ഒരു ജാവ പ്രോഗ്രാമർ പ്രതീക്ഷിക്കുന്ന ഗുണങ്ങൾ അതിലുണ്ടാകാനിടയില്ല[33]. ജാവയിൽ കഴിവുതെളിയിച്ചവരെ ഡോട്ട് നെറ്റിലേയ്ക്ക് ആകർഷിക്കാൻ ജമ്പ് റ്റു ഡോട്ട് നെറ്റ് (JUMP to .NET - Java User Migration Path to .NET) എന്നൊരു പദ്ധതിയും മൈക്രോസോഫ്റ്റ് ആവിഷ്കരിച്ചിട്ടുണ്ട്[33][34].
ഡോട്ട്നെറ്റിനുള്ള സമാനതകളും വൈജാത്യങ്ങളും
തിരുത്തുകജാവയും ഡോട്ട്നെറ്റും വളരെയേറെ കാര്യങ്ങളിൽ സമാനമാണ്. ജാവ, വിർച്ച്വൽ മെഷീൻ ഉള്ള ഏതൊരു ഓപറേറ്റിങ് സിസ്റ്റത്തിലും പ്രവർത്തിക്കുമെങ്കിൽ, ഡോട്ട്നെറ്റ് ഫ്രെയിംവർക്കുള്ള വിൻഡോസ് പ്ലാറ്റ്ഫോമുകളിലാണ് ഡോട്ട്നെറ്റ് പ്രവർത്തിക്കുക. ജാവ പ്രോഗ്രാമുകൾ സൃഷ്ടിക്കാൻ ജാവയല്ലാത്ത പ്രോഗ്രാമിങ് ഭാഷകൾ ഉപയോഗിക്കാനുള്ള ശ്രമങ്ങളുണ്ടെങ്കിലും അവയൊന്നുമത്ര വിജയിച്ചിട്ടില്ല. എന്നാൽ ഡോട്ട്നെറ്റിൽ പ്രവർത്തിക്കാൻ ശേഷിയുള്ള ഒരു പിടി പ്രോഗ്രാമിങ് ഭാഷകൾ മൈക്രോസോഫ്റ്റ് നിർമ്മിച്ചിട്ടുണ്ട്, എന്നിരുന്നാലും ഡോട്ട്നെറ്റ് പ്ലാറ്റ്ഫോമിന്റെ എല്ലാഗുണങ്ങളും ഉപയോഗപ്പെടുത്താവുന്ന ഭാഷയായി ജാവയോടു സാദൃശ്യമുള്ള സി ഷാർപ്പിനെയാണ് കണക്കാക്കുന്നത്. ജാവ വിർച്ച്വൽ മെഷീൻ പോലെ ഡോട്ട്നെറ്റ് പ്ലാറ്റ്ഫോമിൽ പ്രവർത്തിക്കുന്ന ഭാഗത്തെ കോമൺ ലാങ്വേജ് റൺറ്റൈം എന്നു വിളിക്കുന്നു. കോമൺ ലാങ്വേജ് റൺറ്റൈം സ്വതന്ത്രവും ഓപ്പൺ സോഴ്സും ആയി നൽകാനുള്ള പദ്ധതി മോണോ എന്ന പേരിൽ നോവൽ ആവിഷ്കരിച്ചു നടപ്പാക്കുന്നുണ്ട്. ഇതിനു മൈക്രോസോഫ്റ്റിന്റെ പിന്തുണയുമുണ്ട്[35]. ജാവ ബൈറ്റ്കോഡിനു സമാനമായ ഡോട്ട്നെറ്റ് ഘടകത്തെ മൈക്രോസോഫ്റ്റ് ഇന്റർമീഡിയറ്റ് ലാങ്വേജ് അഥവാ എം.എസ്.ഐ.എൽ. എന്നു വിളിക്കുന്നു. ജാവ ബൈറ്റ്കോഡ് പ്ലാറ്റ്ഫോം സ്വതന്ത്രമാണെങ്കിൽ സി.പി.യു.വുമായി ബന്ധപ്പെടാത്ത ഭാഗമാണ് എം.എസ്.ഐ.എൽ. ഈ ഇടനില പ്രോഗ്രാമിനെ ആവശ്യാനുസരണം പ്രവർത്തിപ്പിക്കാൻ ജാവയിലെ പോലെ ഒരു ജസ്റ്റ് ഇൻ റ്റൈം കമ്പൈലറും ഡോട്ട്നെറ്റിലുണ്ട്. മെമ്മറി ഇരു ഭാഷകളും സ്വയം കൈകാര്യം ചെയ്യുന്നു. ഓട്ടോമാറ്റിക് ഗാർബേജ് കളക്ഷൻ തുടങ്ങിയ വിദ്യകളുടെ അൽഗോരിതം വ്യത്യസ്തമാണെങ്കിലും പ്രവർത്തനത്തിൽ അവ മിക്കവാറും ഒരു പോലെയാണ്[36]. ആപ്ലിക്കേഷൻ പ്രോഗ്രാമിങ് ഇന്റർഫേസ് അഥവാ എ.പി.ഐ.യുടെ ഘടനയിലും ഉപയോഗത്തിലും ജാവയും ഡോട്ട്നെറ്റിൽ ഉപയോഗിക്കുന്ന ഭാഷയായ സി ഷാർപ്പും മിക്കവാറും സമാനത പുലർത്തുന്നു. ഇ.എക്സ്.ഇ അല്ലെങ്കിൽ ഡി.എൽ.എൽ ഫയലുകളായാണ് പ്രവർത്തന സജ്ജമായ പ്രോഗ്രാമുകൾ ഡോട്ട്.നെറ്റ് സൃഷ്ടിക്കുന്നത്. ഇവയെ അസംബ്ലി എന്നു വിളിക്കുന്നു. ജാവയിൽ .ജാർ(.jar), .വാർ(.war) തുടങ്ങിയ ഫയലുകളായിരിക്കും പ്രവർത്തന സജ്ജമായിട്ടുണ്ടാവുക.
വിമർശനങ്ങളും മറുപടികളും
തിരുത്തുകജാവ ബൈറ്റ്കോഡിനെ വീണ്ടും കംപൈൽ ചെയ്തു പ്രവർത്തിപ്പിക്കുന്നതിനാൽ ജാവ പ്രോഗ്രാമുകളുടെ പ്രവർത്തനം മെല്ലെയാണെന്ന് വിമർശനമുണ്ടായിരുന്നു. എന്നാൽ ഇക്കാര്യത്തിൽ നടന്ന പലപരീക്ഷണങ്ങളും ജാവ മറ്റുഭാഷകളോട് തുല്യമായതോ കൂടുതൽ മെച്ചപ്പെട്ടതോ ആയ വേഗത കാണിക്കുന്നുണ്ടെന്നു വെളിവാക്കി[37][38]. ജാവയുടെ പ്രിമിറ്റീവ് ഡേറ്റാ റ്റൈപ്പുകൾ ഒബ്ജക്റ്റ് ഓറിയന്റഡ് ആശയത്തിന്റെ പരിധിയിൽ വരില്ല. അതുകൊണ്ട് ജാവ ഒരു ഒബ്ജക്റ്റ് ഓറിയന്റഡ് പ്രോഗ്രാമിങ് ഭാഷയാണെന്നു പറയാൻ കഴിയില്ലെന്നു വാദമുണ്ടായിരുന്നു. എന്നാൽ ജാവയുടെ സ്രഷ്ടാക്കൾ മനഃപൂർവ്വം ചെയ്ത ഒരു കാര്യമായിരുന്നു ഇത്. ജാവയുടെ പ്രവർത്തന ക്ഷമത വർദ്ധിപ്പിക്കുന്നതിന്റെ ഭാഗമായിട്ടാണ് ഭാഷയെ ഇത്തരത്തിൽ നിർവ്വചിച്ചത്. ‘ജാവ 5’വോടു കൂടി ഓട്ടോബോക്സിങ് എന്ന വിശേഷഗുണമുപയോഗിച്ച് പ്രിമിറ്റീവ് ഡേറ്റകളേയും റാപ്പർ ക്ലാസ്സുകൾ ഉപയോഗിച്ച് ഒബ്ജക്റ്റുകളാക്കാവുന്നതുമാണ്. സി പ്ലസ് പ്ലസ്സിൽ ഉള്ളതുപോലെ മൾട്ടിപ്പിൾ ഇൻഹെറിറ്റൻസ് ഇല്ലാത്തതും വിമർശനവിധേയമായിട്ടുണ്ട്. പ്രോഗ്രാം സങ്കീർണ്ണമാകാതെ സൂക്ഷിക്കുക എന്ന ലക്ഷ്യത്തോടെയാണ് ഭാഷയെ ഇപ്രകാരം നിർവ്വചിച്ചിട്ടുള്ളത് എങ്കിലും ഇന്റർഫേസ് മുതലായ വിദ്യകൾ ഉപയോഗിച്ച് ഈ പോരായ്മയേയും മറികടക്കാൻ കഴിയും[39][40].
ഭാവി
തിരുത്തുകജാവയുടെ ഭാവി ഇപ്പോഴത്തെ ദൃഷ്ടിയിൽ ശോഭനമാണ്. എക്സ്.എം.എൽ. ഉപകരണങ്ങളിലൂടെയും വെബ് ആപ്ലിക്കേഷൻ ഫ്രെയിംവർക്കുകളിലുമാണ് ഇന്ന് ജാവയുടെ വികാസം ഏറെ നടക്കുന്നത്, ഇന്നത്തെ അവസ്ഥയിൽ ഏറെ വളർച്ചയുള്ള മേഖലകളാണവ എന്നു പൊതുവേ കരുതുന്നു. വെബ് അധിഷ്ഠിതവും സെർവർ സൈഡ് എന്റർപ്രൈസ് ആപ്ലിക്കേഷനുകളിലും ജാവ ഇന്നു തന്നെ അതിന്റേതായ പങ്ക് വഹിക്കുന്നുണ്ട്. ഇടക്കാലത്ത് തടസ്സപ്പെട്ടുപോയ ക്ലൈന്റ് പിന്തുണയും ഇന്ന് കൂടുതൽ കിട്ടിവരുന്നു. മുമ്പത്തേക്കാളും ദൈനംദിന ഉപയോഗത്തിനുള്ള സോഫ്റ്റ്വെയറുകൾ ഇന്ന് ഉണ്ട്. പൊതു ഉപയോഗത്തിൽ ഓപ്പറേറ്റിങ് സിസ്റ്റങ്ങളുടെ കുത്തക അവസാനിക്കുന്നതനുസരിച്ച് ജാവ അതിന്റെ പിടിമുറുക്കിക്കൊണ്ടിരിക്കുമെന്നു കരുതുന്നു. ആർ.എസ്.എസ്. മുതലായ സാങ്കേതിക വിദ്യകളും ജാവയുടെ വളർച്ചയ്ക്ക് ഉൽപ്രേരകമാവും എന്നാണ് ജാവ കമ്മ്യൂണിറ്റി കരുതുന്നത്.
ചെറിയ ചെറിയ ഉപകരണങ്ങളിൽ ജാവയുടെ സാന്നിദ്ധ്യം ഇനിയും ഏറെ വർദ്ധിച്ചേക്കുമെന്നു കരുതുന്നു. ജാവ എം.ഇ. എന്ന ജാവയുടെ മൈക്രോ എഡിഷൻ പ്രാപ്തികുറഞ്ഞ ചെറിയ ഉപകരണങ്ങളിൽ ജാവ പ്രോഗ്രാമുകൾ പ്രവർത്തിപ്പിക്കാനുള്ള ജാവയുടെ ഒരു ഉപഗണമാണ്. പി.ഡി.എ.കൾ ആയിരുന്നു ജാവ എം.ഇ.യുടെ പ്രഥമലക്ഷ്യമെങ്കിലും ഇന്ന്, അത് ഡൌൺലോഡ് ചെയ്യാവുന്നതും പുതുക്കാവുന്നതുമൊക്കെയായ ആപ്ലിക്കേഷനുകൾ ഉപയോഗിക്കുന്ന മൊബൈൽ ഫോണുകൾ ഏറെയുണ്ട്. ഇതും നഷ്ടപ്പെട്ടുപോയേക്കാവുന്ന ഒരു വിപണിയല്ല. ജാവയുടെ ഗുണങ്ങളുള്ള മറ്റൊരു പ്രോഗ്രാമിങ് ഭാഷയില്ല എന്നതു തന്നെയാണ് കാരണം. ഇന്ന് ആൻഡ്രോയിഡ് ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിൽ ആപ്പുകൾ നിർമ്മിക്കാൻ കസ്റ്റമൈസ്ഡ് ജാവ ഉപയോഗിക്കുന്നു.
കൂടുതൽ വിവരങ്ങൾക്ക്
തിരുത്തുക- http://java.sun.com/ : ജാവയുടെ ഔദ്യോഗിക വെബ് സൈറ്റ് സോഫ്റ്റ്വേർ വികസനത്തിൽ വൈദഗ്ദ്ധ്യമുള്ളവർക്കായി
- http://www.java.com/ : ജാവയുടെ ഔദ്യോഗിക വെബ് സൈറ്റ് സാധാരണ ഉപയോക്താക്കൾക്കായി
അവലംബം
തിരുത്തുക- ↑ "The Java Language Environment". May 1996.
{{cite web}}
: Unknown parameter|authors=
ignored (help) - ↑ Java 5.0 added several new language features (the enhanced for loop, autoboxing, varargs and annotations), after they were introduced in the similar (and competing) C# language. [1][2]
- ↑ 3.0 3.1 3.2 Jonathan Knudsen (May 2005). Learning Java, 3rd Edition. O'Reilly. ISBN 0-596-00873-2.
{{cite book}}
: Unknown parameter|coauthors=
ignored (|author=
suggested) (help)CS1 maint: year (link) - ↑ "Oracle Buys Sun". ഒറാക്കിൾ. Retrieved 28 ജൂൺ 2010.
- ↑ http://www.oracle.com/technetwork/java/javase/7u10-relnotes-1880995.html
- ↑ http://www.java.com/en/javahistory/timeline.jsp
- ↑ "http://www.javalobby.org/java/forums/t84244.html". Archived from the original on 2008-09-05. Retrieved 2008-08-23.
{{cite web}}
: External link in
(help)|title=
- ↑ Rogers Cadenhead (മെയ് 2007). Sams Teach Yourself Java 6 in 21 Days. Sams Publishing. ISBN 978-0-672-32943-2.
{{cite book}}
: Check date values in:|year=
(help); Unknown parameter|coauthors=
ignored (|author=
suggested) (help)CS1 maint: year (link) - ↑ Cay Horstmann (2008). Java Concepts FIFTH EDITION. John Wiley & Sons, Inc. ISBN 978-0-470-10555-9.
- ↑ Schildt, Herbert (2002). Java 2: Complete Reference, Fifth Edition. Tata McGraw-Hill Publishing Company Limited, New Delhi. ISBN 0-07-049543-2.
- ↑ 11.0 11.1 http://java.sun.com/features/1998/05/birthday.html
- ↑ 12.0 12.1 John Zukowski (2002). Mastering Java 2, J2SE 1.4. SYBEX Inc. ISBN 0-7821-4022-X.
- ↑ http://www.ibm.com/developerworks/ibm/library/it-haggar_bytecode/
- ↑ http://java.sun.com/docs/white/langenv/Neutral.doc1.html
- ↑ "ആർക്കൈവ് പകർപ്പ്". Archived from the original on 2005-08-06. Retrieved 2008-08-25.
- ↑ "ആർക്കൈവ് പകർപ്പ്". Archived from the original on 2008-08-30. Retrieved 2008-09-03.
- ↑ http://www.dwheeler.com/java-imp.html
- ↑ "ആർക്കൈവ് പകർപ്പ്". Archived from the original on 2009-05-16. Retrieved 2008-09-02.
- ↑ http://java.sun.com/docs/white/langenv/Perform.doc1.html
- ↑ http://publib.boulder.ibm.com/infocenter/javasdk/v6r0/index.jsp?topic=/com.ibm.java.doc.diagnostics.60/html/jit_overview.html
- ↑ http://gcc.gnu.org/java/index.html
- ↑ http://java.sun.com/docs/white/langenv/Intro.doc2.html
- ↑ http://java.sun.com/javase/technologies/security/index.jsp
- ↑ Barry Burd (2004). Java™ For Dummies®, 4th Edition. Wiley Publishing, Inc. ISBN 0-470-08716-1.
- ↑ http://java.sun.com/javase/6/webnotes/features.html
- ↑ http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-429209.html
- ↑ "ആർക്കൈവ് പകർപ്പ്". Archived from the original on 2012-12-23. Retrieved 2012-12-24.
- ↑ Paul Philion (20-10-1999). "A look inside the Java Community Process". JavaWorld. Archived from the original on 2003-10-02. Retrieved 03-09-2008.
{{cite web}}
: Check date values in:|accessdate=
and|date=
(help) - ↑ http://openjdk.java.net/
- ↑
China Martens (08 മെയ് 2007). "Sun: The bulk of Java is open sourced" (in ഇംഗ്ലീഷ്). Info World. Retrieved 03-09-2008.
{{cite web}}
: Check date values in:|accessdate=
and|date=
(help) - ↑ James Niccolai (January 23, 2001). "Sun, Microsoft settle Java lawsuit". JavaWorld. IDG. Archived from the original on 2008-05-28. Retrieved 2008-07-09.
- ↑ Dan Goodin (1-ഡിസംബർ-1998). "Sun exec says Microsoft undermined Java" (എച്ച്.റ്റി.എം.എൽ.) (in ഇംഗ്ലീഷ്). CNET News. Retrieved 20-ജൂലൈ-2009.
{{cite news}}
: Check date values in:|accessdate=
and|date=
(help) - ↑ 33.0 33.1 Allen Jones (2003). C# for Java Developers. Microsoft Press. ISBN 0-7356-1779-1.
{{cite book}}
: Unknown parameter|coauthors=
ignored (|author=
suggested) (help) - ↑ http://msdn.microsoft.com/en-us/vjsharp/bb188599.aspx
- ↑ Scott M. Fulton, III (07 ജൂലൈ 2009). "Microsoft moves C#, .NET CLI to community license, helps Mono" (in ഇംഗ്ലീഷ്). betanews.com. Retrieved 10 ഏപ്രിൽ 2010.
{{cite news}}
: Check|authorlink=
value (help); Check date values in:|date=
(help); External link in
(help)CS1 maint: unrecognized language (link)|authorlink=
- ↑ Jawahar Puvvala (2003). .NET for Java Developers: Migrating to C#. Addison Wesley. ISBN 0-672-32402-4.
{{cite book}}
: Unknown parameter|coauthors=
ignored (|author=
suggested) (help) - ↑ Performance of Java versus C++ Archived 2008-05-13 at the Wayback Machine., J.P.Lewis and Ulrich Neumann, Computer Graphics and Immersive Technology Lab, University of Southern California
- ↑ FreeTTS - A Performance Case Study Archived 2009-03-25 at the Wayback Machine., Willie Walker, Paul Lamere, Philip Kwok
- ↑ http://java.sun.com/docs/books/tutorial/java/IandI/createinterface.html
- ↑ Tony Sinets (19-07-2002). "Why not multiple inheritance?". JavaWorld. Archived from the original on 2002-08-02. Retrieved 01-09-2008.
{{cite web}}
: Check date values in:|accessdate=
and|date=
(help)