ஜாவா
பிளாட்ஃபார்ம் சாராதது எனக் கூறப்படுவது ஏன்?
ஜாவா மொழியில் ஒரு ஆபரேட்டிங்க்
சிஸ்டத்தில் எழுதப்பட்ட நிரலை மாற்றம் ஏதும் செய்யாமல் அப்படியே வேறொரு
ஆபரேட்டிங்க் சிஸ்டத்தில் இயக்கலாம். எனவே தான் ஜாவா பிளாட் ஃபார்ம் சாராதது
எனப்படுகின்றது.
ஜாவா நிரலானது முதலில் கம்பைல்
செய்யப்பட்டு கிளாஸ் ஃபைலாக மாற்றம் செய்யப்படுகின்றது. இது எல்லா பிளாட்ஃபார்மிற்கு
பொதுவானதாகும். இதை அந்தந்த ஆபரேடிங்க் சிஸ்டத்தை சார்ந்த jvm(java virtual machine)
ஆனது இன்டெர்பிரட் செய்து மெசின் கோடாக மாற்றுகின்றது. இது பிளாட்ஃபார்ம்
சார்ந்ததாகும்.
JDK(Java
Development Kit) எனப்படுவது டெவலப்மெண்ட்
நோக்கத்திற்கு உருவாக்கப்பட்டதாகும். JDK ஆனது
ஒரு நிரலை கம்பைல் செய்தல், டிபக் செய்தல், நிரலை இயக்குதல்
முதாலாவதறிற்கான டூல்களை வழங்குகின்றது. இதில் JVM –ன் வேலை நிரலை இயகுவதாகும்.
JVM ஆனது JDK-ன் ஒரு அங்கமாகும்.
JRE(Java
Runtime Environment ) ஆனது JVM-ஐ நடைமுறைப்படுத்தப்பட்டதாகும். JRE ஆனது JVM,
ஜாவா பைனரிகள், மற்றும் வேறு கிளாஸ்கள் ஆகியவற்றை கொண்டதாகும். இது ஒரு நிரலை
வெற்றிகரமாக இயக்கப் பயன்படுகின்றது.
java.lang.Object ஆனது எல்லா கிளாஸிற்குமான அடிப்ப்டை கிளாஸிற்கான அடிப்ப்டை
கிளாஸ் ஆகும். இதை நீட்டுவிக்க தேவையில்லை.
நிரலாக்கத்தில்
மல்டிபிள் இன்ஹெரிடன்ஸ் செய்தால் ஏற்படும் Diamond Problem என்ற நடைமுறை
சிக்கலினால் ஜாவா ஆதரிப்பதில்லை. எனினும் ஜாவானது மல்டிபிள் இன்டெர்ஃபேஸ்களை
நடைமுறைப்படுத்துகின்றது ஏனெனில் இண்டர்ஃபேஸில் மெதட்களின் அறிவிப்பு மட்டுமே
இருக்கும். அந்த மெதட்களின் நடை முறைப்படுத்துதல் கிளாஸ்களில் தான் இருக்கும்.
ஏனெனில்
ஜாவாவானது primitive டேட்டா டைப்களான int, byte,short, long முதலியவற்றை சப்போர்ட்
செய்கின்றது.ஜாவாவானது ப்ரிமிடிவ் டேட்டா டைப்களிற்கான wrapper கிளாஸ்களை
கொண்டுள்ளது.எனினும் wrapper கிளாஸ்களினால் எந்த பயனும் இல்லை. ஆதலினால் தான் ஜாவா
முழுமையான ஆப்ஜெக்ட் மொழி இல்லை
எனப்படுகின்றது.
PATH எனப்படுது
என்விரான்மெண்ட் வேரியபிள் ஆகும் இது
இயங்கு தளத்தில் எக்ஸிக்யூட்டபிள்களை லொகேட்
செய்யபபயன்படுகின்றது. என்வே தான் நாம் ஜாவாவை நிறுவிய பிறகு
PATH வேரிபிளில் ஜாவா நிறுவப்பட்ட டைரக்டரியை குறிப்பிடுகின்றோம்.
Classpath என்பது ஜாவாவிற்கு
பிரத்யேகமானதாகும். இது ஜாவா எக்ஸிக்யூட்டபிளினால் கிளாஸ் ஃபைல்களை லொகேட் செய்யப்
பயன்படுகின்றது.
main()
மெதட் ஆனது ஒரு ஜாவா அப்ளிகேசனின் நுழைவு வாயிலாகும்., இதன் சிண்டாக்ஸ்:
public static void main(String
args[]).
இது
public மற்றும் static ஆகும்.எனவே தான் ஜாவா ரன் டைமினால் கிளாஸிற்கு ஆப்ஜெக்ட்
உருவாக்கமலேயே அழைக்கப்பட முடிகின்றது. இதன் இன்புட் பாராமீட்டர் ஸ்ட்ரிங்க் அர்ரே
ஆகும். இயக்க நேரத்தில் இதற்கு ஸ்டிரிங்க் பாராமீட்டர்கை அனுப்பலாம்.
Over
loading என்பது ஒரே கிளாஸிற்குள் ஒன்றுக்கு மேற்பட்ட மெதட்கள் ஒரே பெயரை
கொண்டிருக்கும் . ஆனால் ஆர்க்க்யூமெண்ட்களின் எண்ணிக்கை அல்லது டேட்டாடைப்
வித்தியாசமாய் இருக்கும். ஆர்க்க்யூமெண்ட் அனுப்பபடுவதற்கேற்ப இந்த அழைப்படுதல்கள்
வேறுபடும்.
Overriding
என்பது பேரண்ட் மற்றும் சைல்ட் கிளாஸிற்குள் ஒரே பெயர் மற்றும் ஒரே விதமான
ஆர்க்கியூமெண்டுகளைக் கொண்டிருக்கும். இது அழைக்கப்படுதல் எந்த கிளாஸின் ஆப்ஜெக்ட்
கொண்டு அழைக்கின்றோம் என்பதை சார்ந்ததாகும்.
மெயின்
மெதடை ஓவர் லோட் செய்யலாம். எனினும் நிரலை நாம் இயக்கும் பொழுது கீழ்க் கண்ட
சிண்டாக்ஸ் கொண்ட மெயின் மெத்தடை தான் ஜாவா ரண் டைம் என்விரன்மெண்ட் இயக்கும்.
public static void main(String
args[]).
ஓரு ஜாவா சோர்ஸ் ஃபைலில் ஒன்றிற்கு
மேற்பட்ட பப்ளிக் கிளாஸ் இருக்கலாது
ஜாவா
பேக்கேஜ் என்பது எப்படி ஃபைல்களை ஃபோல்டரில் ஆர்கனைஸ் செய்கின்றோமோ அதே போல்
கிளாஸ்களை பேக்கேஜில் அதன் ஃபங்க்சனாலிட்டியை பொருத்து குரூப் செய்து ஸ்டோர்
செய்கின்றோம்.
java.lang பேக்கேஜ் ஆனது டிஃபால்ட் ஆக இம்போர்ட் ஆகும்,
ஜாவாவானது
PUBLIC, PRIVATE மற்றும் PROTECTED போன்ற
மாடிஃபையர்களை கொண்டுள்ளது. எதுவும் குறிப்பிடவில்லையென்றால் டிஃபால்ட் ஆக்சஸ்
மாடிஃபையர் ஆகும்.
ஒரு
ஜாவா கிளாஸ் ஆனது பப்ளிக் அல்லது டிஃபால்ட் ஆக்சஸ் மாடிஃபையர்களை மட்டுமே ஏற்க முடுயும்.
ஒரு கிளாஸை FINAL கீவேர்டு உடன்
பயன்படுத்தினால் அதை இன்ஹெரிட் செய்ய இயலாது ஒரு மெதடை final என்று குறிப்பிட்டால்
அதை ஓவர் ரைட் செய்ய இயலாது.
ஒரு வேரியபிளை final என்று
குறிப்பிட்டால் அதன் மதிப்பை மாற்ற இயலாது.
ஒரு
கிளாஸ் லெவல் வேரியபிள் ஆனது static எனக் குறிப்பிட்டால் எல்லா ஆப்ஜெக்டுகளும்
அந்த ஒரே வேரியபிளை பொதுவாக பங்கிட்டுக் கொள்ளும்.
மெதட்களுடன்
static கீவர்டு பயன்படுத்தப்பட்டால் அந்த மெதடை ஆப்கெக்ட் உருவாக்கலாமே கிளாஸ்
நேம் கொண்டு அழைக்கலாம்.
Try, catch உடன் சேர்ந்து finally
பயன்படுகின்றது. ஒரு நிரலில் பிழை இருந்தாலும் இல்லா விட்டாலும் finally block
ஆனது இய்ங்கும். இது பெரும்பாலும் ரிசோர்ஸ்களை ரிலீஸ் செய்ய பயன்படுகின்றது.
Finalize() ஆனது நம் கிளாஸில் ஓவர் ரைட் செய்யும் special மெதட் ஆகும்.
கார்பேஜ் கலக்டர் ஆனது அவ்வப் பொழுது இயங்கி பயனில் இல்லாத ரிசோர்ஸ்களை ரிலீஸ்
செய்யும். அந்த ரிசோர்ஸ்களை explicit ஆக ரிலீஸ் செய்ய நாம் finalize மெதடை
பயன்படுத்துகின்றோம்.
டாப்
லெவல் கிளாசை static எனக் குறிப்பிட இயலாது.எனினும் inner class ஆனதை static எனக்
குறிபிடலாம். அவ்வாறு குறிப்பிடப்படும் பொழுது அது inner static class
எனப்படுகின்றது.
மற்ற
கிளாஸிலிருந்து ஸ்டேடிக் வேரியபிள் அல்லது ஸ்டேடிக் மெதடை பயன் படுத்தும் பொழுது
அந்த கிளாசை இம்போர்ட் செய்து விட்டு பிறகு பிறகு அந்த வேரியபிள் மற்றும் மெதடை
பயன் படுத்துவோம்.
import
java.lang.Math;
//inside
class
double
test = Math.PI * 5;
அதே செயலை அந்த ஸ்டேடிக் மெதட் அல்லது
வேரியபிளை இம்போர்ட் செய்து விட்டு உபயோக்கிலாம்
import
static java.lang.Math.PI;
//no
need to refer class now
double
test = PI * 5;
ஜாவா
வெர்சன் 7-லிருந்து ஒரு try பிளாக்கின் உள்ளே ரிசோர்ஸ் கிரியேட் செய்யலாம்.
Try-catch பிளாக்கின் முடிவில் ஜாவா அதை விடுவிக்கும் பொறுப்பை ஏற்றுக் கொள்ளும்.
ஜாவா
வெர்சன் 7-லிருந்து ஒரு catch block ஆனது மல்டிபிள் எக்செப்சன்களை catch
செய்யுமாறு கோடிங் எழுதலாம். அவ்வாறு எழுதும் பொழுது கோடிங்கின் நீளம் குறையும்.
PIPE(|) சிம்பல் உபயோகித்து CATCH பிளாக்கில் ஒவ்வொரு EXCEPTION ஆனதையும் பிரித்து
உபயோகிக்கலாம்.
ஜாவா ஸ்டேடிக் பிளாக் ஆனது ஒரு கிளாஸ்
மெமரியில் லோட் செய்யப்படும் பொழுதே இயங்கும். இதை உபயோகித்து ஸ்டேட்டிக்
வேரியபிளில் மதிப்பிருத்தலாம். பெரும்பாலும் இது கிளாஸ் லோட் ஆகும் ஸ்டேடிக்
ரிசோர்ஸை உருவாக்க பயன்படுகின்றது.Java
static block
இண்டர்ஃபேஸ்
ஆனது ஜாவாவில் மல்டிபிள் இன்ஹெரிடன்ஸ் செய்யப் பயன்படுகின்றது. இது மெதட்களின்
அறிவிப்பு மட்டுமே குறிப்பிடப் பட்டிருக்கும்.
ஒரு
கிளாஸ் எத்தனை இண்டர்ஃபேஸ் ஆனாலும் இம்ப்ளிமெண்ட் செய்யலாம். ஆனால் அதை
இம்ப்ளிமெண்ட் செய்யும் கிளாஸ் இண்டர்ஃபேசில் அறிவிக்கப்பட்டுள்ள அத்தனை
மெதட்களுக்கும் இம்ப்ளிமெண்ட் செய்யப்பட வேண்டும்.
அப்ஸ்ட்ராக்ட்
கிளாஸ் ஆனது சப் கிளாஸ்களுக்கான டிஃபால்ட் இம்ப்லிமெண்டேசன் கொண்டிக்கும். இதன்
உள்ளே அப்ஸ்ட்ராக்ட் மெத்தட் அல்லது இம்ப்ளிமெண்ட் செய்யப்பட்ட மெதட் இருக்கும்.
ஒரு அப்ஸ்ட்ராக்ட் கிளாஸிகு ஆப்ஜெக்ட் உருவாக்க இயலாது. அதை இன்ஹெரிட் செய்யும்
சப் கிளாஸ்களுக்கு மட்டுமே ஆப்ஜெக்ட் உருவாக்க இயலும்.
abstract class மற்றும்
interface என்ன வித்தியாசம்?
abstract keyword ஆனது அப்ஸ்ட்ராக்ட் கிளாஸ் உருவாக்கப் பயன்படுகின்றது
interface keyword ஆனது இண்டேஃபேஸ்
உருவாக்கப் பயன்படுகின்றதுஒரு அப்ஸ்ட்ராக்ட் கிளாஸில் மெதட் இம்ப்ளிமெண்டேசனுடன்
இருக்கலாம். இண்டர்ஃபேசில் அது இயலாது..
ஒரு கிளாஸ் ஆனது எத்தனை இண்டர்ஃபேஸ்
வேண்டுமென்றாலும் அதை இம்ப்ளிமென்ட் செய்யலாம் ஆனால் ஒரே ஒரு அப்ஸ்ட்ராக்ட் கிளாஸை
மட்டுமே இன்ஹெரிட் செய்ய இயலும்
.
· ஒரு இண்டர்ஃபேஸ் மற்ற இண்டர்ஃபேஸை இம்ப்ளிமெண்ட் அல்லது
எக்ஸ்டண்ட் செய்ய இயலுமா? ஒரு இண்டர்ஃபேஸ் ஆனது மற்ற இன்டர்ஃபேஸை இம்ப்ளிமென்ட்
செய்ய இயலாது ஆனால் இன்ஹெரிட் செய்யலாம்.இன்டெர்ஃபேஸில் மெதடின் இம்ப்ளிமெண்டேசன்
இருக்காது ஆனால் மெதடின் அறிவிப்பு மட்டும் இருக்காது எனவே diamond problem
இருக்காது. ஆதலால் தான் இன்டெஃபேஸை மல்டிபிள் இன்ஹெரிடன்ஸிற்கு பயன்படுத்த
இயலுகின்றது.
Marker interface ஆனது வெற்று இண்டர்ஃபேஸ் ஆகும். இது சில கிளாஸில் சில
இயக்கங்களை force செய்ய பயன்படுகின்றது. உதாரணமாக Serializable மற்றும் Cloneable இண்டர் ஃபேஸ்கள்.
· Wrapper classes எனப்படுவது யாது?
ஜாவா
ரேப்பர் கிளாஸ்கள் ஆனது எட்டு ப்ரிமிடிவ் டைப்களின் ஆப்ஜெக்ட்டுகளின் ஆப்ஜெக்ட்
ரிப்ரெசேண்டேசன் ஆகும். எல்லா ரேப்பர் கிளாஸ்களுமே immutable மற்றும் final ஆகும்.
ஆட்டோ பாக்ஸிங்க் மட்டும் அன்பாக்ஸிங்க் முறையில் ப்ரிமிடிவ் டைப்பிலிருந்து
ரேப்பர் கிளாஸ்களாக எளிதில் கன்வெர்ட் செய்யலாம்.
Enum என்பது
ஃபிக்ஸ்டு கான்ஸ்டண்ட் தொகுப்பாகும். உதாரணமாக ஜாவாவில் EAST, WEST, NORTH, SOUTH என்கின்ற
ஃபிக்ஸ்டு ஃபீல்டுகளை direction என்கின்ற பெயரில் உருவாக்கலாம்.
Enum கீ வேர்டு ஆனது enum டைப்புகளை
உருவாக்க பயன்படுகின்றது. Enum கான்ஸ்டண்ட்கள் இம்ப்ளிசிட் ஆக static மற்றும்
final ஆகும்.
Java
annotations ஆனது கோடிங்க் பற்றிய தகவல்களை
கொடுக்கின்றது. Annotations ஆனது program பற்றிய metadata ஆகும்.. இது annotations
parsing tool அல்லது கம்பைலரால் பார்ஸ் செய்யப் படுகின்றது. மேலும் நாம்
annotations ஆனதை கம்பைல் டைம் அல்லது ரன் டைமில் பயன்பாட்டுக்கு கொண்டுவரலாம். @Override, @Deprecated and @SuppressWarnings ஆகியவை java build-in annotations ஆகும்.
Java
Reflection API ஆனது ஒரு நிரலை ஆராய்ந்து அதன் இயக்க
நேரத்து செயல்களை மாற்றியமைக்கப் பயன்படுகின்றது. Reflection API என்பது
அட்வான்ஸ்டு டாபிக் ஆகும். இதை நார்மல் கோடிங்கில் பயன்படுத்துவதை தவிர்க்க
வேண்டும்.
-முத்து கார்த்திகேயன்,மதுரை.
No comments:
Post a Comment