<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5797965346181571083</id><updated>2012-02-16T10:38:28.459-08:00</updated><category term='Java Basic'/><category term='JspServlet'/><category term='Thread'/><category term='spring'/><title type='text'>Belajar Mudah Java dan dotNET</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://greenhornsjava.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://greenhornsjava.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Toni Liem</name><uri>http://www.blogger.com/profile/18014951444910857098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_IZS7Uo3e9mU/TKFyK7fPYLI/AAAAAAAAAA4/F_oaGKe12HI/S220/P4290049_2.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5797965346181571083.post-5177001788272253892</id><published>2010-11-25T07:35:00.000-08:00</published><updated>2010-11-25T07:35:35.482-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JspServlet'/><title type='text'>Simple Demo Jsp Servlet</title><content type='html'>Kita akan belajar membuat sebuah aplikasi web MVC mengunakan teknologi JSP dan Servlet. Kita akan mengunakan Eclipse &lt;a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/helios/SR1/eclipse-jee-helios-SR1-win32.zip"&gt;(Download)&lt;/a&gt; sebagai Java Editor dan Tomcat 6 &lt;a href="http://apache.pesat.net.id//tomcat/tomcat-6/v6.0.29/bin/apache-tomcat-6.0.29-windows-x86.zip"&gt;Download&lt;/a&gt; sebagai Web Container.&lt;br /&gt;&lt;br /&gt;Aplikasi ini akan menunjukkan betapa mudahnya membuat sebuah aplikasi MVC menggunakan JSP dan Servlet. Aplikasi ini hanya memiliki fungsi login sebagai contoh.&lt;br /&gt;&lt;br /&gt;Kita akan mengupas lebih dalam Konsep MVC seiring dengan proses pembuatan.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_IZS7Uo3e9mU/TLktGZ6hyFI/AAAAAAAAAE8/0V4Mv39GmbU/s1600/mvc+overview.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_IZS7Uo3e9mU/TLktGZ6hyFI/AAAAAAAAAE8/0V4Mv39GmbU/s1600/mvc+overview.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Baiklah mari segera kita mulai... &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Langkah #1 &lt;/b&gt;: Membuat sebuah Dynamic Web Project. Buka Eclipse. Klik File -&amp;gt; New -&amp;gt; Other -&amp;gt; Web -&amp;gt; Dynamic Web Project.&lt;br /&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_IZS7Uo3e9mU/TLkn217D-cI/AAAAAAAAAE0/PEOmavdVwCs/s1600/1.gif" /&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;Berikan nama Project "&lt;b&gt;Simple Login&lt;/b&gt;". Klik Finish.&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;b&gt;Langkah #2&lt;/b&gt; : Buat halaman LoginEntry.jsp&lt;br /&gt;Klik kanan pada project Pilih New -&amp;gt; JSP. Berikan nama &lt;b&gt;LoginEntry.jsp&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="188" src="http://1.bp.blogspot.com/_IZS7Uo3e9mU/TLkpo46ADQI/AAAAAAAAAE4/UROI4xeUhM0/s320/create+jsp+login.gif" width="320" /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;pre class="brush:xml"&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;    &amp;lt;title&amp;gt;SimpleLoginDemo&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;    &amp;lt;form action="LoginServlet" method="post"&amp;gt;&lt;br /&gt;        Masukan Nama dan Password&amp;lt;br/&amp;gt;&lt;br /&gt;        Nama  &amp;lt;input type="text" name="txtName" /&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;        Password &amp;lt;input type="password" name="txtPassword"/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;        &amp;lt;input type="submit" value="submit"/&amp;gt;  &lt;br /&gt;    &amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Langkah #3 : Buat halaman &lt;b&gt;Sukses.jsp&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush:xml"&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;Login Berhasil&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;    &amp;lt;H1&amp;gt;Login Berhasil&amp;lt;/H1&amp;gt;&lt;br /&gt;    Name Login : &amp;lt;%= request.getAttribute("name") %&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;    Password Login : &amp;lt;%= request.getAttribute("password") %&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;    Waktu Login : &amp;lt;%= request.getAttribute("logintime") %&amp;gt;    &lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Langkah #4 : Buat halaman &lt;b&gt;Error.jsp&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush:xml"&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;Error&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;    &amp;lt;H1&amp;gt;Login Gagal&amp;lt;/H1&amp;gt;&lt;br /&gt;    &amp;lt;a href="LoginEntry.jsp"&amp;gt;Login Ulang&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Langkah #5 : Buat Servlet Berikan Nama : LoginServlet&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="376" src="http://1.bp.blogspot.com/_IZS7Uo3e9mU/TO5-HLhj9bI/AAAAAAAAAFY/BuSaWUmqKac/s400/1.gif" width="400" /&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="391" src="http://4.bp.blogspot.com/_IZS7Uo3e9mU/TO5_CyveDcI/AAAAAAAAAFc/FR4J-SYDs-4/s400/2.gif" width="400" /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_IZS7Uo3e9mU/TO5_pjWH3EI/AAAAAAAAAFg/bRfbZRGJsxc/s1600/3.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="397" src="http://4.bp.blogspot.com/_IZS7Uo3e9mU/TO5_pjWH3EI/AAAAAAAAAFg/bRfbZRGJsxc/s400/3.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&amp;nbsp;Tambahkan baris kode berikut pada LoginServlet.java yang baru saja dibuat.&lt;br /&gt;&lt;pre class="brush:java"&gt;package greenhornsjava.controller;&lt;br /&gt;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.text.SimpleDateFormat;&lt;br /&gt;import java.util.Date;&lt;br /&gt;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.HttpServlet;&lt;br /&gt;import javax.servlet.http.HttpServletRequest;&lt;br /&gt;import javax.servlet.http.HttpServletResponse;&lt;br /&gt;&lt;br /&gt;import com.sun.org.apache.bcel.internal.generic.NEW;&lt;br /&gt;&lt;br /&gt;public class LoginServlet extends HttpServlet {&lt;br /&gt; private static final long serialVersionUID = 1L;&lt;br /&gt;       &lt;br /&gt;    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {&lt;br /&gt;  doPost(request, response);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {&lt;br /&gt;  String name = request.getParameter("txtName");&lt;br /&gt;  String password = request.getParameter("txtPassword");&lt;br /&gt;  &lt;br /&gt;  if(!name.equals("admin") &amp;&amp; !password.equals("admin")) {&lt;br /&gt;   request.getRequestDispatcher("Error.jsp").forward(request, response);&lt;br /&gt;  } else {&lt;br /&gt;   SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");&lt;br /&gt;   String now = sdf.format(new Date(System.currentTimeMillis()));&lt;br /&gt;   &lt;br /&gt;   request.setAttribute("name", name);&lt;br /&gt;   request.setAttribute("password", password);&lt;br /&gt;   request.setAttribute("logintime", now);&lt;br /&gt;   request.getRequestDispatcher("Sukses.jsp").forward(request, response);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Langkah #6 : Cek File yang berada di Folder WebContent -&gt; WEB-INF -&gt; web.xml&lt;br /&gt;&lt;pre class="brush:xml"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;web-app xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns=&amp;quot;http://java.sun.com/xml/ns/javaee&amp;quot; xmlns:web=&amp;quot;http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&amp;quot; xsi:schemaLocation=&amp;quot;http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&amp;quot; id=&amp;quot;WebApp_ID&amp;quot; version=&amp;quot;2.5&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;servlet&amp;gt;&lt;br /&gt;    &amp;lt;servlet-name&amp;gt;LoginServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;    &amp;lt;servlet-class&amp;gt;greenhornsjava.controller.LoginServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;  &amp;lt;/servlet&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;    &amp;lt;servlet-name&amp;gt;LoginServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;    &amp;lt;url-pattern&amp;gt;/LoginServlet&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;  &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;/web-app&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Langkah #7 : Export File menjadi WAR dan deploy di Web Server Anda...&lt;br /&gt;Silahkan mencoba...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5797965346181571083-5177001788272253892?l=greenhornsjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greenhornsjava.blogspot.com/feeds/5177001788272253892/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://greenhornsjava.blogspot.com/2010/11/simple-demo-jsp-servlet.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/5177001788272253892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/5177001788272253892'/><link rel='alternate' type='text/html' href='http://greenhornsjava.blogspot.com/2010/11/simple-demo-jsp-servlet.html' title='Simple Demo Jsp Servlet'/><author><name>Toni Liem</name><uri>http://www.blogger.com/profile/18014951444910857098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_IZS7Uo3e9mU/TKFyK7fPYLI/AAAAAAAAAA4/F_oaGKe12HI/S220/P4290049_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_IZS7Uo3e9mU/TLktGZ6hyFI/AAAAAAAAAE8/0V4Mv39GmbU/s72-c/mvc+overview.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5797965346181571083.post-1575989404767399499</id><published>2010-11-23T09:45:00.000-08:00</published><updated>2010-11-23T09:58:26.299-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><title type='text'>Spring : How to Declarative Transaction</title><content type='html'>&lt;b&gt;Dalam tulisan ini kita akan mengekspose Spring declarative transaction dengan menggunakan fitur anotation (hanya support di java 1.5 dan seterusnya...)&lt;br /&gt;dan penggunaan SimpleJdbcInsert.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Berikut contoh penggunaan :&lt;br /&gt;&lt;i&gt;&lt;br /&gt;BookManagerImpl merupakan class yang mengatur proses DML pada table 'book' pada database 'spring_book'. Object BookManagerImpl akan dibungkus dengan Transaction pada mode 'read-only' secara default. Method insertBooks(List&lt;book&gt; books) akan dioverride dengan mode transaction yang berbeda sehingga setiap kali method ini dipanggil maka akan dibungkus dengan sebuah transaksi yang baru.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:java"&gt;CREATE DATABASE spring_book;&lt;br /&gt;&lt;br /&gt;CREATE TABLE `book` ( &lt;br /&gt; `id`   varchar(10) NOT NULL,&lt;br /&gt; `name` varchar(50) NOT NULL,&lt;br /&gt; PRIMARY KEY(`id`)&lt;br /&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;pre class="brush:java"&gt;package greenhornsjava.spring.entity;&lt;br /&gt;&lt;br /&gt;public class Book {&lt;br /&gt; private String id;&lt;br /&gt; private String name;&lt;br /&gt; &lt;br /&gt; public Book(String id, String name) {&lt;br /&gt;  this.id = id;&lt;br /&gt;  this.name = name;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public String getId() {&lt;br /&gt;  return id;&lt;br /&gt; }&lt;br /&gt; public void setId(String id) {&lt;br /&gt;  this.id = id;&lt;br /&gt; }&lt;br /&gt; public String getName() {&lt;br /&gt;  return name;&lt;br /&gt; }&lt;br /&gt; public void setName(String name) {&lt;br /&gt;  this.name = name;&lt;br /&gt; } &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre class="brush:java"&gt;package greenhornsjava.spring.trx;&lt;br /&gt;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;public interface BookManager {&lt;br /&gt; public void insertBooks(List books);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;pre class="brush:java"&gt;package greenhornsjava.spring.trx;&lt;br /&gt;&lt;br /&gt;import greenhornsjava.spring.entity.Book;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;import java.util.List;&lt;br /&gt;import java.util.Map;&lt;br /&gt;import javax.sql.DataSource;&lt;br /&gt;import org.springframework.beans.factory.BeanFactory;&lt;br /&gt;import org.springframework.context.support.AbstractApplicationContext;&lt;br /&gt;import org.springframework.context.support.FileSystemXmlApplicationContext;&lt;br /&gt;import org.springframework.jdbc.core.simple.SimpleJdbcInsert;&lt;br /&gt;import org.springframework.transaction.annotation.Propagation;&lt;br /&gt;import org.springframework.transaction.annotation.Transactional;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * BookManagerImpl adalah contoh class yang mengimplementasikan&lt;br /&gt; * Kemampuan Spring dalam mengatur transaksi secara declarative.&lt;br /&gt; */&lt;br /&gt;@Transactional(readOnly = true)&lt;br /&gt;public class BookManagerImpl implements BookManager {&lt;br /&gt; // SimpleJdbcInsert adalah Object JDBC Template yang disediakan oleh Spring Framework &lt;br /&gt; private SimpleJdbcInsert insertBook;&lt;br /&gt; &lt;br /&gt; public BookManagerImpl(DataSource dataSource) {&lt;br /&gt;  insertBook = new SimpleJdbcInsert(dataSource).withTableName("book");&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; /**&lt;br /&gt;  * Secara declarative menjadikan method ini 'terbungkus' oleh transaksi baru. &lt;br /&gt;  * Sehingga jika terjadi Exception maka keseluruhan proses insert pada method ini&lt;br /&gt;  * akan di-rollback.&lt;br /&gt;  */&lt;br /&gt; @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)&lt;br /&gt; public void insertBooks(List books) {&lt;br /&gt;  for(Object o : books) {&lt;br /&gt;   Book b = (Book) o;&lt;br /&gt;   Map parameters = new HashMap();&lt;br /&gt;   parameters.put("id", b.getId());&lt;br /&gt;   parameters.put("Name", b.getName());&lt;br /&gt;   insertBook.execute(parameters);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public static void main(String[] args) {  &lt;br /&gt;  AbstractApplicationContext context = new FileSystemXmlApplicationContext(&lt;br /&gt;    new String[] { "DataAccessContext.xml" });&lt;br /&gt;&lt;br /&gt;  context.registerShutdownHook();&lt;br /&gt;&lt;br /&gt;  final BeanFactory bf = (BeanFactory) context;&lt;br /&gt;  BookManager bookManager = (BookManager) bf.getBean("bookManager");&lt;br /&gt;  &lt;br /&gt;  Book b1 = new Book("book1", "Harry Potter");&lt;br /&gt;  Book b2 = new Book("book2", "The Lost Symbol");&lt;br /&gt;  Book b3 = new Book("book3", "The Adv of Donald Duck");&lt;br /&gt;  &lt;br /&gt;  List books = new ArrayList();&lt;br /&gt;  books.add(b1);&lt;br /&gt;  books.add(b2);&lt;br /&gt;  books.add(b3);&lt;br /&gt;  &lt;br /&gt;  // Proses Insert Book akan berhasil dan tercatat secara fisik di DB&lt;br /&gt;  bookManager.insertBooks(books);&lt;br /&gt;  &lt;br /&gt;  Book b4 = new Book("Book4", "The Destination");&lt;br /&gt;  &lt;br /&gt;  List books2 = new ArrayList();&lt;br /&gt;  books2.add(b4);&lt;br /&gt;  books2.add(b1);&lt;br /&gt;  &lt;br /&gt;  // Proses Insert Book akan gagal dan Book dengan id:Book4 tidak akan tersimpan&lt;br /&gt;  // karena method telah 'terbungkus' transaksi&lt;br /&gt;  bookManager.insertBooks(books2);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;code&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&amp;lt;beans xmlns=&amp;quot;http://www.springframework.org/schema/beans&amp;quot;&lt;br /&gt;    xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:aop=&amp;quot;http://www.springframework.org/schema/aop&amp;quot;&lt;br /&gt;    xmlns:tx=&amp;quot;http://www.springframework.org/schema/tx&amp;quot;&lt;br /&gt;    xsi:schemaLocation=&amp;quot;&lt;br /&gt;            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd&lt;br /&gt;            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd&lt;br /&gt;            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd&amp;quot;&amp;gt;&lt;br /&gt;    &lt;br /&gt;    &amp;lt;bean id=&amp;quot;bookManager&amp;quot; class=&amp;quot;greenhornsjava.spring.trx.BookManagerImpl&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;constructor-arg ref=&amp;quot;dataSource&amp;quot; /&amp;gt;&lt;br /&gt;    &amp;lt;/bean&amp;gt;&lt;br /&gt;    &lt;br /&gt;    &amp;lt;!--  Bagian ini akan memberitahukan container agar men-scan semua&lt;br /&gt;          object/method yang ber-anotasi @Transactional agar transaksinya dimanage&lt;br /&gt;          oleh Spring --&amp;gt;&lt;br /&gt;    &amp;lt;tx:annotation-driven transaction-manager=&amp;quot;txManager&amp;quot;/&amp;gt;&lt;br /&gt;    &lt;br /&gt;    &amp;lt;bean id=&amp;quot;dataSource&amp;quot; class=&amp;quot;org.apache.commons.dbcp.BasicDataSource&amp;quot;&lt;br /&gt;        destroy-method=&amp;quot;close&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;property name=&amp;quot;driverClassName&amp;quot; value=&amp;quot;com.mysql.jdbc.Driver&amp;quot; /&amp;gt;&lt;br /&gt;        &amp;lt;property name=&amp;quot;url&amp;quot; value=&amp;quot;jdbc:mysql://localhost:3306/spring_book&amp;quot; /&amp;gt;&lt;br /&gt;        &amp;lt;property name=&amp;quot;username&amp;quot; value=&amp;quot;root&amp;quot; /&amp;gt;&lt;br /&gt;        &amp;lt;property name=&amp;quot;password&amp;quot; value=&amp;quot;keriting&amp;quot; /&amp;gt;&lt;br /&gt;    &amp;lt;/bean&amp;gt;&lt;br /&gt;    &lt;br /&gt;    &amp;lt;bean id=&amp;quot;txManager&amp;quot;&lt;br /&gt;        class=&amp;quot;org.springframework.jdbc.datasource.DataSourceTransactionManager&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;property name=&amp;quot;dataSource&amp;quot; ref=&amp;quot;dataSource&amp;quot; /&amp;gt;&lt;br /&gt;    &amp;lt;/bean&amp;gt;&lt;br /&gt;&amp;lt;/beans&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;Catatan : Object yang akan menggunakan Spring Declarative Transaction &lt;b&gt;HARUS &lt;/b&gt;mengimplement sebuah Interface dimana method2 yang dimaksudkan agar 'dibungkus' dengan transaksi dapat dimanage oleh Spring.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5797965346181571083-1575989404767399499?l=greenhornsjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greenhornsjava.blogspot.com/feeds/1575989404767399499/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://greenhornsjava.blogspot.com/2010/11/spring-how-to-declarative-transaction.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/1575989404767399499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/1575989404767399499'/><link rel='alternate' type='text/html' href='http://greenhornsjava.blogspot.com/2010/11/spring-how-to-declarative-transaction.html' title='Spring : How to Declarative Transaction'/><author><name>Toni Liem</name><uri>http://www.blogger.com/profile/18014951444910857098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_IZS7Uo3e9mU/TKFyK7fPYLI/AAAAAAAAAA4/F_oaGKe12HI/S220/P4290049_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5797965346181571083.post-2190833254127974386</id><published>2010-11-22T00:54:00.000-08:00</published><updated>2010-11-22T00:58:52.649-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><title type='text'>Spring : Depedency Injection Framework</title><content type='html'>Spring merupakan salah satu DI (Depedency Injection) Framework yang sukses dipakai dalam pembangunan Software berbasis Java.&lt;br /&gt;Spring menjembatani class yang berkaitan erat dengan class dependency-nya melalui konfigurasi sehingga lebih loosely couple / tidak terikat.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Berikut contoh penggunaan Spring sebagai DI framework&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Class Car dan Plane merupakan parameter constructor untuk class TransportationTest. Dengan menggunakan file external yang dimanage oleh Spring maka keterikatan class TransportationTest dapat dikonfigurasi di file external(xml).&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;pre class="brush:java"&gt;public abstract class Vehicle { &lt;br /&gt; public abstract void move(); &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class Car extends Vehicle{ &lt;br /&gt; public void move() {&lt;br /&gt;  System.out.println("Driving fast..");  &lt;br /&gt; } &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class Plane extends Vehicle{ &lt;br /&gt; public void move() {&lt;br /&gt;  System.out.println("Flying fast");  &lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="brush:java"&gt;import org.springframework.beans.factory.BeanFactory;&lt;br /&gt;import org.springframework.context.support.AbstractApplicationContext;&lt;br /&gt;import org.springframework.context.support.FileSystemXmlApplicationContext;&lt;br /&gt;&lt;br /&gt;public class TransportationTest {&lt;br /&gt; private Vehicle vehicle;&lt;br /&gt; &lt;br /&gt; public TransportationTest(Vehicle vehicle) {&lt;br /&gt;  this.vehicle = vehicle;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void testVehicle() {&lt;br /&gt;  vehicle.move();&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public static void main(String[] args) {&lt;br /&gt;  /*  &lt;br /&gt;  // dependency injection tanpa spring menyebabkan &lt;br /&gt;  // class TransportationTest terikat erat dengan class Car&lt;br /&gt;  // pada saat instantiation  &lt;br /&gt;  Car car = new Car();&lt;br /&gt;  TransportationTest test = new TransportationTest(car);&lt;br /&gt;  test.testVehicle();&lt;br /&gt;  &lt;br /&gt;  // dependency injection tanpa spring menyebabkan &lt;br /&gt;  // class TransportationTest terikat erat dengan class Plane&lt;br /&gt;  // pada saat instantiation  &lt;br /&gt;  Plane plane = new Plane();&lt;br /&gt;  TransportationTest test2 = new TransportationTest(plane);&lt;br /&gt;  test2.testVehicle();  &lt;br /&gt;  */&lt;br /&gt;  &lt;br /&gt;  // load spring context&lt;br /&gt;  AbstractApplicationContext context = new FileSystemXmlApplicationContext(&lt;br /&gt;    new String[] {"ApplicationContext.xml"});&lt;br /&gt;  &lt;br /&gt;  // gunakan method ini utk mematikan spring container &lt;br /&gt;  // di lingkungan pengembangan desktop &lt;br /&gt;  context.registerShutdownHook();&lt;br /&gt;  &lt;br /&gt;  final BeanFactory bf = (BeanFactory)context;&lt;br /&gt;  &lt;br /&gt;  // dependency injection versi spring tidak menyebabkan &lt;br /&gt;  // class TransportationTest terikat erat dengan class yang &lt;br /&gt;  // menjadi parameter contructornya (Car ataupun Plane).&lt;br /&gt;  // Parameter constructor dikonfigurasi di file yang di-manage oleh Spring&lt;br /&gt;  TransportationTest test1 = (TransportationTest) bf.getBean("transportationTest1");  &lt;br /&gt;  test1.testVehicle(); &lt;br /&gt;  &lt;br /&gt;  TransportationTest test2 = (TransportationTest) bf.getBean("transportationTest2");  &lt;br /&gt;  test2.testVehicle();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;i&gt;file configurasi : ApplicationContext.xml, letakan di direktori yang sama dengan class TransportationTest &lt;/i&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&amp;lt;beans xmlns=&amp;quot;http://www.springframework.org/schema/beans&amp;quot;&lt;br /&gt;    xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:context=&amp;quot;http://www.springframework.org/schema/context&amp;quot;&lt;br /&gt;    xmlns:aop=&amp;quot;http://www.springframework.org/schema/aop&amp;quot;&lt;br /&gt;    xsi:schemaLocation=&amp;quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd&amp;quot;&amp;gt;&lt;br /&gt;    &lt;br /&gt;    &amp;lt;bean id=&amp;quot;car&amp;quot; class=&amp;quot;Car&amp;quot; /&amp;gt;&lt;br /&gt;    &amp;lt;bean id=&amp;quot;plane&amp;quot; class=&amp;quot;Plane&amp;quot; /&amp;gt;&lt;br /&gt;    &lt;br /&gt;    &amp;lt;bean id=&amp;quot;transportationTest1&amp;quot; class=&amp;quot;TransportationTest&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;constructor-arg ref=&amp;quot;car&amp;quot; /&amp;gt;&lt;br /&gt;    &amp;lt;/bean&amp;gt;&lt;br /&gt;    &lt;br /&gt;    &amp;lt;bean id=&amp;quot;transportationTest2&amp;quot; class=&amp;quot;TransportationTest&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;constructor-arg ref=&amp;quot;plane&amp;quot; /&amp;gt;&lt;br /&gt;    &amp;lt;/bean&amp;gt;        &lt;br /&gt;&amp;lt;/beans&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5797965346181571083-2190833254127974386?l=greenhornsjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greenhornsjava.blogspot.com/feeds/2190833254127974386/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://greenhornsjava.blogspot.com/2010/11/spring-depedency-injection-framework.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/2190833254127974386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/2190833254127974386'/><link rel='alternate' type='text/html' href='http://greenhornsjava.blogspot.com/2010/11/spring-depedency-injection-framework.html' title='Spring : Depedency Injection Framework'/><author><name>Toni Liem</name><uri>http://www.blogger.com/profile/18014951444910857098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_IZS7Uo3e9mU/TKFyK7fPYLI/AAAAAAAAAA4/F_oaGKe12HI/S220/P4290049_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5797965346181571083.post-1142265079978941010</id><published>2010-11-21T08:11:00.000-08:00</published><updated>2010-11-22T19:52:59.770-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thread'/><title type='text'>Thread : How to wait() and notify()</title><content type='html'>Sebuah Thread dapat dihentikan sementara waktu dan memberika kesempatan pada thread yang lain untuk dieksekusi. Thread yang lain dapat men-notify agar thread dengan status 'wait' dapat dijalankan kembali prosesnya.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Berikut contoh penggunaan method wait() dan notify...&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Terdapat 3 class masing-masing berfungsi untuk mengenerate Bilangan Ganjil, Genap dan Bulat. Thread Generator Bilangan Genap dan Bulat&amp;nbsp; akan berhenti jika telah mencapai batas angka tertentu sampai Ketika diakhir proses Generator Bilangan Ganjil akan me-notify Thread Generator Bilangan Bulat dan Genap untuk kembali melanjutkan prosesnya&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:java"&gt;public class GeneratorBilanganBulat extends Thread{&lt;br /&gt; private int maxNumber = 0;&lt;br /&gt; private double sleepSec = 0;&lt;br /&gt; private int waitAt ;&lt;br /&gt; &lt;br /&gt; public volatile boolean finished = false;&lt;br /&gt; &lt;br /&gt; public GeneratorBilanganBulat(int max, double miliSecSleep, int waitAt) {&lt;br /&gt;  maxNumber = max;&lt;br /&gt;  sleepSec = miliSecSleep;&lt;br /&gt;  waitAt = waitAt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void run() {&lt;br /&gt;  try {&lt;br /&gt;   int evenSeq = 1;&lt;br /&gt;   for (int i = 0; i &lt;= maxNumber; i++) {&lt;br /&gt;    System.out.println("BULAT (" + evenSeq++ +") : " + i);&lt;br /&gt;    if(i == waitAt) { &lt;br /&gt;     synchronized(this) {&lt;br /&gt;      wait();&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;    sleep((long) (sleepSec*1000));&lt;br /&gt;   }&lt;br /&gt;  } catch (InterruptedException e) {&lt;br /&gt;   // TODO Auto-generated catch block&lt;br /&gt;   e.printStackTrace();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;pre class="brush:java"&gt;public class GeneratorBilanganGenap extends Thread{&lt;br /&gt; private int maxNumber = 0;&lt;br /&gt; private double sleepSec = 0;&lt;br /&gt; private int waitFor;&lt;br /&gt; &lt;br /&gt; public GeneratorBilanganGenap(int max, double miliSecSleep, int waitFor) {&lt;br /&gt;  maxNumber = max;&lt;br /&gt;  sleepSec = miliSecSleep;&lt;br /&gt;  this.waitFor = waitFor;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void run() {&lt;br /&gt;  try {&lt;br /&gt;   int seq = 1;&lt;br /&gt;   for (int i = 0; i &lt;= maxNumber; i++) {&lt;br /&gt;    if(i%2 == 0) {&lt;br /&gt;     System.out.println("GENAP (" + seq++ +") : " + i);&lt;br /&gt;     &lt;br /&gt;     if (i == waitFor) {&lt;br /&gt;      synchronized(this) {&lt;br /&gt;       wait();&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;     // hentikan proses utk jangka waktu tertentu &lt;br /&gt;     // jika telah menemukan bilangan genap&lt;br /&gt;     sleep((long) (sleepSec*1000));&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  } catch (InterruptedException e) {&lt;br /&gt;   // TODO Auto-generated catch block&lt;br /&gt;   e.printStackTrace();&lt;br /&gt;  }&lt;br /&gt; } &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre class="brush:java"&gt;public class GeneratorBilanganGanjil extends Thread{&lt;br /&gt; private int maxNumber = 0;&lt;br /&gt; private double sleepSec = 0;&lt;br /&gt; private GeneratorBilanganGenap genapThread;&lt;br /&gt; private GeneratorBilanganBulat bulatThread;&lt;br /&gt; &lt;br /&gt; public GeneratorBilanganGanjil(int max, double miliSecSleep, &lt;br /&gt;           GeneratorBilanganGenap genapThread, GeneratorBilanganBulat bulatThread) {&lt;br /&gt;  maxNumber = max;&lt;br /&gt;  sleepSec = miliSecSleep;&lt;br /&gt;  this.genapThread = genapThread;&lt;br /&gt;  this.bulatThread = bulatThread;&lt;br /&gt; } &lt;br /&gt; &lt;br /&gt; public void run() {&lt;br /&gt;  try {&lt;br /&gt;   int evenSeq = 1;&lt;br /&gt;   for (int i = 0; i &lt;= maxNumber; i++) {&lt;br /&gt;    if(i%2 == 1) System.out.println("GANJIL (" + evenSeq++ +") : " + i);&lt;br /&gt;    &lt;br /&gt;    sleep((long) (sleepSec*1000));&lt;br /&gt;    &lt;br /&gt;   }&lt;br /&gt;  } catch (InterruptedException e) {&lt;br /&gt;   // TODO Auto-generated catch block&lt;br /&gt;   e.printStackTrace();&lt;br /&gt;  }&lt;br /&gt;    &lt;br /&gt;  synchronized(genapThread ) {&lt;br /&gt;   System.out.println("Ganjil sudah selesai lanjutkan dengan yg Genap");&lt;br /&gt;   genapThread.notify();&lt;br /&gt;  }&lt;br /&gt;  synchronized(bulatThread ) {&lt;br /&gt;   System.out.println("Ganjil sudah selesai lanjutkan dengan yg Bulat");&lt;br /&gt;   bulatThread.notify();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre class="brush:java"&gt;public class ThreadTest {&lt;br /&gt; public static void main(String[] args) throws InterruptedException {&lt;br /&gt;  GeneratorBilanganGenap genapThread = new GeneratorBilanganGenap(30, 0.2, 10);&lt;br /&gt;  GeneratorBilanganBulat bulatThread = new GeneratorBilanganBulat(30, 0.2, 20);&lt;br /&gt;  GeneratorBilanganGanjil ganjilThread = new GeneratorBilanganGanjil(30, 0.2, genapThread, bulatThread);&lt;br /&gt;  genapThread.start(); &lt;br /&gt;  bulatThread.start();&lt;br /&gt;  ganjilThread.start();  &lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;untuk dapat menjalankan fungsi wait dan notify maka bentuk umumnya adalah sbb:&lt;/b&gt;&lt;pre class="brush:java"&gt;synchronized (someObject) {&lt;br /&gt;    someObject.wait();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* different thread / object */&lt;br /&gt;synchronized (someObject) {&lt;br /&gt;    someObject.notify();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5797965346181571083-1142265079978941010?l=greenhornsjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greenhornsjava.blogspot.com/feeds/1142265079978941010/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://greenhornsjava.blogspot.com/2010/11/thread-how-to-wait-notify.html#comment-form' title='2 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/1142265079978941010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/1142265079978941010'/><link rel='alternate' type='text/html' href='http://greenhornsjava.blogspot.com/2010/11/thread-how-to-wait-notify.html' title='Thread : How to wait() and notify()'/><author><name>Toni Liem</name><uri>http://www.blogger.com/profile/18014951444910857098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_IZS7Uo3e9mU/TKFyK7fPYLI/AAAAAAAAAA4/F_oaGKe12HI/S220/P4290049_2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5797965346181571083.post-6528236264519037711</id><published>2010-11-21T07:30:00.000-08:00</published><updated>2010-11-21T07:30:25.689-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thread'/><title type='text'>Perkenalan Thread</title><content type='html'>Thread merupakan satuan kecil dari proses dalam pemograman Java. Dengan meng-extends Thread atau meng-implements Runnable maka sebuah Class dapat menjadi sebuah Proses yg bisa dieksekusi secara bersamaan dengan Main Thread (Thread utama yang terdapat pada class yg memiliki public static void Main(...) ketika meluncurkan program pertama kali).&lt;br /&gt;Thread digunakan untuk melakukan instruksi khusus yang waktu eksekusinya dapat berbarengan dengan Main Thread.&lt;br /&gt;&lt;br /&gt;Statement yang akan dijalankan oleh oleh sebuah Thread di tempatkan pada method run().&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:java"&gt;public class GeneratorBilanganGenap extends Thread{&lt;br /&gt; private int maxNumber = 0;&lt;br /&gt; private double sleepSec = 0;&lt;br /&gt; private String name;&lt;br /&gt; &lt;br /&gt; public GeneratorBilanganGenap(String name, int max, double miliSecSleep) {&lt;br /&gt;  this.name = name;&lt;br /&gt;  maxNumber = max;&lt;br /&gt;  sleepSec = miliSecSleep;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void run() {&lt;br /&gt;  try {&lt;br /&gt;   int seq = 1;&lt;br /&gt;   for (int i = 0; i &amp;lt;= maxNumber; i++) {&lt;br /&gt;    if(i%2 == 0) {&lt;br /&gt;     System.out.println("Name : " + name + ", urutan(" + seq++ +") : " + i);&lt;br /&gt;     &lt;br /&gt;     // hentikan proses utk jangka waktu tertentu &lt;br /&gt;     // jika telah menemukan bilangan genap&lt;br /&gt;     sleep((long) (sleepSec*1000));&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  } catch (InterruptedException e) {&lt;br /&gt;   // TODO Auto-generated catch block&lt;br /&gt;   e.printStackTrace();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public static void main(String[] args) {&lt;br /&gt;  // create thread masukan parameter constructor &lt;br /&gt;  GeneratorBilanganGenap generator1 = new GeneratorBilanganGenap("T1", 20, 0.2);&lt;br /&gt;  GeneratorBilanganGenap generator2 = new GeneratorBilanganGenap("T2", 40, 0.2);&lt;br /&gt;  &lt;br /&gt;  // mulai jalankan thread / proses&lt;br /&gt;  generator1.start();&lt;br /&gt;  generator2.start();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Dengan meng-create object Thread tidak serta merta akan menjalankan statement pada method Run(). Agar tereksekusi harus menjalankan method start() pada Thread tersebut.&lt;br /&gt;&lt;br /&gt;Catatan : method sleep(long miliseconds), berguna untuk menghentikan proses yg dijalankan thread tersebut dalam jangka waktu tertentu dalam hitungan milisecond.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5797965346181571083-6528236264519037711?l=greenhornsjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greenhornsjava.blogspot.com/feeds/6528236264519037711/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://greenhornsjava.blogspot.com/2010/11/perkenalan-thread.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/6528236264519037711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/6528236264519037711'/><link rel='alternate' type='text/html' href='http://greenhornsjava.blogspot.com/2010/11/perkenalan-thread.html' title='Perkenalan Thread'/><author><name>Toni Liem</name><uri>http://www.blogger.com/profile/18014951444910857098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_IZS7Uo3e9mU/TKFyK7fPYLI/AAAAAAAAAA4/F_oaGKe12HI/S220/P4290049_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5797965346181571083.post-5324906119163122859</id><published>2010-10-12T07:20:00.000-07:00</published><updated>2010-10-15T19:06:12.663-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Basic'/><title type='text'>Object Inheritance (Bagian 2 - Akhir)</title><content type='html'>Pada&amp;nbsp;&lt;a href="http://greenhornsjava.blogspot.com/2010/10/object-inheritance-bagian-1.html"&gt;bagian 1&lt;/a&gt;&amp;nbsp;kita telah sebuah super class dan 5 sub class yakni Hippo, Dog, Tiger, Cat, dan Lion. Jika kita melihat class Dog, Tiger, Cat dan Lion maka kita melihat bahwa ke 4 class tersebut memiliki method &lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;eat()&lt;/span&gt;&lt;/b&gt; yang &amp;nbsp;melakukan fungsi yang sama. &lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_IZS7Uo3e9mU/TLRZt7DcZhI/AAAAAAAAAEo/oNah9aqtwh8/s1600/animal+eats+meat.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_IZS7Uo3e9mU/TLRZt7DcZhI/AAAAAAAAAEo/oNah9aqtwh8/s1600/animal+eats+meat.gif" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;Langkah #3 : Cermati ulang peluang untuk abstraksi yang baru dengan menentukan dua class atau lebih yang memiliki Behavior yang sama.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Dari analisa diatas kita dapat mengetahui bahwa Cat, Lion, Tiger dan Dog dapat di kelompokan menjadi sebuah kelompok class yang baru yakni &lt;b&gt;Carnivora, &lt;/b&gt;sedangkan Hippo dapat kita kelompokan sebagai &lt;b&gt;Herbivora.&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush:java"&gt;package greenhornsjava;&lt;br /&gt;&lt;br /&gt;public class Carnivora extends Animal{&lt;br /&gt; public void eat() {&lt;br /&gt;  System.out.println("I eat meats..");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;pre class="brush:java"&gt;package greenhornsjava;&lt;br /&gt;&lt;br /&gt;public class Herbivora extends Animal{&lt;br /&gt; public void eat() {&lt;br /&gt;  System.out.println("I eat vegetables...");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Karena method eat() telah kita pindahkan ke class yang baru maka kita dapat menghapus method eat() dari ke 5 class dan mengubah class agar meng-extends super class yang baru sesuai jenis makanan yang dikonsumsi.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:java"&gt;package greenhornsjava;&lt;br /&gt;&lt;br /&gt;public class Cat extends Carnivora{&lt;br /&gt; public void makeNoise() {&lt;br /&gt;  System.out.println("Meong, Meong,...");&lt;br /&gt; } &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;pre class="brush:java"&gt;package greenhornsjava;&lt;br /&gt;&lt;br /&gt;public class Dog extends Carnivora{&lt;br /&gt; public void makeNoise() {&lt;br /&gt;  System.out.println("Guk, Guk,...");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre class="brush:java"&gt;package greenhornsjava;&lt;br /&gt;&lt;br /&gt;public class Lion extends Carnivora{&lt;br /&gt; public void makeNoise() {&lt;br /&gt;  System.out.println("Roar, roar,...");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;pre class="brush:java"&gt;package greenhornsjava;&lt;br /&gt;&lt;br /&gt;public class Tiger extends Carnivora{&lt;br /&gt; public void makeNoise() {&lt;br /&gt;  System.out.println("Hauuuum, Hauuum,...");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;pre class="brush:java"&gt;package greenhornsjava;&lt;br /&gt;&lt;br /&gt;public class Hippo extends Herbivora{&lt;br /&gt; public void makeNoise() {&lt;br /&gt;  System.out.println("Guik, Guik,...");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Untuk mengetahui prilaku hewan-hewan yang telah kita definisikan. Mari kita membuat sebuah program yang akan mencetak prilaku hewan - hewan di console.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:java"&gt;package greenhornsjava;&lt;br /&gt;&lt;br /&gt;import java.util.Scanner;&lt;br /&gt;&lt;br /&gt;public class AnimalTester {&lt;br /&gt; public static void main(String[] args) {&lt;br /&gt;  System.out.println("====== Animal Tester =======");&lt;br /&gt;  System.out.println("1.Hippo");&lt;br /&gt;  System.out.println("2.Lion");&lt;br /&gt;  System.out.println("3.Tiger");&lt;br /&gt;  System.out.println("4.Dog");&lt;br /&gt;  System.out.println("5.Cat");&lt;br /&gt;  System.out.println("6.Exit");&lt;br /&gt;  while (true) {&lt;br /&gt;   int option = 0;&lt;br /&gt;   System.out.print("Pilih [1/2/3/4/5/6] : ");&lt;br /&gt;   option = new Scanner(System.in).nextInt();&lt;br /&gt;   switch (option) {&lt;br /&gt;   case 1:&lt;br /&gt;    Hippo hippo = new Hippo();&lt;br /&gt;    System.out.print("makeNoise() : ");hippo.makeNoise();&lt;br /&gt;    System.out.print("eat() : ");hippo.eat();&lt;br /&gt;    System.out.print("sleep() : ");hippo.sleep();&lt;br /&gt;    System.out.print("roam() : ");hippo.roam();&lt;br /&gt;    break;&lt;br /&gt;    &lt;br /&gt;   case 2:&lt;br /&gt;    Lion lion = new Lion();&lt;br /&gt;    System.out.print("makeNoise() : ");lion.makeNoise();&lt;br /&gt;    System.out.print("eat() : ");lion.eat();&lt;br /&gt;    System.out.print("sleep() : ");lion.sleep();&lt;br /&gt;    System.out.print("roam() : ");lion.roam();&lt;br /&gt;    break;&lt;br /&gt;    &lt;br /&gt;   case 3:&lt;br /&gt;    Tiger tiger = new Tiger();&lt;br /&gt;    System.out.print("makeNoise() : ");tiger.makeNoise();&lt;br /&gt;    System.out.print("eat() : ");tiger.eat();&lt;br /&gt;    System.out.print("sleep() : ");tiger.sleep();&lt;br /&gt;    System.out.print("roam() : ");tiger.roam();&lt;br /&gt;    break;&lt;br /&gt;    &lt;br /&gt;   case 4:&lt;br /&gt;    Dog dog = new Dog();&lt;br /&gt;    System.out.print("makeNoise() : ");dog.makeNoise();&lt;br /&gt;    System.out.print("eat() : ");dog.eat();&lt;br /&gt;    System.out.print("sleep() : ");dog.sleep();&lt;br /&gt;    System.out.print("roam() : ");dog.roam();&lt;br /&gt;    break; &lt;br /&gt;   &lt;br /&gt;   case 5:&lt;br /&gt;    Cat cat = new Cat();&lt;br /&gt;    System.out.print("makeNoise() : ");cat.makeNoise();&lt;br /&gt;    System.out.print("eat() : ");cat.eat();&lt;br /&gt;    System.out.print("sleep() : ");cat.sleep();&lt;br /&gt;    System.out.print("roam() : ");cat.roam();&lt;br /&gt;    break; &lt;br /&gt;   &lt;br /&gt;   case 6 : return;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Berikut Gambar ilustrasi dari method yang dieksekusi pada class yang menggunakan fitur inheritance.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_IZS7Uo3e9mU/TLRoziuTE4I/AAAAAAAAAEs/WAMY-3qJwas/s1600/Tiger+Methods.gif" /&gt;&lt;/div&gt;&lt;br /&gt;Jadi apa kegunaan INHERITACE bagi kita?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Kita dapat menghindari code yang redundant (berulang-ulang didefinisikan).&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;div&gt;Tempatkan method yang memiliki kode yang sama ke sebuah super class yang baru dan biarkan subclass yang menjadi turunan dari superclass mewarisi method tersebut. Ketika kalian ingin mengubah behavior dari method, kalian hanya mengubah di subclass tertentu saja.&lt;/div&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Anda dapat menentukan sebuah protocol umum untuk sekelompok class.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_IZS7Uo3e9mU/TLRrpfOnw9I/AAAAAAAAAEw/_z9erM8MYpI/s1600/inheritance+duke+explains.gif" /&gt;&lt;/div&gt;&lt;div&gt;Sekian tutorial dari Inheritance. Semoga dapat membantu. Jika terdapat pertanyaan, silahkan tinggalkan komentar. Saya akan berusaha menjawab secepat mungkin.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5797965346181571083-5324906119163122859?l=greenhornsjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greenhornsjava.blogspot.com/feeds/5324906119163122859/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://greenhornsjava.blogspot.com/2010/10/object-inheritance-bagian-2-akhir.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/5324906119163122859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/5324906119163122859'/><link rel='alternate' type='text/html' href='http://greenhornsjava.blogspot.com/2010/10/object-inheritance-bagian-2-akhir.html' title='Object Inheritance (Bagian 2 - Akhir)'/><author><name>Toni Liem</name><uri>http://www.blogger.com/profile/18014951444910857098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_IZS7Uo3e9mU/TKFyK7fPYLI/AAAAAAAAAA4/F_oaGKe12HI/S220/P4290049_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_IZS7Uo3e9mU/TLRZt7DcZhI/AAAAAAAAAEo/oNah9aqtwh8/s72-c/animal+eats+meat.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5797965346181571083.post-5498331262695631734</id><published>2010-10-07T08:44:00.000-07:00</published><updated>2010-10-12T07:43:56.856-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Basic'/><title type='text'>Object Inheritance (Bagian 1)</title><content type='html'>Pada bagian ini kita akan belajar mengenai salah satu fitur umum dalam OOP yakni &lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;INHERITANCE.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Inheritance, dimaksudkan agar sebuah class dapat mewarisi state2x dan behavior dari object supernya. Agar dapat memahami dengan lebih gampang mari kita simak cerita berikut!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_IZS7Uo3e9mU/TK3U1M-NxBI/AAAAAAAAAEY/ll34aO_G2Mk/s1600/uncle-sam_2.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_IZS7Uo3e9mU/TK3U1M-NxBI/AAAAAAAAAEY/ll34aO_G2Mk/s1600/uncle-sam_2.gif" /&gt;&lt;/a&gt;&lt;span id="goog_1564225122"&gt;&lt;/span&gt;&lt;span id="goog_1564225123"&gt;&lt;/span&gt;Anda diminta untuk membuat sebuah program simulasi prilaku hewan pada sebuah Kebun Binatang.&lt;br /&gt;&lt;br /&gt;Langkah awal dalam pembuatan program adalah Design, sebuah sistem yang akan anda berikan nama :&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;"Sistem Kendali Prilaku Hewan"&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;Uncle Sam telah memberikan beberapa sample hewan yang akan dimasukan ke dalam sistem kita. Berikut sample-sample hewan yang diberikan :&lt;br /&gt;&lt;span id="goog_2078193527"&gt;&lt;/span&gt;&lt;span id="goog_2078193528"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_IZS7Uo3e9mU/TK3WhbfL9nI/AAAAAAAAAEc/-3sPosDk40E/s1600/Animal.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_IZS7Uo3e9mU/TK3WhbfL9nI/AAAAAAAAAEc/-3sPosDk40E/s1600/Animal.gif" /&gt;&lt;/a&gt;&lt;br /&gt;Anda diberikan kebebasan dalam menentukan spesifikasi yang akan dimasukan ke dalam sistem anda. Mari kita kerjakan!&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: xx-large;"&gt;&lt;b&gt;Langkah #1: Definisikan super class berdasarkan karakteristik umum dari semua hewan (Attribute dan Behaviour)&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Attribute umum dari hewan2 dalam sistem adalah :&lt;br /&gt;picture (gambar hewan), food (jenis makanan yang dikonsumsi), hunger (tingkat lapar) dan location (posisi hewan dalam kebun binatang).&lt;br /&gt;&lt;br /&gt;Method umum dari hewan2 dalam sistem adalah :&lt;br /&gt;makeNoise(bersuara), eat(makan) , roam(cara hewan bergerak) dan sleep (cara hewan tidur)&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush:java"&gt;package greenhornsjava;&lt;br /&gt;&lt;br /&gt;import java.awt.Image;&lt;br /&gt;&lt;br /&gt;public class Animal {&lt;br /&gt; private Image picture;&lt;br /&gt; private String food;&lt;br /&gt; private int hunger;&lt;br /&gt; private int location;&lt;br /&gt; &lt;br /&gt; public Image getPicture() {&lt;br /&gt;  return picture;&lt;br /&gt; }&lt;br /&gt; public void setPicture(Image picture) {&lt;br /&gt;  this.picture = picture;&lt;br /&gt; }&lt;br /&gt; public String getFood() {&lt;br /&gt;  return food;&lt;br /&gt; }&lt;br /&gt; public void setFood(String food) {&lt;br /&gt;  this.food = food;&lt;br /&gt; }&lt;br /&gt; public int getHunger() {&lt;br /&gt;  return hunger;&lt;br /&gt; }&lt;br /&gt; public void setHunger(int hunger) {&lt;br /&gt;  this.hunger = hunger;&lt;br /&gt; }&lt;br /&gt; public int getLocation() {&lt;br /&gt;  return location;&lt;br /&gt; }&lt;br /&gt; public void setLocation(int location) {&lt;br /&gt;  this.location = location;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void makeNoise() { System.out.println("Animal Make Noise."); }&lt;br /&gt; public void eat() { System.out.println("Animal eat."); }&lt;br /&gt; public void roam() { System.out.println("Animal Roam.");}  &lt;br /&gt; public void sleep() { System.out.println("Animal Sleep.");}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;Langkah #2 : Definisikan kembali method yang spesifik terhadap typenya&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_IZS7Uo3e9mU/TK3jnCxc5oI/AAAAAAAAAEk/rjYZ4ZcDjp0/s1600/inheritance1.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_IZS7Uo3e9mU/TK3jnCxc5oI/AAAAAAAAAEk/rjYZ4ZcDjp0/s1600/inheritance1.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;pre class="brush:java"&gt;package greenhornsjava;&lt;br /&gt;&lt;br /&gt;public class Hippo extends Animal{&lt;br /&gt; public void makeNoise() {&lt;br /&gt;  System.out.println("Guik, Guik,...");&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void eat() {&lt;br /&gt;  System.out.println("Hippo eats vegetables..");&lt;br /&gt; } &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre class="brush:java"&gt;package greenhornsjava;&lt;br /&gt;&lt;br /&gt;public class Dog extends Animal{&lt;br /&gt; public void makeNoise() {&lt;br /&gt;  System.out.println("Guk, Guk,...");&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void eat() {&lt;br /&gt;  System.out.println("Dog eats meats...");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;pre class="brush:java"&gt;package greenhornsjava;&lt;br /&gt;&lt;br /&gt;public class Lion extends Animal{&lt;br /&gt; public void makeNoise() {&lt;br /&gt;  System.out.println("Roar, roar,...");&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void eat() {&lt;br /&gt;  System.out.println("Lion eats meats..");&lt;br /&gt; } &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="brush:java"&gt;package greenhornsjava;&lt;br /&gt;&lt;br /&gt;public class Cat extends Animal{&lt;br /&gt; public void makeNoise() {&lt;br /&gt;  System.out.println("Meong, Meong,...");&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void eat() {&lt;br /&gt;  System.out.println("Cat eats meats..");&lt;br /&gt; } &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;pre class="brush:java"&gt;package greenhornsjava;&lt;br /&gt;&lt;br /&gt;public class Tiger extends Animal{&lt;br /&gt; public void makeNoise() {&lt;br /&gt;  System.out.println("Haummm, Haummm,...");&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void eat() {&lt;br /&gt;  System.out.println("Tiger eats meats ...");&lt;br /&gt; } &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Sekian bagian pertama dari seri Inheritance... jika terdapat pertanyaan silahkan tinggalkan komentar. Terima kasih.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5797965346181571083-5498331262695631734?l=greenhornsjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greenhornsjava.blogspot.com/feeds/5498331262695631734/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://greenhornsjava.blogspot.com/2010/10/object-inheritance-bagian-1.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/5498331262695631734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/5498331262695631734'/><link rel='alternate' type='text/html' href='http://greenhornsjava.blogspot.com/2010/10/object-inheritance-bagian-1.html' title='Object Inheritance (Bagian 1)'/><author><name>Toni Liem</name><uri>http://www.blogger.com/profile/18014951444910857098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_IZS7Uo3e9mU/TKFyK7fPYLI/AAAAAAAAAA4/F_oaGKe12HI/S220/P4290049_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_IZS7Uo3e9mU/TK3U1M-NxBI/AAAAAAAAAEY/ll34aO_G2Mk/s72-c/uncle-sam_2.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5797965346181571083.post-2001713411205500360</id><published>2010-10-07T02:39:00.000-07:00</published><updated>2010-10-12T07:43:40.805-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Basic'/><title type='text'>Struktur Class Java</title><content type='html'>Pada serie tulisan &lt;a href="http://greenhornsjava.blogspot.com/2010/09/menulis-program-aplikasi-java-sederhana.html" target="_blank"&gt;sebelumnya&lt;/a&gt;, kita telah membuat sebuah program Java N-Tier yang sedehana. Sekarang mari kita mundur beberapa langkah untuk mengulas dasar-dasar pemograman yang menjadi pondasinya.&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_IZS7Uo3e9mU/TK11yQCQcbI/AAAAAAAAAD0/XuiJTBDypWQ/s1600/17.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_IZS7Uo3e9mU/TK11yQCQcbI/AAAAAAAAAD0/XuiJTBDypWQ/s1600/17.gif" /&gt;&lt;/a&gt;Sebuah program pada platform Java tersusun dari berbagai jenis elemen file, misalnya : Java class, file properties, file Xml konfigurasi, dlcs (dan lainnya cari sendiri…). Pada bagian ini kita hanya akan fokus pada &lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Java Class&lt;/span&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Sebuah class pada Java tersusun dari &lt;b&gt;Variable&lt;/b&gt; atau &lt;b&gt;State &lt;/b&gt;dan &lt;span class="Apple-style-span" style="color: #cc0000;"&gt;&lt;b&gt;Method &lt;/b&gt;&lt;/span&gt;atau &lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;Behavior&lt;/span&gt;&lt;/b&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/_IZS7Uo3e9mU/TK15ODCMgeI/AAAAAAAAAEA/2B44fv9oxEQ/s1600/duke-java-logo.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_IZS7Uo3e9mU/TK15ODCMgeI/AAAAAAAAAEA/2B44fv9oxEQ/s1600/duke-java-logo.gif" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Variable &lt;/span&gt;menerangkan hal-hal yang sebuah object ‘ketahui’ (know), sedangkan &lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Method &lt;/span&gt;merupakan hal-hal yang sebuah object dapat ‘lakukan’ (does).&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_IZS7Uo3e9mU/TK2AcC9qHoI/AAAAAAAAAEI/jhFf06X2oO0/s1600/Object+behavior+small+2.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_IZS7Uo3e9mU/TK2AcC9qHoI/AAAAAAAAAEI/jhFf06X2oO0/s1600/Object+behavior+small+2.gif" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;"State dari sebuah object dapat mempengaruhi Behavior-nya."&lt;/span&gt;&lt;br /&gt;Berikut contoh dari analogi diatas:&lt;br /&gt;&lt;pre class="brush:java"&gt;package greenhornsjava;&lt;br /&gt;&lt;br /&gt;import java.util.Scanner;&lt;br /&gt;&lt;br /&gt;public class Duke {&lt;br /&gt; private int age;&lt;br /&gt;&lt;br /&gt; public void setAge(int age) {&lt;br /&gt;  this.age = age;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public int getAge() {&lt;br /&gt;  return age;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void run() {&lt;br /&gt;  if(age &amp;lt; 25) System.out.println("Duke Run Very Fast...");&lt;br /&gt;  else if(age &amp;gt;= 25 &amp;amp;&amp;amp; age &amp;lt; 35) System.out.println("Duke Run Fast...");&lt;br /&gt;  else if(age &amp;gt;= 35 &amp;amp;&amp;amp; age &amp;lt; 45) System.out.println("Duke Run Slow...");&lt;br /&gt;  else if(age &amp;gt;= 45) System.out.println("Duke Run Very Slow...");&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public static void main(String[] arg) {&lt;br /&gt;  Duke duke = new Duke();&lt;br /&gt;  System.out.print("Duke Age : ");&lt;br /&gt;  int dukeAge = new Scanner(System.in).nextInt();&lt;br /&gt;  duke.setAge(dukeAge);&lt;br /&gt; &lt;br /&gt;  duke.run();&lt;br /&gt; } &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;Gambar Struktur Class Java&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_IZS7Uo3e9mU/TK2S-1l7fDI/AAAAAAAAAEM/9tRNK5Ygeho/s1600/ClassStructure.gif" /&gt;&lt;/div&gt;Sekian ulasan singkat dari struktur class Java. Jika terdapat pertanyaan, silahkan tulis komentar anda, saya akan mencoba untuk menanggapi secepatnya. Terima kasih.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5797965346181571083-2001713411205500360?l=greenhornsjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greenhornsjava.blogspot.com/feeds/2001713411205500360/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://greenhornsjava.blogspot.com/2010/10/struktur-class-java.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/2001713411205500360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/2001713411205500360'/><link rel='alternate' type='text/html' href='http://greenhornsjava.blogspot.com/2010/10/struktur-class-java.html' title='Struktur Class Java'/><author><name>Toni Liem</name><uri>http://www.blogger.com/profile/18014951444910857098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_IZS7Uo3e9mU/TKFyK7fPYLI/AAAAAAAAAA4/F_oaGKe12HI/S220/P4290049_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_IZS7Uo3e9mU/TK11yQCQcbI/AAAAAAAAAD0/XuiJTBDypWQ/s72-c/17.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5797965346181571083.post-875617959760526268</id><published>2010-10-03T08:37:00.000-07:00</published><updated>2010-10-12T07:43:27.817-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Basic'/><title type='text'>Menulis Program Aplikasi Java Sederhana (Bagian 3 - Akhir)</title><content type='html'>Pada&amp;nbsp;&lt;a href="http://greenhornsjava.blogspot.com/2010/10/menulis-program-aplikasi-java-sederhana.html"&gt;tulisan sebelumnya&lt;/a&gt;, kita telah menyelesaikan sampai pada tahap 7.2 (&lt;a href="http://1.bp.blogspot.com/_IZS7Uo3e9mU/TKRwNm-yRwI/AAAAAAAAACI/UKseOupGEfY/s1600/Posting3small.gif"&gt;lihat roadmap aplikasi&lt;/a&gt;), sekarang kita akan menyelesaikan keseluruhan tahap dari aplikasi (baca :&amp;nbsp;&lt;a href="http://greenhornsjava.blogspot.com/2010/09/menulis-program-aplikasi-java-sederhana.html"&gt;Membuat Aplikasi Program Java Sederhana (Bagian 1&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;Mari kita mulai ...&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Langkah #10 : Membangun View Daftar Pegawai&lt;/span&gt;&lt;br /&gt;13. Ubah dan tambahkan code pada class [&lt;b&gt;Menu&lt;/b&gt;] agar ketika user memilih 'pilihan 2.Daftar Data Pegawai' maka user akan diarahkan ke menu daftar data pegawai.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="104" src="http://2.bp.blogspot.com/_IZS7Uo3e9mU/TKiDR3xMRLI/AAAAAAAAADk/5ACka4dUk4g/s640/13.gif" width="640" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush:java"&gt;private void showMenu(User user, int option) {&lt;br /&gt;  switch(option) {&lt;br /&gt;   case 1 :  showMenuEntryData(); break;&lt;br /&gt;   case 2 : showMenuListData(); break; &lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; private void showMenuListData() {&lt;br /&gt;  ListData listData = new ListData();&lt;br /&gt;  listData.showData();&lt;br /&gt; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;14. Buat class [&lt;b&gt;ListData&lt;/b&gt;] di package[&lt;b&gt;greenhornsjava.view&lt;/b&gt;]&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;pre class="brush:java"&gt;package greenhornsjava.view;&lt;br /&gt;&lt;br /&gt;import java.text.SimpleDateFormat;&lt;br /&gt;import java.util.Scanner;&lt;br /&gt;import greenhornsjava.db.InMemoryEmployeeDb;&lt;br /&gt;import greenhornsjava.model.Employee;&lt;br /&gt;import greenhornsjava.util.FileUtil;&lt;br /&gt;&lt;br /&gt;public class ListData {&lt;br /&gt; private final String FILE_DIR = "C:/greenhornsjava/";  &lt;br /&gt; public void showData() {&lt;br /&gt;  InMemoryEmployeeDb employeeTable = InMemoryEmployeeDb.getInstance();&lt;br /&gt;  if(employeeTable.size() == 0) &lt;br /&gt;   System.out.println("Tidak Ada Pegawai!");&lt;br /&gt;  else ListAllDataEmployee(employeeTable);&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; private void ListAllDataEmployee(InMemoryEmployeeDb employeeTable) {&lt;br /&gt;  System.out.println("=======================================");&lt;br /&gt;  for (Employee employee : employeeTable) {&lt;br /&gt;   System.out.println("Nama : " + employee.getNama());&lt;br /&gt;   System.out.println("Alamat : " + employee.getAlamat());&lt;br /&gt;   System.out.printf("Tempat,Tanggal Lahir : %s, %s \n", &lt;br /&gt;         employee.getTempatLahir(), &lt;br /&gt;         new SimpleDateFormat("dd/MM/yyyy").format(employee.getTglLahir()));&lt;br /&gt;   System.out.printf("User, Tgl Input: %s, %s \n", &lt;br /&gt;         employee.getCreatedBy(), &lt;br /&gt;         new SimpleDateFormat("dd/MM/yyyy").format(employee.getCreatedOn()));&lt;br /&gt;   System.out.println("=======================================");&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  String reply = null;&lt;br /&gt;  System.out.print("Simpan ke text[Y/N]?");&lt;br /&gt;  reply = new Scanner(System.in).next();&lt;br /&gt;  &lt;br /&gt;  if(reply.equalsIgnoreCase("y")) {&lt;br /&gt;   String fileName = new SimpleDateFormat("yyyyMMdd").&lt;br /&gt;         format(System.currentTimeMillis()) + "_greenhornsjava.txt"; &lt;br /&gt;   FileUtil.persistArrayToFile(employeeTable, FILE_DIR + fileName);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;15.Buat class [&lt;b&gt;FileUtil&lt;/b&gt;] di package[&lt;b&gt;greenhornsjava.util&lt;/b&gt;]&lt;br /&gt;&lt;pre class="brush:java"&gt;package greenhornsjava.util;&lt;br /&gt;&lt;br /&gt;import java.io.BufferedWriter;&lt;br /&gt;import java.io.File;&lt;br /&gt;import java.io.FileWriter;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.util.List;&lt;br /&gt;import greenhornsjava.model.Employee;&lt;br /&gt;&lt;br /&gt;public class FileUtil {&lt;br /&gt; public static void persistArrayToFile(List&amp;lt;Employee&amp;gt; list, String fileName) { &lt;br /&gt;  FileWriter fstream = null;&lt;br /&gt;  BufferedWriter out = null;&lt;br /&gt;  File file = null;&lt;br /&gt;  String COMMA_SEPARATOR = ",";&lt;br /&gt;  &lt;br /&gt;  try{&lt;br /&gt;   file = new File(fileName);&lt;br /&gt;   fstream = new FileWriter(file);    &lt;br /&gt;   out = new BufferedWriter(fstream);&lt;br /&gt;      &lt;br /&gt;   for (int i=0;i&amp;lt;list.size();i++) {&lt;br /&gt;    Employee employee = list.get(i);&lt;br /&gt;    StringBuffer sb = new StringBuffer();&lt;br /&gt;    sb.append(employee.getNama()).append(COMMA_SEPARATOR)&lt;br /&gt;      .append(employee.getAlamat()).append(COMMA_SEPARATOR)&lt;br /&gt;      .append(employee.getTempatLahir()).append(COMMA_SEPARATOR)&lt;br /&gt;      .append(employee.getTglLahir()).append(COMMA_SEPARATOR)&lt;br /&gt;      .append(employee.getCreatedBy()).append(COMMA_SEPARATOR)&lt;br /&gt;      .append(employee.getCreatedOn());&lt;br /&gt;    &lt;br /&gt;    if( i &amp;lt; (list.size() - 1)) sb.append("\n");&lt;br /&gt;    out.write(sb.toString()); &lt;br /&gt;   }&lt;br /&gt;  }catch (Exception e){&lt;br /&gt;      System.err.println("Error: " + e.getMessage());&lt;br /&gt;  }finally {&lt;br /&gt;   try {&lt;br /&gt;    out.close();&lt;br /&gt;   } catch (IOException e) {&lt;br /&gt;    System.err.println("Error: " + e.getMessage());&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Sebelum melanjutkan, mari kita lihat sejenak struktur aplikasi kita sejenak. Pastikan struktur aplikasi anda sama sebelum melanjutkan.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/_IZS7Uo3e9mU/TKieI_U5czI/AAAAAAAAADo/O2EVeZU2eVE/s400/16.gif" width="358" /&gt;&lt;/div&gt;&lt;br /&gt;Pada&amp;nbsp;&lt;a href="http://greenhornsjava.blogspot.com/2010/09/menulis-program-aplikasi-java-sederhana.html"&gt;Tutorial Bagian 1&lt;/a&gt;&amp;nbsp;terdapat class [DisplayManager] yang direncanakan sebagai bagian dari Logic pada saat penampilan data yang tidak dibuat, akan tetapi digantikan dengan class [FileUtil] yang dirasakan lebih tepat dibandingkan dengan&amp;nbsp;class [DisplayManager]&amp;nbsp;yang telah direncanakan sebelumnya.&lt;br /&gt;Dalam dunia Software development, perubahan rencana adalah hal yang wajar terjadi. Software yang dikembangkan oleh programmer harus dapat segera beradaptasi dengan perubahan yang ada.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Baiklah&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Kita telah menyelesaikan tahap akhir dari keseluruhan tahap dari aplikasi. Sekarang tiba saatnya kita menjalankan program yang telah kita tulis. Berikut adalah cuplikan gambar aplikasi.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="365" src="http://4.bp.blogspot.com/_IZS7Uo3e9mU/TKigvZMHZjI/AAAAAAAAADs/WuC0MxIHpo8/s400/14.gif" width="400" /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;Pada direktori yang telah ditentukan sebelumnya akan terbentuk sebuah file seperti pada gambar di bawah ini.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="193" src="http://1.bp.blogspot.com/_IZS7Uo3e9mU/TKihIaRfjyI/AAAAAAAAADw/G69J-7n3IvU/s640/15.gif" width="640" /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 13px;"&gt;&lt;b&gt;Berikut contoh isi dari file text yang digenerate oleh aplikasi :&lt;/b&gt;&lt;/span&gt;&lt;/br&gt;&lt;br /&gt;&lt;pre class="brush:xml"&gt;Toni,Pacung-Bali,Palembang,Thu Aug 19 00:00:00 SGT 1982,admin,Sun Oct 03 22:53:45 SGT 2010&lt;br /&gt;Haris,Dago-Bandung,Medan,Tue Oct 01 00:00:00 SGT 1985,admin,Sun Oct 03 22:54:12 SGT 2010&lt;br /&gt;Frenti,Pacung-Bali,Bandung,Mon Nov 12 00:00:00 SGT 1984,admin,Sun Oct 03 22:54:37 SGT 2010&lt;br /&gt;&lt;/pre&gt;&lt;/br&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 16px;"&gt;Sekian lengkap sudah seri "Menulis Program Aplikasi Java Sederhana". Semoga dapat membantu rekan-rekan dalam memahami Java programming secara lebih cepat dengan cara langsung membuat program.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span class="Apple-style-span" style="line-height: 20px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Jika terdapat saran, kritik atau pertanyaan silahkan tinggalkan pesan atau email. Saya akan mencoba untuk menanggapi secepat mungkin. Terima kasih.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5797965346181571083-875617959760526268?l=greenhornsjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greenhornsjava.blogspot.com/feeds/875617959760526268/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://greenhornsjava.blogspot.com/2010/10/menulis-program-aplikasi-java-sederhana_03.html#comment-form' title='2 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/875617959760526268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/875617959760526268'/><link rel='alternate' type='text/html' href='http://greenhornsjava.blogspot.com/2010/10/menulis-program-aplikasi-java-sederhana_03.html' title='Menulis Program Aplikasi Java Sederhana (Bagian 3 - Akhir)'/><author><name>Toni Liem</name><uri>http://www.blogger.com/profile/18014951444910857098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_IZS7Uo3e9mU/TKFyK7fPYLI/AAAAAAAAAA4/F_oaGKe12HI/S220/P4290049_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_IZS7Uo3e9mU/TKiDR3xMRLI/AAAAAAAAADk/5ACka4dUk4g/s72-c/13.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5797965346181571083.post-4732644752070208819</id><published>2010-10-02T08:32:00.000-07:00</published><updated>2010-10-12T07:43:16.226-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Basic'/><title type='text'>Menulis Program Aplikasi Java Sederhana (Bagian 2)</title><content type='html'>Melanjutkan &lt;a href="http://greenhornsjava.blogspot.com/2010/09/menulis-program-aplikasi-java-sederhana.html"&gt;Bagian 1 Menulis Program Alipkasi Java Sederhana&lt;/a&gt;,&amp;nbsp;pada&amp;nbsp;bagian 2 ini, kita akan menambahkan modul Menu dan Data Entry. Modul Menu akan menampilkan 3 pilihan yakni  &lt;br /&gt;&lt;ol&gt;&lt;li&gt;Entry Data Pegawai&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Modul ini akan menyimpan data pegawai yang dimasukan oleh user ke dalam penyimpanan in-memory, &lt;a href="http://download.oracle.com/javase/1.4.2/docs/api/java/util/HashMap.html" target="_blank"&gt;HashMap&lt;/a&gt; (Pembahasan lebih lanjut tentang Java Collection akan ditulis pada serie – serie berikutnya). Dan kemudian akan disimpan ke text pada menu Display Data Pegawai.&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;Display Data Pegawai&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Modul ini akan menampilkan Data Pegawai yang telah diisi sebelumnya. Terdapat fitur [Simpan ke text] sehingga data yang telah disimpan di HashMap dapat disimpan di komputer pengguna dalam bentuk File CSV .&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;Logout &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Modul ini akan mengarahkan pengguna kembali ke menu login dan menhapus semua data yang terdapat di HashMap.  &lt;/blockquote&gt;&lt;/li&gt;&lt;/ol&gt;Baiklah mari kita mulai.&lt;br /&gt;&lt;h1&gt;Langkah #4 : Membangun View Menu&lt;/h1&gt;7. Buat class [&lt;b&gt;Menu&lt;/b&gt;] di package [&lt;b&gt;greenhornsjava.view&lt;/b&gt;]&lt;br /&gt;&lt;pre class="brush:java"&gt;package greenhornsjava.view; &lt;br /&gt;&lt;br /&gt;import greenhornsjava.model.User;&lt;br /&gt;import greenhornsjava.business.EntryDataManager;&lt;br /&gt;import greenhornsjava.business.MenuManager;&lt;br /&gt;import java.util.Scanner;&lt;br /&gt;public class Menu {&lt;br /&gt; private User user;&lt;br /&gt; public Menu(User user) {&lt;br /&gt;  this.user = user;&lt;br /&gt; } &lt;br /&gt; public void start() {&lt;br /&gt;  int option;&lt;br /&gt;  while (true) {&lt;br /&gt;   System.out.println("[1].Input Data Pegawai");&lt;br /&gt;   System.out.println("[2].Daftar Data Pegawai");&lt;br /&gt;   System.out.println("[3].Logout");&lt;br /&gt;   System.out.println("========================");&lt;br /&gt;   System.out.print("Pilih Menu[1/2/3] : ");   &lt;br /&gt;   option = Integer.valueOf(new Scanner(System.in).next());   &lt;br /&gt;   MenuManager menuMgr = new MenuManager();&lt;br /&gt;   try {&lt;br /&gt;    menuMgr.verifyEntry(option);&lt;br /&gt;    if(option == 3) {&lt;br /&gt;     logout();&lt;br /&gt;     return;&lt;br /&gt;    }&lt;br /&gt;    showMenu(user, option);&lt;br /&gt;   } catch(Exception e) {&lt;br /&gt;    System.out.println(e.getMessage());&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; } &lt;br /&gt; private void showMenu(User user, int option) {&lt;br /&gt;  switch(option) {&lt;br /&gt;   case 1 :  showMenuEntryData(); break;&lt;br /&gt;   case 2 : System.out.println("Masuk Menu Daftar Data Pegawai"); break; &lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; private void showMenuEntryData() {&lt;br /&gt;  EntryData entryData = new EntryData(user);&lt;br /&gt;  entryData.start(); &lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; private void logout() {&lt;br /&gt;  EntryDataManager entryDataManager = new EntryDataManager();&lt;br /&gt;  entryDataManager.clearAll();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;h1&gt;Langkah #5 : Membangun Logic Menu&lt;/h1&gt;8. Buat class [&lt;b&gt;MenuManager &lt;/b&gt;] di package [&lt;b&gt;greenhornsjava.business&lt;/b&gt;]&lt;br /&gt;&lt;pre class="brush:java"&gt;package greenhornsjava.business; &lt;br /&gt;&lt;br /&gt;public class MenuManager {&lt;br /&gt; public void verifyEntry(int option) throws Exception {&lt;br /&gt;  if(option == 1) return;&lt;br /&gt;  if(option != 2) return; &lt;br /&gt;  if(option!= 3) return;  &lt;br /&gt;  throw new Exception("Pilihan menu tidak valid");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Ubahlah sebagian code pada [&lt;strong&gt;Login.java&lt;/strong&gt;]&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="180" src="http://4.bp.blogspot.com/_IZS7Uo3e9mU/TKcgaqVTglI/AAAAAAAAADM/ffWcDT8iRBM/s640/10.gif" width="640" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Menjadi berikut :&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush:java"&gt;Menu menu = new Menu(user);&lt;br /&gt;menu.start();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h1&gt;Langkah #6 : Membangun Model Data Pegawai&lt;/h1&gt;9. Buat class [&lt;b&gt;Employee&lt;/b&gt;] di package [&lt;b&gt;greenhornsjava.model&lt;/b&gt;]&lt;br /&gt;&lt;pre class="brush:java"&gt;package greenhornsjava.model;&lt;br /&gt;&lt;br /&gt;import java.io.Serializable;&lt;br /&gt;import java.util.Date;&lt;br /&gt;&lt;br /&gt;public class Employee implements Serializable {&lt;br /&gt; private static final long serialVersionUID = 1L;&lt;br /&gt; private String nama;&lt;br /&gt; private String alamat;&lt;br /&gt; private String tempatLahir;&lt;br /&gt; private Date tglLahir;&lt;br /&gt; private Date createdOn;&lt;br /&gt; private String createdBy;&lt;br /&gt; &lt;br /&gt; public Employee() {}&lt;br /&gt; public Employee(String nama, String alamat, String tempatLahir,&lt;br /&gt;   Date tglLahir, User user) {&lt;br /&gt;  this.nama = nama;&lt;br /&gt;  this.alamat = alamat;&lt;br /&gt;  this.tempatLahir = tempatLahir;&lt;br /&gt;  this.tglLahir = tglLahir;&lt;br /&gt;  this.createdBy = user.getUserName();&lt;br /&gt;  this.createdOn = new Date(System.currentTimeMillis());&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public String getNama() {&lt;br /&gt;  return nama;&lt;br /&gt; }&lt;br /&gt; public void setNama(String nama) {&lt;br /&gt;  this.nama = nama;&lt;br /&gt; }&lt;br /&gt; public String getAlamat() {&lt;br /&gt;  return alamat;&lt;br /&gt; }&lt;br /&gt; public void setAlamat(String alamat) {&lt;br /&gt;  this.alamat = alamat;&lt;br /&gt; }&lt;br /&gt; public String getTempatLahir() {&lt;br /&gt;  return tempatLahir;&lt;br /&gt; }&lt;br /&gt; public void setTempatLahir(String tempatLahir) {&lt;br /&gt;  this.tempatLahir = tempatLahir;&lt;br /&gt; }&lt;br /&gt; public Date getTglLahir() {&lt;br /&gt;  return tglLahir;&lt;br /&gt; }&lt;br /&gt; public void setTglLahir(Date tglLahir) {&lt;br /&gt;  this.tglLahir = tglLahir;&lt;br /&gt; }&lt;br /&gt; public Date getCreatedOn() {&lt;br /&gt;  return createdOn;&lt;br /&gt; }&lt;br /&gt; public void setCreatedOn(Date createdOn) {&lt;br /&gt;  this.createdOn = createdOn;&lt;br /&gt; }&lt;br /&gt; public String getCreatedBy() {&lt;br /&gt;  return createdBy;&lt;br /&gt; }&lt;br /&gt; public void setCreatedBy(String createdBy) {&lt;br /&gt;  this.createdBy = createdBy;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public String toString() {&lt;br /&gt;  return nama;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h1&gt;Langkah #7 : Membangun In-Memory Database Pegawai&lt;/h1&gt;10. Buat class [&lt;b&gt;InMemoryEmployeeDb&lt;/b&gt;] di package [&lt;b&gt;greenhornsjava.db&lt;/b&gt;]&lt;br /&gt;&lt;pre class="brush:java"&gt;package greenhornsjava.db;&lt;br /&gt;&lt;br /&gt;import greenhornsjava.model.Employee;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;&lt;br /&gt;public class InMemoryEmployeeDb extends  ArrayList&lt;employee&gt; {&lt;br /&gt; private static InMemoryEmployeeDb fakeEmployeeTable = new InMemoryEmployeeDb();&lt;br /&gt; private InMemoryEmployeeDb() { }&lt;br /&gt; public static InMemoryEmployeeDb getInstance() {&lt;br /&gt;  return (InMemoryEmployeeDb) fakeEmployeeTable;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/employee&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h1&gt;Langkah #8 : Membangun View Data Entry&lt;/h1&gt;11. Buat class [&lt;b&gt;EntryData&lt;/b&gt;] di package [&lt;b&gt;greenhornsjava.view&lt;/b&gt;]&lt;br /&gt;&lt;pre class="brush:java"&gt;package greenhornsjava.view;&lt;br /&gt;&lt;br /&gt;import java.text.ParseException;&lt;br /&gt;import java.text.SimpleDateFormat;&lt;br /&gt;import java.util.Date;&lt;br /&gt;import java.util.Scanner;&lt;br /&gt;import greenhornsjava.business.EntryDataManager;&lt;br /&gt;import greenhornsjava.model.Employee;&lt;br /&gt;import greenhornsjava.model.User;&lt;br /&gt;&lt;br /&gt;public class EntryData {&lt;br /&gt; private User user;&lt;br /&gt; public EntryData(User user) {&lt;br /&gt;  this.user = user;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void start() {&lt;br /&gt;  while(true) {&lt;br /&gt;   String nama = null;&lt;br /&gt;   String alamat = null;&lt;br /&gt;   String tempatLahir = null;&lt;br /&gt;   Date tglLahir = new Date(System.currentTimeMillis());&lt;br /&gt;   String response = null;   &lt;br /&gt;   System.out.println("Entry Data Pegawai");&lt;br /&gt;   System.out.println("------------------");&lt;br /&gt;   System.out.print("Nama : ");&lt;br /&gt;   nama = new Scanner(System.in).next(); &lt;br /&gt;   &lt;br /&gt;   System.out.print("Alamat : ");&lt;br /&gt;   alamat = new Scanner(System.in).next();  &lt;br /&gt;   &lt;br /&gt;   System.out.print("Tempat Lahir : ");&lt;br /&gt;   tempatLahir = new Scanner(System.in).next(); &lt;br /&gt;   &lt;br /&gt;   while (true) {&lt;br /&gt;    System.out.print("Tanggal Lahir(dd/MM/yyyy) : ");&lt;br /&gt;    try {&lt;br /&gt;     tglLahir = new SimpleDateFormat("dd/MM/yyyy").parse(new Scanner(System.in).next());&lt;br /&gt;     break; &lt;br /&gt;    } catch (ParseException e) {&lt;br /&gt;     System.out.println("Format tanggal salah.");&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   &lt;br /&gt;   System.out.print("[S]impan atau E[x]it?");&lt;br /&gt;   response = new Scanner(System.in).next();    &lt;br /&gt;   if(response.equalsIgnoreCase("x")) return;&lt;br /&gt;   &lt;br /&gt;   EntryDataManager entryDataManager = new EntryDataManager();&lt;br /&gt;   entryDataManager.save(new Employee(nama, alamat, tempatLahir, tglLahir, user));   &lt;br /&gt;   &lt;br /&gt;   System.out.print("[L]anjut Entry atau E[x]it?");&lt;br /&gt;   response = new Scanner(System.in).next();&lt;br /&gt;   &lt;br /&gt;   if(response.equalsIgnoreCase("x")) return;&lt;br /&gt;  }  &lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h1&gt;Langkah #9 : Membangun Logic Data Entry&lt;/h1&gt;12. Buat class [&lt;b&gt;EntryDataManager&lt;/b&gt;] di package [&lt;b&gt;greenhornsjava.business&lt;/b&gt;]&lt;br /&gt;&lt;pre class="brush:java"&gt;package greenhornsjava.business;&lt;br /&gt;&lt;br /&gt;import greenhornsjava.db.InMemoryEmployeeDb;&lt;br /&gt;import greenhornsjava.model.Employee;&lt;br /&gt;&lt;br /&gt;public class EntryDataManager {&lt;br /&gt;&lt;br /&gt; public void save(Employee employee) {&lt;br /&gt;  InMemoryEmployeeDb.getInstance().add(employee); &lt;br /&gt;  &lt;br /&gt;  for (Employee emp : InMemoryEmployeeDb.getInstance()) {&lt;br /&gt;   System.out.println(emp.getNama());&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void clearAll() {&lt;br /&gt;  InMemoryEmployeeDb.getInstance().clear();&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Sebelum melanjutkan, mari kita lihat sejenak struktur aplikasi kita sejenak. Pastikan struktur aplikasi anda sama sebelum melanjutkan.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/_IZS7Uo3e9mU/TKdEqJ1BCMI/AAAAAAAAADQ/a46HFbsLYhA/s400/11.gif" width="348" /&gt;&lt;/div&gt;&lt;br /&gt;Kita telah menyelesaikan tahap (4),(5),(6),(7.1) dan (7.2) dari keseluruhan tahap dari aplikasi. Sekarang tiba saatnya kita menjalankan program yang telah kita tulis. Pastikan program berjalan dengan baik seperti Gambar dibawah.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;s&gt;&lt;img border="0" height="627" src="http://3.bp.blogspot.com/_IZS7Uo3e9mU/TKdO--qpXHI/AAAAAAAAADY/NWRaidepuWA/s640/12.gif" width="640" /&gt;&lt;/s&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Sekian tutorial 'Menulis Program Aplikasi Java Sederhana (Bagian 2)'. Jika terdapat saran, kritik atau pertanyaan silahkan tinggalkan pesan atau email. Saya akan mencoba untuk menanggapi secepat mungkin. Terima kasih.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5797965346181571083-4732644752070208819?l=greenhornsjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greenhornsjava.blogspot.com/feeds/4732644752070208819/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://greenhornsjava.blogspot.com/2010/10/menulis-program-aplikasi-java-sederhana.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/4732644752070208819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/4732644752070208819'/><link rel='alternate' type='text/html' href='http://greenhornsjava.blogspot.com/2010/10/menulis-program-aplikasi-java-sederhana.html' title='Menulis Program Aplikasi Java Sederhana (Bagian 2)'/><author><name>Toni Liem</name><uri>http://www.blogger.com/profile/18014951444910857098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_IZS7Uo3e9mU/TKFyK7fPYLI/AAAAAAAAAA4/F_oaGKe12HI/S220/P4290049_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_IZS7Uo3e9mU/TKcgaqVTglI/AAAAAAAAADM/ffWcDT8iRBM/s72-c/10.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5797965346181571083.post-2809334627566398760</id><published>2010-09-30T10:44:00.000-07:00</published><updated>2010-10-12T07:43:03.346-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Basic'/><title type='text'>Penjelasan Menulis Program Aplikasi java Sederhana (Bagian 1)</title><content type='html'>Salam berbagi... &lt;br /&gt;Dikarenakan pada tulisan &lt;a href="http://greenhornsjava.blogspot.com/2010/09/menulis-program-aplikasi-java-sederhana.html" target="_blank"&gt;Menulis Program Aplikasi Java Sederhana Bag.1&lt;/a&gt; terlalu panjang, maka penjelasan pada seri tersebut saya tuliskan khusus agar pembaca dapat mengerti secara lebih detail konsep dari aplikasi tersebut.&lt;br /&gt;Contoh Aplikasi Java Sederhana yang disertakan merupakan aplikasi dengan arsitektur bertumpuk(N-Tier application), artinya aplikasi disusun berdasarkan tumpukan-tumpukan modul yang masing-masing memiliki fungsi dan sifatnya sendiri-sendiri.&lt;br /&gt;&lt;br /&gt;Pada contoh yang saya bawakan terdapat 3 lapisan yakni :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Lapisan Tampilan (View/Presentation Layer) &lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Lapisan Business (Business Logic Layer) &lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Lapisan Model (Data Model Layer)&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;a href="http://lh3.ggpht.com/_IZS7Uo3e9mU/TKTAb2OvCdI/AAAAAAAAAC8/pDYEtlqW_S0/s1600-h/N-Layer%5B4%5D.png"&gt;&lt;img alt="N-Layer" border="0" height="372" src="http://lh5.ggpht.com/_IZS7Uo3e9mU/TKTAcic6rhI/AAAAAAAAADA/wxcg31F7NK4/N-Layer_thumb%5B2%5D.png?imgmax=800" style="border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="N-Layer" width="415" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;div align="left"&gt;&lt;br /&gt;Agar lebih jelas mari kita bahas satu per satu beserta implementasinya di contoh program tersebut.&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Lapisan Tampilan (View Layer)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Lapisan ini merupakan lapisan Graphical User Interface (GUI) yang berfungsi menyambungkan user ke dalam bisnis aplikasi. Lapisan pada aplikasi ini cenderung tidak memiliki proses bisnis/logic yang berat (thin) di dalamnya dan hanya berfungsi untuk menampilkan data atau fungsi-fungsi interaksi seperti Klik sebuah tombol, menampilkan data pada table, input data sebuah entity atau model, dll…&lt;br /&gt;Pada contoh aplikasi, class yang berada di lapisan ini adalah class-class dibawah package [&lt;strong&gt;greenhornsjava.view&lt;/strong&gt;] yakni untuk sementara : Login.java&amp;nbsp; &lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Lapisan Business (Business/Logical Layer)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Lapisan ini merupakan lapisan dimana semua proses bisnis dilakukan. Lapisan ini berfungsi memisahkan business logic dari lapisan modul lainnya. Class-class pada layer ini cenderung penuh (fat), berisikan fungsi logical bisnis saling berhubungan satu dengan yang lainnya. Class pada layer ini juga menghubungkan class-class pada Lapisan View dengan lapisan Model.&lt;br /&gt;Pada contoh aplikasi , class yang berada pada lapisan ini berada dibawah package [&lt;strong&gt;greenhorsjava.business&lt;/strong&gt;] yakni untuk sementara : LoginManager.java&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Lapisan Model (Data&amp;nbsp;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;strong&gt;Model&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;Layer)&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Lapisan ini merupakan lapisan entity data. Model layer biasanya berisikan &lt;a href="http://en.wikipedia.org/wiki/Plain_Old_Java_Object"&gt;POJO (Plain Old Java Object)&lt;/a&gt;&amp;nbsp;yang mendeskripsikan entity bisnis. Model terkadang dipergunakan sebagai mimic dari table sebuah database yakni object dengan property yang mendekati definisi table dalam sebuah table (Lebih lanjut lihat -&amp;gt;&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Object-relational_mapping"&gt;Object Relational Mapping&lt;/a&gt;).&lt;/blockquote&gt;&lt;blockquote class="webkit-indent-blockquote" style="border: none; margin: 0 0 0 40px; padding: 0px;"&gt;Pada contoh aplikasi, model digunakan sebagai entity bisnis, yang di-parsing sebagai informasi yang akan diproses pada Lapisan Bisnis. Dalam aplikasi, class model diletakan dibawah package [&lt;b&gt;greenhornsjava.model]&lt;/b&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;/ol&gt;Sekian penjelasan dari arsitektur yang digunakan dalam Contoh aplikasi pada tulisan&amp;nbsp;&lt;a href="http://greenhornsjava.blogspot.com/2010/09/menulis-program-aplikasi-java-sederhana.html"&gt;Menulis Program Aplikasi Java Sederhana (Bagian 1)&lt;/a&gt;. Semoga dapat membantu dalam memahami tulisan dan contoh yang disertakan.&amp;nbsp;Jika terdapat pertanyaan, saran, kritik.. silahkan tinggalkan komen atau email saya. Terima kasih.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5797965346181571083-2809334627566398760?l=greenhornsjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greenhornsjava.blogspot.com/feeds/2809334627566398760/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://greenhornsjava.blogspot.com/2010/09/penjelasan-menulis-program-aplikasi.html#comment-form' title='0 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/2809334627566398760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/2809334627566398760'/><link rel='alternate' type='text/html' href='http://greenhornsjava.blogspot.com/2010/09/penjelasan-menulis-program-aplikasi.html' title='Penjelasan Menulis Program Aplikasi java Sederhana (Bagian 1)'/><author><name>Toni Liem</name><uri>http://www.blogger.com/profile/18014951444910857098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_IZS7Uo3e9mU/TKFyK7fPYLI/AAAAAAAAAA4/F_oaGKe12HI/S220/P4290049_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_IZS7Uo3e9mU/TKTAcic6rhI/AAAAAAAAADA/wxcg31F7NK4/s72-c/N-Layer_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5797965346181571083.post-3199583859829997929</id><published>2010-09-30T05:59:00.000-07:00</published><updated>2010-10-12T07:42:46.455-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Basic'/><title type='text'>Menulis Program Aplikasi Java Sederhana (Bagian 1)</title><content type='html'>Kali ini kita akan membuat sebuah program sederhana. Aplikasi akan dijalankan di console/command prompt. Pada akhir keseluruhan bagian ini diharapkan pembaca dapat memperoleh 'kesan' pertama yang nyaman dan terpacu untuk dapat terus belajar menggali fitur-fitur lain dalam bahasa pemograman ini. &lt;br /&gt;Baiklah mari segera kita mulai...!!!&lt;br /&gt;&lt;br /&gt;Aplikasi terdiri dari :&lt;br /&gt;1.Modul Login; modul ini akan muncul setiap kali pengguna mengakses aplikasi pertama kali atau setelah logout dari menu pilihan.&lt;br /&gt;2.Modul menu Pilihan; modul ini akan muncul setiap kali pengguna berhasil login. modul ini berfungsi untuk mengarahkan user ke Modul Entry Data pegawai, Modul Daftar Pegawai atau kembali lagi ke mudul Login.&lt;br /&gt;3.Modul Entry Data Pegawai; modul ini berfungsi menyimpan dan mengedit data yang di simpan di dalam memory. Modul juga akan melakukan validasi - validasi yang diperlukan sebelum dapat di simpan.&lt;br /&gt;4.Modul Daftar pegawai; modul ini akan menampilkan semua data pegawai yang telah diinput, dan juga dapat diekspor ke bentuk file dengan format .txt.&lt;br /&gt;&lt;br /&gt;Sebelum dapat mengikuti, berikut hal-hal yang sudah harus terinstal di dalam komputer anda:&lt;br /&gt;1. JDK versi terbaru : [&amp;nbsp;&lt;a href="http://download.java.net/jdk6/"&gt;Download di sini&lt;/a&gt; ] .&lt;br /&gt;Untuk mengecek apakah JDK sudah terinstal dengan sukses ketik perintah berikut di Command Prompt : java -version.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img border="0" height="93" src="http://4.bp.blogspot.com/_IZS7Uo3e9mU/TKRwbLU5WhI/AAAAAAAAACM/yIaPH4fyiYY/s400/java+-version.png" style="margin-left: auto; margin-right: auto;" width="400" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_IZS7Uo3e9mU/TKRwbLU5WhI/AAAAAAAAACM/yIaPH4fyiYY/s1600/java+-version.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;2. Eclipse For Java Developer [&amp;nbsp;&lt;a href="http://www.eclipse.org/downloads/"&gt;Download di sini&lt;/a&gt; ]&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="30" src="http://2.bp.blogspot.com/_IZS7Uo3e9mU/TKSkMNxPxeI/AAAAAAAAACs/I_nc_8a597Q/s400/9.gif" width="400" /&gt;&lt;/div&gt;&lt;br /&gt;Berikut Roadmap Aplikasi sebagai patokan proses pembuatan aplikasi. Saya akan menjelaskan langkah per langkah sesuai dengan urutan pada gambar di bawah.&lt;br /&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_IZS7Uo3e9mU/TKRwNm-yRwI/AAAAAAAAACI/UKseOupGEfY/s1600/Posting3small.gif" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/_IZS7Uo3e9mU/TKRwNm-yRwI/AAAAAAAAACI/UKseOupGEfY/s400/Posting3small.gif" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Baiklah mari segera kita MULAI....&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Langkah #1 : Menyiapkan Project dan menbuat Titik awal aplikasi (Launcher)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;1. Buat sebuah Java Project.&lt;br /&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img border="0" height="98" src="http://3.bp.blogspot.com/_IZS7Uo3e9mU/TKR5nmHI7WI/AAAAAAAAACQ/-Kiv_jU1e58/s400/1.gif" width="400" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Berikan nama SimpleDataEntry. Klik Finish.&lt;br /&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/_IZS7Uo3e9mU/TKR6dVhXISI/AAAAAAAAACU/_FEYrJviG50/s400/2.gif" width="335" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. Buat class [&lt;b&gt;Launcher&lt;/b&gt;] dalam package greenhornsjava. Class ini merupakan titik awak dari aplikasi. Perhatikan Gambar dibawah. Masukan nama &lt;b&gt;&lt;i&gt;class &lt;/i&gt;&lt;/b&gt;dan &lt;b&gt;&lt;i&gt;package &lt;/i&gt;&lt;/b&gt;di kolom text yang benar.&lt;br /&gt;&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/_IZS7Uo3e9mU/TKSGsBfY3kI/AAAAAAAAACY/CQRktCvIn8M/s400/4.gif" width="342" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:java"&gt;package greenhornsjava;&lt;br /&gt;import greenhornsjava.view.Login;&lt;br /&gt;public class Launcher {&lt;br /&gt; public static void main(String[] args) {&lt;br /&gt;  System.out.println("==== Simple Data entry ====");&lt;br /&gt;  Login login = new Login();&lt;br /&gt;  login.start();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Langkah #2 : Membangun View/Tampilan Login Aplikasi&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;4. Buat class&amp;nbsp;[&lt;b&gt;Login&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;]&lt;/span&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;/b&gt;di package [&lt;b&gt;greenhornsjava.view&lt;/b&gt;]&lt;br /&gt;&lt;pre class="brush:java"&gt;package greenhornsjava.view;&lt;br /&gt;import greenhornsjava.model.User;&lt;br /&gt;import greenhornsjava.business.LoginManager;&lt;br /&gt;import java.util.Scanner;&lt;br /&gt;public class Login {&lt;br /&gt; public void start() {&lt;br /&gt;  while(true) {&lt;br /&gt;   String okExit = null;&lt;br /&gt;   String userName = null;&lt;br /&gt;   String password = null;   &lt;br /&gt;   System.out.println("====== Login ======");&lt;br /&gt;   System.out.print("User : ");&lt;br /&gt;   userName = new Scanner(System.in).next();   &lt;br /&gt;   System.out.print("Password : ");&lt;br /&gt;   password = new Scanner(System.in).next();&lt;br /&gt;   System.out.println("===================");&lt;br /&gt;   System.out.print("[O]K atau E[x]it");&lt;br /&gt;   okExit = new Scanner(System.in).next();   &lt;br /&gt;   try {&lt;br /&gt;    if(okExit.equalsIgnoreCase("o")) {&lt;br /&gt;     User user =  doLogin(userName, password);     &lt;br /&gt;     System.out.println("Selamat Datang!");&lt;br /&gt;     System.out.println("===============");&lt;br /&gt;     System.out.println("User : " + user.getUserName());&lt;br /&gt;     System.out.println("Password : " + user.getPassword());&lt;br /&gt;     System.out.println("===============");&lt;br /&gt;     System.out.println("Kode ini akan diganti dengan object Menu");&lt;br /&gt;     System.out.println("===============");     &lt;br /&gt;    } else return;&lt;br /&gt;   } catch(Exception e) {&lt;br /&gt;    System.out.println(e.getMessage());&lt;br /&gt;   }&lt;br /&gt;  }  &lt;br /&gt; } &lt;br /&gt; private User doLogin(String userName, String password) throws Exception{&lt;br /&gt;  LoginManager loginManager =  new LoginManager();&lt;br /&gt;  &lt;br /&gt;  loginManager.verifyEntry(userName, password);&lt;br /&gt;  return loginManager.authenticateUser(userName, password);&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;Langkah #3 :Mendesign Logic Login Aplikasi&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;5. Buat class [&lt;b&gt;LoginManager&lt;/b&gt;] di package [&lt;b&gt;greenhornsjava.business]&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush:java"&gt;package greenhornsjava.business; &lt;br /&gt;import greenhornsjava.model.User;&lt;br /&gt;public class LoginManager{&lt;br /&gt; private final String USER_NAME = "admin";&lt;br /&gt; private final String PASSWORD = "password"; &lt;br /&gt; public void verifyEntry(String userName, String password) throws Exception{&lt;br /&gt;  if(userName == null || userName.trim().length() == 0)&lt;br /&gt;   throw new Exception("User is null or empty");  &lt;br /&gt;  if (password == null || password.trim().length() == 0)&lt;br /&gt;   throw new Exception("Password is null or empty");&lt;br /&gt; } &lt;br /&gt; public User authenticateUser(String userName, String password) throws Exception {&lt;br /&gt;  if (userName.equalsIgnoreCase(USER_NAME) &amp;amp;&amp;amp; password.equalsIgnoreCase(PASSWORD))&lt;br /&gt;   return new User(userName, password);  &lt;br /&gt;  throw new Exception("Wrong User or Password");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;6. Buat class [&lt;b&gt;User&lt;/b&gt;] di package [&lt;b&gt;greenhornsjava.model&lt;/b&gt;]&lt;br /&gt;&lt;pre class="brush:java"&gt;package greenhornsjava.model;&lt;br /&gt;public class User {&lt;br /&gt; private String userName;&lt;br /&gt; private String password;&lt;br /&gt; public User() { }&lt;br /&gt; public User(String userName, String password) {&lt;br /&gt;  this.userName = userName;&lt;br /&gt;  this.password = password;&lt;br /&gt; } &lt;br /&gt; public void setUserName(String userName) {&lt;br /&gt;  this.userName = userName;&lt;br /&gt; } &lt;br /&gt; public String getUserName() {&lt;br /&gt;  return this.userName;&lt;br /&gt; } &lt;br /&gt; public void setPassword(String password) {&lt;br /&gt;  this.password = password;&lt;br /&gt; } &lt;br /&gt; public String getPassword() {&lt;br /&gt;  return this.password;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Sebelum melanjutkan, mari kita lihat sejenak struktur aplikasi kita sejenak. Pastikan struktur aplikasi anda sama sebelum melanjutkan.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="192" src="http://4.bp.blogspot.com/_IZS7Uo3e9mU/TKSYWn1ZDJI/AAAAAAAAACg/jZSDuwlAZ7s/s400/6.gif" width="400" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Kita telah menyelesaikan tahap 1, 2 dan 3 dari keseluruhan tahap dari aplikasi. Sekarang tiba saatnya kita menjalankan program yang telah kita tulis. Tekan tanda&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="55" src="http://3.bp.blogspot.com/_IZS7Uo3e9mU/TKSZvw1fwjI/AAAAAAAAACk/2fBtLypgWUc/s200/7.gif" width="200" /&gt;&lt;/div&gt;&lt;br /&gt;yang berada di &amp;nbsp;jejeran toolbar untuk menjalankan program...&lt;br /&gt;&lt;br /&gt;Berikut hasil dari kompilasi program...(masukan user : &lt;b&gt;admin&lt;/b&gt;, password : &lt;b&gt;password &lt;/b&gt;untuk bisa melewati menu login...)&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/_IZS7Uo3e9mU/TKScP_lJ4LI/AAAAAAAAACo/oZ0vBHj19dA/s400/8.gif" width="358" /&gt;&lt;/div&gt;&lt;br /&gt;Sekian tutorial &lt;b&gt;'Menulis Program Aplikasi Java Sederhana (Bagian 1)'&lt;/b&gt;. Jika terdapat saran, kritik atau pertanyaan silahkan tinggalkan pesan atau email. Saya akan mencoba untuk menanggapi secepat mungkin. Terima kasih.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5797965346181571083-3199583859829997929?l=greenhornsjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greenhornsjava.blogspot.com/feeds/3199583859829997929/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://greenhornsjava.blogspot.com/2010/09/menulis-program-aplikasi-java-sederhana.html#comment-form' title='5 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/3199583859829997929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/3199583859829997929'/><link rel='alternate' type='text/html' href='http://greenhornsjava.blogspot.com/2010/09/menulis-program-aplikasi-java-sederhana.html' title='Menulis Program Aplikasi Java Sederhana (Bagian 1)'/><author><name>Toni Liem</name><uri>http://www.blogger.com/profile/18014951444910857098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_IZS7Uo3e9mU/TKFyK7fPYLI/AAAAAAAAAA4/F_oaGKe12HI/S220/P4290049_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_IZS7Uo3e9mU/TKRwbLU5WhI/AAAAAAAAACM/yIaPH4fyiYY/s72-c/java+-version.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5797965346181571083.post-7446073778033429255</id><published>2010-09-28T09:27:00.000-07:00</published><updated>2010-10-12T07:42:30.866-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Basic'/><title type='text'>Pelajaran #1 : Cara kerja bahasa java</title><content type='html'>&lt;a class="cssButton ubtn-disabled" href="http://www.blogger.com/post-edit.g?blogID=5797965346181571083&amp;amp;postID=7446073778033429255" id="draftButton" target=""&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="cssButtonOuter"&gt;&lt;div class="cssButtonMiddle"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_IZS7Uo3e9mU/TKINQ-RzmUI/AAAAAAAAABw/ciR52FbHGu0/s1600/cara+kerja+java.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="85" src="http://3.bp.blogspot.com/_IZS7Uo3e9mU/TKINQ-RzmUI/AAAAAAAAABw/ciR52FbHGu0/s400/cara+kerja+java.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="cssButtonInner"&gt;Untuk memahami Java, anda perlu mengetahui bagaimana program berbasis java dapat dijalankan di komputer. &lt;/div&gt;&lt;div class="cssButtonInner"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="cssButtonInner"&gt;Berikut adalah langkah-langkahnya sesuai urutan nomor pada gambar di atas:&lt;br /&gt;&lt;br /&gt;1. Program java adalah serangkaian object yang ditulis dalam sebuah file berekstensi &lt;i&gt;.java&lt;/i&gt; yang saling beriteraksi satu sama lainya membentuk serangkaian proses tertentu untuk mencapai tujuan yang telah ditetapkan sebelumnya.&lt;br /&gt;&lt;br /&gt;2. Selayaknya bahasa pemograman lainnya, program yang ditulis dalam &lt;i&gt;&lt;b&gt;syntax&lt;/b&gt;&lt;/i&gt;(definisi :&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/SYNTAX"&gt;http://en.wikipedia.org/wiki/SYNTAX&lt;/a&gt; ) tertentu harus diverifikasi&amp;nbsp; dan diolah oleh &lt;i&gt;&lt;b&gt;compiler &lt;/b&gt;&lt;/i&gt;(definisi :&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Compile_%28computing%29"&gt;http://en.wikipedia.org/wiki/Compile_%28computing%29&lt;/a&gt; ).&lt;br /&gt;&lt;br /&gt;3. Hasil kompilasi program java membentuk file-file berekstensi &lt;i&gt;.class&lt;/i&gt;. File ini menyimpan instruksi-instruksi spesifik yang hanya dapat dipahami oleh mesin virtual java.&lt;br /&gt;&lt;br /&gt;4. Mesin Virtual Java, &lt;i&gt;&lt;b&gt;JVM &lt;/b&gt;&lt;/i&gt;(definisi : &lt;a href="http://en.wikipedia.org/wiki/JVM"&gt;http://en.wikipedia.org/wiki/JVM&lt;/a&gt; ) yang terinstal dalam komputer pengguna akan mengubah file &lt;i&gt;.class&lt;/i&gt; menjadi instruksi-instruksi&amp;nbsp; yang dapat dipahami oleh komputer untuk dijalankan. &lt;br /&gt;&lt;br /&gt;5. Program berbasis Java dapat dijalankan di hampir di semua platform OS. Hal ini merupakan salah satu keistimewaan yang sangat menguntungkan bagi para programmernya. Dengan tersedianya JVM dalam hampir di semua versi OS komputer maka motto &lt;i&gt;"write once run everywhere"&lt;/i&gt;, merupakan senjata ampuh sekaligus pemacu semangat dalam belajar bahasa pemograman ini.&lt;br /&gt;&lt;br /&gt;Sekian penjelasan singkat tentang cara kerja&amp;nbsp; bahasa pemograman Java dari proses pembuatan sampai dapat dijalankan di komputer pengguna. Terima kasih.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5797965346181571083-7446073778033429255?l=greenhornsjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greenhornsjava.blogspot.com/feeds/7446073778033429255/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://greenhornsjava.blogspot.com/2010/09/pelajaran-1-cara-kerja-bahasa-java.html#comment-form' title='4 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/7446073778033429255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/7446073778033429255'/><link rel='alternate' type='text/html' href='http://greenhornsjava.blogspot.com/2010/09/pelajaran-1-cara-kerja-bahasa-java.html' title='Pelajaran #1 : Cara kerja bahasa java'/><author><name>Toni Liem</name><uri>http://www.blogger.com/profile/18014951444910857098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_IZS7Uo3e9mU/TKFyK7fPYLI/AAAAAAAAAA4/F_oaGKe12HI/S220/P4290049_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_IZS7Uo3e9mU/TKINQ-RzmUI/AAAAAAAAABw/ciR52FbHGu0/s72-c/cara+kerja+java.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5797965346181571083.post-911062367829462465</id><published>2010-09-28T07:51:00.001-07:00</published><updated>2010-10-12T07:42:08.359-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Basic'/><title type='text'>Mengapa belajar Java 'SULIT'!!.. dan Mengapa kalian 'PERLU' membaca ini dulu...?? (sebelum melanjutkan...)</title><content type='html'>&lt;div style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: left;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;h4&gt;&lt;span style="font-family: Arial; font-size: 10pt;"&gt;Belajar Java SULIT..!! Ya...!! Bagi sebagian orang yang pernah mencoba untuk menguasai bahasa pemograman ini, bukanlah hal yang mudah, termasuk SAYA dulunya... &lt;/span&gt;&lt;/h4&gt;&lt;br /&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: Arial;"&gt;Fitur, tehnik, kemampuan bahasa yang sangat kaya merupakan kelebihan dan juga 'kekurangan' dari Java...&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: Arial;"&gt;Tulisan-tulisan dalam blog ini dimaksudkan agar pembaca di level &lt;b&gt;Pemula&lt;/b&gt; dan &lt;b&gt;Menengah &lt;/b&gt;dapat belajar dan memahami kompleksitas dari bahasa pemograman Java sehingga dapat secara penuh memanfaatkan fitur-fiturnya.&lt;/span&gt;&lt;/span&gt;&lt;a href="http://3.bp.blogspot.com/_IZS7Uo3e9mU/TKIC01LlvfI/AAAAAAAAABk/M26oa56dMFk/s1600/question.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/_IZS7Uo3e9mU/TKIC01LlvfI/AAAAAAAAABk/M26oa56dMFk/s200/question.gif" width="96" /&gt;&lt;/a&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: Arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;&lt;span style="font-family: Arial;"&gt;Topik-topik pada tulisan akan membahas konsep dan tahap demi tahap dengan contoh yang akan memudahkan proses pembelajaran.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_IZS7Uo3e9mU/TKIDo1UQyeI/AAAAAAAAABo/hpmjJ4GASp8/s1600/do+the+code+2.png" style="margin-left: auto; margin-right: auto;" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: 10pt;"&gt;Jika terdapat pertanyaan-pertanyaan mengenai topik yang dibahas silahkan tinggalkan komentar dan saya akan mencoba memberikan solusinya..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: Arial; font-size: 10pt;"&gt;Akhirnya... selamat mengikuti...!!&lt;/span&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5797965346181571083-911062367829462465?l=greenhornsjava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://greenhornsjava.blogspot.com/feeds/911062367829462465/comments/default' title='Poskan Komentar'/><link rel='replies' type='text/html' href='http://greenhornsjava.blogspot.com/2010/09/mengapa-belajar-java-dan-mengapa-kalian.html#comment-form' title='11 Komentar'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/911062367829462465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5797965346181571083/posts/default/911062367829462465'/><link rel='alternate' type='text/html' href='http://greenhornsjava.blogspot.com/2010/09/mengapa-belajar-java-dan-mengapa-kalian.html' title='Mengapa belajar Java &amp;#39;SULIT&amp;#39;!!.. dan Mengapa kalian &amp;#39;PERLU&amp;#39; membaca ini dulu...?? (sebelum melanjutkan...)'/><author><name>Toni Liem</name><uri>http://www.blogger.com/profile/18014951444910857098</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://2.bp.blogspot.com/_IZS7Uo3e9mU/TKFyK7fPYLI/AAAAAAAAAA4/F_oaGKe12HI/S220/P4290049_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_IZS7Uo3e9mU/TKIC01LlvfI/AAAAAAAAABk/M26oa56dMFk/s72-c/question.gif' height='72' width='72'/><thr:total>11</thr:total></entry></feed>
