Showing posts with label java. Show all posts
Showing posts with label java. Show all posts

Monday, May 18, 2009

Java - Lessons on Naming Conventions

Ok, bakit ba mahalaga ang naming conventions or standards? Kasi:
  • 80% na binabayad sa software ay napupunta sa maintenance
  • Bihirang bihira na ang original na author ng isang sofware ay sya na din ang magme-maintain ng code na yun sa buong lifetime ng software na yun. Usually, napapasa-pasa sa iba't ibang programmers ang pag maintain ng code.
  • Nag-iimprove ang readability ng code kaya mas mabilis maintindihan ng mga susunod na programmers.
Pero strict ba dapat ang implementation nito? Hindi naman. Kasi kahit ano nga ang gamitin ng programmer/designer eh oks lang at mag ra-run din ang program. Or kaya minsan may sariling standards ang company or ang authord ng codes mismo. Maganda lang kung makakasunod tayo dito para compliant tayo sa standards at mas madaling maintindihan ng susunod na programmer.

Ano ba ang mga naming conventions:

Packages - lowercase lahat na usually ay nagsisimula sa isa sa mga top level domains: com, edu, gove, mil, net, org or kaya two-letter code ng isang bansa based sa ISO Standard 3166, 1981. Yung mga susunod ay internal standard na ng company.
-sa mga simpleng projects lang, pwede din kahit ano depende na sa programmer/designer. basta dapat all lower case pa din.
Example:

edu.up.linux.core
org.pinoyjavatutorial.main

Classes - haha :D dito ko guilty kasi minsan kahit ano na lang ang name ng class ko or kaya verb ang name na gamit ko. Anyway, ang dapat talaga ay noun. Mixed case ang gamit. Mixed case means yung first letter of each word ay upper case. Minsan tawag nila sa mixed case ay camel case. Kasi parang likod ng camel na may dalawang humps. Anyway, kung ano pa ang tawag dyan, ang mahala ang first letter ng word ay laging capital tapos walang space. Try to avoid acronyms and abbreviations. Unless na yung abbreviation ay mas gamitin kaysa sa meaning nya like URL, HTML, WWW.
Example:

class SchoolBus
class Pencil
class BufferedReader

Interface - Mixed case din sya. Kaya ang first letter ng word ay upper case. Para syang class pero wala na syang restriction na dapat ay noun.
Example:

interface RasterDelegate

Method - should be verbs na ang pagkakasulat ay kagaya ng sa class except yung first letter ay lower case then yung mga sumunod na first letter ng word upper case na.
Example:

doGet();
setName();
main();

Variables - same ng naming convention ng methods pero wala ng restriction na dapat eh verb. Nga pala, variables should not start with underscores (_) or dollar sign $ kahit na pinapayagan sya ng compiler. Confusing kasi tingnan. It should be short and meaningful. Avoid using one letter variables din (e.g. 'a', 'b'). Except kung temporary variables lang.
Example:

int screenWidth;
String name;
int i;

Constants - All upper case na yung space ay replaced by underscores (_).
Example:

final double PI = 3.1416;

static final int END_DATE = 25;

Monday, April 13, 2009

Java Lesson 2 - Getting Input from the User

Ok, so far we have a working simple java application that displays a string sa console. It doesn't do anything neat pero its enough to get our feet wet on the basic use of eclipse and java. For the mean time, sa mga command line program muna tayo mag stick at hindi GUI para hindi kayo mabigla.

Its time we update our 'HelloWolrdSample' program. Kukuha tayo ng input sa user sa command line. Eto yung updated code:

package com.pinoyjavatutorial;

import java.util.Scanner; //added


public class HelloWorld {


/**

* @param args

*/
public static void main(String[] args) {
// TODO Auto-generated method stub

Scanner scan = new Scanner(System.in); //added

String name = null; //added
System.out.println("Input your name: "); //added
name = scan.nextLine(); //added
System.out.println("Hello World from " + name); //updated
}
}


Now, explain ko yung mga ginagawa ng mga dinagdag pati ng inap-date:

import java.util.Scanner;
- it tells JVM to import yung Scanner na class na nasa loob ng java.util. Pag hindi kasi inimport yun, hindi magagamit yung Scanner na class. Parang yung sa '#include' ito sa C/C++.

Scanner scan = new Scanner(System.in);
-bale dito, nag declare tayo ng scan na object na ang type ay Scanner at nilagyan na din natin ng laman. Actually short cut na statement ito eh. Eto talaga yung code niya:
Scanner scan;
scan = new Scanner(System.in);
Yung 'Scanner scan;' na line ay yung declaration. Nagdeclare tayo na si 'scan' ay isang Scanner na object. Pero wala pa syang laman. Basta sinabi lang na meron 'scan' na object at ang type nya ay 'Scanner'. Yung 'scan = new Scanner(System.in);' sinasabi naman nun na itong si 'scan', which we declared earlier, ay magkakaroon ng instance ng Scanner na object at si 'System.in' ay parameter nya. Kahit wag nyo muna intindihin yung about sa instance at kung bakit may 'new' na keyword dun. Basta sa ngayon, ang mahalaga na alam nyo ay si 'scan' ay isang object na ang type ay 'Scanner' na nilagyan ng instance ng Scanner na object.

String name = null;
-Simple declaration of a string with a 'null' value. Medyo tricky tong part na to. Kasi sa usual conversation, when we say null, it gives an impression na blank sya. Pero in java, yung blank and null are different. Pag sa null, wala talaga syang laman a.k.a void reference. Pag sinabing blank, meron syang laman, blank nga lang. Kaya sa case na to, yung 'name' na string, it doesn't refer to anything sa memory ng computer. Kaya kung ipi-print natin ang laman nya, sasabihin ng JVM na 'null' sya. Pero kung ang ginawa natin ay:
String name = "";
Meronng laman si 'name', blank nga lang ang laman nya. Kaya pag ipi-print natin sya, blank lang ang lalabas. Sa susunod na mga lessons, using 'if' statements, we'll try to compare ang blank at null strings para mas makita nyo ang ibig kong sabihin.

System.out.println("Input your name: ");
-Alam nyo na to. It just prints the string 'Input your name: ' sa console.

name = scan.nextLine();
-Ok, sa line na to, 'scan' will give a string type data from the keyboard to 'name'. At since string input sya, kahit number pa ang ilagay ng user, that will be treated as type string.

System.out.println("Hello World from " + name);
-Dito, ipi-print ang string na 'Hello World from ' at yung value ni 'name'.

Running the program
1. Sa 'Package Explorer' na window, right click on 'HelloWorld.java'. Then go to 'Run As' -> 'Java Application'.
2. May lalabas na ganto sa baba ng eclipse na window:
Click nyo lang yung loob ng 'Console' na tab para dun mapunta ang cursor.
3. Input your name and press 'Enter'
4. It will display the 'Hello World from ' string and your name.

Congratulations! You are able to get a user input and print it using java! :)

Nga pala, baka may magtanong, bakit hindi 'BufferedReader' yung ginamit natin. Well, mas madali kasi gamitin at ituro sa mga new beginners pag ginamit ang 'Scanner' instead of 'BufferedReader'. Compare nyo to, ano ang mas madali sauluhin at intindihin?:

BufferedReader br = new Bufferedreader(InputStreamReader(System.in));

or ito

Scanner scan = new Scanner(System.in);


Diba mas madali ang Scanner kasi wala nang 'InputStreamReader'. Not to mention na kapag sa 'BufferedReader', dalawa ang i-iimport mo: yung 'BufferedReader' at 'InputStreamReader' na class. Eh sa 'Scanner', 'Scanner' lang. :)

Saturday, April 11, 2009

Java Lesson 1 - Hello World from Java using Eclipse

I was informed na better if magstat muna ko sa basics in java instead of jumping to J2EE kagad. So I'll be putting the J2EE posts on hold. Next time ko na ituloy 'pag oks na tayo sa basics. :)

For our setup, same lang ng sa J2EE Lesson 1 post ko. Pero since Java na lang 'to, you don't have to do Tomcat installation and configuration. So ang gagawin na lang ay:

1. Donwload JDK and Eclipse
2. Instalation
3. Configuration (except step 6)

Actually, pwedeng hindi na gawin ang configuration na part. Kasi gagana naman ang eclipse kahit walang configuration na JAVA_HOME. Pero paki gawa na din kasi we'll be needing it sa ibang lessons.

After nyo magawa yung steps above, to na ang next steps natin:

1. Run Eclipse
2. You'll be greeted with this window:
Just click 'Ok'. Sinasabi lang nyan kung san yung 'workspace'. Yung 'workspace' eh yung folder kung san mapapalagay yung mga Java projects.
3. Lalabas 'tong window na to:
Just click yung 'workbench na icon. Yung ung icon na nagsosolo sa right side.
4. Go to 'File' -> 'New' -> 'Other' -> 'Java' -> 'Java Project'. Kagaya nito:
5. Click 'Next'.
6. Sa 'Project Name:' na field, lagay nyo lang 'HelloWorldSample'
7. May lalabas na window:
Just click 'Yes'
8. Go to 'File' -> 'New' -> 'Class'
9. Sa name field, lagay nyo lang 'HelloWorld' at sa 'Package' naman, 'com.pinoyjavatutorial'
10. Put a check on 'public static void main(String [] args). Magiging ganto yung hitsura ng window:
11. By doing that, gagawa na ang eclipse ng class natin at yung package.
12. Lagay nyo to sa loob ng 'main' na method: 'System.out.println("Hello World from Java!");' So magiging ganto yung code ng 'HelloWorld.java':

package com.pinoyjavatutorial;
public class HelloWorld {
/**
* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println("Hello World from Java!");

}


}


13. Sa 'Package Explorer' na window, right click on 'HelloWorld.java'. Then go to 'Run As' -> 'Java Application'. Parang ganto:

14. You'll be ask if you want to save, just click 'Ok'
15. May lalabas na 'Hello World from Java' na string sa baba. Highlighted in a red box sa baba:
Ok, here's the fun part. I'll explain what the code does. :)

The first line:

package com.pinoyjavatutorial;
- This states that this class is going to be put in a 'package' or folder/s named 'com.pinoyjavatutorial'. Actually kahit anong pangalan to. So instead of 'com.pinoyjavatutorial', pwede nyo paltan ng kahit ano like 'myfirsteclipseproject' or 'daiIchiProject' at kung ano-ano pa.

public class HelloWorld {
- To naman, it states that this is a public class named 'HelloWorld'. Since 'HelloWorld' yung name ng class, dapat ang filename nya ay 'HelloWorld' din. We don't have to worry na dapat same ang filename at name ng class kasi eclipse takes care of that.
-yung 'public' naman, it declares na 'public' yung type ng 'access modifier' nya. More on Access modifiers sa mga next lessons. Basta tandaan lang na kapag 'public', magagamit ang class na ito ng iba pang classes at java applications.
- yung 'class', it just states na class yung type nya.

/**
* @param args

*/

- Comment lang to which means na hindi to babasahin ng compiler. Multi-line comment ito. Which means anything between '/**' at '*/' ay i-ignore ng compiler. Medyo special na comment to kasi Javadoc comment to. Ang mga javadoc comment ay ginagamit na para sa documentation purposes. Saka na natin i-explore ang javadoc kasi basics muna tayo.


public static void main(String[] args) {
- yung 'public' dito ay same lang nung 'public' kanina na inexplain ko. It just means na pwede gamitin tong method na to ng iba pang java classes.
- ang ibig sabihin ng 'static' na keyword dito ay hindi pwedeng magkaroon ng ibang instantance ng method na 'to. Baka mapaisip kayo, ano ba ang instance? Lalo na kung galing kayo sa Turbo C (hindi C++ ha) na language or sa iba pang procedural languages (hindi object-oriented programming language) eh medyo mapapaisip kayo kasi walang instance concept sa mga languages na yun. If i-explain ko kagad ang about sa mga instance eh makakalito lang. Let's discuss that pag dun na tayo sa pag gamit ng ibang mga classes. Nga pala, ang 'static' ay isa din Access modifier kagaya ng 'public'.
-the 'void' keyword means it won't return any value. Madi-discuss natin to pag gumagamit na tayo ng iba pang classes.
-'main' yung name ng method natin. Sya yung starting point. Similar sya sa 'main' ng C/C++. Bale pag niload ang 'HelloWorld' eh yung 'main' method ang hahanapin ng JVM.
-'String[] args', bale nag declare lang tayo ng string object na ang name ay 'args'. Minsan instead of 'args', 'argv' ang ginagamit ng ibang programmers. Kaya magiging 'String[] argv' sya. Ok lang kahit ano sa dalawa. Name lang naman yan. Kahit nga paltan ko yan ng 'kahitAnongVariable' eh oks lang din. Nilagay nga pala dun ang 'String[] args' kasi it means na yung method na 'main' ay pwedeng mag-accept ng argument na string ang type.
- Kindly note na since ang 'public' ay access modifier kagaya ng 'static', pwedeng 'static public void main(String[] args)'. Pero sa usual convention, its 'public static' and not 'static public'.

// TODO Auto-generated method stub
- Comment lang din to. Single line comment ang type nito. Ibig sabihin ng single line ay tong line lang na to ang i-ignore ng compiler. Yung next na line ay i-e-execute ng compiler.

System.out.println("Hello World from Java!");

- To way para mag print sa standard output. Yung '"Hello World from Java!"' eh yung ipi-print sa standard output.

I hope I was able to properly explain our first Java application. It's a little non-sense kasi wala naman sya ginagawa talaga na magagamit natin ng matino. Pero start pa lang kasi kaya I'm just building the concepts pati ang pag-gamit ng eclipse. Kaya nga maraming mga parts ang briefly explained lang at sa next na post na yung in-depth discussion para dun.

Monday, April 6, 2009

Welcome sa Pinoy Java Tutorial!

Welcome!.. Bienvenido!.. Maligayang Pagdating sa Pinoy Java Tutorial!

Ok, ano ba ang blog na 'to (at bakit Tagalog - English a.ka. tag-lish)?

Basically, ginawa ko ang blog na to para may paglagyan ng mga java tutorials ko. J2EE programmer kasi ako at gusto kong magturo sana ng computer subject sa mga highschool students. Kaya lang, wala akong educational units kaya hindi ako pwedeng mag-apply as teacher. Mahilig din akong gumawa ng mga java tutorials at naisip ko na dito na lang 'yon ilagay. Sabi nga eh, share your knowledge. :)

To give a brief background, nagtapos ako ng Computer Engineering sa isang paaralan sa may southern Luzon. Naging Test Engineer ako sa isang hard disk drive manufacturing company as my first job. Then lumipat ako sa isang outsourcing company and was introduced to software testing. Sa same company din, lumipat naman ako ngayon sa Java Capability and have been into Java software engineering ever since.

Bakit tag-lish ang pagkakagawa ko? Kasi ang dami ng English ang ginamit na language na Java tutorial. Madami ding Spanish, Japanese at iba pang wika. Naisip ko na wala pang tagalog kaya hindi English ang ginamit ko. Mahihirapan naman ako kung purong tagalog kaya tag-lish na lang. :)

Ano ba ang matututunan nyo sa mga posting ko dito? Well, I won't be teaching the history of Java, what is Java programming language, why learn java at kung ano-ano pang tungkol sa java. Diretso na tayong coding. We'll tackle the basics and move on from topic to topic. I'll be covering mostly J2EE and syempre mata-touch na din ng konti ang Java dun. I'll be moving to J2ME pag tingin ko eh ok na yung mga nasulat ko about J2EE. If total newbie ka, medyo mahihirapan ka dito kasi I aim this tutorial sa mga at least eh may background na sa java. Pero I might do a really simple set of step-by-step tutorial sa Java pag sinipag ako. :)

Ok, so magsimula na tayo? :)