Program Java Sederhana: Menampilkan Cuaca Kota Bandung

Web serice yang digunakan: Yahoo Weather API

Syarat: Laptop Konek ke Internet 🙂

Source Code Program Cuaca.java:

import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.net.*;
public class Cuaca {
    public static void main(String[] args) throws Exception {
        URLConnection conn = new URL("http://weather.yahooapis.com/forecastrss?w=1047180&u=c").openConnection();
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
		Document document = db.parse(conn.getInputStream());
        NodeList nodeList = document.getElementsByTagName("yweather:location");
        System.out.println("Kota: "+nodeList.item(0).getAttributes().getNamedItem("city").getNodeValue());
		nodeList = document.getElementsByTagName("yweather:condition");
		System.out.println("Tanggal: "+nodeList.item(0).getAttributes().getNamedItem("date").getNodeValue());
		System.out.println("Cuaca: "+nodeList.item(0).getAttributes().getNamedItem("text").getNodeValue()+" Suhu :"+nodeList.item(0).getAttributes().getNamedItem("temp").getNodeValue()+" C");
	}
}

saat dicompile dan dijalankan pada Command Prompt maka akan muncul:

Idiot Guide: Service Layer itu Sebetulnya Apa Sih?

Saat belajar Service Oriented Architecture, banyak sekali ditemukan istilah Service Layer. Apakah sebenarnya service layer itu? Idiot guide di bawah ini mungkin bisa membantu:

Pertama bayangkan seorang pria sedang duduk di depan televisi dengan nyaman di sofa ruang keluarga. di tangan kanannya ada remote TV dan di tangan kiri memegang remote DVD. Pria dan 2 remote tersebut kita anggap sebagai object dan ketiga object tersebut memiliki metode spesifik yang bisa dilakukan oleh masing-masing object tersebut.

Istri pria tersebut sedang berada di dapur, kita anggap sebagai calling application. kemudian dia berteriak kepada pria tersebut, “TOLONG PUTAR FILM DVD-NYA”. Kemudian object pria yang memiliki metode startTheMovie mulai mengeksekusi metode tersebut. Pertama dia menggunakan object remoteTV, memanggil metode “tvON” pada remoteTV, kemudian dia menggunakan object remoteDVD, memanggil metode “dvdON’ dan “dvdPlay” (asumsi keping dvd sudah berada di dalam DVD Player). Kemudian pria tersebut menggunakan object remoteTV lagi dan memanggil metode “inputSRC” untuk membuat TV menerima input dari DVD Player. Tadaa! Film DVD mulai diputar.

Pada ilustrasi di atas, PRIA tersebut bertindak sebagai SERVICE LAYER. Meskipun dia memiliki metode startTheMovie, kenyataannya yang dilakukan adalah mengkoordinasikan object level rendah lain yang akan mengerjakan hal tersebut. Isterinya tidak peduli tentang remote maupun cara kerjanya. Yang dia lakukan cukup memanggil SERVICE LAYER OBJECT yang selanjutnya akan mengerjakan apa yang diminta.

Udah paham kan?? 😀

sumber: http://www.dougboude.com/blog/1/2007/02/Just-What-IS-a-Service-Layer-Anyway.cfm

Pengantar XML

Apakah XML Itu ?

XML adalah singkatan dari eXtensible Markup Language. Bahasa markup adalah sekumpulan aturan-aturan yang mendefinisikan suatu sintaks yang digunakan untuk menjelaskan, dan mendeskripsikan teks atau data dalam sebuah dokumen melalui penggunaan tag. Bahasa markup lain yang populer seperti HTML, menggambarkan kepada browser web tentang bagaimana menampilkan format teks, data, dan grafik ke layar komputer ketika sedang mengunjungi sebuah situs web. XML adalah sebuah bahasa markup yang digunakan untuk mengolah meta data (informasi tentang data) yang menggambarkan struktur dan maksud/tujuan data yang terdapat dalam dokumen XML, namun bukan menggambarkan format tampilan data  tersebut. XML adalah sebuah standar sederhana yang digunakan untuk medeskrippsikan data teks dengan cara self-describing (deskripsi diri). XML juga dapat digunakan untuk mendefinisikan domain tertentu lainnya, seperti musik, matematika, keuangan dan lain-lain yang menggunakan bahasa markup terstruktur.

XML dikembangkan mulai tahun 1996 dan mendapatkan pengakuan dari W3C pada bulan Februari 1998. Teknologi yang digunakan pada XML sebenarnya bukan teknologi baru, tapi merupakan turunan dari SGML yang telah dikembangkan pada awal 80-an dan telah banyak digunakan pada dokumentasi teknis proyek-proyek berskala besar. Ketika HTML dikembangkan pada tahun 1990, para penggagas XML mengadopsi bagian paling penting pada SGML dan dengan berpedoman pada pengembangan HTML menghasilkan markup language yang tidak kalah hebatnya dengan SGML.

XML terletak pada inti web service, yang digunakan untuk mendeskripsikan data. Fungsi utama dari XML adalah komunikasi antar aplikasi, integrasi data, dan komunikasi aplikasi eksternal dengan partner luaran. Dengan standarisasi XML, aplikasi-aplikasi yang berbeda dapat dengan mudah berkomunikasi antar satu dengan yang lain.

Berikut ini adalah contoh sebuah dokumen XML untuk informasi contact person:

<!--?xml version="1.0" standalone="yes" ?-->
Suryono Hadi Wibowo
085219341414
hadi_wibowo@bps.go.id
Sularto
081316936355
sularto@bps.go.id

Perhatikan bagaimana mudahnya untuk mengerti tentang makna informasi dan strukturnya pada dokumen XML di atas, sehingga juga akan mudah bagi komputer untuk mengerti dokumen XML ini.

Seperti halnya HTML, XML juga menggunakan elemen yang ditandai dengan tag pembuka (diawali dengan ‘<’ dan diakhiri dengan ‘>’), tag penutup (diawali dengan ‘</ ‘diakhiri ‘>’) dan atribut elemen (parameter yang dinyatakan dalam tag pembuka misal <form name=”isidata”>). Hanya bedanya, HTML medefinisikan dari awal tag dan atribut yang dipakai didalamnya, sedangkan pada XML kita bisa menggunakan tag dan atribut sesuai kehendak kita. Berikut ini adalah tampilan dokumen XML di atas apabila dijalankan pada sebuah browser:

Gambar: Tampilan dokumen XML pada browser

Struktur Penulisan Dokumen XML

Baris pertama pada dokumen XML di atas adalah deklarasi standar header yang mendefinisikan versi XML dan karakter encoding yang digunakan dalam dokumen XML. Dalam dokumen ini, XML mengacu pada versi 1.0 dan menggunakan standar encoding karakter set  ISO-8859-1 (Latin-1/West European).

Baris selanjutnya menggambarkan elemen induk (root) dokumen “<email>..</email>”, sebagaimana kita menyebut bahwa “Dokumen ini adalah sebuah Email”. Kemudian baris ke 3-6 menggambarkan elemen anak (child) dari elemen induk dokumen.

Tag pada dokumen XML bersifat case sensitif di mana tag pembuka dan tag penutup harus ekivalen. Seperti contoh tag pembuka “<email>” harus ditutup dengan tag “</email>”.

Berikut ini adalah contoh penulisan dokumen XML yang tidak benar:

“<email>….</Email>”

“<email>….</EMAIL>”

“<Email>….</email>”

Berikut ini adalah contoh penulisan dokumen XML yang benar:

“<email>….</email>”

“<EMAIL>….</EMAIL>”

“<Email>….</Email>”

 

Apa yang Menarik Pada XML?

Karena XML bersifat mudah untuk dibaca dan ditulis baik oleh manusia maupun komputer, maka XML merupakan sebuah format yang dapat digunakan untuk pertukaran data (interchange) antar aplikasi dan platform yang berbeda (platform independent). Metode deskripsi data XML (self-describing) membuatnya menjadi pilihan efektif untuk bisnis ke bisnis, solusi antar jaringan, e-business, dan aplikasi terdistribusi. XML juga bersifat dapat diperluas (extensible), dapat digunakan pada semua bahasa pemrograman, dan datanya dapat ditransfer dengan mudah melalui protokol standar internet seperti HTTP tanpa dibatasi oleh firewall.

Kenapa Harus Menggunakan XML?

XML untuk saat ini bukan merupakan pengganti HTML. Masing-masing dikembangkan untuk tujuan yang berbeda. Kalau HTML digunakan untuk menampilkan informasi dan berfokus pada bagaimana informasi terlihat, XML mendeskripsikan susunan informasi dan berfokus pada informasi itu sendiri. XML terutama dibutuhkan untuk menyusun dan menyajikan informasi dengan format yang tidak mengandung format standard layaknya heading, paragraph, table dan lain sebagainya.

Sama dengan HTML, File XML berbentuk teks sehingga bila diperlukan kita bisa membacanya tanpa memerlukan bantuan software khusus. Hal ini memudahkan pengembang aplikasi yang menggunakan XML untuk mendebug programnya. XML lebih fleksible dibanding HTML dalam hal kemampuannya menyimpan informasi dan data. Pada XML kita bisa menyimpan data baik dalam atribut maupun sebagai isi elemen yang diletakkan diantara tag pembuka dan tag penutup.

Kelebihan lain yang dimiliki XML adalah bahwa informasi bisa di pertukarkan dari satu system ke system lain yang berbeda platform. Misalnya dari Windows ke Unix, atau dari PC ke Machintosh bahkan dari internet ke handphone dengan teknologi WAP.

Bagian-Bagian dari Dokumen XML

Sebuah dokumen XML terdiri dari bagian bagian yang disebut dengan node. Node-node itu adalah:

  • Root node yaitu node yang melingkupi keseluruhan dokumen. Dalam satu dokumen XML hanya ada satu root node. Node-node yang lainnya berada di dalam root node.
  • Element node yaitu bagian dari dokumen XML yang ditandai dengan tag pembuka dan tag penutup, atau bisa juga sebuah tag tunggal elemen kosong seperti <anggota nama=”budi”/> . Root node biasa juga disebut root element.
  • Attribute note termasuk nama dan nilai atribut ditulis pada tag awal sebuah elemen atau pada tag tunggal.
  • Text node, adalah text yang merupakan isi dari sebuah elemen, ditulis diantara tag pembuka dan tag penutup
  • Comment node adalah baris yang tidak dieksekusi oleh parser
  • Processing Instruction node, adalah perintah pengolahan dalam dokumen XML. Node ini ditandai awali dengan karakter <? Dan diakhiri dengan ?>. Tapi perlu diingat bahwa header standard XML <?xml version=”1.0” encoding=”iso-8859-1”?> bukanlah processing instruction node. Header standard bukanlah bagian dari hirarki pohon dokumen XML.
  • NameSpace Node, node ini mewakili deklarasi namespace

Sintaks XML

Dibandingkan dengan HTML, XML lebih cerewet. Kalau kita menulis sebuah dokumen HTML, beberapa kesalahan penulisan masih ditolerir. Misalnya kita menempatkan tag bersilangan seperti <p><b>Huruf Tebal</p></b> meskipun tidak dianjurkan, HTML masih bisa bekerja dan menampilkan hasil seperti yang kita inginkan. Tidak demikian dengan XML.

Contoh Pembacaan XML Menggunakan Java

File phonebook.xml berisi:

<!--?xml version="1.0" standalone="yes" ?-->
Suryono Hadi Wibowo
	085219341414
	hadi_wibowo@bps.go.id
Sularto
	081316936355
	sularto@bps.go.id

Untuk membacanya menggunakan program java:

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;

public class ReadXMLFile {

	public static void main(String args[]) {

	  try {

		File fXmlFile = new File("phonebook.xml");
		DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
		Document doc = dBuilder.parse(fXmlFile);
		doc.getDocumentElement().normalize();

		System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
		NodeList nList = doc.getElementsByTagName("person");
		System.out.println("-----------------------");

		for (int temp = 0; temp < nList.getLength(); temp++) {

		   Node nNode = nList.item(temp);
		   if (nNode.getNodeType() == Node.ELEMENT_NODE) {

		      Element eElement = (Element) nNode;

		      System.out.println("Nama     : " + getTagValue("name", eElement));
		      System.out.println("Nomor HP : " + getTagValue("mobile", eElement));
	          System.out.println("Email    : " + getTagValue("email", eElement));

		   }
		}
	  } catch (Exception e) {
		e.printStackTrace();
	  }
  }

  private static String getTagValue(String sTag, Element eElement) {
	NodeList nlList = eElement.getElementsByTagName(sTag).item(0).getChildNodes();

        Node nValue = (Node) nlList.item(0);

	return nValue.getNodeValue();
  }

}

Output Program:

Root element :phonebook

———————–

Nama     : Suryono Hadi Wibowo
Nomor HP : 085219341414
Email    : hadi_wibowo@bps.go.id
Nama     : Sularto
Nomor HP : 081316936355
Email    : sularto@bps.go.id

Contoh Penulisan XML Menggunakan Java

Source code WriteXML.java:

import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class WriteXMLFile {

	public static void main(String args[]) {

	  try {

		DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

		// root elements
		Document doc = docBuilder.newDocument();
		Element rootElement = doc.createElement("phonebook");
		doc.appendChild(rootElement);

		// mahasiswa elements
		Element mahasiswa = doc.createElement("person");
		rootElement.appendChild(mahasiswa);

		// set attribute to mahasiswa element
		Attr attr = doc.createAttribute("id");
		attr.setValue("1");
		mahasiswa.setAttributeNode(attr);

		// shorten way
		// mahasiswa.setAttribute("id", "1");

		// nama elements
		Element nama = doc.createElement("nama");
		nama.appendChild(doc.createTextNode("ibnu santoso"));
		mahasiswa.appendChild(nama);

		// mobile elements
		Element mobile = doc.createElement("mobile");
		mobile.appendChild(doc.createTextNode("081341829968"));
		mahasiswa.appendChild(mobile);

		// email elements
		Element email = doc.createElement("email");
		email.appendChild(doc.createTextNode("ibn_san@yahoo.com"));
		mahasiswa.appendChild(email);

		// write the content into xml file
		TransformerFactory transformerFactory = TransformerFactory.newInstance();
		Transformer transformer = transformerFactory.newTransformer();
		DOMSource source = new DOMSource(doc);
		StreamResult result = new StreamResult(new File("mahasiswa.xml"));

		transformer.transform(source, result);

		System.out.println("File saved!");

	  } catch (ParserConfigurationException pce) {
		pce.printStackTrace();
	  } catch (TransformerException tfe) {
		tfe.printStackTrace();
	  }
	}
}

Setelah dieksekusi, output program adalah file mahasiswa.xml yang berisi:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<phonebook>
	<person id="1">
		<nama>ibnu santoso</nama>
		<mobile>081341829968</mobile>
		<email>ibn_san@yahoo.com</email>
	</person>
</phonebook>

Sumber:
1. Pengantar XML, Moh Djunaedi, IlmuKomputer.com
2. http://www.mkyong.com/tutorials/java-xml-tutorials/