Download Buku Belajar Java Dasar


Daftar Isi

  • Persiapan
  • Java Development Kit
  • Java Runtime Environtment
  • Peralatan yang Diperlukan
  • NetBeans IDE
  • Dasar-Dasar Bahasa Pemrograman Java
  • Tipe Data
  • Variabel
  • Operator
  • Percabangan
  • Perulangan
  • Program Hello World
  • Array
  • Pemrograman Berorientasi Objek
  • Class
  • Paket
  • Interface
  • Inner Class
  • Object
  • Kelas POJO / Java Bean
  • Penanganan Kesalahan
  • Penanganan Secara Bertingkat
  • Melontarkan Exception
  • Membuat Kelas Exception
  • Membuat Kelas RuntimeException
  • Menangkap Kesalahan
  • Blok Finally
  • Kelas – Kelas
  • String
  • Date
  • Calendar
  • Tentang Penulis

Download

Silahkan klik tautan dibawah ini untuk mengunduh ebook Belajar Java Dasar, gratis!

http://stripbandunk.googlecode.com/files/Belajar-Java-Dasar.pdf

Selamat belajar

Instalasi Apache Maven di Ubuntu


Untuk melakukan instalasi Apache Maven di Ubuntu, Anda dapat mengikuti tahapan dibawah ini.

1. Download Apache Maven

Download Apache Maven di http://maven.apache.org/download.html, download file yang berekstensi .tar.gz

2. Ekstrak file

Setelah di download, ekstrak file Apache Maven tersebut, file ekstrak dapat di tempatkan dimanapun sesuai yang Anda inginkan. Misal saya menginstallnya pada folder : Baca lebih lanjut

Git Plugin untuk NetBeans IDE


Saat ini, orang-orang yang saya tahu banyak yang menggunakan Git untuk melakukan revision controll. Banyak yang migrasi dari Subversion ke Git, saya sendiri sih masih lebih suka pake Subversion, kenapa? Karena menang kalo mengerjakan project, orangnya gak terlalu banyak 😀 Kalo sudah sangat banyak, biasanya lebih bagus menggunakan distributed revision controll seperti Git atau Mercurial.

Saat ini (NetBeans 6.9.1) tidak mendukung revision control untuk Git. Namun untungnya untuk versi 7, plugin untuk Git sedang dikembangkan, jadi mudah-mudahan Git akan terintegrasi dengan NetBeans di versi 7. Tapi jika saat ini Anda menggunakan NetBeans versi 6.9.1, Anda dapat menggunakan NBGit, plugin Git untuk NetBeans. Anda dapat mengunduhnya disini :

http://nbgit.org/

Selamat mencoba 😀

 

NetBeans Git Module

NetBeans Git Module

 

 

Membuat JTextValidator, TextComponent yang Dapat Melakukan Proses Validasi Secara Dinamis


Java Programming

Java Programming

Peralatan yang digunakan :

  1. Java Development Kit 1.6
  2. NetBeans IDE 6.9

Tutorial – tutorial sebelumnya saya telah membuat artikel tentang cara melakukan proses validasi dalam JTextField. Namun ternyata banyak temen-temen yang menemukan masalah, diantarnya adalah :

  1. Harus melakukan coding yang sama untuk proses validasi setiap JTextField, artinya 1 JTextField 1 coding, artinya 10 JTextField, kita harus melakukan coding 10 kali juga
  2. Jika ada 10 TextField yang ada di Form dan semuanya ingin dilakukan validasi yang sama, tetap harus melakukan proses coding, dan tidak bisa dilakukan 1 kali coding untuk beberapa JTextField
  3. Saat user mamasukkan data yang salah, maka otomatir JTextField tidak menerima, namun user tidak mengetahui kenapa hal itu terjadi karena tidak ada proses pemberitahuan kepada user.
  4. Dan lain-lain….

Jadi kesimpulannya, bagaimana caranya membangun sebuah komponen JTextField yang dapat melakukan proses validasi secara berbeda artinya dinamis dan bagaimana cara melakukan proses peringatan kepada user saat data yang dimasukkan tidak valid? 😀 Baca lebih lanjut

DynamicReport, Pembuat Laporan JasperReport Dimanis


Tau ribetnya bikin report menggunakan JasperReport kan? Pertama harus buat file JRXML, atau kalo mau mudah bisa pake iReport, lalu setelah itu kompile hasilnya, hasil kompile baru bisa diload ke aplikasi form kita 😀

hmmm………………… males deh.

Saat ini sudah ada DynamicReport, framework buat bikin report yang bisa secara dinamis membuat laporan, tanpa membuat XML dan sebagainya, ini contoh kodenya :

import static net.sf.dynamicreports.report.builder.DynamicReports.*;

	public class Report {

		private void build() {
			try {
				report()//create new report design
				  .columns(...) //adds columns
				  .groupBy(...) //adds groups
				  .subtotalsAtSummary(...) //adds subtotals
				  ...

				  //set datasource
				  .setDataSource(...)

				  //export report
				  .toPdf(...) //export report to pdf
				  .toXls(...) //export report to excel
				  ...
				  //other outputs
				  .toJasperPrint() //creates jasperprint object
				  .show() //shows report
				  .print() //prints report
				  ...
			} catch (DRException e) {
				e.printStackTrace();
			}
		}
		...
	}

mudah kan?

secara dinamis kita bisa tentukan kolomnya, isi laporannya, dan lain-lain…. 😀

haha, silahkan eksplorasi disini : http://dynamicreports.sourceforge.net/

enjoy!!!!

Logging dalam Java, Apa dan Kenapa?


Logging? Penebangan? Haha, bukan itu maksudnya 😀

Logging yang dimaksud disini adalah cara yang sistematis dan terkendali untuk merepresentasikan keadaan tahapan-tahapan aplikasi pada saat aplikasi tersebut berjalan. Hmmm…. maksudnya? 😀

Sederhananya seperti ini, biasanya saat kita ingin mendeteksi apa yang terjadi dalam program, biasanya kita menampilkan tulisan pada console dengan perintah :

System.out.println(“isi informasi”);

misal, kita membuat program penjualan, biasanya agar kita mengetahui apa yang terjadi dalam program kita menyelipkan informasi logging seperti :

“membuat barang baru”
“barang baru berhasil dibuat”
“mengambil data barang dari database”

dan sebagainya, sesuai dengan yang kebutuhan kita 😀 Hal inilah yang dinamakan logging, artinya logging ini cara yang biasa kita gunakan untuk merepresentasikan keadaan tahapan-tahapan aplikasi yang sedang berjalan, tujuan dilakukan proses logging ini tentunya agar kita tau apa yang terjadi dalam program, sehingga jika ada kesalahan dalam program kita bisa mengetahuinya 😀

Kenapa Perlu Teknologi Lain?

kalo kita bisa menggunakan logging menggunakan perintah System.out.println(), kenapa kita perlu teknologi yang lainnya?

hal ini dikarenakan target untuk System.out.println() adalah console, artinya jika kita membuat program yang berbasiskan antarmuka, maka hasil dari System.out.println() tidak akan terlihat 😀 Hal ini karena memang kita tidak menggunakan console 😀

hal ini bisa kita akali dengan cara menggunakan Java IO, sehingga kita tidak menggunakan System.out.println() lagi, melainkan menggunakan Java IO, tapi itu artinya kita harus membuat proses logging yang baru lagi 😦

atau jika kita ingin seluruh proses logging ditampilkan dalam database, maka artinya kita harus menggunakan JDBC, dan artinya lagi-lagi kita harus buat proses logging dari awal lagi 😦

hal ini membuat proses logging secara manual seperti ini sangat melelahkan…. oleh karena itu kita perlu teknologi lain untuk proses logging, namanya Java Logging!

Java Logging

java logging merupakan teknologi logging yang secara default ada dalam jdk, sehingga tidak perlu menginstall plugin atau framework apapun untuk menggunakannya. seluruh class-class java logging terdapat pada paket java.util.logging.*

secara sederhana, java logging dapat digambarkan sebagai jembatan penghubung antara aplikasi dan target lokasi logging, artinya hanya dengan menggunakan java logging, kita dapat dengan mudah mengubah target loggingnya, misal kita ingin menjadikan console sebagai target loggingnya, artinya seluruh trace logging akan ditampilkan dalam console. atau kita ingin target loggingnya ke file, maka seluruh trace logging akan disimpan dalam file. selain itu kita juga dapat menggunakan target target yang berbeda secara bersamaan menggunakan java logging.

Java Logging

Java Logging

dengan fasilitas java logging yang seperti itu, maka proses logging akan sangat menyenangkan 😀 tidak lagi membosankan dan tidak akan memakan waktu lama 😀

Ingat! Tuliskan Seluruh Informasi Yang Diperlukan Pada Saat Membuat Logging, Agar Kita Tahu Apa Yang Sedang Terjadi Dengan Aplikasi Kita

Praktek!

misal saja kita membuat program yang sederhana, yaitu melakukan perulangan 0 sampai 9 😀

package khannedy.standard.logging;

import java.util.logging.Logger;

public class SimpleLogging {

	public static void main(String[] args) {
		Logger logger = Logger.getLogger("Eko Keren :D");
		logger.info("aplikasi berjalan");

		logger.info("melakukan perulangan");
		for (int i = 0; i < 10; i++) {
			logger.info("nilai i sekarang " + i);
		}
		logger.info("perulangan selesai");

		logger.info("aplikasi selesai");
	}

}

untuk membuat logger, caranya kita menggunakan kelas java.util.logging.Logger dengan menggunakan static class getLogger(“nama logger”). Dan untuk menampilkan informasi kita bisa menggunakan metode info(“informasi”), atau untuk menampilkan warning kita bisa menggunakan metode warning(“warning”) dan yang lainnya.

jika dijalankan, maka hasil programnya adalah :

May 12, 2010 11:34:41 PM khannedy.standard.logging.SimpleLogging main
INFO: aplikasi berjalan
May 12, 2010 11:34:41 PM khannedy.standard.logging.SimpleLogging main
INFO: melakukan perulangan
May 12, 2010 11:34:41 PM khannedy.standard.logging.SimpleLogging main
INFO: nilai i sekarang 0
May 12, 2010 11:34:41 PM khannedy.standard.logging.SimpleLogging main
INFO: nilai i sekarang 1
May 12, 2010 11:34:41 PM khannedy.standard.logging.SimpleLogging main
INFO: nilai i sekarang 2
May 12, 2010 11:34:41 PM khannedy.standard.logging.SimpleLogging main
INFO: nilai i sekarang 3
May 12, 2010 11:34:41 PM khannedy.standard.logging.SimpleLogging main
INFO: nilai i sekarang 4
May 12, 2010 11:34:41 PM khannedy.standard.logging.SimpleLogging main
INFO: nilai i sekarang 5
May 12, 2010 11:34:41 PM khannedy.standard.logging.SimpleLogging main
INFO: nilai i sekarang 6
May 12, 2010 11:34:41 PM khannedy.standard.logging.SimpleLogging main
INFO: nilai i sekarang 7
May 12, 2010 11:34:41 PM khannedy.standard.logging.SimpleLogging main
INFO: nilai i sekarang 8
May 12, 2010 11:34:41 PM khannedy.standard.logging.SimpleLogging main
INFO: nilai i sekarang 9
May 12, 2010 11:34:41 PM khannedy.standard.logging.SimpleLogging main
INFO: perulangan selesai
May 12, 2010 11:34:41 PM khannedy.standard.logging.SimpleLogging main
INFO: aplikasi selesai

secara default target lokasinya adalah console, tapi anda bisa merubahnya dengan cara mengubah Handler-nya :

package khannedy.standard.logging;

import java.util.logging.FileHandler;
import java.util.logging.Handler;
import java.util.logging.Logger;

public class SimpleLogging {

	public static void main(String[] args) throws Exception {
		Logger logger = Logger.getLogger("Eko Keren :D");

		Handler handler = new FileHandler("file-log.log");
		logger.addHandler(handler);

		logger.info("aplikasi berjalan");

		logger.info("melakukan perulangan");
		for (int i = 0; i < 10; i++) {
			logger.info("nilai i sekarang " + i);
		}
		logger.info("perulangan selesai");

		logger.info("aplikasi selesai");
	}

}

dimana java logging support beberapa handler, yaitu :

  1. java.util.logging.FileHandler, ini menulis logging ke file
  2. java.util.logging.ConsoleHandler, ini menulis logging ke console
  3. java.util.logging.StreamHandler, ini menulis logging ke stream
  4. java.util.logging.MemoryHandler, ini menulis logging ke memory
  5. java.util.logging.SocketHandler, ini menulis logging ke jaringan socket menggunakan protokol TCP/IP.

bagaimana kalo kita ingin logging nya disimpan ke database?

kita bisa membuat class logging sendiri, dengan cara membuat class turunan baru dari class java.util.logging.Handler

😀

Membuat Download Manager Menggunakan Java untuk Mengunduh Seluruh Gambar yang Ada di WordPress


sebenarnya kita tidak perlu membuat download manager sendiri untuk mengunduh gambar-gambar di halaman web. banyak sekali download manager yang sudah ada. namun yang menjadi masalah adalah saat ini kebanyakan yang diunduh adalah link bukan image, jadi tag lah yang didownload, sedangkan jika gambarnya dalam biasanya tidak didownload.

kenapa tidak menggunakan mirror? wew, yang saya inginkan itu cuma gambarnya, bukan seluruh websitenya 😀 So? Saatnya membuat download manager sendiri 😀

Pengetahuan yang Diperlukan

pengetahuan yang diperlukan untuk membuat download manager sebuah website adalah :

  1. tau cara nge-crawl halaman-halaman website
  2. tau cara nge-parsing halaman html
  3. tau cara mendownload berkas dari internet
  4. tau pemetaan lokasi link-link pada website yang akan didownload 😀

karena saya mau mendownload seluruh gambar yang ada di wordpress, jadi kita harus tau bagaimana pemetaan website di wordpress 😀

  1. pertama! setiap blog di wordpress itu memiliki halaman dari halaman 1 sampai terakhir, dan penulisannya adalah seperti ini : http://namablog.wordpress.com/page/1/ dan seterusnya…
  2. kedua! pada setiap halaman terdapat artikel-artikel, dan biasanya banyaknya artikel pada setiap halaman tergantung pengaturan pemilik blog itu 😀
  3. ketiga! penamaan link artikel pada wordpress adalah sebagai berikut : http://namablog.wordpress.com/2010/04/07/judul-artikel/ dimana untuk 2010 adalah tahun pembuatan artikel, untuk 04 adalah bulan pembuatan, untuk 07 adalah tanggal pembuatan dan untuk judul-artikel adalah judul artikelnya pastinya 😀
  4. jadi untuk mengunduh seluruh gambar yang ada di wordpress, pertama kita harus dapatkan lokasi link artikel dengan cara menelusuri halaman, setelah dapat semua linknya, baru cari tag yang berisikan gambar 😀

jadi seperti ini  kode program yang harus dibuat :

package khannedy.wordpress.image.downloader;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashSet;
import java.util.Set;
import java.util.logging.Logger;
import org.cyberneko.html.parsers.DOMParser;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

/**
 *
 * @author echo
 */
public class Downloader {

    private Logger log;

    private final String downloadUrl;

    private final String downloadTarget;

    private final int first;

    private final int last;

    /**
     * Membuat Downloader
     * @param downloadUrl url wordpress
     * @param downloadTarget target disimpan gambar
     * @param first
     * @param last
     */
    public Downloader(String downloadUrl, String downloadTarget, int first, int last) {
	if (!downloadUrl.endsWith("/")) {
	    downloadUrl += "/";
	}
	this.downloadUrl = downloadUrl;
	this.downloadTarget = downloadTarget;
	this.log = Logger.getLogger(Downloader.class.getName());

	this.first = first;
	this.last = last;
    }

    /**
     * untuh semua halaman
     * @return
     */
    protected Set downloadPage() {
	Set set = new HashSet();
	int index = first;
	int i = 0;
	while (true) {
	    if (index > last) {
		break;
	    }
	    try {
		String target = downloadUrl + "page/" + index + "/";
		URL url = new URL(target);
		log.info("memproses halaman " + url);
		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
		connection.setRequestProperty("User-Agent", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.8) Gecko/20100214 Ubuntu/9.10 (karmic) Firefox/3.5.3");
		connection.connect();
		if (connection.getContentType().startsWith("text/html")) {
		    DOMParser parser = new DOMParser();
		    parser.parse(new InputSource(connection.getInputStream()));
		    Document document = parser.getDocument();
		    NodeList list = document.getElementsByTagName("a");
		    boolean valid = true;
		    for (i = 0; i < list.getLength(); i++) { 			valid = true; 			Node node = list.item(i); 			Node node1 = node.getAttributes().getNamedItem("href"); 			String href = node1.getNodeValue(); 			if (href.startsWith(downloadUrl)) { 			    if (!href.contains("#")) { 				String replace = href.replace(downloadUrl, "").replace("/", ""); 				if (replace.length() > 8) {
				    String number = replace.substring(0, 8);
				    char[] array = number.toCharArray();
				    for (char c : array) {
					if (!Character.isDigit(c)) {
					    valid = false;
					    break;
					}
				    }
				    array = null;
				    number = null;
				} else {
				    valid = false;
				}
				replace = null;
			    } else {
				valid = false;
			    }
			} else {
			    valid = false;
			}
			if (valid) {
			    set.add(href);
			} else {
			    href = null;
			}
		    }
		    list = null;
		}
		connection.disconnect();
		connection = null;
		url = null;
		target = null;
		System.gc();
		index++;
	    } catch (Throwable t) {
		break;
	    }
	}
	return set;
    }

    /**
     * unduh semua gambar
     * @param articleUrl
     * @return
     */
    protected Set downloadArticle(String articleUrl) {
	Set set = new HashSet();
	int i = 0;
	try {
	    URL url = new URL(articleUrl);
	    log.info("memproses artikel " + articleUrl);
	    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
	    connection.setRequestProperty("User-Agent", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.8) Gecko/20100214 Ubuntu/9.10 (karmic) Firefox/3.5.3");
	    connection.connect();
	    if (connection.getContentType().startsWith("text/html")) {
		DOMParser parser = new DOMParser();
		parser.parse(new InputSource(connection.getInputStream()));
		Document document = parser.getDocument();
		NodeList list = document.getElementsByTagName("img");
		for (i = 0; i < list.getLength(); i++) {
		    Node node = list.item(i);
		    Node node1 = node.getAttributes().getNamedItem("src");
		    String href = node1.getNodeValue();

		    String replace = articleUrl.replace(downloadUrl, "").replace("/", "");

		    Gambar gambar = new Gambar();
		    gambar.setLokasi(href);
		    gambar.setFolder(replace.substring(0, 8));
		    gambar.setSubFolder(replace.substring(8));

		    set.add(gambar);

		    replace = null;
		}
		list = null;
	    }
	    connection.disconnect();
	    connection = null;
	    url = null;
	    System.gc();
	} catch (Throwable t) {
	}

	return set;
    }

    /**
     * simpan gambar ke disk
     * @param gambar
     */
    protected void downloadImag(Gambar gambar) {
	try {
	    URL url = new URL(gambar.getLokasi());
	    log.info("mengunduh gambar " + gambar.getLokasi());
	    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
	    connection.setRequestProperty("User-Agent", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.8) Gecko/20100214 Ubuntu/9.10 (karmic) Firefox/3.5.3");
	    connection.connect();

	    if (connection.getContentType().startsWith("image")) {
		InputStream inputStream = connection.getInputStream();

		File folder = new File(new File(downloadTarget, gambar.getFolder()), gambar.getSubFolder());
		folder.mkdirs();

		FileOutputStream outputStream = new FileOutputStream(new File(folder, gambar.getNama()));

		byte[] buffer = new byte[1042 * 8];
		int length = 0;

		while ((length = inputStream.read(buffer)) != -1) {
		    outputStream.write(buffer, 0, length);
		}

		outputStream.close();
	    }

	    connection.disconnect();
	    connection = null;
	    url = null;
	    System.gc();
	} catch (Throwable t) {
	}
    }

    /**
     * memulai download
     */
    public void start() {
	Set articles = downloadPage();
	Set images = new HashSet();

	log.info("mengunduh seluruh halaman...");
	for (String string : articles) {
	    images.addAll(downloadArticle(string));
	}

	log.info("mengunduh seluruh gambar...");
	for (Gambar gambar : images) {
	    downloadImag(gambar);
	}

	log.info("selesai...");
    }
}
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package khannedy.wordpress.image.downloader;

/**
 *
 * @author echo
 */
public class Gambar {

    private String folder;

    private String subFolder;

    private String lokasi;

    private String nama;

    public String getNama() {
	return nama;
    }

    public void setNama(String nama) {
	this.nama = nama;
    }

    public String getFolder() {
	return folder;
    }

    public void setFolder(String folder) {
	this.folder = folder;
    }

    public String getLokasi() {
	return lokasi;
    }

    public void setLokasi(String lokasi) {
	this.lokasi = lokasi;
	this.nama = lokasi.substring(lokasi.lastIndexOf("/") + 1);
    }

    public String getSubFolder() {
	return subFolder;
    }

    public void setSubFolder(String subFolder) {
	this.subFolder = subFolder;
    }

    @Override
    public boolean equals(Object obj) {
	if (obj == null) {
	    return false;
	}
	if (getClass() != obj.getClass()) {
	    return false;
	}
	final Gambar other = (Gambar) obj;
	if ((this.lokasi == null) ? (other.lokasi != null) : !this.lokasi.equals(other.lokasi)) {
	    return false;
	}
	return true;
    }

    @Override
    public int hashCode() {
	int hash = 3;
	hash = 71 * hash + (this.lokasi != null ? this.lokasi.hashCode() : 0);
	return hash;
    }
}
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package khannedy.wordpress.image.downloader;

/**
 *
 * @author echo
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

	// melakukan pengecekan argumen
	if (args.length < 2) { 	    // terjadi kesalahan argumen, beri tahu cara penggunaan 	    System.out.println("Argumen salah...\n\n" 		    + "Gunakan :\n" 		    + "java -jar wordpress-image-downloader.jar [url] [target] [first] [last]\n" 		    + "  [url]      : url wordpress, misal https://eecchhoo.wordpress.com/\n" 		    + "  [target]   : lokasi target gambar disimpan, misal : /home/echo/Desktop/target/\n" 		    + "  [first]    : halaman pertama (default 1)\n" 		    + "  [last]     : halaman terakhir (default Integer.MAX_VALUE)\n\n" 		    + "Bye...\n"); 	} else { 	    int first = 1; 	    int last = Integer.MAX_VALUE; 	    if (args.length >= 3) {
		first = Integer.parseInt(args[2]);
		if (first < 1) { 		    first = 1; 		} 	    } 	    if (args.length >= 4) {
		last = Integer.parseInt(args[3]);
	    }

	    new Downloader(args[0], args[1], first, last).start();
	}

    }
}

penjelasannya? duh saya lagi males ngejelasin tahapan-tahapannya 😀

intinya untuk mengerti kode-kode diatas, anda harus tau :

  1. Java Networking, untuk koneksi ke websitenya
  2. Java IO, untuk proses streaming nya
  3. NecoHTML, untuk parsing HTML nya 😀

untuk aplikasi yang sudah jadi silahkan download sisini :

DOWNLOAD

cara penggunaannya cukup ketikkan :

java -jar wordpress-image-downloader.jar [url] [target] [first] [last]

dimana :

  1. [url] adalah halaman blog wordpress, misal https://eecchhoo.wordpress.com/
  2. [target] adalah lokasi folder tempat gambar disimpan misal : /hom/echo/Desktop/Wordpress/
  3. [first] halaman awal (default 1)
  4. [last] halaman akhir (default Integer.MAX_VALUE)

contohnya :

java -jar wordpress-image-downloader.jar https://eecchhoo.wordpress.com/ /home/echo/Desktop/Wordpress/ 1 2

artinya saya mendownload seluruh gambar yang ada di blog https://eecchhoo.wordpress.com/ pada halaman 1 sampai 2 dan disimpan di disk yang beralamatkan di /home/echo/Desktop/Wordpress/

hasilnya, seluruh gambar akan terdownload seperti terlihat pada gambar dibawah ini :

Perbedaan Glassfish 3 dan Glassfish WebProfile 3


Feature Included in GlassFish 3.0 Included in GlassFish 3.0 Web Profile
Java Platform, Enterprise Edition 6 X X
EJB 3.1 Lite (Support for Local Container only) X X
JTS/JTA 1.1 ** X X
OSGi-based microkernel X X
Java Web Technologies (Servlet 3.0, JSP 2.2, JSF 2.0, JSTL 1.2, EL 2.2) X X
Grizzly/Comet X X
JPA 2.0, (EclipseLink), JDBC Connection Pooling X X
JDBC 4.0 X X
JavaDB 10.5.3 X X
Web Administration Console and CLI X X
Rapid Redeployment (Maintain session state on application
redeploy)
X X
OMG CORBA APIs 3.0 X X
Debugging Support for Other Languages 1.0 X X
Common Annotations for Java 1.1 X X
Dependency Injection for Java 1.0 X X
Managed Beans 1.0 X X
Interceptors 1.1 X X
Contexts and Dependency Injection for Java 1.0 (CDI, ex-Web Beans) X X
Bean Validation 1.0 X X
JAX-RS 1.1 (Jersey) X X
EJB 3.1 Full API (Support for Remote Container) X
Java EE Connector Architecture 1.6 X
JAX-WS 2.2 X
JAXB 2.2 X
Implementing Java Web Services 1.3 X
Web Services Metadata for the Java Platform 2.1 X
JMS 1.1 X
JavaMail 1.4 X
JACC 1.4 X
Java Authentication Service Provider Interface for Containers 1.1 X
Java EE Application Deployment 1.2 X
J2EE Management 1.1 X
JAX-RPC 1.1 X
JAXR 1.0 X
CORBA 3.0.0 X *
Metro X
  • * The Full Java EE Platform contains the complete CORBA package. The OMG CORBA v3.0 APIs are available in the Java EE Web Profile.
  • ** Transaction propagation not supported
Pergilah ke laut, walaupun ibumu sendiri menyuruhmu takut kepada air. Engkaulah angsa liar, bukan unggas peliharaan yang dipelihara dalam kandang berbau busuk.“, Jallaludin Rumi.