Cara cepat ngopi atribut dari satu objek ke objek lain


Pernah kejadian ngopi atribut dari satu objek ke objek lain? Trus nama atributnya sama, atau bahkan kelas nya sama? Ini adalah salah satu hal yang mudah tapi buang2 waktu πŸ™‚

Nih misal kayak gini nih, gw punya kelas dengan nama kelas Buku, isinya ada beberapa atribut. Baca lebih lanjut

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

πŸ˜€

[Java Source Code] Get Maximum Day in Month


/*
 *  Copyright 2009 Eko Kurniawan Khannedy
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *  under the License.
 */
package echo.khannedy.sourcecode;

import java.util.Calendar;

/**
 *
 * @author Eko Kurniawan Khannedy
 */
public class GetMaximumDayInMonth {

    public static void main(String[] echo) {

        // year of date
        int year = 2009;
        // month of date
        int month = Calendar.OCTOBER;
        // set day to beginning
        int day = 1;

        // create calendar
        Calendar calendar = Calendar.getInstance();
        // set calendar date
        calendar.set(year, month, day);

        // get maximum day in month
        int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

        // trace out
        System.out.println(maxDay);
    }
}