Showing posts with label Basics Of Java. Show all posts
Showing posts with label Basics Of Java. Show all posts

Sunday, February 2, 2014

ජාවා තුල නොයෙකුත් ආකාරයන්ගෙන් Object Serialize/Deserialize කරන අයුරු

Image credit : http://msdn.microsoft.com/en-us/library/ms233843.aspx
මෙම පාඩමේදී අපි අධ්‍යයනය කිරීමට  බලාපොරොත්තුවනුයේ Serialization/Deserialization හි වැදගත්කම සහ ප්‍රායෝගිකව ජාවා වැඩසටහනකදී එම සංකල්පයන් භාවිතාකරන්නේ කෙසේද යන්නයි. මෙහිදී අප පසුගිය පාඩම්වලදී ඉගෙනගත් Streams පිලිබඳ දැනුම ඉතා වැදගත් වන බව කිවයුතුයි.

එම පාඩම් නැවත මතක් කරගැනීමට අවැසි නම් පහත ලින්ක් එකෙන් පිවිස streams පිලිබද නැවත කියවා බලන්න.
http://javaxclass.blogspot.com/p/blog-page_5580.html


Serialization හි මූලික අරමුණ කුමක්ද?  එහි වැදගත්කම් මොනවාද?

Saturday, September 11, 2010

ජාවා යොදාගෙන බහුකාර්‍ය වැඩසටහන් ලිවීම (Java Threads) II

අපි මීට පෙර පාඩමේදී සාකච්ඡා කලා Threads හා සම්බන්ද මූලිකම මූලධර්ම පිලිබඳව. අපි මෙම පාඩමෙන් බලමු Threads යොදාගෙන වැඩසටහන් ලියන ආකාරය.
Threads යොදාගෙන ජාවා වැඩසටහන් ලිවීමේදී ඉතා වැදගත් වන methods කිහිපයක් තිබෙනවා අපි මුලින්ම එම methds පිලිබඳ සලකා බලමු.
ඕනෑම Thread එකක් සැලකීමේදී එය පවත්නා තත්වයන් කිහිපයක් ඇත. පහත Thread state diagram එක මගින් එම අවස්ථා පිලිබඳ සහ thread එකක හැසිරීම පිලිබඳ අධ්‍යයනය කරමු.
 Fig 1.0 Thread State Diagram

Friday, September 10, 2010

ජාවා යොදාගෙන බහුකාර්‍ය වැඩසටහන් ලිවීම (Java Threads) I

පරිගණක වැඩසටහනක් සැලසුම් කිරීමේදී එය මගින් යම් යම් ක්‍රියාවන්(methods) එකවිට(parallel) සිදුකලයුතු අවස්ථා අපට මුණගැසේ. Multitasking සඳහා උදාහරණයක් ලෙස web browser එකක tabs කිහිපයක් එකවිට load වීම ගත හැකිය.  එවැනි අවස්ථාවන් ක්‍රියාවට නැංවීම (implement) සඳහා multitasking සංකල්පය භාවිතයට ගත හැකිය.

Multitasking වැඩසටහන්හි පහත අයුරින් ප්‍රධාන ආකාර 2ක් දැකිය හැකිය.

    * Process Based

මෙහිදී සිදුවනුයේ පරිගණකයේ වැඩසටහන් කීපයක්  සමගාමීව ක්‍රියාකිරීමෙන් අදාල ප්‍රතිඵලය ලබාදීමයි. process අතර සන්නිවේදනය(දත්ත හුවමාරුව) පහසු නොවේ. ඒ සඳහා pipes, files, sockets, shared memory ආදී විවිධ උපක්‍රම යොදාගැනීමට සිදුවේ.

Wednesday, June 23, 2010

ජාවා static members කියන්නේ මොනවාද? මොකටද යොදාගන්නේ?

Static කියන්නේ ස්ථිතික කියන එකනේ සරලව කිව්වොත් පැතිරීයන ස්වභාවය නැති කියන එක ඉතින් මේ ස්ථිතික ස්වභාවය ජාවා වැඩසටහන් වලට ලබාදීමට තමයි මෙම static ලක්ෂණය  ජාවා වලට හඳුන්වාදී තිබෙන්නේ. මේ සඳහා static නම් keyword එක භාවිතා වනවා. සාමාන්‍යයෙන් static modifier එක යොදා ඇති fields බැඳී තිබෙන්නේ class එක සමගයි. static members වර්ග දෙකක් තිබෙනවා ඒ තමයි
  1.  Class variables
  2. Class methods
අපි දැන් class variables ගැන බලමු. ඔබ දන්නවා සමාන්‍ය instance variable නම් object එකකට එක බැගින් තිබෙනවා. උදාහරණයක් ලෙස Student class එකේ studentName එක instance variable එකක්. එනිසා එය Student object එකකට අනන්‍ය(unique) ලෙස පවතිනවා. සරලව කිව්වොත් සෑම object එකකටම studentName කියල වෙන වෙනම instance පවතිනවා. නමුත් කිසියම් static variable එකක් නැත්නම් class variable එකක් Student class එකේ තියනවා නම් සෑම object එකකටම එක බැගින් static members නෑ. එකම memory location එකක ඇති variable එකක් ලෙසටයි පවතින්නේ. සෑම object එකක්ම එය share කරගැනීම සිදුවෙනවා. එනම් object 1000ක් තිබුනොත් instance variable නම් 1000ක් පවතිනවා නමුත් static variable නම් පවතින්නේ එකම එකයි. පහත ඉදිරිපත්කර ඇති උදාහරණය අධ්‍යයනය කිරීමෙන් ඔබට මේ ගැන අවබෝධ කරගැනීමට පහසු වේවි.

උදාහරණයට කලින් static methods නැතහොත් class methods ගැනත් බලලම ඉඳිමු. static methods පොදුවේ භාවිතා වන්නේ class එකෙන් objects සෑදීමෙන් තොරව අදාල method එක භාවිතා කිරීමටයි. class එකක් තුල ඇති static variable හි අගයන් පිටතට ගැනීමට(access කිරීමට) මෙම static methods භාවිතා කලයුතු වනවා. මෙම static methods invoke(call) කිරීම සිදුවන්නේ class එකේ නම හරහායි.

දැන් අපි static සංකල්පය යොදාගැනීමට භාවිතා කරන syntax ගැන අධ්‍යයනය කරමු.
Syntax 1 : Declaring a static variable
[access modifier] static [datatype] [variable__name]  ;
 ex: private static int studID; 
Syntax 2 : Declaring a static method
[access modifier] static [datatype] [method__name]() 
ex: public static int getSum()

දැන් අපි උදාහරණය බලමු
/** 
*class  : StaticDemo 
*Author : Kanishka Dilshan 
*Purpose: introduce static keyword in Java 
*Blog   : http://javaxclass.blogspot.com 
*/ 

class Student {
 private String name;
 private int studId;
 private static int numberOfStudents;

 public Student(String name){
  this.name=name;
  //generate a new ID and increment the total value by 1
  studId=1000+(numberOfStudents++);
 }
 
 public static int getNumberOfStuds(){
  return numberOfStudents;
 }
 
 public void showStudDetails(){
  System.out.println("Name : " + name);
  System.out.println("stID : " + studId);
 }
}


public class StaticDemo{
 public static void main(String args[]){
  Student std1=new Student("Sajith");
  Student std2=new Student("Kanishka");
  Student std3=new Student("Ravindu");
  Student std4=new Student("Sathiranga");

  std1.showStudDetails();
  std2.showStudDetails();
  std3.showStudDetails();
  std4.showStudDetails();
  System.out.println("Total students : " + Student.getNumberOfStuds());
  
 }
}
ප්‍රතිඵලය:
පැහැදිලි කිරීම:
මෙහි name හා studId යන ඒවා instance variable වේ. numberOfStudents යන්න static variable එකකි. student ලා කීයක් ඉන්නවද කියන තමයි numberOfStudents එකේ තබාගන්නේ එය object එකින් එකට වෙනස් වන අගයක් නොවේ. එනිසයි අපි numberOfStudents යන්න static ලෙස යොදාගෙන තිබෙන්නේ. තවද මෙහි getNumberOfStuds() යන method එකත් static මොකද එයත් object එකින් එකට වෙනස් වන්නේ නැහැ(මින් අදහස් කිරීමට උත්සාහ කලේ ඔබ්ජෙක්ට් සඳහා අනන්‍ය ptoperties එම මෙතඩ් එක තුලින් පිවිසිය(access) නොහැකිය යන්නයි.) අනික එම method එක numberOfStudents නම් static variable එකත් access කරනවා. එම නිසා එය static විය යුතුයි. එමනිසා class එකේ නමයොදාගෙන call කිරීම කලහැකියි 41 වන පේලියේදී ඔබට මෙය දැකගත හැකියි.
තවත් OOP සංකල්ප අපි ඉදිරි පාඩමකදී සාකච්ඡා කරමු. 

Friday, June 18, 2010

ජාවාහි එන Wrapper classes යනු මොනවාද..?

ඔබ දන්නවා ජාවා වැඩසටහන තිබෙනවා මූලික දත්ත ආකාර(primitive data types) 8ක්. ජාවාහි සෑම තැනකටම පොදු ඔබ්ජෙක්ට් ඔරියන්ටඩ් ගතිය මෙම primitive data types තුල නැති බව බැලූ බැල්මටම පෙනෙනවා. මෙම wrapper classes නිර්මාණය කර ඇත්තේ මෙම primitive data type 8 සඳහා objects සෑදීමේ හැකියාව ලබාදීමටයි. එම නිසා ජාවා 1.0 සංස්කරණයේ සිටම මෙම primitive data types 8 සඳහා wrapper class 8ක් පැමිණෙනවා මේවා java.lang පැකේජයේ අන්තර්ගත වන නිසා වැඩසටහනකට විශේෂයෙන් import කිරීමට අවශ්‍ය නැහැ.

මෙම  wrapper classes යොදාගෙන ජාවාහි ඉතා වැදගත් කාර්‍යභාරයක් කරගැනීමට පුලුවන්. data types convert කිරීම මෙවායේ සුලභ යෙදීමක්.  මීට අමතරව එම දත්ත ආකාරය ගැන වැඩි විස්තර මෙම wrapper classes යොදාගනිමින් අපට ලබාගන්නටද පුලුවන්.

Primitive type Wrapper class

boolean

Boolean

char

Character

byte

Byte

short

Short

int

Integer

long

Long

float

Float

double

Double


අපි දැන් බලමු wrapper class යොදගෙන ලියන ලද සරල වැඩසටහනක්.

public class Wrapper{
 public static void main(String args[]){
  Integer num1=new Integer(23);
  Integer num2=new Integer(34);
  Integer tot1=new Integer(num1+num2);
  Integer tot2=num1+num2;
  
  System.out.println("tot1 : " + tot2);
  System.out.println("tot2 : " + tot1);
 }
}
ඉහත වැඩසටහන නිරීක්ෂණයෙන් ඔබට පෙනෙනවා ඇති ක්‍රම 2කකට අපි num1 හා num2 හි එකතුව ලබාගෙන තිබෙනවා. ජාවා 1.5 න් පසු සංස්කරණ වලදී නම් මෙම 2 ක්‍රම 2ම දෝශ රහිතයි නමුත් ඊට පෙර සංස්කරණයන්හි 2වන ක්‍රමය එනම් 6 වන පේලියේ ඇති ක්‍රමය දෝශ සහගතයි. Integer class type එක ඇති ඔබ්ජෙක්ට් එකකට int primitive type එකක් assign කිරීම ඇත්තටම වරදක්. නමුත් ජාවා 1.5න් පසු සංස්කරණ වලදී එලෙස assign කර ඇති අගය සුදුසු wrapper class type එකට convert කිරීමෙන් අනතුරුවයි assign කිරීම සිදුකරන්නේ. මෙය autoboxing ලෙසත් හඳුන්වනවා.

දැන් අපි බලමු මෙම wrapper classes භාවිතාකර data types convert කරන ආකාරය. මේ සඳහා ලියන ලද සරළ ජාවා වැඩසටහන බලමු.
public class Wrapper{
 public static void main(String args[]){
  String str1="23.44";
  String str2="44.76";
  float val1=Float.parseFloat(str1);
  float val2=Float.parseFloat(str2);

  System.out.println("str1 \t => " + str1);
  System.out.println("str2 \t => " + str2);
  System.out.println("String Data\t=> "+str1+str2);
  System.out.print("float  Data\t=> ");
  System.out.println(val1+val2);
 }
}
 line 5 හා line6 දී සිදුකර ඇත්තේ str1 හා str2 යන String data val1 හා val2 ලෙස float ඩේටා බවට පත්කිරීමයි. ඒ ආකාරයට wrapper class අටේම ඇති parseXXX methods (parseInt(),parseFloat(),parseDouble()...) දත්ත භාවිතා කර අපිට අවශ්‍ය data type වලට convert කරගන්න පුලුවන්.

දැන් අපි wrapper classes භාවිතා කර යම් data type එකකට දැරිය හැකි උපරිම හා අවම අගයන් ලබාගැනීමට වැඩසටහනක් ලියමු.
public class Wrapper{
 public static void main(String args[]){
  
  System.out.println("Byte wrapper"+"\t_______________");
  System.out.println("Max value : "+Byte.MAX_VALUE);
  System.out.println("Min value : "+Byte.MIN_VALUE);
  System.out.println();

  System.out.println("Integer wrapper"+"\t_______________");
  System.out.println("Max value : "+Integer.MAX_VALUE);
  System.out.println("Min value : "+Integer.MIN_VALUE);  
  System.out.println();

  System.out.println("Long wrapper"+"\t_______________");
  System.out.println("Max value : "+Long.MAX_VALUE);
  System.out.println("Min value : "+Long.MIN_VALUE); 
  System.out.println();
  
  System.out.println("Float wrapper"+"\t_______________");
  System.out.println("Max value : "+Float.MAX_VALUE);
  System.out.println("Min value : "+Float.MIN_VALUE); 
  System.out.println(); 
  
  System.out.println("Double wrapper"+"\t_______________");
  System.out.println("Max value : "+Double.MAX_VALUE);
  System.out.println("Min value : "+Double.MIN_VALUE); 
  System.out.println();
 }
}
ප්‍රථිඵලය:

Source: Java Documentation

Thursday, June 17, 2010

ජාවා වැඩසටහනකින් Keyboard Inputs ලබාගන්නා අයුරු :: (Accessing the standard input stream)

ජාවා භාවිත යෙදුම්(Java Aplications)  Desktop applications හා Console applications  වශයෙන් මූලික ආකාර 2ක් තිබෙනවා .  Desktop applications සඳහා textbox වැනි component භාවිතාකර user inputs ලබාගන්න පුලුවන් මේ සඳහා awt හා swing ලෙස ජාවා පැකේජ 2ක් හඳුන්වාදී තිබෙනවා. නමුත් console application යනු console එක(windows වලදී command prompt එක) ක්‍රියාකරන ආකාරය අනුව කොන්සෝල් එකෙදී inputs ලබාගැනීමට වන්නේ keyboad එක මගින් ලබාදෙන string එකක් වශයෙන්. අපි අද පාඩමෙන් අධ්‍යයනය කරන්නේ කොන්සෝල් එක මගින් user input එකක් ලබාගන්නා අයුරුයි.

Tuesday, May 25, 2010

ජාවා වැඩසටහනකට Command Line Arguments ලබාගන්නා ආකාරය.

ජාවා වැඩසටහනක් ක්‍රියාත්මක කරවන(Execute) අවස්ථාවේම එයට යම් දත්තයක් හෝ කිහිපයක් ලබාදීමට Command Line Arguments භාවිතා කල හැක. උදාහ‍රණයක් ලෙස copy file1 file2 යන විධානයේ file1 හා file2 ලෙසට අපිවිසින් දත්තයන් දෙකක් ලබාදී ඇත copy utility එක සඳහා එම file1 file2 command line argument 2කි. එම විධානය ක්‍රියාත්මක කල විට copy utility එක විසින් අදාල arguments 2 වැඩසටහන තුලට ලබාගෙන අදාල කාර්‍යය ඉටුක‍රනු ලබයි. අපි දැන් බලමු ජාවා වැඩසටහනකින් කොහොමද මෙවැනි හැකියාවක් ලබාදෙන්නේ කියලා.

අපි ජාවා වැඩසටහන ආරම්භයේදී ලබා දෙන arguments තැන්පත් වී තිබෙන්නේ  public static void main(String args[]) හි සඳහන් කරන ලද args[] නම් array එක තුලයි. එනම් main method එකෙන් parameter එකක් ලෙස ලබාදුන් array එක තුලයි. මෙය args ලෙසින්ම නම් වීම අත්‍යාවශ්‍ය නොවේ. නමුත් එය String type එකෙන් තිබීම අනිවාර්‍ය වේ. ඔබට arrays ගැන ගැටලුවක් ඇත්නම් arrays සම්බන්ද පාඩම බලන්න.

example01:
class CommandLineDemo{
 public static void main(String args[]){
  String argument1=args[0];
  String argument2=args[1];
  String argument3=args[2];
  System.out.println("Argument 1 : "+argument1);
  System.out.println("Argument 2 : "+argument2);
  System.out.println("Argument 3 : "+argument3);
 }
}

Output:
අපි මෙහිදී Java C++ C# Perl ලෙසින් argument 4ක් දී තිබුනද console එකෙහි පෙන්වා ඇත්තේ Java C++ C# arguments 3 පමණි. අපි access ක‍ර ඇත්තේ args[] හි 0,1,2 යන elements 3 පමණි. යම්හෙයකින් අපි args හි අඩංගු නැති element එකක් access කලහොත් ArrayIndexOutOfBoundsException එකක් ලැබෙනු ඇත. එනම් program එකෙහි run time error එකක් ඇතිවනු ඇත. Error Control ගැන කෙරෙන පාඩමේදී අපි Exception ගැන විස්ත‍රාත්මකව ඉගෙන ගනිමු. අපි ඉහත වැඩසටහනේ එවැනි error එකක් ලැබෙන අවස්ථාවක් ගැන බලමු.
අපි arguments ලෙස ලබා දී ඇත්තේ Java හා C++ පමණි නමුත් අප වැඩසටහන තුලදී args[] හි 3වන element එකද access කෙරේ(2nd index). එමනිසා මෙහිදී ඉහත සඳහන් කල ආකාරයේ exception එකක් (මෙහිදී නම් run time error) ලැබේ.

අපි දැන් ඉහත ආකාරයේ දෝශ මගහැරවීමට සුදුසු පියව‍රක් යොදා එම වැඩසටහනම වැඩිදියුණු (modify) ක‍රමු. 
example02:
class CommandLineDemo{
 public static void main(String args[]){
  try{
   String argument1=args[0];
   String argument2=args[1];
   String argument3=args[2];
   System.out.println("Argument 1 : "+argument1);
   System.out.println("Argument 2 : "+argument2);
   System.out.println("Argument 3 : "+argument3);
  }catch(ArrayIndexOutOfBoundsException ex){
   System.out.println("Incorect usage!");
   System.out.println("You must provide minimum of 3 numbers!");
   System.out.println("Invalid index =  " + ex.getMessage());
   
  }
 }
}
Exception handle කිරීම ගැන අපි ඉදිරි පාඩමකින් විස්ත‍රාත්මකව සාකච්ඡා ක‍රමු. මෙම පාඩමේ මූලික අරමුණ Command Line Arguments භාවිතා ක‍රන ආකාරය හැදෑරීමයි. මෙහිදී මතක තබාගත යුතු කාරණාව වන්නේ args[] array එක String type එකෙන් ඇති බවයි එමනිසා අපි ගණිතමය දත්තයන් arguments ලෙස ගන්නා විට ඒවා සුදුසු types වලට convert කිරීමට සිදුවනවා.

අපි දැන් ප්‍රායෝගික උදාහරණ කිරිපයක් බලමු.

Example03:
class CLADemo1{
 public static void main(String args[]){
  try{
   String name=args[0];
   float price=Float.parseFloat(args[1]);
   float VAT=Float.parseFloat(args[2]);
   float Total=price+VAT;
   System.out.println(name +" :  " + Total);
  }catch(ArrayIndexOutOfBoundsException e){
   System.out.println("Incorrect usage!");
  }catch(NumberFormatException e){
   System.out.println("Invalid number " + e.getMessage());
  }
 }
}
Output 01:
මෙහිදී numbers convert ක‍රන විට ලබාදී ඇති number format එක දෝශ සහගත නම් එයද handle කිරීමට NumberFormatExcption එකක්ද program එක තුලදී catch ක‍ර ඇත. පහත රූපයෙන් එවැනි exception එකක් මතුවූ විට අප විසින් පෙන්වන දෝශ පණිවුඩය දැක්වේ.
මෙම පාඩමේ උදාහරණ download කරගැනීමට පහත Link එක භාවිතා කරන්න.

Wednesday, May 12, 2010

ජාවා තුල Arrays භාවිතය II (2D Arrays)

බොහෝ විට 1-dimentional arrays භාවිතා වුවද 2-dimentional arrays ද වැදගත්වන අවස්ථා බොහොමයකි. උදා matrix සම්බන්ඳ ගණනය කිරීම් වලදී. table එකක් වැනි යමක් නිරූපණය කිරීම‍ටද 2D arrays භාවිතා කල හැක.අපි මීට පෙර පාඩමෙන් arrays පිලිබඳ මූලික සංකල්ප 2D arrays වෙතද වලංගුවේ. අපි පහත රූප සටහන තුලින් බලමු ජාවා 2D array එකක් ප‍රිගණකයේ ප්‍රධාන මතකය තුල තැන්පත් ක‍රවන ආකාරය.
 ජාවා තුල 2D arrays නිර්මාණය කිරීමේ ආකාර කිහිපයක් පවතී.

Syntax  01: 
DataType arayName[][]=new DataType[ROWS][COLUMNS];
ex :
float weight[][]=new float[5][3];
Syntax  02: 
DataType arrayName[][]={ {row_1_val_1,row_1_val_2,...,row_1_val_n},
    {row_2_val_1,row_2_val_2,...,row_2_val_n},
    {row_3_val_1,row_3_val_2,...,row_3_val_n},
    {row_n_val_1,row_n_val_2,...,row_n_val_n}};
අපි දැන් බලමු ඉහත array එක ජාවා තුලින් නිර්මාණය කිරීමට ස‍රළ වැඩසටහනක්.
class Arrays2D {
 public static void main(String args[]){
  int array2D[][]={ {11,82,54,78,-1,91} ,
      {65,-9,45,65,95,25} ,
      {91,0,98,78,58,65}  ,
      {46,65,22,96,-5,34} };
  //accessing array elements
  for(int row=0;row < array2D.length;row++){
   for(int col=0;col < array2D[row].length;col++){
    //System.out.print("Row : " + row + " Column : " + col );
    //System.out.println(" Value : " + array2D[row][col]);
    System.out.print(array2D[row][col]+ "\t");
   }
   System.out.println();
  }     
 }
}

output :
 මේ සංකල්පයම භාවිතාක‍රමින් 3-dimensional arrays එකක් වුනත් හදාගන්න පුලුවන්. පහත ඉදිරිපත් ක‍ර ඇති නිදසුන බලන්න.  
class Array3D {
 public static void main(String args[]){
  //defining a 3D array 
  float arrXD[][][]=new float[4][7][8];
  for(int i=0;i < arrXD.length;i++){
   for(int j=0;j < arrXD[i].length;j++){
    for(int k=0;k < arrXD[i][j].length;k++){
     //filling the 3D with random values
     arrXD[i][j][k]=(float)Math.random();
     //printing stored values
     System.out.println(arrXD[i][j][k]);
    }
   }
  } 
 }
}
හොඳයි, අපි මීලඟ පාඩමේ සිට ජාවා ප‍රිගණක භාශාවේ ඉතාම වැදගත් කොටසක් වන වස්තු පාදක ක්‍රම ලේඛනය (Object Oriented Programming) පිලිබඳව අධ්‍යයනය ක‍රමු.

Tuesday, May 4, 2010

ජාවා තුල Arrays භාවිතය I

Array එකක් යනු ස‍රළම ආකාරයේ දත්ත ව්‍යුහයක් (Data Structure) ලෙස දක්වන්න පුලුවන්. අපි මීට පෙර විචල්‍යයන්(variables) ගැන කතා කලා. Array එකක් යනු එකම දත්ත ආකාරයක්(data type) ඇති විචල්‍යයන් සමූහයක්. මෙහිදී array එකකට නිශ්චිත විශාලත්වක් ඇතිබව විශේෂයෙන් සඳහන් කල යුතුයි.

Array එක සමන්විත වන variables, elements යනුවෙන් හඳුන්වනවා. Array එක තුල element එකක් හඳුනා ගැනීමට භාවිතා වන්නේ index එකයි. index එකෙහි ආරම්භක අගය 0 වනවා. අපි පහත සටහන ආධාරයෙන් array එකක ව්‍යුහය පිලිඹඳ අධ්‍යයනය කරමු.


 ArrayNum යනු array එක සඳහා දී ඇති නමයි. 0 වන index එක ලෙස 23 ද, අවසාන index එක (5) ලෙස 8 ද මම මෙහිදී ආදේශ ක‍ර තිබෙනවා. Array එකේ size එක (length) ලෙස 6 පවතිනවා(මුලු elements ගණන).  
ArrNum යන්න RAM එකෙහි ස්ථාපනය වී ඇති array එකට pointer එකක් හා සමානයි. නමුත් java pointer arithmetic සඳහා සහාය නොදක්වන බව මතක තබාගත යුතුයි.

අපි දැන් බලමු ජාවා වල array එකක් create ක‍රගත හැකි ආකාර.
syntax for creating arrays:
method 01
DataType ArrayName[];
ArrayName=new DataType[SIZE];
Ex :
int MyArray[];
MyArray=new int[5];


method 02
DataType ArrayName[]=new DataType[SIZE];
Ex :
int MyArray[]=new int[5];

method 03
DataType ArrayName[]={value1,value2,value3,value_n};
Ex :
int MyArray[]={23,45,67,23,-32,66};

method 01 හා method 02 භාවිත ක‍ර arrays සෑදීමේදී array එකේ size එක(elements ගණන) ලබා දිය යුතු වුවත් method03 භාවිත කිරීමේදී එසේ අවශ්‍ය නෑ. Array එකක් සෑදු පසු එහි size එක පසුව වෙනස් කිරීම කල නොහැකියි. 


අපි දැන් බලමු සකසන ලද array එකකට values assign ක‍රන ආකාරය. 
example:
MyArray[0]=44;
MyArray[4]=68;
මෙහිදී අප සකසන ලද array එකේ උප‍රිම index එකට වඩා වැඩි අගයක් index ලෙස ලබා දුනහොත් ArrayIndexOutOfBoundsException එකක් ලබාදීම සිදුවනවා. අපි exception පිලිබ්ඳ ඉදිරි පාඩමකදී පුළුල්ව සාකච්ඡා ක‍රමු.

Java Arrays හා සම්බන්ඳ length property එක

ජාවාහි සෑම array එකකටම length නම් property එකක් තිබෙනවා. මෙමගින් අපිට array එකක size එක(number of elements) ලබාගන්න පුලුවන්. මෙම නිසා C/C++ වලදී array භාවිතාකිරීමට වඩා java තුලදී arrays භාවිතා කිරීම පහසු ක‍රනවා.
උදා : C වලදී function එකකට array එකක් pass ක‍රන විට එහි size එකත් වෙනම parameter එකක් මගින් pass කල යුතුවනවා. නමුත් ජාවා තුලදී length property එක මගින් size එක ලබාගත හැකිනිසා එසේ size එක වෙනම variable එකකින් pass කල යුතු නැහැ. array එක තුලින්ම එහි size එක ලබගන්න පුලුවන්. 



අපි දැන් ඉහත සටහනේ ඉදිරිපත් ක‍රඇති array එක ජවා තුල නිර්මාණය ක‍රගැනීම සඳහා සුදුසු කේතයක් ලියමු.
Code 01
int ArrNum[]={23,39,14,25,23,8};
Code 02
int ArrNum[]=new int[6];
ArrNum[0]=23;
ArrNum[1]=39;
ArrNum[2]=14;
ArrNum[3]=25;
ArrNum[4]=23;
ArrNum[5]=8;
දැන් අපි බලමු ඉහත සකස් ක‍රගත් Array එකෙහි values පරිශීලනය(access) ක‍රන ආකාරය.
Access values one by one:
int value_at_index_4 = ArrNum[4];
int value_at_index_1 = ArrNum[1];
Access values using a for loop:
for(int i=0;i < ArrNum.length ; i++){
 int value_at_index_i=ArrNum[i];
 System.out.println(value_at_index_i);
}
Access values using a for-each loop:
for(int elem:ArrNum){
 int value_at_index_i=elem;
 System.out.println(value_at_index_i);
}
Access values using a while loop:
int i=0;
while( i < ArrNum.length ){
 int value_at_index_i=ArrNum[i];
 System.out.println(value_at_index_i);
 i++;
}
පහත ජාවා applet එක භාවිතා ක‍ර array එකක් ක්‍රියා කරන අයුරු අධ්‍යයනය කරන්න.

Monday, May 3, 2010

ජාවා Jump Statements සහ loops සඳහා අභ්‍යාස.

ජාවා සඳහා jump statement 3 ක් සහය දක්වනවා.  මේවා වැදගත් වනුයේ අපට කිසියම් control structure එකක් පාලනය කිරීමට අවශ්‍ය විටදීයි. උදාහ‍රණයක් ලෙස සැලකුවහොත් අපට කිසියම් loop එකක මැදදී එය නැවැත්වීමට අවශ්‍ය වුවහොත් අපට මෙම jumping statements යොදාගන්න පුලුවන්.
  • break
  • continue
  • return
break
example :
class BreakDemo {
 public static void main(String args[]){
  for(int i=0;i<10;i++){
   if(i==5){
    break; //if i is equal to 5 terminate the loop
   }
   System.out.print(i + " " );
  }
 }
}

output :

මෙහිදී සිදුවන්නේ ක්‍රමයෙන් වැඩිවිගෙන යන i අගය 5 ට සමාන වූ විගස loop එක නැවැත්වීමයි. break keyword එකෙන් විධාන ක‍රනුයේ loop එකෙන් පිටතට යෑමටයි. එනම් loop එක නැවැත්වීමයි.

continue
class ContinueDemo {
 public static void main(String args[]){
  for(int i=0;i<10;i++){
   if(i==5){
    continue;//if i is equal to 5  ignore i and continue
   }
   System.out.print(i + " " );
  }
 }
}
output :

මෙහිදී සිදුවන්නේ ක්‍රමයෙන් වැඩිවිගෙන යන i අගය 5 ට සමාන වූ විට continue keyword එකට යටින් ඇති කිසිදු statement එකක් execute නොක‍ර loop එකෙහි ඊලග step එකට පැනීමයි. එනම් i හි අගය 6 ට අදාල iteration එක පටන් ගැනීමයි. මෙහිදී 5 යන අගය console එකෙහි මුද්‍රණය නොවීමට හේතුව දැන් ඔබට වටහා ගත හැකිවිය යුතුය.

return 
මෙම keyword එක පිලිඹඳ අපි method සම්බන්ද පාඩමේදී සවිස්ත‍රාත්මකව සාකච්ඡා ක‍රමු. 


loops සඳහා අභ්‍යාස
 පහත රටාවන් ලබාගැනීමට  loops යොදාගන්න.


class Pattern01{
 public static void main(String args[]){
  for(int i=0;i<10;i++){
   for(int j=0;j<10;j++){
    System.out.print("#");
   }
   System.out.println();
  }
 }
}


class Pattern03{
 public static void main(String args[]){
  for(int i=0;i<10;i++){
   for(int j=10-i;j>0;j--){
    System.out.print("#");
   }
   System.out.println();
  }
 }
}


class Pattern04{
 public static void main(String args[]){
  for(int i=0;i<10;i++){
   for(int j=10-i;j>0;j--){
    System.out.print(" ");
   }   
   for(int j=0;j<=i;j++){
    System.out.print("#");
   }
   System.out.println();
  }
 }
}


class Pattern05{
 public static void main(String args[]){
  for(int i=0;i<10;i++){
   for(int j=10-i;j>0;j--){
    System.out.print(" ");
   }   
   for(int j=1;j<=i*2-1;j++){
    System.out.print("#");
   }
   System.out.println();
  }
 }
}


class Pattern06{
 public static void main(String args[]){
  for(int i=0;i<10;i++){
   for(int j=10-i;j>0;j--){
    System.out.print(" ");
   }   
   for(int j=0;j<10;j++){
    System.out.print("#");
   }
   System.out.println();
  }
 }
}


class Pattern05{
 public static void main(String args[]){
  for(int i=0;i<5;i++){
   for(int j=5-i;j>0;j--){
    System.out.print(" ");
   }   
   for(int j=1;j<=i*2-1;j++){
    System.out.print(j);
   }
   System.out.println();
  }
 }
}
class Pattern08{
 public static void main(String args[]){
  for(int i=1;i<10;i++){
   for(int j=1;j<10;j++){
    System.out.print(i*j + "\t" );
   }
   System.out.println();
  }
 }
}
අපි ඊලඟ පාඩමෙන්  Java arrays පිලිඹඳ අධ්‍යයනය කරමු.

Sunday, May 2, 2010

ජාවා Iterations (loops)

අපි මේ පාඩමෙන් සාකච්ඡා ක‍රන්න යන්නේ ජාවාහි ඉතාම වැදගත් කොටසක් ගැන. එනම් Iterations (නැවත නැවත සිදුකිරීම්) ජාවා වලදී පමණක් නොවෙයි ඕනෑම ක්‍රමලේඛන භාෂාවකදී Iterations හෙවත් loops ඉතා වැදගත් වනවා.
Iterations භාවිතා වන අවස්ථා වලට උදාහ‍රණ:

  • කිසියම් array එකක් තුල ඇති elements (අවයව) එකින් එක පිලිවෙලින් පරීක්ෂා කිරීම.
  • විවිධ ඇල්ගොරිතම් (algorithm) නිර්මාණයේදී.
  • කිසියම් දත්ත සමූහයක් විශ්ලේෂණය කිරීමේදී
අපි දැන් බලමු ජාවාතුල භාවිතාවන looping structures මොනවාද කියලා.
  • while
  • do - while
  • for
  • for - each
while Loop
 syntax:
while(expression){
 //do something
}
මෙහිදී expression එක true ලෙස පවතින තාක් loop එක ක්‍රියාත්මක වීම සිදුවේ (නැවත නැවත සිදුවේ). අපි දැන් while loop එක ක්‍රියාත්මක වන අන්දම විස්තරාත්මකව බලමු.
මෙහිදී expression එකෙහි boolean අගය පරීක්ෂා කිරීම සිදුවනවා. එය false නම් while එක ඇතුලේ ඇති statement එක execute කිරීම සිදුනොක‍ර කෙලින්ම loop එකෙන් පිටතට යාම සිදුක‍රනවා. එය true නම් while loop එක ඇතුලේ ඇති statement execute ක‍ර අවසානයේ නැවත expression එක පරීක්ෂා ක‍රනවා. මේ ආකාරයට දිගින් දිගටම මෙය සිදුවනවා. සාමාන්‍යයෙන් while loop එකක් යොදාගන්නේ loop එක කොපමණ වාර ගණනක් ක්‍රියාත්මක විය යුතුද යන්න කලින් අනුමාන කල නොහැකි අවස්ථා වලදීය.
අපි ස‍රල ජාවා වැඩසටහනකින් බලමු while iteration එකක් ක්‍රියා කරන ආකාරය.
ex :
class WhileDemo {
 public static void main(String args[]){
  int val=(int)(Math.random()*10);
  while(val !=5){
   System.out.println(val);
   val=(int)(Math.random()*10);
  }
 }
}

output :

මෙහිදී සසම්භාවී ලෙස 0 සිට 9 තෙක් පූර්ණ සංඛ්‍යා උත්පාදනය කොට ලැබුනු සංඛ්‍යාව 5 නම් loop එක නැවැත්වීම සිදුක‍රනවා. මෙහිදී අපිට 5 කීවෙනි සංඛ්‍යාව ලෙස ලැබේදැයි කිව නොහැකියි. එමනිසා මෙවැනි අවස්ථාවකදී while loop එක උපයෝගී ක‍රගැනීම පහසුයි. ඉහත උදාහ‍රණයේ 2,6,9,0,8,0,8,6,2 යන සංඛ්‍යා පිලිවෙලින් ලැබී අවසානයේ ලැබී ඇත්තේ 5 යි. එමනිසා while loop එක නැවතීම සිදුවී තිබෙනවා.

do - while loop
 syntax:
 

do{
 //do some thing
}while(expression);

මෙහිදි expression එක ප‍රීක්ෂා කිරීම සිදුක‍රන්නේ statements execute කිරීමෙන් පසුවයි.

example :

class DoWhileDemo {
 public static void main(String args[]){
  int val=(int)(Math.random()*10);
  do{
   System.out.println(val);
   val=(int)(Math.random()*10);
  }while(val !=5);
 }
}
output :


මෙහිදී generate ක‍රන ලද සංඛ්‍යාව 5 ට අසමානද යන්න ප‍රීක්ෂා ක‍රනුයේ loop එක අවසානයේ දිය. console එකෙහි මුලින් 5 print වීම‍ට හේතුව මෙයයි.

for loop
 syntax:
for(initialization ; Expression ; UpdateStatement ){
 //do something
}

example :

int tot=0;
for(int i=1;i<=30;i++){
 tot+=i;
}

සාමාන්‍යයෙන් for loop එකක් භාවිතා ක‍රන්නේ loop එක ක්‍රියාත්මක වන වාර ගණන දන්නා විටදීය.

for - each loop
syntax :
for(element : array ){
 //do something
}

මෙහිදී දෙනලද array එකක් තුල ඇති සියලු අවයව (elements) එකින් එක ලබාගැනීම කලහැකියි. දී ඇති element නම් variable එක තුලට සෑම iteration එකක දීම value ලබාදීම සිදුක‍රනවා. අපි ස‍රළ ජාවා වැඩසටහනක් තුලින් බලමු for - each iteration එක ක්‍රියා කරන ආකාරය.

example :


class ForEachDemo{
 public static void main(String args[]){
  int arr[]={33,45,67,78,56};
  int tot=0;
  for(int i:arr){
   System.out.println(i);
   tot=tot+i;
  }
  System.out.println("Sum : " + tot );
 }
}

output :

loop වල ක්‍රියාකාරීත්වය පෙන්වීම සඳහා ලියන ලද පහත ජාවා ඇප්ලටය භාවිතා කර බලන්න.

Saturday, May 1, 2010

ජාවා Selection Statements

ඕනැම ප‍රිගණක ක්‍රම ලේඛනයක් සාමාන්‍යයෙන් මූලික කොටස් 3 කින් සමන්විත වෙනවා
  1. Selection
  2. Sequence
  3. Iteration
අප මෙම පාඩමේදී සලකා බලන්නේ ජාවාහි selection භාවිතා වන්නේ කුමන ආකාරයෙන්ද යන්නයි. ජාවා තුල selection සඳහා සහය දැක්වීමට පහත සඳහන් විකල්ප 6 භාවිතා කරන්න පුලුවන්.
  • if 
  • if - else
  • Nested if
  • if - else - if
  • switch statement 
  • Ternary operator
if statement
syntax :
if (condition) {
   //Perform Task1
}

මෙහිදී සිදුවන්නේ condition යන්න true ලෙස පවතීනම් if code block එක තුල ඇති statements (Task1) execute කිරීමයි.

if - else statement
syntax :
if(condition){
 //Perform Task1
}else{
 //Perform Task2
}

මෙහිදී සිදුවන්නේ condition යන්න true ලෙස පවතීනම් if code block එක තුල ඇති statements (Task1) execute කිරීමයි. condition යන්න false ලෙස පවතීනම් else සඳහා අදාල  code block එක තුල ඇති statements (Task2) execute කිරීමයි.

Nested if statements

syntax :
if(condition1){
 if(condition2){
  //Peform Task1
 }else{
  //Peform Task2
 }
}else{
 //Peform Task3
}

මෙහිදී සිදුක‍ර ඇත්තේ if statement කිහිපයක් එකට ගොනු ක‍්ර දැක්වීමයි. condition1 තෘප්ත වේ නම් එම if block එක තුල ඇති ඊලග if statement එක execute වේ එනම් condition2 තෘප්ත වේනම් Task1 සිදුක‍රයි. condition2 යන්න තෘප්ත නොවේ නම් Task2 සිදුක‍රයි. යම් හෙයකින් condition1 තෘප්ත නොවේ නම්(false) Task3 සිදුක‍්රයි.
දැන් ඔබට පැහැදිලි වනවා ඇති Task1 සිදුවීමට නම් condition1 සහ condition2 යන දෙකම තෘප්ත විය යුතු බව. Task2 සිදුවීමට condition1 තෘප්ත වීම ප්‍රමාණවත්ය. condition1 තෘප්ත නොවීම සිදුවුවහොත් Task3 අනිවාර්‍යයෙන්ම සිදුවනු ඇත.

if - else - if statements 

මෙහිදී අපට මුලින් ඇති if condition එක තෘප්ත නොවේ නම් තවත් if conditions කිහිපයක් යෙදිය හැක.
syntax:
 
if(condition1){
 //Perform Task1
}else if(condition2){
 //Perform Task2
}else if(condition3){
 //Perform Task3
}else{
 //Perform Task4
}

switch statement

ජාවා තුලදී switch statement එක සහය දක්වන්නේ int,byte,short,char සහ enumeration  data types සඳහා පමණයි.

ex:


class Case {
public static void main(String args[]){

 int week=3;
 String output;
 switch(week){
  case 1 : output="Sunday";break;
  case 2 : output="Monday";break;
  case 3 : output="Tuesday";break;
  case 4 : output="Wednesday";break;
  case 5 : output="Thursday";break;
  case 6 : output="Friday";break;
  case 7 : output="Saturday";break;
  default : output="Invalid day of week!";
 }//end of the switch statement
 
 System.out.println(output);
}
}

මෙහිදී break keyword එක යොදා තිබෙන්නේ condition එක තෘප්ත වූවිට switch block එකෙන් ඉවතට යාමටයි. default යටතේ දී ඇති statement එක execute වනුයේ ඉහත සඳහන් කිසිඳු case එකක් සමග දී ඇති values නොගැලපුනහොත් පමණි.


Ternary operator

syntax:


result=Condition ? valueA : valueB

මෙහිදී සිදුවන්නේ දී ඇති condition එක true නම් result සඳහා valueA ද නො එසේ නම් valueB ද assign කිරීමයි.

example :

int max;
int a=12 , b=54;
max = (a>b) ? a : b ;

Saturday, April 10, 2010

ජාවා ක්‍රමලේඛනයේ යෙදීමේදී උපයෝගී කරගත හැකි මෘදුකාංග

ජාවා වැඩසටහන් ලිවීමට මූලික වශයෙන් අත්‍යාවශ්‍ය වන්නේ command prompt එක(console), ස‍රල text editor එකක් සහ JDK (Java Development KIT) එක පමණයි. ස‍රල text editor එකක් ලෙස වින්ඩෝස් වලදී Notepad ද Linux වලදී VI Editor ද යොදාගත හැක. එහෙත් ආධුනිකයෙකුට මෙය ප්‍රමාණවත් වුවත් වැඩිදුරටත් ජාවා හැදෑරීමේ දී මීට වඩා පහසුකම් අවශ්‍යවේ. උදාහ‍රණයක් වශයෙන් පේලි අංකය(line number) පෙන්වීම ක්‍රමලේඛනයේ යෙදීමේදි වැදගත් වේ. line indentation තැබිය හැකිවීම තවත් අවශ්‍යතාවයකි. syntax highlighting තිබේනම් තවත් පහසුවකි. මේවා සියල්ල ස‍රල text editor එකකින් ලබා ගැනීම අසීරුවේ.

IDE (Integrated Development Environment) එකක් යොදා ගැනීම ඉතා විශාල පහසුවක් වුවත් ඒවා මගින් ක්‍රමලේඛකයා විසින් කලයුතු ඉතා විශාල කාර්යභාරයක් සිදුකරන නිසා ජාවා මූලික සංකල්ප ඉගෙන ගැනීමේ දී මේවා යොදා ගැනීම යෝග්‍ය නොවේ. Netbeans හා Eclipse යනු ඉතා ජනප්‍රිය හා නොමිලේ ලබාදෙන IDE වේ.
අපි දැන් බලමු ජාවා වැඩසටහන් ලිවීමට යොදාගත හැකි editors කිහිපයක්.

  
Notepad++




භාගත ක‍රගැනීමට : http://sourceforge.net/projects/notepad-plus/files/
ක්‍රියාකාරී අවථාවක්:


JEdit
භාගත ක‍රගැනීමට : http://www.jedit.org/
ක්‍රියාකාරී අවථාවක්:
 


නොමිලයේ ලබාදෙන IDE
Netbeans
භාගත ක‍රගැනීමට : http://netbeans.org/
ක්‍රියාකාරී අවථාවක්:


Eclipse






භාගත ක‍රගැනීමට : http://www.eclipse.org/downloads/
ක්‍රියාකාරී අවථාවක්:
ජාවා මූලික සංකල්ප ගැන හොඳ අවබෝධයක් ලැබුන විට Netbeans , Eclipse වැනි IDE එකක් භාවිතා කිරීම සුදුසුය. එතෙක් JEdit, Notepad++ වැනි editor එකක් භාවිතා කිරීම නුවණට හුරුය.

Thursday, April 8, 2010

අපි සරල ජාවා වැඩසටහනක් ලියමු

අපි මීට පෙර පාඩමෙන් ජාවා Variables පිළිබඳ කතාකලා.අපි අද පාඩමේදී ස‍රල ජාවා වැඩසටහනක් ලියන ආක‍රය බලමු. ජාවා කියන්නේ වස්තු පාදක (Object Oriented) ප‍රිගණක භාෂාවක් කියලා දන්නවානේ. සැම දෙයක්ම Object එකක් කියලා තමයි ජාවා තුලදී සැලකෙන්නේ. කොටින්ම කිව්වොත් අපි ලියන ජාවා වැඩසටහන පවා ජාවා තුල සැලකෙන්නේ Object එකක් ලෙසටයි. අපි දැන් බලමු ජාවා වැඩසටහනක ස‍රලම අවස්ථාවක්.
public class First {
  public static void main(String args[]){
 System.out.println("Hello Sri Lanka");
  }
}
මෙම කෝඩ් එක Notepad එකේ ටයිප් ක‍රලා First.java යනුවෙන්  save ක‍රගන්න. මම එය සේව් ක‍රගත්තේ D:\Java Examples කියන ෆෝල්ඩර් එකේ. 
දැන් තියෙන්නේ ජාවා වැඩසටහන සම්පාදනය ක‍්රගැනීමයි (compile). මේ සඳහා ඔබේ පරිගණකයේ Java Development Kit ස්ථාපනය කර තිබිය යුතුයි. මම මීට පෙර පාඩමකදී ජාවා ස්ථාපනය කරගන්නා අයුරු ඔබට පෙන්වාදී තිබෙනවා. එම පාඩම බැලීමට මෙතන ක්ලික් කරන්න. Java Development Kit භාගත ක‍රගැනීමට මෙතන Click ක‍්රන්න.
වැඩසටහන කම්පයිල් ක‍රගැනීමට Command Prompt හි පහත විධානය ලබා දෙන්න.

javac First.java
ප්‍රතිඵලය :
සාර්ථකව කම්පයිල් වූයේ නැත්නම් නැවත වැඩසටහන පරීක්ෂා කර බලන්න. ජාවා Case Sensitive නිසා Capital,Simple නිවැරදිව තිබිය යුතුය. සාර්ථකව කම්පයිල් වූ විට පහත ප‍රිදි  First.java වලට අමත‍රව First.class යනුවෙන් ගොනුවක් සෑදෙනු ඇති


දැන් තිබෙන්නේ කම්පයිල් වූ වැඩසටහන ධාවනය කිරීමයි (Run). මේ සඳහා පහත විධානය භාවිත කරන්න.
java First
ප්‍රතිඵලය :
අපි දැන් ලියන ලද ජාවා වැඩසටහන ගැන වැඩිදුරටත් අධ්‍යයනයක යෙදෙමු.
Line 1 : මෙම ලයින් එකෙන් අප ලියන ලද ජාවා වැඩසටහන අයත් class එක සඳහන් කිරීම සිදුකෙරෙනවා. ජාවා ගොනුව save ක‍රගත යුත්තේත් මෙම නමිනුයි. අපේ වැඩසටහනේ එය First ලෙස දී තිබෙනවා


Line 2: මෙමගින් අප ජාවා වැඩසටහනේ ප්‍රධාන method එකෙහි ආරම්භය සනිටුහන් වනවා. මෙම method එක හ‍රහා තමයි අනෙකුත් සියලුම methods call කිරීම සිදුවන්නේ.

Line 3: මෙහිදී println() නම් method එක call කිරීම සිදුකෙරෙනවා. එය ඇතුලුවන්නේ System නම් package එක තුලයි. out යනු ජාවාහි standard output stream එකයි(අපි ඉදිරි පාඩම් පෙලකදී ජාවාහි streams පිලිබඳ වැඩිදුරටත් හදාරමු). මෙය සාමාන්‍යයෙන් Command Prompt එකයි. මෙම සමස්ථ පේලිය මගින් සිදුක‍්රන්නේ Hello Sri Lanka යනුවෙන් command prompt / console එකෙහි පෙන්වීමයි.

අපි ඊලඟ පාඩමෙන් ජාවා operators පිලිබඳව බලමු.

Sunday, April 4, 2010

Java Applications හා Java Applets අත‍ර ඇති වෙනස්කම්

Java Applets
  • ධාවනය වීමට ජාවා සඳහා සහය දක්වන වෙබ් බ්‍රවුසරයක් අවශ්‍ය වේ.
  • සීමා කරන ලද පරිසරයක් තුල ධාවනය වේ (Sand box).
  • ධාවනය වන පරිගණකයේ ඇති බොහෝ සම්පත්(File system, Networks..etc) භාවිතා කල නොහැක. නමුත් එය හොස්ට් කර ඇති සර්වර් පරිගණකයේ සම්පත් භාවිතා කල හැක.
  • ධාවනය වීමට පෙර අන්තර්ජාලය හරහා පරිගණකයට භාගත කල යුතුය. (සැයු : මෙය වෙබ් බ්‍රවුසරය ස්වයංක්‍රියව සිදුකරන ක්‍රියාවලියකි. සාමාන්‍යයෙන් පරිශීලකයා මෙයට මැදිහත් විය යුතු නොවේ applet ටැගය මගින් වෙබ් බ්‍රවුසරය ජාවා applet එක හඳුනා ගනී.)
Java Applications
  • ජාවාහි උපරිම හැකියාව ලබාගත හැකිය
  • ධාවනය වන පරිගණකයේ සම්පත් මුලුමනින්ම පාහේ භාවිතා කල හැක.
  • සාමාන්‍යයෙන් ස්ථාපනය කිරීමකින් අනතුරුව ධාවනය(run) කල හැක.
Java Applet එකක් සඳහා උදාහරණයක් :


සැයු : අප ඉදිරි පාඩම් වලදී වැඩි දුරටත් ජාවා applets සහ applications පිලිඹඳ හැදෑරීමට බලාපොරොත්තු වේ.

ප‍රිගණකය තුල ජාවා ස්ථාපනය කිරීම :: Installing Java

ජාවා ස්ථාපනය ක‍රගැනීමට JDK (Java Development Kit) එක භාගත ක‍්රගැනීම අවශ්‍ය වනවා. ඔබට මෙය SUN වෙබ් අඩවිය තුලින් නොමිලයේ ලබාගන්න පුලුවන්.මේ සඳහා පහත සබැඳුම භාවිත ක‍්රන්න.
අපිට අවශ්‍ය වන්නේ JDK එක නිසා Download JDK බොත්තම මත ක්ලික් ක‍්රන්න.JDK එක download ක‍රගත් පසු සාමාන්‍ය ප‍්රිදි එය install ක‍්රගන්න.
 දැන් ක‍රන්න තියෙන්නේ Path එක සෙට් ක‍්රන එකයි. මේ සඳහා මා විසින් සකසන ලද පහත වීඩියෝ එක බලන්න.




Path එක නියමාකාරයෙන් සකස් වූයේ නම් command prompt එකේ javac ලෙස විධාන කල විට පහත ලෙස දිස්විය යුතුයි.
Usage: javac
where possible options include:
  -g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info
  -nowarn                    Generate no warnings
  -verbose                   Output messages about what the compiler is doing
  -deprecation               Output source locations where deprecated APIs are used
  -classpath           Specify where to find user class files and annotation processors
  -cp                  Specify where to find user class files and annotation processors
  -sourcepath          Specify where to find input source files
  -bootclasspath       Override location of bootstrap class files
  -extdirs             Override location of installed extensions
  -endorseddirs        Override location of endorsed standards path
  -proc:{none,only}          Control whether annotation processing and/or compilation is done.
  -processor [,,...]Names of the annotation processors to run; bypasses default discovery process
  -processorpath       Specify where to find annotation processors
  -d              Specify where to place generated class files
  -s              Specify where to place generated source files
  -implicit:{none,class}     Specify whether or not to generate class files for implicitly referenced files
  -encoding        Specify character encoding used by source files
  -source           Provide source compatibility with specified release
  -target           Generate class files for specific VM version
  -version                   Version information
  -help                      Print a synopsis of standard options
  -Akey[=value]              Options to pass to annotation processors
  -X                         Print a synopsis of nonstandard options
  -J                   Pass directly to the runtime system

මුල්ම Java පාඩම :: Java හැඳින්වීම

ජාවා ප‍රිගණක භාෂාව භාවිතා ක‍රලා විවිධ ප‍රිගණක මෙහෙයුම් පද්ධති වල එකසේ ක්‍රියාත්මක වන මෘදුකාංග නිපදවීමට පුලුවන්. ජංගම දුරකථන,ඩෙක්ස්ටොප් ප‍රිගණක මෘදුකාංග සහ විශාල ප‍රිශීලකයන් ප්‍රමාණයක් භාවිතා ක‍රන සර්වර් සයිඩ් භාවිත යෙදුම් නිපදවීමටද ජාවා ප‍රිගණක භාෂාව උපකාර ක‍රගන්න පුලුවන්.

C/C++ වගේ නොවෙයි ජාවා ප‍රිගණක භාෂාව interpreted ප‍රිගණක භාෂාවක්. ඒ කියන්නේ ජාවා වැඩසටහනක තිබෙන්නේ මැෂින් ඉන්ස්ට්‍රක්ශන්ස් නොවෙයි, ජාවා වර්චුවල් මැෂින් එකට හඳුනාගන්න පුලුවන් ඉන්ස්ට්‍රක්ශන්ස්. ජාවා වර්චුවල් මැෂින් එක තමයි ජාවා වැඩසටහන් ධාවනය ක‍රවන්නේ. එතකොට ජාවා වල එක අවාසියක් තමයි C/C++ ත‍රම් කාර්යක්ශමතාවයක් ලබා නොදීම. ඒ වුනාට ජාවා වල තිබෙන වාසිත් එක්ක බලනකොට අවාසි නොසලකා හැරිය හැකි ත‍රම්. කාර්යක්ශමතාවය පිලිබඳ ගැටලුව උනත් නිරාක‍රණය ක‍රගන්න පහසුකම් ජාවා තුලින්ම සොයාගන්න පුලුවන්.

ජාවා ප‍රිගණක භාෂාව වස්තු පාදක OO(Object Oriented) ප‍රිගණක භාෂාවක්. මේ නිසා මනාකොට සංවිධානය ක‍රන ලද විශාල ප්‍රමාණයේ ප‍රිගණක වැඩ සටහන් ලිවීමට ජාවා යොදාගන්න පුලුවන්. 

සියලුම ලිපි කියවීම සඳහා මෙතනින් පිවිසෙන්න.