Posted by: tonyteaching | June 23, 2009

Package, Import, & jar

Mencoba mengerti, apa itu “package”, dan apa itu “import”..2 kata yang sering saya jumpai dalam sintax Java

I. Apa itu Package?

“Package” = directory

“Packages” adalah cara kita mengelompokkan dan menyimpan file-file java kita. Biasanya file-file dalam 1 directory (package) memiliki kesamaan fungsi atau jenis.

Keuntungan men-create package untuk sebuah file java adalah kita dapat memanggil file java itu dari mana saja selama saya menyebutkan detail package-nya (posisi-nya)

Kelemahannya: jika sebuah file java sudah kita create dan compile menjadi package maka kita tidak bisa lagi men-run dengan hanya  nama file-nya.

Sebagai contoh:

Saya punya file “HaloTony.java” di folder C:\Java_Tony

selama ini jika saya mau men-compile file “HaloTony.java” saya harus masuk ke directory Java_Tony dulu (cd Java_Tony), baru saya compile menjadi file class (“Java_Tony.class” ): javac HaloTony.java

Kemudian baru kita mengeksekusinya dari tempat dia berada (C:\Java_Tony):  java HaloTony

(kita dapat menjalankan perintah ‘javac’ dan ‘java’ yang ada di folder JDK/Bin karena lokasi ini sudah saya deklarasikan sebelumnya di PATH windows)

——————–

II. Cara Membuat Package?

Nah sekarang saya pengin mengubah file HaloTony.java menjadi packet

Karena file ‘HaloTony.java ‘ saya simpan di folder C:\Java_Tony

maka untuk mengubah file itu menjadi package, caranya: tambahkan di paling awal script

package namapaket;

Contoh untuk File “HaloTony.java”:

package Java_Tony;

public class HaloTony {
public static void main (String args []) {
System.out.println (“Halo Mas Tony!”);
}
}

——

selanjutnya file HaloTony.java siap dicompile dengan:

javac HaloTony.java

menghasilkan file HaloTony.class

—————————————–

III. CARA MENGEKSEKUSI File CLASS Yang menjadi PACKAGE???

Karena di dalam script yang dicompile tadi terdapat perintah membuat file class package, maka sesudah dicompile, file ‘HaloTony.class’ hanya bisa dieksekusi dengan nama komplit package-nya, yakni “Java_Tony.HaloTony”

java Java_Tony.HaloTony

Kelebihannya: selama eksekusi file class itu menyebutkan nama package lengkapnya maka file class tersebut dapat dieksekusi dari mana aja,

syaratnya:

lokasi folder awal sudah dideklarasikan di CLASSPATH windows atau kita deklarasikan dengan command promp

contoh: karena dalam komputer saya folder (package) Java_Tony ada di C:\ maka cukup saya tulis dicommand promp

set CLASSPATH=.;C:\;

(artinya saya ngasih tahu Java kalo nyari Class di folder ini atau di folder C:\)

kalo pengin ngecheck udah masuk belum setup Classpathnya, ketik aja

set CLASSPATH;

Nah sekarang baru kita bisa mengeksekusi file class ‘HaloTony.class’ tadi dari mana aja

java Java_Tony.HaloTony

——

Nah misalkan ternyata saya nyimpen file package ‘Halo_Tony.class’ di sub-subfolder:

C:\Java_Tony\Nyoba\NyobaLagi

maka dalam script file java awalnya kita deklarasikan:

package Java_Tony.Nyoba.NyobaLagi;

public class HaloTony {
public static void main (String args []) {
System.out.println (“Halo Mas Tony!”);
}
}

sedangkan deklarasi CLASSPATHnya masih sama karena lokasi folder awal tetap di C:\

hanya mengeksekusinya menjadi berbeda:

java Java_Tony.Nyoba.NyobaLagi.HaloTony

——

Nama packet tidak harus dari nama folder awal di C:\

misal untuk ‘HaloTony.class’ saya pengin nama package-nya: “NyobaLagi.HaloTony

namun tetap disimpan di folder C:\Java_Tony\Nyoba\NyobaLagi

jadi deklarasi package-nya seperti ini:

package NyobaLagi;

public class HaloTony {
public static void main (String args []) {
System.out.println (“Halo Mas Tony!”);
}
}

maka file class ini hanya bisa dieksekusi dengan

java NyobaLagi.HaloTony

dan CLASSPATH lokasi folder awal nama packet itu (NyobaLagi) harus dideklarasikan dulu

set CLASSPATH=.;C:\Java_Tony\Nyoba\;

baru bisa dieksekusi dari mana aja

——————————————-

Kalo di IDE Netbeans?

Sama saat kita men-create sebuah project baru dengan Netbeans, maka otomatis nama project baru kita tersebut akan menjadi nama Folder/Directory baru tempat menyimpan semua file-file dan folder java project kita. Jadi kalo saya membuat project Java baru dengan nama ‘SMSpublic’ maka bisa dikatakan saya sedang membuat file2 java yang saya simpan nantinya dalam package ‘SMSpublic’, dan paket ini nantinya bisa digunakan oleh class lain diluar package ini.

——————

IV. CARA MEMANGGIL PACKAGE DALAM SCRIPT sebuah file java

Alternatif 1. Menuliskan lokasi spesificnya dimana file class itu berada lengkap sampai nama file classnya, folder, sub-folder

contoh:

class ImportTest {
    public static void main(String[] args) {
        javax.swing.JOptionPane.showMessageDialog(null, "Hi");
        System.exit(0);
    }
}

———————

ALternatif 2: pake import

a. Deklarasikan bahwa mau make semua class yang ada disuatu sub-package (meskipun yang dipakai cuman satu yakni ‘JOptionPane’)

import javax.swing.*;  

class ImportTest {
    public static void main(String[] args) {
        JOptionPane.showMessageDialog(null, "Hi");
        System.exit(0);
    }
}

Deklarasi import di atas berarti ‘buat semua class di folder “javax” sub-folder “swing” dapat diakses!’

Alternatif 1 ini paling aman dipakai

——————-

b. spesifik nunjukkin hanya class khusus yang bakalan dipakai

import javax.swing.JOptionPane;
class ImportTest {
    public static void main(String[] args) {
        JOptionPane.showMessageDialog(null, "Hi");
        System.exit(0);
    }
}

————————————————————–

Packages (including classes) yang paling uum di import:

import java.awt.*; Common GUI elements.
import java.awt.event.*; The most common GUI event listeners.
import javax.swing.*; More common GUI elements. Note “javax”.
import java.util.*; Data structures (Collections), time, Scanner, etc classes.
import java.io.*; Input-output classes.
import java.text.*; Some formatting classes.
import java.util.regex.*; Regular expression classes.

——————————————————————————————–

Ingat: * hanya mencakup classes di dalam package tidak termasuk sub-package!

contoh:

meski saya sudah mendeklarasikan

import java.awt.*;

tetapi masih butuh

import.java.awt.event.*;

jika saya ingin memanggil class-class di sub-package event juga

——————————————————————————————————————

JAR???

apa sich itu file berekstension.jar?

intinya: jar itu adalah satu file (satu bundle) yang merupakan gabungan sekaligus kompresi banyak folder, sub-folder, sekaligus file class-class-nya.

Bagaimana men-check kandungan suatu file jar???

pake

jar -tvf namafile.jar

Contoh:

kita pengin ngerti kandungan isi file  “jsdk.jar”

jar -tvf jsdk.jar

hasilnya:

jar

Keliatan bahwa file ‘jsdk.jar’ ini salah satunya punya class:

javax.servlet.http.Cookie

BAGAIMANA CARA MEMANFAATKAN FILE CLASS DALAM FILE.jar??

kelas ini bisa kita panggil/manfaatkan dengan pake import

import javax.servlet.http.Cookie; // import only Cookie class or  
import javax.servlet.http.*; // import the whole javax.servlet.http package

Ingat untuk file jar, Kita juga harus memasukkan CLASSPATH dari package ini juga harus mencakup nama file.jar-nya!!! (kecuali jika package nya hanya berisi directory saja, maka cukup dideklarasikan folder)

misal, karena file ‘jsdk.jar’ ada di lokasi D:\JSDK2.0\lib\ maka harus saya tulis lengkap

set CLASSPATH=.;D:\JSDK2.0\lib\jsdk.jar;

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Categories

%d bloggers like this: